diff options
Diffstat (limited to 'sysdeps/unix/sysv/linux/m68k')
-rw-r--r-- | sysdeps/unix/sysv/linux/m68k/clone.S | 10 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/m68k/mmap.S | 3 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/m68k/sigreturn.S | 4 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/m68k/socket.S | 3 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/m68k/syscall.S | 3 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/m68k/sysdep.S | 10 | ||||
-rw-r--r-- | sysdeps/unix/sysv/linux/m68k/sysdep.h | 10 |
7 files changed, 15 insertions, 28 deletions
diff --git a/sysdeps/unix/sysv/linux/m68k/clone.S b/sysdeps/unix/sysv/linux/m68k/clone.S index 4dcd90e96c..4465dd8f68 100644 --- a/sysdeps/unix/sysv/linux/m68k/clone.S +++ b/sysdeps/unix/sysv/linux/m68k/clone.S @@ -27,7 +27,6 @@ Cambridge, MA 02139, USA. */ .text ENTRY (__clone) - CALL_MCOUNT /* Sanity check arguments. */ movel #-EINVAL, %d0 @@ -63,17 +62,12 @@ ENTRY (__clone) rts - SYSCALL_ERROR_HANDLER - thread_start: subl %fp, %fp /* terminate the stack frame */ jsr (%a0) movel %d0, -(%sp) -#ifdef PIC - bsrl _exit@PLTPC -#else - jbsr _exit -#endif + jbsr JUMPTARGET (_exit) + PSEUDO_END (__clone) weak_alias (__clone, clone) diff --git a/sysdeps/unix/sysv/linux/m68k/mmap.S b/sysdeps/unix/sysv/linux/m68k/mmap.S index 9bac533d44..257ff4da28 100644 --- a/sysdeps/unix/sysv/linux/m68k/mmap.S +++ b/sysdeps/unix/sysv/linux/m68k/mmap.S @@ -19,10 +19,7 @@ Cambridge, MA 02139, USA. */ #include <sysdep.h> .text - SYSCALL_ERROR_HANDLER - ENTRY (__mmap) - CALL_MCOUNT move.l #SYS_ify (mmap), %d0 /* System call number in %d0. */ diff --git a/sysdeps/unix/sysv/linux/m68k/sigreturn.S b/sysdeps/unix/sysv/linux/m68k/sigreturn.S index 04f0db553c..0971acd20e 100644 --- a/sysdeps/unix/sysv/linux/m68k/sigreturn.S +++ b/sysdeps/unix/sysv/linux/m68k/sigreturn.S @@ -20,12 +20,10 @@ Cambridge, MA 02139, USA. */ .text ENTRY (__sigreturn) - CALL_MCOUNT - addq.l #4, %sp /* Pop the return PC. */ DO_CALL (#SYS_ify (sigreturn), 0) /* Do the system call; it never returns. */ /* NOTREACHED */ -PSEUDO_END (__sigreturn) +END (__sigreturn) weak_alias (__sigreturn, sigreturn) diff --git a/sysdeps/unix/sysv/linux/m68k/socket.S b/sysdeps/unix/sysv/linux/m68k/socket.S index 1294287cce..d0741afeb1 100644 --- a/sysdeps/unix/sysv/linux/m68k/socket.S +++ b/sysdeps/unix/sysv/linux/m68k/socket.S @@ -23,8 +23,6 @@ Cambridge, MA 02139, USA. */ #define P2(a, b) a##b .text - SYSCALL_ERROR_HANDLER - /* The socket-oriented system calls are handled unusally in Linux. They are all gated through the single `socketcall' system call number. `socketcall' takes two arguments: the first is the subcode, specifying @@ -35,7 +33,6 @@ Cambridge, MA 02139, USA. */ .globl P(__,socket) ENTRY (P(__,socket)) - CALL_MCOUNT /* Save registers. */ move.l %d2, %a0 diff --git a/sysdeps/unix/sysv/linux/m68k/syscall.S b/sysdeps/unix/sysv/linux/m68k/syscall.S index 1c7bd6bbd1..b7417aa911 100644 --- a/sysdeps/unix/sysv/linux/m68k/syscall.S +++ b/sysdeps/unix/sysv/linux/m68k/syscall.S @@ -22,10 +22,7 @@ Cambridge, MA 02139, USA. */ more information about the value -128 used below.*/ .text - SYSCALL_ERROR_HANDLER ENTRY (syscall) - CALL_MCOUNT - move.l 4(%sp), %d0 /* Load syscall number. */ _DOARGS_5 (24) /* Frob arguments. */ trap &0 /* Do the system call. */ diff --git a/sysdeps/unix/sysv/linux/m68k/sysdep.S b/sysdeps/unix/sysv/linux/m68k/sysdep.S index 31fa20f55d..848ece58e8 100644 --- a/sysdeps/unix/sysv/linux/m68k/sysdep.S +++ b/sysdeps/unix/sysv/linux/m68k/sysdep.S @@ -46,7 +46,10 @@ __errno = errno /* This name is expected by the MT code. */ /* The syscall stubs jump here when they detect an error. */ -ENTRY (__syscall_error) + .globl __syscall_error + .type __syscall_error, @function + .align 4 +__syscall_error: neg.l %d0 move.l %d0, errno #ifdef _LIBC_REENTRANT @@ -59,15 +62,14 @@ ENTRY (__syscall_error) return a pointer. */ move.l %d0, %a0 rts -PSEUDO_END (__syscall_error) +END (__syscall_error) #endif /* PIC */ ENTRY (__errno_location) - CALL_MCOUNT #ifdef PIC move.l (%pc, errno@GOTPC), %a0 #else lea errno, %a0 #endif rts -PSEUDO_END (__errno_location) +END (__errno_location) diff --git a/sysdeps/unix/sysv/linux/m68k/sysdep.h b/sysdeps/unix/sysv/linux/m68k/sysdep.h index 9cddd20552..3366caab45 100644 --- a/sysdeps/unix/sysv/linux/m68k/sysdep.h +++ b/sysdeps/unix/sysv/linux/m68k/sysdep.h @@ -41,6 +41,9 @@ Cambridge, MA 02139, USA. */ C_LABEL(name) \ CALL_MCOUNT +#undef END +#define END(name) .size name, . - name + /* If compiled for profiling, call `_mcount' at the start of each function. */ #ifdef PROF /* The mcount code relies on a normal frame pointer being on the stack @@ -76,7 +79,6 @@ Cambridge, MA 02139, USA. */ error values. */ #define PSEUDO(name, syscall_name, args) \ .text; \ - SYSCALL_ERROR_HANDLER \ ENTRY (name) \ DO_CALL (&SYS_ify (syscall_name), args); \ moveq.l &-128, %d1; \ @@ -84,13 +86,14 @@ Cambridge, MA 02139, USA. */ jcc syscall_error #undef PSEUDO_END -#define PSEUDO_END(name) .size name, . - name +#define PSEUDO_END(name) \ + SYSCALL_ERROR_HANDLER; \ + END (name) #ifdef PIC /* Store (- %d0) into errno through the GOT. */ #ifdef _LIBC_REENTRANT #define SYSCALL_ERROR_HANDLER \ - .type syscall_error, @function; \ syscall_error: \ move.l (errno@GOTPC, %pc), %a0; \ neg.l %d0; \ @@ -105,7 +108,6 @@ syscall_error: \ rts; #else #define SYSCALL_ERROR_HANDLER \ - .type syscall_error, @function; \ syscall_error: \ move.l (errno@GOTPC, %pc), %a0; \ neg.l %d0; \ |