Skip to content

Commit

Permalink
nptl: sysdep headers re-factoring
Browse files Browse the repository at this point in the history
This patch will re-factor and simplify sysdep headers
handling for nptl branch.
The reason is to use some useful macros in asm code (i.e. ENTRY()) that are available
only into nptl branch because are defined in sysdep.h header under the nptl folder
even if they are not related to NPTL at all (this was likely due to a bad choice done
at the early stage of NPTL porting).
This is a required steps for integrating into master branch some asm code available in
nptl branch for sh4.

The main changes are described below:

nptl/sysdeps/generic/sysdep.h (moved) ---> libc/sysdeps/linux/common/sysdep.h
nptl/sysdeps/arm/sysdep.h     (moved) ---> libc/sysdeps/linux/arm/sysdep.h

nptl/sysdeps/sh/sysdep.h ---------------------|
nptl/sysdeps/unix/sh/sysdep.h ----------------|
nptl/sysdeps/unix/sysv/linux/sh/sysdep.h -----|
nptl/sysdeps/unix/sysv/linux/sh/sh4/sysdep.h -|
                                              |(merged) ---> libc/sysdeps/linux/sh

nptl/sysdeps/unix/sysdep.h (deleted)

Similarly the mips and arm sysdep.h should be merged and updated as for sh arch.

Signed-off-by: Carmelo Amoroso <carmelo.amoroso@st.com>
  • Loading branch information
amorosoc committed Feb 9, 2010
1 parent 70811ee commit 828ba27
Show file tree
Hide file tree
Showing 8 changed files with 70 additions and 193 deletions.
2 changes: 1 addition & 1 deletion Rules.mak
Expand Up @@ -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))
Expand Down Expand Up @@ -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
#
Expand Down
Expand Up @@ -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__

Expand Down
Expand Up @@ -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. */
Expand Down
@@ -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
Expand All @@ -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
Expand All @@ -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.
Expand Down Expand Up @@ -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
Expand All @@ -220,5 +275,3 @@
2:

#endif /* __ASSEMBLER__ */

#endif /* linux/sh/sysdep.h */
82 changes: 0 additions & 82 deletions libpthread/nptl/sysdeps/sh/sysdep.h

This file was deleted.

29 changes: 0 additions & 29 deletions libpthread/nptl/sysdeps/unix/sh/sysdep.h

This file was deleted.

63 changes: 0 additions & 63 deletions libpthread/nptl/sysdeps/unix/sysdep.h

This file was deleted.

4 changes: 0 additions & 4 deletions libpthread/nptl/sysdeps/unix/sysv/linux/sh/sh4/sysdep.h

This file was deleted.

0 comments on commit 828ba27

Please sign in to comment.