Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / arch / ia64 / kernel / unwind.c
index 2776a07..93d5a3b 100644 (file)
@@ -362,7 +362,7 @@ unw_access_gr (struct unw_frame_info *info, int regnum, unsigned long *val, char
                        if (info->pri_unat_loc)
                                nat_addr = info->pri_unat_loc;
                        else
-                               nat_addr = &info->sw->ar_unat;
+                               nat_addr = &info->sw->caller_unat;
                        nat_mask = (1UL << ((long) addr & 0x1f8)/8);
                }
        } else {
@@ -524,7 +524,7 @@ unw_access_ar (struct unw_frame_info *info, int regnum, unsigned long *val, int
              case UNW_AR_UNAT:
                addr = info->unat_loc;
                if (!addr)
-                       addr = &info->sw->ar_unat;
+                       addr = &info->sw->caller_unat;
                break;
 
              case UNW_AR_LC:
@@ -1775,7 +1775,7 @@ run_script (struct unw_script *script, struct unw_frame_info *state)
 
                      case UNW_INSN_SETNAT_MEMSTK:
                        if (!state->pri_unat_loc)
-                               state->pri_unat_loc = &state->sw->ar_unat;
+                               state->pri_unat_loc = &state->sw->caller_unat;
                        /* register off. is a multiple of 8, so the least 3 bits (type) are 0 */
                        s[dst+1] = ((unsigned long) state->pri_unat_loc - s[dst]) | UNW_NAT_MEMSTK;
                        break;
@@ -2019,28 +2019,6 @@ init_frame_info (struct unw_frame_info *info, struct task_struct *t,
        STAT(unw.stat.api.init_time += ia64_get_itc() - start; local_irq_restore(flags));
 }
 
-void
-unw_init_from_interruption (struct unw_frame_info *info, struct task_struct *t,
-                           struct pt_regs *pt, struct switch_stack *sw)
-{
-       unsigned long sof;
-
-       init_frame_info(info, t, sw, pt->r12);
-       info->cfm_loc = &pt->cr_ifs;
-       info->unat_loc = &pt->ar_unat;
-       info->pfs_loc = &pt->ar_pfs;
-       sof = *info->cfm_loc & 0x7f;
-       info->bsp = (unsigned long) ia64_rse_skip_regs((unsigned long *) info->regstk.top, -sof);
-       info->ip = pt->cr_iip + ia64_psr(pt)->ri;
-       info->pt = (unsigned long) pt;
-       UNW_DPRINT(3, "unwind.%s:\n"
-                  "  bsp    0x%lx\n"
-                  "  sof    0x%lx\n"
-                  "  ip     0x%lx\n",
-                  __FUNCTION__, info->bsp, sof, info->ip);
-       find_save_locs(info);
-}
-
 void
 unw_init_frame_info (struct unw_frame_info *info, struct task_struct *t, struct switch_stack *sw)
 {
@@ -2243,11 +2221,11 @@ unw_init (void)
        if (8*sizeof(unw_hash_index_t) < UNW_LOG_HASH_SIZE)
                unw_hash_index_t_is_too_narrow();
 
-       unw.sw_off[unw.preg_index[UNW_REG_PRI_UNAT_GR]] = SW(AR_UNAT);
+       unw.sw_off[unw.preg_index[UNW_REG_PRI_UNAT_GR]] = SW(CALLER_UNAT);
        unw.sw_off[unw.preg_index[UNW_REG_BSPSTORE]] = SW(AR_BSPSTORE);
-       unw.sw_off[unw.preg_index[UNW_REG_PFS]] = SW(AR_UNAT);
+       unw.sw_off[unw.preg_index[UNW_REG_PFS]] = SW(AR_PFS);
        unw.sw_off[unw.preg_index[UNW_REG_RP]] = SW(B0);
-       unw.sw_off[unw.preg_index[UNW_REG_UNAT]] = SW(AR_UNAT);
+       unw.sw_off[unw.preg_index[UNW_REG_UNAT]] = SW(CALLER_UNAT);
        unw.sw_off[unw.preg_index[UNW_REG_PR]] = SW(PR);
        unw.sw_off[unw.preg_index[UNW_REG_LC]] = SW(AR_LC);
        unw.sw_off[unw.preg_index[UNW_REG_FPSR]] = SW(AR_FPSR);