about summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux/sh/sysdep.h
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2006-01-20 16:49:36 +0000
committerUlrich Drepper <drepper@redhat.com>2006-01-20 16:49:36 +0000
commita6df738797825b5d19448903b9b7c35b091e13c2 (patch)
tree84bcbef708f799bdfda21dd76bbba26a53ae2e7d /sysdeps/unix/sysv/linux/sh/sysdep.h
parent7c65e9001b93d5d20046bc4d50fd10fff5f4adc2 (diff)
downloadglibc-a6df738797825b5d19448903b9b7c35b091e13c2.tar.gz
glibc-a6df738797825b5d19448903b9b7c35b091e13c2.tar.xz
glibc-a6df738797825b5d19448903b9b7c35b091e13c2.zip
* sysdeps/sh/sh4/__longjmp.S: Demangle also r14 and r15.
	* sysdeps/sh/sh3/__longjmp.S: Likewise.
	* sysdeps/sh/sh4/setjmp.S: Mangle also r14 and r15.
	* sysdeps/sh/sh3/setjmp.S: Likewise.
	* sysdeps/unix/sysv/linux/sh/sysdep.h [__ASSEMBLER__]
	(PTR_MANGLE): Add temporary register as the second parameter.
	(PTR_DEMANGLE): Likewize.
	(PTR_MANGLE2, PTR_DEMANGLE2): Define.
Diffstat (limited to 'sysdeps/unix/sysv/linux/sh/sysdep.h')
-rw-r--r--sysdeps/unix/sysv/linux/sh/sysdep.h10
1 files changed, 6 insertions, 4 deletions
diff --git a/sysdeps/unix/sysv/linux/sh/sysdep.h b/sysdeps/unix/sysv/linux/sh/sysdep.h
index b41236299d..f0be37edc8 100644
--- a/sysdeps/unix/sysv/linux/sh/sysdep.h
+++ b/sysdeps/unix/sysv/linux/sh/sysdep.h
@@ -1,5 +1,5 @@
 /* Copyright (C) 1992,1993,1995,1996,1997,1998,1999,2000,2002,2003,2004,
-   2005	Free Software Foundation, Inc.
+   2005,2006	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>.
@@ -376,9 +376,11 @@
    is too complicated here since we have no PC-relative addressing mode.  */
 #else
 # ifdef __ASSEMBLER__
-#  define PTR_MANGLE(reg) \
-     stc gbr,r1; mov.l @(POINTER_GUARD,r1),r1; xor r1,reg
-#  define PTR_DEMANGLE(reg)	PTR_MANGLE (reg)
+#  define PTR_MANGLE(reg, tmp) \
+     stc gbr,tmp; mov.l @(POINTER_GUARD,tmp),tmp; xor tmp,reg
+#  define PTR_MANGLE2(reg, tmp)	xor tmp,reg
+#  define PTR_DEMANGLE(reg, tmp)	PTR_MANGLE (reg, tmp)
+#  define PTR_DEMANGLE2(reg, tmp)	PTR_MANGLE2 (reg, tmp)
 # else
 #  define PTR_MANGLE(var) \
      (var) = (void *) ((uintptr_t) (var) ^ THREAD_GET_POINTER_GUARD ())