+2007-05-17 Carlos O'Donell <carlos@systemhalted.org>
+
+ * sysdeps/unix/sysv/linux/hppa/sysdep.h (PIC_REG_DEF): Define.
+ (PIC_REG_USE): Define.
+ (INLINE_SYSCALL): Use PIC_REG_DEF, PIC_REG_USE.
+ (INTERNAL_SYSCALL): Likewise.
+ (INTERNAL_SYSCALL_NCS): Likewise.
+ * sysdeps/unix/sysv/linux/hppa/sysdep.c (syscall): Use
+ PIC_REG_DEF, PIC_REG_USE.
+
2007-05-01 Carlos O'Donell <carlos@systemhalted.org>
* sysdeps/unix/sysv/linux/hppa/linuxthreads/bits/pthreadtypes.h
-/* Copyright (C) 1997, 1998, 2001, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 1998, 2001, 2003, 2007
+ 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
{
register unsigned long int __res asm("r28");
+ PIC_REG_DEF
LOAD_ARGS_6 (arg0, arg1, arg2, arg3, arg4, arg5)
asm volatile (SAVE_ASM_PIC
" ble 0x100(%%sr2, %%r0) \n"
" copy %1, %%r20 \n"
LOAD_ASM_PIC
: "=r" (__res)
- : "r" (__sysno) ASM_ARGS_6
+ : "r" (__sysno) PIC_REG_USE ASM_ARGS_6
: "memory", CALL_CLOB_REGS CLOB_ARGS_6);
__sys_res = __res;
}
/* Assembler macros for PA-RISC.
- Copyright (C) 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2001, 2002, 2003, 2007
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper, <drepper@cygnus.com>, August 1999.
Linux/PA-RISC changes by Philipp Rumpf, <prumpf@tux.org>, March 2000.
# define TREG_ASM "%r4" /* Cant clobber r3, it holds framemarker */
# define SAVE_ASM_PIC " copy %%r19, %" TREG_ASM "\n"
# define LOAD_ASM_PIC " copy %" TREG_ASM ", %%r19\n"
-# define USING_TREG TREG_ASM,
+# define CLOB_TREG TREG_ASM ,
+# define PIC_REG_DEF register unsigned long __r19 asm("r19");
+# define PIC_REG_USE , "r" (__r19)
#else
# define TREG %r3
# define SAVE_PIC(SREG) nop ASM_LINE_SEP
# define TREG_ASM
# define SAVE_ASM_PIC "nop \n"
# define LOAD_ASM_PIC "nop \n"
-# define USING_TREG
+# define CLOB_TREG
+# define PIC_REG_DEF
+# define PIC_REG_USE
#endif
#ifdef __ASSEMBLER__
TREG is clobbered and use that register to save/restore r19
across the syscall. */
-#define CALL_CLOB_REGS "%r1", "%r2", USING_TREG \
+#define CALL_CLOB_REGS "%r1", "%r2", CLOB_TREG \
"%r20", "%r29", "%r31"
#undef INLINE_SYSCALL
long __sys_res; \
{ \
register unsigned long __res asm("r28"); \
+ PIC_REG_DEF \
LOAD_ARGS_##nr(args) \
/* FIXME: HACK save/load r19 around syscall */ \
asm volatile( \
" ldi %1, %%r20\n" \
LOAD_ASM_PIC \
: "=r" (__res) \
- : "i" (SYS_ify(name)) ASM_ARGS_##nr \
+ : "i" (SYS_ify(name)) PIC_REG_USE ASM_ARGS_##nr \
: "memory", CALL_CLOB_REGS CLOB_ARGS_##nr \
); \
__sys_res = (long)__res; \
long __sys_res; \
{ \
register unsigned long __res asm("r28"); \
+ PIC_REG_DEF \
LOAD_ARGS_##nr(args) \
/* FIXME: HACK save/load r19 around syscall */ \
asm volatile( \
" ldi %1, %%r20\n" \
LOAD_ASM_PIC \
: "=r" (__res) \
- : "i" (SYS_ify(name)) ASM_ARGS_##nr \
+ : "i" (SYS_ify(name)) PIC_REG_USE ASM_ARGS_##nr \
: "memory", CALL_CLOB_REGS CLOB_ARGS_##nr \
); \
__sys_res = (long)__res; \
long __sys_res; \
{ \
register unsigned long __res asm("r28"); \
+ PIC_REG_DEF \
LOAD_ARGS_##nr(args) \
/* FIXME: HACK save/load r19 around syscall */ \
asm volatile( \
" copy %1, %%r20\n" \
LOAD_ASM_PIC \
: "=r" (__res) \
- : "r" (name) ASM_ARGS_##nr \
+ : "r" (name) PIC_REG_USE ASM_ARGS_##nr \
: "memory", CALL_CLOB_REGS CLOB_ARGS_##nr \
); \
__sys_res = (long)__res; \