summaryrefslogtreecommitdiff
path: root/arch/sh/src/__unmapself.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/sh/src/__unmapself.c')
-rw-r--r--arch/sh/src/__unmapself.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/arch/sh/src/__unmapself.c b/arch/sh/src/__unmapself.c
index 4df9e7bf..b804aeff 100644
--- a/arch/sh/src/__unmapself.c
+++ b/arch/sh/src/__unmapself.c
@@ -5,6 +5,11 @@ void __unmapself_sh_nommu(void *, size_t);
#if !defined(__SH3__) && !defined(__SH4__)
#define __unmapself __unmapself_sh_nommu
+#include "dynlink.h"
+#undef CRTJMP
+#define CRTJMP(pc,sp) __asm__ __volatile__( \
+ "mov.l @%0+,r0 ; mov.l @%0,r12 ; jmp @r0 ; mov %1,r15" \
+ : : "r"(pc), "r"(sp) : "r0", "memory" )
#include "../../../src/thread/__unmapself.c"
#undef __unmapself
extern __attribute__((__visibility__("hidden"))) unsigned __sh_nommu;