about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2016-01-22 03:46:00 +0000
committerRich Felker <dalias@aerifal.cx>2016-01-22 03:46:00 +0000
commit230bfe1a7d46c85601e5e67497cc607e15d08990 (patch)
treed32ce0ad04642eba164925cef9bfe10cfc942936 /src
parent66215afc2e09f0153a63d58d3baec25cf0122b7b (diff)
downloadmusl-230bfe1a7d46c85601e5e67497cc607e15d08990.tar.gz
musl-230bfe1a7d46c85601e5e67497cc607e15d08990.tar.xz
musl-230bfe1a7d46c85601e5e67497cc607e15d08990.zip
move sh __unmapself code from arch/sh/src to main src tree
Diffstat (limited to 'src')
-rw-r--r--src/thread/sh/__unmapself.c24
-rw-r--r--src/thread/sh/__unmapself_mmu.s (renamed from src/thread/sh/__unmapself.s)0
2 files changed, 24 insertions, 0 deletions
diff --git a/src/thread/sh/__unmapself.c b/src/thread/sh/__unmapself.c
new file mode 100644
index 00000000..d4fb8be5
--- /dev/null
+++ b/src/thread/sh/__unmapself.c
@@ -0,0 +1,24 @@
+#include "pthread_impl.h"
+
+void __unmapself_sh_mmu(void *, size_t);
+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 "../__unmapself.c"
+#undef __unmapself
+extern __attribute__((__visibility__("hidden"))) unsigned __sh_nommu;
+#else
+#define __sh_nommu 0
+#endif
+
+void __unmapself(void *base, size_t size)
+{
+	if (__sh_nommu) __unmapself_sh_nommu(base, size);
+	else __unmapself_sh_mmu(base, size);
+}
diff --git a/src/thread/sh/__unmapself.s b/src/thread/sh/__unmapself_mmu.s
index 0161d53d..0161d53d 100644
--- a/src/thread/sh/__unmapself.s
+++ b/src/thread/sh/__unmapself_mmu.s