mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-28 00:21:52 +03:00
Rework sparc PIC macros so crt{i,n}.S can use them too.
* sysdeps/unix/sparc/sysdep.h (SPARC_PIC_THUNK): New macro. (SETUP_PIC_REG): Use SPARC_PIC_THUNK and don't save and restore %o7 across the call. (SETUP_PIC_REG_LEAF): Do %o7 save/restore in this new macro instead. * sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h: Use SETUP_PIC_REG_LEAF. * sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h: Likewise. * sysdeps/sparc/crti.S: Use SETUP_PIC_REG. * sysdeps/sparc/crtn.S: Likewise.
This commit is contained in:
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1997, 2002, 2003, 2004, 2006, 2008, 2011
|
||||
/* Copyright (C) 1997, 2002, 2003, 2004, 2006, 2008, 2011, 2012
|
||||
Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Miguel de Icaza <miguel@gnu.ai.mit.edu>, January 1997.
|
||||
@ -89,7 +89,7 @@ ENTRY(name); \
|
||||
#else
|
||||
# if RTLD_PRIVATE_ERRNO
|
||||
# define SYSCALL_ERROR_HANDLER \
|
||||
0: SETUP_PIC_REG(o2,g1) \
|
||||
0: SETUP_PIC_REG_LEAF(o2,g1) \
|
||||
sethi %hi(rtld_errno), %g1; \
|
||||
or %g1, %lo(rtld_errno), %g1; \
|
||||
ld [%o2 + %g1], %g1; \
|
||||
@ -103,8 +103,8 @@ ENTRY(name); \
|
||||
# else
|
||||
# define SYSCALL_ERROR_ERRNO errno
|
||||
# endif
|
||||
# define SYSCALL_ERROR_HANDLER \
|
||||
0: SETUP_PIC_REG(o2,g1) \
|
||||
# define SYSCALL_ERROR_HANDLER \
|
||||
0: SETUP_PIC_REG_LEAF(o2,g1) \
|
||||
sethi %tie_hi22(SYSCALL_ERROR_ERRNO), %g1; \
|
||||
add %g1, %tie_lo10(SYSCALL_ERROR_ERRNO), %g1; \
|
||||
ld [%o2 + %g1], %g1, %tie_ld(SYSCALL_ERROR_ERRNO); \
|
||||
@ -113,7 +113,7 @@ ENTRY(name); \
|
||||
mov -1, %o0;
|
||||
# else
|
||||
# define SYSCALL_ERROR_HANDLER \
|
||||
0: SETUP_PIC_REG(o2,g1) \
|
||||
0: SETUP_PIC_REG_LEAF(o2,g1) \
|
||||
sethi %hi(errno), %g1; \
|
||||
or %g1, %lo(errno), %g1; \
|
||||
ld [%o2 + %g1], %g1; \
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1997, 2000, 2002, 2003, 2004, 2006, 2008, 2011
|
||||
/* Copyright (C) 1997, 2000, 2002, 2003, 2004, 2006, 2008, 2011, 2012
|
||||
Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Richard Henderson <richard@gnu.ai.mit.edu>, 1997.
|
||||
@ -96,7 +96,7 @@ ENTRY(name); \
|
||||
#else
|
||||
# if RTLD_PRIVATE_ERRNO
|
||||
# define SYSCALL_ERROR_HANDLER \
|
||||
0: SETUP_PIC_REG(o2,g1) \
|
||||
0: SETUP_PIC_REG_LEAF(o2,g1) \
|
||||
sethi %hi(rtld_errno), %g1; \
|
||||
or %g1, %lo(rtld_errno), %g1; \
|
||||
ldx [%o2 + %g1], %g1; \
|
||||
@ -110,8 +110,8 @@ ENTRY(name); \
|
||||
# else
|
||||
# define SYSCALL_ERROR_ERRNO errno
|
||||
# endif
|
||||
# define SYSCALL_ERROR_HANDLER \
|
||||
0: SETUP_PIC_REG(o2,g1) \
|
||||
# define SYSCALL_ERROR_HANDLER \
|
||||
0: SETUP_PIC_REG_LEAF(o2,g1) \
|
||||
sethi %tie_hi22(SYSCALL_ERROR_ERRNO), %g1; \
|
||||
add %g1, %tie_lo10(SYSCALL_ERROR_ERRNO), %g1; \
|
||||
ldx [%o2 + %g1], %g1, %tie_ldx(SYSCALL_ERROR_ERRNO);\
|
||||
@ -120,7 +120,7 @@ ENTRY(name); \
|
||||
mov -1, %o0;
|
||||
# else
|
||||
# define SYSCALL_ERROR_HANDLER \
|
||||
0: SETUP_PIC_REG(o2,g1) \
|
||||
0: SETUP_PIC_REG_LEAF(o2,g1) \
|
||||
sethi %hi(errno), %g1; \
|
||||
or %g1, %lo(errno), %g1; \
|
||||
ldx [%o2 + %g1], %g1; \
|
||||
|
Reference in New Issue
Block a user