diff options
-rw-r--r-- | Rules.mak | 2 | ||||
-rw-r--r-- | libc/sysdeps/linux/arm/sysdep.h (renamed from libpthread/nptl/sysdeps/arm/sysdep.h) | 2 | ||||
-rw-r--r-- | libc/sysdeps/linux/common/sysdep.h (renamed from libpthread/nptl/sysdeps/generic/sysdep.h) | 2 | ||||
-rw-r--r-- | libc/sysdeps/linux/sh/sysdep.h (renamed from libpthread/nptl/sysdeps/unix/sysv/linux/sh/sysdep.h) | 79 | ||||
-rw-r--r-- | libpthread/nptl/sysdeps/sh/sysdep.h | 82 | ||||
-rw-r--r-- | libpthread/nptl/sysdeps/unix/sh/sysdep.h | 29 | ||||
-rw-r--r-- | libpthread/nptl/sysdeps/unix/sysdep.h | 63 | ||||
-rw-r--r-- | libpthread/nptl/sysdeps/unix/sysv/linux/sh/sh4/sysdep.h | 4 |
8 files changed, 70 insertions, 193 deletions
@@ -548,6 +548,7 @@ NOSTDLIB_CFLAGS:=$(call check_gcc,-nostdlib,) CFLAGS := -include $(top_srcdir)include/libc-symbols.h \ $(XWARNINGS) $(CPU_CFLAGS) $(SSP_CFLAGS) \ -nostdinc -I$(top_builddir)include -I$(top_srcdir)include -I. \ + -I$(top_srcdir)libc/sysdeps/linux \ -I$(top_srcdir)libc/sysdeps/linux/$(TARGET_ARCH) ifneq ($(strip $(UCLIBC_EXTRA_CFLAGS)),"") CFLAGS += $(call qstrip,$(UCLIBC_EXTRA_CFLAGS)) @@ -637,7 +638,6 @@ PTINC:= -I$(top_srcdir)$(PTDIR) \ -I$(top_srcdir)$(PTDIR)/sysdeps/unix/sysv/linux \ -I$(top_srcdir)$(PTDIR)/sysdeps/pthread \ -I$(top_srcdir)$(PTDIR)/sysdeps/pthread/bits \ - -I$(top_srcdir)$(PTDIR)/sysdeps/generic \ -I$(top_srcdir)ldso/ldso/$(TARGET_ARCH) \ -I$(top_srcdir)ldso/include # diff --git a/libpthread/nptl/sysdeps/arm/sysdep.h b/libc/sysdeps/linux/arm/sysdep.h index 19bd3c3f7..3c7a182bb 100644 --- a/libpthread/nptl/sysdeps/arm/sysdep.h +++ b/libc/sysdeps/linux/arm/sysdep.h @@ -17,7 +17,7 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -#include <sysdeps/generic/sysdep.h> +#include <common/sysdep.h> #ifdef __ASSEMBLER__ diff --git a/libpthread/nptl/sysdeps/generic/sysdep.h b/libc/sysdeps/linux/common/sysdep.h index 9627b3e79..cd5b2f1e3 100644 --- a/libpthread/nptl/sysdeps/generic/sysdep.h +++ b/libc/sysdeps/linux/common/sysdep.h @@ -17,6 +17,8 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ +#include <sys/syscall.h> + #ifndef C_LABEL /* Define a macro we can use to construct the asm name for a C symbol. */ diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sysdep.h b/libc/sysdeps/linux/sh/sysdep.h index 7e9223b70..1d490553d 100644 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sysdep.h +++ b/libc/sysdeps/linux/sh/sysdep.h @@ -1,8 +1,6 @@ -/* Copyright (C) 1992,1993,1995,1996,1997,1998,1999,2000,2002,2003,2004 - Free Software Foundation, Inc. +/* Assembler macros for SH. + Copyright (C) 1999, 2000, 2005 Free Software Foundation, Inc. This file is part of the GNU C Library. - Contributed by Ulrich Drepper, <drepper@gnu.ai.mit.edu>, August 1995. - Changed by Kaz Kojima, <kkojima@rr.iij4u.or.jp>. The GNU C Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public @@ -19,11 +17,67 @@ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -#ifndef _LINUX_SH_SYSDEP_H -#define _LINUX_SH_SYSDEP_H 1 +#include <common/sysdep.h> -/* There is some commonality. */ -#include <sysdeps/unix/sh/sysdep.h> +#include <features.h> +#include <libc-internal.h> + +#ifdef __ASSEMBLER__ + +/* Syntactic details of assembler. */ + +#define ALIGNARG(log2) 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 + +#ifdef SHARED +#define PLTJMP(_x) _x##@PLT +#else +#define PLTJMP(_x) _x +#endif + +/* Define an entry point visible from C. */ +#define ENTRY(name) \ + ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name); \ + ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),function) \ + .align ALIGNARG(5); \ + C_LABEL(name) \ + cfi_startproc; \ + CALL_MCOUNT + +#undef END +#define END(name) \ + cfi_endproc; \ + ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(name)) + +/* If compiled for profiling, call `mcount' at the start of each function. */ +#ifdef PROF +#define CALL_MCOUNT \ + mov.l 1f,r1; \ + sts.l pr,@-r15; \ + cfi_adjust_cfa_offset (4); \ + cfi_rel_offset (pr, 0); \ + mova 2f,r0; \ + jmp @r1; \ + lds r0,pr; \ + .align 2; \ +1: .long mcount; \ +2: lds.l @r15+,pr; \ + cfi_adjust_cfa_offset (-4); \ + cfi_restore (pr) + +#else +#define CALL_MCOUNT /* Do nothing. */ +#endif + +#ifdef __UCLIBC_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 /* For Linux we can use the system call table in the header file /usr/include/asm/unistd.h @@ -32,8 +86,9 @@ #undef SYS_ify #define SYS_ify(syscall_name) (__NR_##syscall_name) - -#ifdef __ASSEMBLER__ +#define ret rts ; nop +/* The sh move insn is s, d. */ +#define MOVE(x,y) mov x , y /* Linux uses a negative return value to indicate syscall errors, unlike most Unices, which use the condition codes' carry flag. @@ -193,7 +248,7 @@ # endif /* _LIBC_REENTRANT */ #endif /* __PIC__ */ -# ifdef NEED_SYSCALL_INST_PAD +# ifdef __SH4__ # define SYSCALL_INST_PAD \ or r0,r0; or r0,r0; or r0,r0; or r0,r0; or r0,r0 # else @@ -220,5 +275,3 @@ 2: #endif /* __ASSEMBLER__ */ - -#endif /* linux/sh/sysdep.h */ diff --git a/libpthread/nptl/sysdeps/sh/sysdep.h b/libpthread/nptl/sysdeps/sh/sysdep.h deleted file mode 100644 index 5b75198f9..000000000 --- a/libpthread/nptl/sysdeps/sh/sysdep.h +++ /dev/null @@ -1,82 +0,0 @@ -/* Assembler macros for SH. - Copyright (C) 1999, 2000, 2005 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 - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <sysdeps/generic/sysdep.h> - -#include <features.h> -#include <libc-internal.h> - -#ifdef __ASSEMBLER__ - -/* Syntactic details of assembler. */ - -#define ALIGNARG(log2) 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 - -#ifdef SHARED -#define PLTJMP(_x) _x##@PLT -#else -#define PLTJMP(_x) _x -#endif - -/* Define an entry point visible from C. */ -#define ENTRY(name) \ - ASM_GLOBAL_DIRECTIVE C_SYMBOL_NAME(name); \ - ASM_TYPE_DIRECTIVE (C_SYMBOL_NAME(name),function) \ - .align ALIGNARG(5); \ - C_LABEL(name) \ - cfi_startproc; \ - CALL_MCOUNT - -#undef END -#define END(name) \ - cfi_endproc; \ - ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(name)) - -/* If compiled for profiling, call `mcount' at the start of each function. */ -#ifdef PROF -#define CALL_MCOUNT \ - mov.l 1f,r1; \ - sts.l pr,@-r15; \ - cfi_adjust_cfa_offset (4); \ - cfi_rel_offset (pr, 0); \ - mova 2f,r0; \ - jmp @r1; \ - lds r0,pr; \ - .align 2; \ -1: .long mcount; \ -2: lds.l @r15+,pr; \ - cfi_adjust_cfa_offset (-4); \ - cfi_restore (pr) - -#else -#define CALL_MCOUNT /* Do nothing. */ -#endif - -#ifdef __UCLIBC_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 - -#endif /* __ASSEMBLER__ */ diff --git a/libpthread/nptl/sysdeps/unix/sh/sysdep.h b/libpthread/nptl/sysdeps/unix/sh/sysdep.h deleted file mode 100644 index bf1ac0fd4..000000000 --- a/libpthread/nptl/sysdeps/unix/sh/sysdep.h +++ /dev/null @@ -1,29 +0,0 @@ -/* Copyright (C) 1999, 2000 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 - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <sysdeps/unix/sysdep.h> -#include <sysdeps/sh/sysdep.h> - -#ifdef __ASSEMBLER__ - -#define ret rts ; nop - -/* The sh move insn is s, d. */ -#define MOVE(x,y) mov x , y - -#endif diff --git a/libpthread/nptl/sysdeps/unix/sysdep.h b/libpthread/nptl/sysdeps/unix/sysdep.h deleted file mode 100644 index 0e7c9da5a..000000000 --- a/libpthread/nptl/sysdeps/unix/sysdep.h +++ /dev/null @@ -1,63 +0,0 @@ -/* Copyright (C) 1991, 92, 93, 96, 98, 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 - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <sysdeps/generic/sysdep.h> - -#include <sys/syscall.h> -#define HAVE_SYSCALLS - -/* Note that using a `PASTE' macro loses. */ -#ifdef __STDC__ -#define SYSCALL__(name, args) PSEUDO (__##name, name, args) -#else -#define SYSCALL__(name, args) PSEUDO (__/**/name, name, args) -#endif -#define SYSCALL(name, args) PSEUDO (name, name, args) - -/* Machine-dependent sysdep.h files are expected to define the macro - PSEUDO (function_name, syscall_name) to emit assembly code to define the - C-callable function FUNCTION_NAME to do system call SYSCALL_NAME. - r0 and r1 are the system call outputs. MOVE(x, y) should be defined as - an instruction such that "MOVE(r1, r0)" works. ret should be defined - as the return instruction. */ - -#ifndef SYS_ify -#ifdef __STDC__ -#define SYS_ify(syscall_name) SYS_##syscall_name -#else -#define SYS_ify(syscall_name) SYS_/**/syscall_name -#endif -#endif - -/* Terminate a system call named SYM. This is used on some platforms - to generate correct debugging information. */ -#ifndef PSEUDO_END -#define PSEUDO_END(sym) -#endif -#ifndef PSEUDO_END_NOERRNO -#define PSEUDO_END_NOERRNO(sym) PSEUDO_END(sym) -#endif -#ifndef PSEUDO_END_ERRVAL -#define PSEUDO_END_ERRVAL(sym) PSEUDO_END(sym) -#endif - -/* Wrappers around system calls should normally inline the system call code. - But sometimes it is not possible or implemented and we use this code. */ -#ifndef INLINE_SYSCALL -#define INLINE_SYSCALL(name, nr, args...) __syscall_##name (args) -#endif diff --git a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sh4/sysdep.h b/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sh4/sysdep.h deleted file mode 100644 index 1aed1a14a..000000000 --- a/libpthread/nptl/sysdeps/unix/sysv/linux/sh/sh4/sysdep.h +++ /dev/null @@ -1,4 +0,0 @@ -/* 4 instruction cycles not accessing cache and TLB are needed after - trapa instruction to avoid an SH-4 silicon bug. */ -#define NEED_SYSCALL_INST_PAD -#include_next <sysdep.h> |