From 230bfe1a7d46c85601e5e67497cc607e15d08990 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Fri, 22 Jan 2016 03:46:00 +0000 Subject: move sh __unmapself code from arch/sh/src to main src tree --- src/thread/sh/__unmapself.c | 24 ++++++++++++++++++++++++ src/thread/sh/__unmapself.s | 22 ---------------------- src/thread/sh/__unmapself_mmu.s | 22 ++++++++++++++++++++++ 3 files changed, 46 insertions(+), 22 deletions(-) create mode 100644 src/thread/sh/__unmapself.c delete mode 100644 src/thread/sh/__unmapself.s create mode 100644 src/thread/sh/__unmapself_mmu.s (limited to 'src') 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.s deleted file mode 100644 index 0161d53d..00000000 --- a/src/thread/sh/__unmapself.s +++ /dev/null @@ -1,22 +0,0 @@ -.text -.global __unmapself_sh_mmu -.type __unmapself_sh_mmu, @function -__unmapself_sh_mmu: - mov #91, r3 ! SYS_munmap - trapa #31 - - or r0, r0 - or r0, r0 - or r0, r0 - or r0, r0 - or r0, r0 - - mov #1, r3 ! SYS_exit - mov #0, r4 - trapa #31 - - or r0, r0 - or r0, r0 - or r0, r0 - or r0, r0 - or r0, r0 diff --git a/src/thread/sh/__unmapself_mmu.s b/src/thread/sh/__unmapself_mmu.s new file mode 100644 index 00000000..0161d53d --- /dev/null +++ b/src/thread/sh/__unmapself_mmu.s @@ -0,0 +1,22 @@ +.text +.global __unmapself_sh_mmu +.type __unmapself_sh_mmu, @function +__unmapself_sh_mmu: + mov #91, r3 ! SYS_munmap + trapa #31 + + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + + mov #1, r3 ! SYS_exit + mov #0, r4 + trapa #31 + + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 + or r0, r0 -- cgit 1.4.1