2002-04-27 David S. Miller <davem@redhat.com>
authordavem <davem@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 29 Apr 2002 04:12:02 +0000 (04:12 +0000)
committerdavem <davem@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 29 Apr 2002 04:12:02 +0000 (04:12 +0000)
PR target/6494
* config/sparc/linux64.h (MD_FALLBACK_FRAME_STATE_FOR): Be mindful
of the stack bias.

* config/sparc/linux.h, config/sparc/linux64.h: Don't bother
including signal.h and sys/ucontext.h, not needed.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@52872 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/sparc/linux.h
gcc/config/sparc/linux64.h

index 980edbe..d8380e9 100644 (file)
@@ -1,3 +1,12 @@
+2002-04-27  David S. Miller  <davem@redhat.com>
+
+       PR target/6494
+       * config/sparc/linux64.h (MD_FALLBACK_FRAME_STATE_FOR): Be mindful
+       of the stack bias.
+
+       * config/sparc/linux.h, config/sparc/linux64.h: Don't bother
+       including signal.h and sys/ucontext.h, not needed.
+
 2002-04-29  Hans-Peter Nilsson  <hp@bitrange.com>
 
        * varasm.c (output_constant_def): Correct test for not calling
index 3e7e061..ccf4ce0 100644 (file)
@@ -261,11 +261,6 @@ do {                                                                       \
 /* Do code reading to identify a signal frame, and set the frame
    state data appropriately.  See unwind-dw2.c for the structs.  */
 
-#ifdef IN_LIBGCC2
-#include <signal.h>
-#include <sys/ucontext.h>
-#endif
-
 #define MD_FALLBACK_FRAME_STATE_FOR(CONTEXT, FS, SUCCESS)              \
   do {                                                                 \
     unsigned int *pc_ = (CONTEXT)->ra;                                 \
index 0ab61c2..c7950a8 100644 (file)
@@ -381,11 +381,6 @@ do {                                                                       \
 /* Do code reading to identify a signal frame, and set the frame
    state data appropriately.  See unwind-dw2.c for the structs.  */
 
-#ifdef IN_LIBGCC2
-#include <signal.h>
-#include <sys/ucontext.h>
-#endif
-
 /* Handle multilib correctly.  */
 #if defined(__arch64__)
 /* 64-bit Sparc version */
@@ -403,14 +398,13 @@ do {                                                                      \
     fpu_save_off_ = regs_off_ + (16 * 8) + (3 * 8) + (2 * 4);          \
     this_cfa_ = (long) (CONTEXT)->cfa;                                 \
     new_cfa_ = *(long *)(((CONTEXT)->cfa) + (regs_off_ + (14 * 8)));   \
+    new_cfa_ += 2047; /* Stack bias */                                 \
     fpu_save_ = *(long *)((this_cfa_) + (fpu_save_off_));              \
     (FS)->cfa_how = CFA_REG_OFFSET;                                    \
     (FS)->cfa_reg = 14;                                                        \
     (FS)->cfa_offset = new_cfa_ - (long) (CONTEXT)->cfa;               \
     for (i_ = 1; i_ < 16; ++i_)                                                \
       {                                                                        \
-        if (i_ == 14)                                                  \
-          continue;                                                    \
        (FS)->regs.reg[i_].how = REG_SAVED_OFFSET;                      \
        (FS)->regs.reg[i_].loc.offset =                                 \
          this_cfa_ + (regs_off_ + (i_ * 8)) - new_cfa_;                \