diff options
author | Rich Felker <dalias@aerifal.cx> | 2016-01-22 03:46:00 +0000 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2016-01-22 03:46:00 +0000 |
commit | 230bfe1a7d46c85601e5e67497cc607e15d08990 (patch) | |
tree | d32ce0ad04642eba164925cef9bfe10cfc942936 /src | |
parent | 66215afc2e09f0153a63d58d3baec25cf0122b7b (diff) | |
download | musl-230bfe1a7d46c85601e5e67497cc607e15d08990.tar.gz musl-230bfe1a7d46c85601e5e67497cc607e15d08990.tar.bz2 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.c | 24 | ||||
-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 |