aboutsummaryrefslogtreecommitdiff
path: root/sysdeps
diff options
context:
space:
mode:
authorAndreas Schwab <schwab@suse.de>2003-01-10 14:09:38 +0000
committerAndreas Schwab <schwab@suse.de>2003-01-10 14:09:38 +0000
commitc2918f01e1a560383964696e410e2aa2ae4209f7 (patch)
treed2ab9eb0b60c195c1d13cfa0378a44941a02a335 /sysdeps
parentb2222ac61c7bfa221fc9ca88a48940af75016ed2 (diff)
downloadglibc-c2918f01e1a560383964696e410e2aa2ae4209f7.zip
glibc-c2918f01e1a560383964696e410e2aa2ae4209f7.tar.gz
glibc-c2918f01e1a560383964696e410e2aa2ae4209f7.tar.bz2
* sysdeps/unix/sysv/linux/m68k/vfork.S: Optimize for kernels which
are known to have the vfork syscall. * sysdeps/m68k/sysdep.h (JUMPTARGET): Undefine before defining it. * sysdeps/unix/sysv/linux/kernel-features.h (__ASSUME_MMAP2_SYSCALL, __ASSUME_TRUNCATE64_SYSCALL) (__ASSUME_STAT64_SYSCALL, __ASSUME_FCNTL64) (__ASSUME_VFORK_SYSCALL): Define for m68k kernels >= 2.4.12.
Diffstat (limited to 'sysdeps')
-rw-r--r--sysdeps/m68k/sysdep.h65
-rw-r--r--sysdeps/unix/sysv/linux/kernel-features.h9
2 files changed, 42 insertions, 32 deletions
diff --git a/sysdeps/m68k/sysdep.h b/sysdeps/m68k/sysdep.h
index 554b92d..f492ff6 100644
--- a/sysdeps/m68k/sysdep.h
+++ b/sysdeps/m68k/sysdep.h
@@ -1,5 +1,5 @@
/* Assembler macros for m68k.
- Copyright (C) 1998 Free Software Foundation, Inc.
+ Copyright (C) 1998, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -23,25 +23,25 @@
/* Syntactic details of assembler. */
-#ifdef HAVE_ELF
+# ifdef HAVE_ELF
/* ELF uses byte-counts for .align, most others use log2 of count of bytes. */
-#define ALIGNARG(log2) 1<<log2
+# define ALIGNARG(log2) 1<<log2
/* For ELF we need the `.type' directive to make shared libs work right. */
-#define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg
-#define ASM_SIZE_DIRECTIVE(name) .size name,.-name
+# define ASM_TYPE_DIRECTIVE(name,typearg) .type name,typearg
+# define ASM_SIZE_DIRECTIVE(name) .size name,.-name
/* In ELF C symbols are asm symbols. */
-#undef NO_UNDERSCORES
-#define NO_UNDERSCORES
+# undef NO_UNDERSCORES
+# define NO_UNDERSCORES
-#else
+# else
-#define ALIGNARG(log2) log2
-#define ASM_TYPE_DIRECTIVE(name,type) /* Nothing is specified. */
-#define ASM_SIZE_DIRECTIVE(name) /* Nothing is specified. */
+# define ALIGNARG(log2) log2
+# define ASM_TYPE_DIRECTIVE(name,type) /* Nothing is specified. */
+# define ASM_SIZE_DIRECTIVE(name) /* Nothing is specified. */
-#endif
+# endif
/* Define an entry point visible from C.
@@ -49,51 +49,52 @@
There is currently a bug in gdb which prevents us from specifying
incomplete stabs information. Fake some entries here which specify
the current source file. */
-#define ENTRY(name) \
+# define ENTRY(name) \
.globl C_SYMBOL_NAME(name); \
ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),@function); \
.align ALIGNARG(2); \
C_LABEL(name) \
CALL_MCOUNT
-#undef END
-#define END(name) ASM_SIZE_DIRECTIVE(name)
+# undef END
+# define END(name) ASM_SIZE_DIRECTIVE(name)
/* If compiled for profiling, call `_mcount' at the start of each function. */
-#ifdef PROF
+# 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 \
+# 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
+# else
+# define CALL_MCOUNT /* Do nothing. */
+# endif
-#ifdef NO_UNDERSCORES
+# ifdef NO_UNDERSCORES
/* Since C identifiers are not normally prefixed with an underscore
on this system, the asm identifier `syscall_error' intrudes on the
C name space. Make sure we use an innocuous name. */
-#define syscall_error __syscall_error
-#define mcount _mcount
-#endif
+# define syscall_error __syscall_error
+# define mcount _mcount
+# endif
-#define PSEUDO(name, syscall_name, args) \
+# define PSEUDO(name, syscall_name, args) \
.globl syscall_error; \
ENTRY (name) \
DO_CALL (syscall_name, args); \
jcc JUMPTARGET(syscall_error)
-#undef PSEUDO_END
-#define PSEUDO_END(name) \
+# undef PSEUDO_END
+# define PSEUDO_END(name) \
END (name)
-#ifdef PIC
-#define JUMPTARGET(name) name##@PLTPC
-#else
-#define JUMPTARGET(name) name
-#endif
+# undef JUMPTARGET
+# ifdef PIC
+# define JUMPTARGET(name) name##@PLTPC
+# else
+# define JUMPTARGET(name) name
+# endif
#endif /* __ASSEMBLER__ */
diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h
index c93ab35..6b1bdf2 100644
--- a/sysdeps/unix/sysv/linux/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/kernel-features.h
@@ -240,3 +240,12 @@
#if __LINUX_KERNEL_VERSION >= 132402 && defined __i386__
# define __ASSUME_CLONE_THREAD_FLAGS 1
#endif
+
+/* These features were surely available with 2.4.12. */
+#if __LINUX_KERNEL_VERSION >= 132108 && defined __mc68000__
+# define __ASSUME_MMAP2_SYSCALL 1
+# define __ASSUME_TRUNCATE64_SYSCALL 1
+# define __ASSUME_STAT64_SYSCALL 1
+# define __ASSUME_FCNTL64 1
+# define __ASSUME_VFORK_SYSCALL 1
+#endif