* sysdeps/powerpc/powerpc32/fpu/fprsave.S: Add cfi_offset for spilling
authorRoland McGrath <roland@gnu.org>
Thu, 16 Mar 2006 11:49:03 +0000 (11:49 +0000)
committerRoland McGrath <roland@gnu.org>
Thu, 16 Mar 2006 11:49:03 +0000 (11:49 +0000)
of non-volatile floating-point registers to the stack (fp14-fp31).
* sysdeps/powerpc/powerpc32/gprsave0.S: Add cfi_offset for spilling of
non-volatile general-purpose registers to the stack (gpr13-gpr31).
* sysdeps/powerpc/powerpc64/dl-trampoline.S: Add cfi_offset
for non-volatiles gpr30 - grp31 spilled to the stack.
* sysdeps/powerpc/powerpc64/memcpy.S: Add cfi_offset for non-volatile
gpr31 spill to the stack.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S:
Add cfi_offset for non-volatile gpr31 spill to the stack.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S: Add cfi_offset
for non-volatiles gpr28 - grp31 spilled to the stack.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S: Add
cfi_adjust_cfa_offset when a frame is stacked.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S:
(__novec_setcontext) : Add cfi_offset for non-volatile gpr31 spill
add LR saved to the stack.  Add cfi_adjust_cfa_offset when frame is
stacked.
(__setcontext) : Add cfi_offset for non-volatile gpr31 spill to
the stack.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S:
(__novec_swapcontext) : Add cfi_offset for non-volatile gpr31 spill
add LR saved to the stack.
(__swapcontext) : Add cfi_offset for non-volatile gpr31 spill add LR
saved to the stack.  Add cfi_adjust_cfa_offset when frame is stacked.

ChangeLog
sysdeps/powerpc/powerpc32/fpu/fprsave.S
sysdeps/powerpc/powerpc32/gprsave0.S
sysdeps/powerpc/powerpc64/dl-trampoline.S
sysdeps/powerpc/powerpc64/memcpy.S
sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S
sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S
sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S
sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S
sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S

index a9ece8f..d997178 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,31 @@
+2006-03-06  Steven Munroe  <sjmunroe@us.ibm.com>
+
+       * sysdeps/powerpc/powerpc32/fpu/fprsave.S: Add cfi_offset for spilling
+       of non-volatile floating-point registers to the stack (fp14-fp31).
+       * sysdeps/powerpc/powerpc32/gprsave0.S: Add cfi_offset for spilling of
+       non-volatile general-purpose registers to the stack (gpr13-gpr31).
+       * sysdeps/powerpc/powerpc64/dl-trampoline.S: Add cfi_offset
+       for non-volatiles gpr30 - grp31 spilled to the stack.
+       * sysdeps/powerpc/powerpc64/memcpy.S: Add cfi_offset for non-volatile
+       gpr31 spill to the stack.
+       * sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S:
+       Add cfi_offset for non-volatile gpr31 spill to the stack.
+       * sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S: Add cfi_offset
+       for non-volatiles gpr28 - grp31 spilled to the stack.
+       * sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S: Add
+       cfi_adjust_cfa_offset when a frame is stacked.
+       * sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S:
+       (__novec_setcontext) : Add cfi_offset for non-volatile gpr31 spill
+       add LR saved to the stack.  Add cfi_adjust_cfa_offset when frame is
+       stacked.
+       (__setcontext) : Add cfi_offset for non-volatile gpr31 spill to
+       the stack.
+       * sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S:
+       (__novec_swapcontext) : Add cfi_offset for non-volatile gpr31 spill
+       add LR saved to the stack.
+       (__swapcontext) : Add cfi_offset for non-volatile gpr31 spill add LR
+       saved to the stack.  Add cfi_adjust_cfa_offset when frame is stacked.
+
 2006-03-07  Jakub Jelinek  <jakub@redhat.com>
 
        [BZ #2423]
index 597c3e6..c051787 100644 (file)
@@ -27,68 +27,86 @@ ENTRY(_savefpr_all)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_14)
 C_TEXT(_savef14):
 C_TEXT(_savefpr_14):   stfd    fp14,-144(r1)
+                       cfi_offset(fp14,-144)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savef15)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_15)
 C_TEXT(_savef15):
 C_TEXT(_savefpr_15):   stfd    fp15,-136(r1)
+                       cfi_offset(fp15,-136)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savef16)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_16)
 C_TEXT(_savef16):
 C_TEXT(_savefpr_16):   stfd    fp16,-128(r1)
+                       cfi_offset(fp16,-128)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savef17)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_17)
 C_TEXT(_savef17):
 C_TEXT(_savefpr_17):   stfd    fp17,-120(r1)
+                       cfi_offset(fp17,-120)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savef18)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_18)
 C_TEXT(_savef18):
 C_TEXT(_savefpr_18):   stfd    fp18,-112(r1)
+                       cfi_offset(fp18,-112)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savef19)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_19)
 C_TEXT(_savef19):
 C_TEXT(_savefpr_19):   stfd    fp19,-104(r1)
+                       cfi_offset(fp19,-104)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savef20)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_20)
 C_TEXT(_savef20):
 C_TEXT(_savefpr_20):   stfd    fp20,-96(r1)
+                       cfi_offset(fp20,-96)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savef21)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_21)
 C_TEXT(_savef21):
 C_TEXT(_savefpr_21):   stfd    fp21,-88(r1)
+                       cfi_offset(fp21,-88)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savef22)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_22)
 C_TEXT(_savef22):
 C_TEXT(_savefpr_22):   stfd    fp22,-80(r1)
+                       cfi_offset(fp22,-80)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savef23)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_23)
 C_TEXT(_savef23):
 C_TEXT(_savefpr_23):   stfd    fp23,-72(r1)
+                       cfi_offset(fp23,-72)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savef24)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_24)
 C_TEXT(_savef24):
 C_TEXT(_savefpr_24):   stfd    fp24,-64(r1)
+                       cfi_offset(fp24,-64)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savef25)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_25)
 C_TEXT(_savef25):
 C_TEXT(_savefpr_25):   stfd    fp25,-56(r1)
+                       cfi_offset(fp25,-56)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savef26)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_26)
 C_TEXT(_savef26):
 C_TEXT(_savefpr_26):   stfd    fp26,-48(r1)
+                       cfi_offset(fp26,-48)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savef27)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_27)
 C_TEXT(_savef27):
 C_TEXT(_savefpr_27):   stfd    fp27,-40(r1)
+                       cfi_offset(fp27,-40)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savef28)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_28)
 C_TEXT(_savef28):
 C_TEXT(_savefpr_28):   stfd    fp28,-32(r1)
+                       cfi_offset(fp28,-32)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savef29)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savefpr_29)
 C_TEXT(_savef29):
 C_TEXT(_savefpr_29):   stfd    fp29,-24(r1)    #save f29
                        stfd    fp30,-16(r1)    #save f30
                        stfd    fp31,-8(r1)     #save f31
+                       cfi_offset(fp29,-24)
+                       cfi_offset(fp30,-16)
+                       cfi_offset(fp31,-8)
                        stw     r0,8(r1)        #save LR in callers frame
                        blr                     #return
 END (_savefpr_all)
index 8b81647..c74272b 100644 (file)
 ENTRY(_savegpr0_all)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savegpr0_13)
 C_TEXT(_savegpr0_13):  stw     r13,-76(r1)
+                       cfi_offset(r13,-76)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savegpr0_14)
 C_TEXT(_savegpr0_14):  stw     r14,-72(r1)
+                       cfi_offset(r14,-72)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savegpr0_15)
 C_TEXT(_savegpr0_15):  stw     r15,-68(r1)
+                       cfi_offset(r15,-68)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savegpr0_16)
 C_TEXT(_savegpr0_16):  stw     r16,-64(r1)
+                       cfi_offset(r16,-64)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savegpr0_17)
 C_TEXT(_savegpr0_17):  stw     r17,-60(r1)
+                       cfi_offset(r17,-60)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savegpr0_18)
 C_TEXT(_savegpr0_18):  stw     r18,-56(r1)
+                       cfi_offset(r18,-56)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savegpr0_19)
 C_TEXT(_savegpr0_19):  stw     r19,-52(r1)
+                       cfi_offset(r19,-52)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savegpr0_20)
 C_TEXT(_savegpr0_20):  stw     r20,-48(r1)
+                       cfi_offset(r20,-48)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savegpr0_21)
 C_TEXT(_savegpr0_21):  stw     r21,-44(r1)
+                       cfi_offset(r21,-44)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savegpr0_22)
 C_TEXT(_savegpr0_22):  stw     r22,-40(r1)
+                       cfi_offset(r22,-40)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savegpr0_23)
 C_TEXT(_savegpr0_23):  stw     r23,-36(r1)
+                       cfi_offset(r23,-36)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savegpr0_24)
 C_TEXT(_savegpr0_24):  stw     r24,-32(r1)
+                       cfi_offset(r24,-32)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savegpr0_25)
 C_TEXT(_savegpr0_25):  stw     r25,-28(r1)
+                       cfi_offset(r25,-28)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savegpr0_26)
 C_TEXT(_savegpr0_26):  stw     r26,-24(r1)
+                       cfi_offset(r26,-24)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savegpr0_27)
 C_TEXT(_savegpr0_27):  stw     r27,-20(r1)
+                       cfi_offset(r27,-20)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savegpr0_28)
 C_TEXT(_savegpr0_28):  stw     r28,-16(r1)
+                       cfi_offset(r28,-16)
                ASM_GLOBAL_DIRECTIVE C_TEXT(_savegpr0_29)
 C_TEXT(_savegpr0_29):  stw     r29,-12(r1) #save r29
                        stw     r30,-8(r1)  #save r30
                        stw     r31,-4(r1)  #save r31
+                       cfi_offset(r29,-12)
+                       cfi_offset(r30,-8)
+                       cfi_offset(r31,-4)
                        stw     r0,8(r1)    #save LR in callers frame
                        blr                 #return
 END (_savegpr0_all)
index c5afe5a..9ca394d 100644 (file)
@@ -176,7 +176,9 @@ EALIGN(_dl_profile_resolve, 4, 0)
 /* Spill r30, r31 to preserve the link_map* and reloc_addr, in case we
    need to call _dl_call_pltexit.  */
        std     r31,-8(r1)
+       cfi_offset(r31,-8)
        std     r30,-16(r1)
+       cfi_offset(r30,-16)
 /* We need to save the registers used to pass parameters, ie. r3 thru
    r10; the registers are saved in a stack frame.  */
        stdu    r1,-FRAME_SIZE(r1)
index 9df5bb4..f395de9 100644 (file)
@@ -1,5 +1,5 @@
 /* Optimized memcpy implementation for PowerPC64.
-   Copyright (C) 2003 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2006 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
@@ -43,6 +43,7 @@ EALIGN (BP_SYM (memcpy), 5, 0)
     neg   0,3
     std   3,-16(1)
     std   31,-8(1)
+    cfi_offset(31,-8)
     andi. 11,3,7       /* check alignement of dst.  */
     clrldi 0,0,61      /* Number of bytes until the 1st doubleword of dst.  */
     clrldi 10,4,61     /* check alignement of src.  */
index 1a5251d..40a7a24 100644 (file)
@@ -45,6 +45,7 @@ ENTRY(__CONTEXT_FUNC_NAME)
        stw     r0,20(r1)
        cfi_offset (lr, _FRAME_LR_SAVE)
        stw     r31,12(r1)
+       cfi_offset(r31,-4)
        lwz     r31,_UC_REGS_PTR(r3)
 
        /*
index a0f018b..366206d 100644 (file)
@@ -52,8 +52,12 @@ ENTRY (BP_SYM (__clone))
        std     r29,56(r1)
        std     r30,64(r1)
        std     r31,72(r1)
+       cfi_offset(r29,-56)
+       cfi_offset(r30,-64)
+       cfi_offset(r31,-72)
 #ifdef RESET_PID
        std     r28,48(r1)
+       cfi_offset(r28,-48)
 #endif
 
        /* Set up stack frame for child.  */
index 98b49ba..8d7c959 100644 (file)
@@ -144,6 +144,7 @@ ENTRY(__novec_getcontext)
   std  r0,FRAME_LR_SAVE(r1)
   cfi_offset (lr, FRAME_LR_SAVE)
   stdu r1,-128(r1)
+  cfi_adjust_cfa_offset(128)
   li   r3,ENOSYS
   bl   JUMPTARGET(__syscall_error)
   nop
index 68fec9d..48e9af3 100644 (file)
@@ -33,6 +33,7 @@ ENTRY(__novec_setcontext)
 #ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL
   mflr  r0
   std   r31,-8(1)
+  cfi_offset(r31,-8)
   std   r0,FRAME_LR_SAVE(r1)
   cfi_offset (lr, FRAME_LR_SAVE)
   stdu  r1,-128(r1)
@@ -169,7 +170,9 @@ L(nv_do_sigret):
   /* If the kernel is not at least 2.4.21 then generate a ENOSYS stub.  */
   mflr r0
   std  r0,FRAME_LR_SAVE(r1)
+  cfi_offset(lr,FRAME_LR_SAVE)
   stdu r1,-128(r1)
+  cfi_adjust_cfa_offset(128)
   li   r3,ENOSYS
   bl   JUMPTARGET(__syscall_error)
   nop
@@ -201,6 +204,7 @@ ENTRY(__setcontext)
 #ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL
   mflr  r0
   std   r31,-8(1)
+  cfi_offset(r31,-8)
   std   r0,FRAME_LR_SAVE(r1)
   cfi_offset (lr, FRAME_LR_SAVE)
   stdu  r1,-128(r1)
index 5a12860..936d641 100644 (file)
@@ -35,6 +35,7 @@ ENTRY(__novec_swapcontext)
   std  r1,(SIGCONTEXT_GP_REGS+(PT_R1*8))(r3)
   mflr  r0
   std   r31,-8(1)
+  cfi_offset(r31,-8)
   std  r2,(SIGCONTEXT_GP_REGS+(PT_R2*8))(r3)
   std  r0,FRAME_LR_SAVE(r1)
   cfi_offset (lr, FRAME_LR_SAVE)
@@ -264,6 +265,7 @@ L(nv_do_sigret):
   /* If the kernel is not at least 2.4.21 then generate a ENOSYS stub.  */
   mflr r0
   std  r0,FRAME_LR_SAVE(r1)
+  cfi_offset(lr,FRAME_LR_SAVE)
   stdu r1,-128(r1)
   li   r3,ENOSYS
   bl   JUMPTARGET(__syscall_error)
@@ -298,11 +300,14 @@ ENTRY(__swapcontext)
   std  r1,(SIGCONTEXT_GP_REGS+(PT_R1*8))(r3)
   mflr  r0
   std   r31,-8(1)
+  cfi_offset(r31,-8)
   std  r2,(SIGCONTEXT_GP_REGS+(PT_R2*8))(r3)
   std  r0,FRAME_LR_SAVE(r1)
+  cfi_offset (lr, FRAME_LR_SAVE)
   std  r0,(SIGCONTEXT_GP_REGS+(PT_LNK*8))(r3)
   std  r0,(SIGCONTEXT_GP_REGS+(PT_NIP*8))(r3)
   stdu  r1,-128(r1)
+  cfi_adjust_cfa_offset(128)
   std  r4,(SIGCONTEXT_GP_REGS+(PT_R4*8))(r3)
   std  r5,(SIGCONTEXT_GP_REGS+(PT_R5*8))(r3)
   std  r6,(SIGCONTEXT_GP_REGS+(PT_R6*8))(r3)