* config/ia64/unwind-ia64.c (alloc_spill_area): Fix offset.
authorrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 1 Apr 2002 06:52:45 +0000 (06:52 +0000)
committerrth <rth@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 1 Apr 2002 06:52:45 +0000 (06:52 +0000)
(desc_frgr_mem): Fix reference to f16-f31.

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

gcc/ChangeLog
gcc/config/ia64/unwind-ia64.c

index c97fd63..d7bc594 100644 (file)
@@ -1,3 +1,8 @@
+2002-03-31  Richard Henderson  <rth@redhat.com>
+
+       * config/ia64/unwind-ia64.c (alloc_spill_area): Fix offset.
+       (desc_frgr_mem): Fix reference to f16-f31.
+
 2002-03-31  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * rtl.h (RTL_CHECK1, RTL_CHECK2, RTL_CHECKC1, RTL_CHECKC2,
index 52db9ac..2c1e356 100644 (file)
@@ -342,8 +342,8 @@ alloc_spill_area (unsigned long *offp, unsigned long regsize,
       if (reg->where == UNW_WHERE_SPILL_HOME)
        {
          reg->where = UNW_WHERE_PSPREL;
-         reg->val = 0x10 - *offp;
-         *offp += regsize;
+         *offp -= regsize;
+         reg->val = *offp;
        }
     }
 }
@@ -541,7 +541,8 @@ desc_frgr_mem (unsigned char grmask, unw_word frmask,
     {
       if ((frmask & 1) != 0)
        {
-         set_reg (sr->curr.reg + UNW_REG_F2 + i, UNW_WHERE_SPILL_HOME,
+         enum unw_register_index base = i < 4 ? UNW_REG_F2 : UNW_REG_F16 - 4;
+         set_reg (sr->curr.reg + base + i, UNW_WHERE_SPILL_HOME,
                   sr->region_start + sr->region_len - 1, 0);
          sr->any_spills = 1;
        }