From 929d11c7cf81f4b7cfabc1910a583e6fa5897fd5 Mon Sep 17 00:00:00 2001 From: Will Schmidt Date: Thu, 12 Jan 2012 17:05:03 -0500 Subject: Powerpc: correct duplicate label issue with multiple passes through context code --- .../unix/sysv/linux/powerpc/powerpc32/getcontext-common.S | 14 +++++++------- .../unix/sysv/linux/powerpc/powerpc32/setcontext-common.S | 3 ++- .../unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S | 3 ++- 3 files changed, 11 insertions(+), 9 deletions(-) (limited to 'sysdeps/unix') diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S index f55c0730f1..e609f802e3 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S @@ -1,5 +1,5 @@ /* Save current context, powerpc32 common. - Copyright (C) 2005, 2006, 2011 Free Software Foundation, Inc. + Copyright (C) 2005, 2006, 2011, 2012 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 @@ -18,13 +18,13 @@ 02110-1301 USA. */ /* This is the common implementation of getcontext for powerpc32. - It not complete in itself should be included in to a framework that + It not complete in itself should be included in to a framework that defines: __CONTEXT_FUNC_NAME and if appropriate: __CONTEXT_ENABLE_FPRS __CONTEXT_ENABLE_VRS - Any archecture that implements the Vector unit is assumed to also + Any archecture that implements the Vector unit is assumed to also implement the floating unit. */ /* Stack frame offsets. */ @@ -145,6 +145,7 @@ ENTRY(__CONTEXT_FUNC_NAME) # ifdef __CONTEXT_ENABLE_VRS # ifdef PIC mflr r8 +# define got_label GENERATE_GOT_LABEL (__CONTEXT_FUNC_NAME) SETUP_GOT_ACCESS(r7,got_label) addis r7,r7,_GLOBAL_OFFSET_TABLE_-got_label@ha addi r7,r7,_GLOBAL_OFFSET_TABLE_-got_label@l @@ -165,9 +166,9 @@ ENTRY(__CONTEXT_FUNC_NAME) la r10,(_UC_VREGS)(r3) la r9,(_UC_VREGS+16)(r3) - + beq 2f /* L(no_vec) */ -/* address of the combined VSCR/VSAVE quadword. */ +/* address of the combined VSCR/VSAVE quadword. */ la r8,(_UC_VREGS+512)(r3) /* Save the vector registers */ @@ -186,7 +187,7 @@ ENTRY(__CONTEXT_FUNC_NAME) addi r9,r9,32 stvx v0,0,r8 - + stvx v4,0,r10 stvx v5,0,r9 addi r10,r10,32 @@ -277,4 +278,3 @@ ENTRY(__CONTEXT_FUNC_NAME) mtlr r0 blr END(__CONTEXT_FUNC_NAME) - diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S index a2f419b0e1..f7ce4c662a 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S @@ -1,5 +1,5 @@ /* Jump to a new context powerpc32 common. - Copyright (C) 2005, 2006, 2008, 2009, 2011 Free Software Foundation, Inc. + Copyright (C) 2005, 2006, 2008, 2009, 2011, 2012 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 @@ -73,6 +73,7 @@ ENTRY(__CONTEXT_FUNC_NAME) #ifdef PIC mflr r8 +# define got_label GENERATE_GOT_LABEL (__CONTEXT_FUNC_NAME) SETUP_GOT_ACCESS(r7,got_label) addis r7,r7,_GLOBAL_OFFSET_TABLE_-got_label@ha addi r7,r7,_GLOBAL_OFFSET_TABLE_-got_label@l diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S index 19dfcf8402..f571a82f8e 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S @@ -1,5 +1,5 @@ /* Save current context and jump to a new context. - Copyright (C) 2005, 2006, 2008, 2009, 2011 Free Software Foundation, Inc. + Copyright (C) 2005,2006,2008,2009,2011,2012 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 @@ -146,6 +146,7 @@ ENTRY(__CONTEXT_FUNC_NAME) # ifdef PIC mflr r8 +# define got_label GENERATE_GOT_LABEL (__CONTEXT_FUNC_NAME) SETUP_GOT_ACCESS(r7,got_label) addis r7,r7,_GLOBAL_OFFSET_TABLE_-got_label@ha addi r7,r7,_GLOBAL_OFFSET_TABLE_-got_label@l -- cgit 1.4.1