From 52e9a9d1187e1a2a7357f3a0f353058e14667d62 Mon Sep 17 00:00:00 2001 From: Roland McGrath Date: Thu, 14 Mar 1996 11:20:03 +0000 Subject: Thu Mar 14 06:01:07 1996 Roland McGrath * string/strnlen.c: New file. * string/Makefile (routines): Add strnlen. * string/string.h [__USE_GNU] (strnlen): Declare new function. [__OPTIMIZE__]: Define extern inline implementation of it. * stdlib/erand48_r.c: Use __mpn_construct_double instead of ldexp and addition, to avoid using anything from -lm. Mon Mar 4 21:57:14 1996 Andreas Schwab * sysdeps/unix/sysv/linux/m68k/Makefile: New file. * 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. Thu Mar 14 04:20:48 1996 Roland McGrath * sysdeps/unix/sysv/linux/init-first.c (init): Call `__personality' function instead of using inline asm i386 syscall. * sysdeps/unix/sysv/linux/syscalls.list: Add personality syscall. * posix/unistd.h [__USE_BSD]: Declare usleep. * misc/efgcvt.c (MAXDIG): New macro computed from constants. (fcvt, ecvt): Use it for buffer size. * stdlib/drand48-iter.c (__drand48_iterate): Use u_int64_t instead of conditionalizing long vs long long. * stdlib/drand48-iter.c (__drand48_iterate): Don't check for null pointers; never return EFAULT. * stdlib/drand48_r.c (drand48_r): Likewise. * stdlib/erand48_r.c (erand48_r): Likewise. --- sysdeps/unix/sysv/linux/m68k/Makefile | 3 +++ sysdeps/unix/sysv/linux/m68k/sysdep.h | 34 ++++++++++++++++++++++++++++++++-- 2 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 sysdeps/unix/sysv/linux/m68k/Makefile (limited to 'sysdeps/unix') diff --git a/sysdeps/unix/sysv/linux/m68k/Makefile b/sysdeps/unix/sysv/linux/m68k/Makefile new file mode 100644 index 0000000000..bdbd1057c4 --- /dev/null +++ b/sysdeps/unix/sysv/linux/m68k/Makefile @@ -0,0 +1,3 @@ +# Linux/m68k uses Motorola asm syntax and the ELF format. + +m68k-syntax-flag = -DMOTOROLA_SYNTAX diff --git a/sysdeps/unix/sysv/linux/m68k/sysdep.h b/sysdeps/unix/sysv/linux/m68k/sysdep.h index 9b6c8e1975..ee481172d3 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; \ -- cgit v1.2.3