diff --git a/arch/sh/src/__unmapself.c b/arch/sh/src/__unmapself.c new file mode 100644 index 0000000000000000000000000000000000000000..4df9e7bf5a61fc3fbf9564655b9e7f2f5c5c97d2 --- /dev/null +++ b/arch/sh/src/__unmapself.c @@ -0,0 +1,19 @@ +#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 "../../../src/thread/__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.s index b34c3c804de0432184a7133ebedf3110ad329c79..cad91bf60b32041deb471b80f4ff2f6cd8484f9c 100644 --- a/src/thread/sh/__unmapself.s +++ b/src/thread/sh/__unmapself.s @@ -1,7 +1,7 @@ .text -.global __unmapself -.type __unmapself, @function -__unmapself: +.global __unmapself_sh_mmu +.type __unmapself_sh_mmu, @function +__unmapself_sh_mmu: mov #91, r3 ! SYS_munmap trapa #18