From: Roland McGrath Date: Thu, 14 Mar 1996 11:19:46 +0000 (+0000) Subject: Mon Mar 4 21:57:14 1996 Andreas Schwab X-Git-Tag: glibc-2.16-ports-before-merge~3875 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b2801ddac45fa1a3cc5e18b43df7ded9a9844257;p=thirdparty%2Fglibc.git Mon Mar 4 21:57:14 1996 Andreas Schwab * sysdeps/unix/sysv/linux/m68k/sysdep.h (SYS_ify): Redefine. (CALL_MCOUNT): New macro, empty unless [PROF]. (ENTRY): Do CALL_MCOUNT just after the label. (JUMPTARGET): New macro. (SYSCALL_ERROR_HANDLER): Fix syntax. --- diff --git a/sysdeps/unix/sysv/linux/m68k/sysdep.h b/sysdeps/unix/sysv/linux/m68k/sysdep.h index 9b6c8e19754..ee481172d3d 100644 --- a/sysdeps/unix/sysv/linux/m68k/sysdep.h +++ b/sysdeps/unix/sysv/linux/m68k/sysdep.h @@ -23,6 +23,17 @@ Cambridge, MA 02139, USA. */ #include +/* For Linux we can use the system call table in the header file + /usr/include/asm/unistd.h + of the kernel. But these symbols do not follow the SYS_* syntax + so we have to redefine the `SYS_ify' macro here. */ +#undef SYS_ify +#ifdef __STDC__ +# define SYS_ify(syscall_name) __NR_##syscall_name +#else +# define SYS_ify(syscall_name) __NR_/**/syscall_name +#endif + #ifdef ASSEMBLER #define POUND # @@ -32,7 +43,26 @@ Cambridge, MA 02139, USA. */ .globl name; \ .type name, @function; \ .align 4; \ - name##: + C_LABEL(name) \ + CALL_MCOUNT + +/* 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 + to locate our caller, so push one just for its benefit. */ +#define CALL_MCOUNT \ + move.l %fp, -(%sp); move.l %sp, %fp; \ + jbsr JUMPTARGET (_mcount); \ + move.l (%sp)+, %fp; +#else +#define CALL_MCOUNT /* Do nothing. */ +#endif + +#ifdef PIC +#define JUMPTARGET(name) name##@PLTPC +#else +#define JUMPTARGET(name) name +#endif /* Since C identifiers are not normally prefixed with an underscore on this system, the asm identifier `syscall_error' intrudes on the @@ -53,7 +83,7 @@ Cambridge, MA 02139, USA. */ /* Store (- %d0) into errno through the GOT. */ #define SYSCALL_ERROR_HANDLER \ syscall_error: \ - move.l (errno@GOTPC.l, %pc), %a0; \ + move.l (errno@GOTPC, %pc), %a0; \ neg.l %d0; \ move.l %d0, (%a0); \ move.l POUND -1, %d0; \