1
0
Fork 0
mirror of https://github.com/tobast/libunwind-eh_elf.git synced 2024-11-02 08:09:27 +01:00

(unw_get_save_loc): Handle floating-point registers as well.

(Logical change 1.107)
This commit is contained in:
hp.com!davidm 2003-10-11 01:06:49 +00:00
parent 4dfe79aef0
commit 233952e855

View file

@ -94,6 +94,14 @@ unw_get_save_loc (unw_cursor_t *cursor, int reg, unw_save_loc_t *sloc)
}
break;
case UNW_IA64_FR + 2: loc = c->loc[IA64_REG_F2]; break;
case UNW_IA64_FR + 3: loc = c->loc[IA64_REG_F3]; break;
case UNW_IA64_FR + 4: loc = c->loc[IA64_REG_F4]; break;
case UNW_IA64_FR + 5: loc = c->loc[IA64_REG_F5]; break;
case UNW_IA64_FR + 16 ... UNW_IA64_FR + 31:
loc = c->loc[IA64_REG_F16 + (reg - (UNW_IA64_FR + 16))];
break;
case UNW_IA64_AR_BSP: loc = c->loc[IA64_REG_BSP]; break;
case UNW_IA64_AR_BSPSTORE: loc = c->loc[IA64_REG_BSPSTORE]; break;
case UNW_IA64_AR_PFS: loc = c->loc[IA64_REG_PFS]; break;
@ -132,6 +140,8 @@ unw_get_save_loc (unw_cursor_t *cursor, int reg, unw_save_loc_t *sloc)
case UNW_IA64_GR + 1: /* global pointer */
case UNW_IA64_NAT + 0:
case UNW_IA64_NAT + 1: /* global pointer */
case UNW_IA64_FR + 0:
case UNW_IA64_FR + 1:
break;
case UNW_IA64_NAT + 2 ... UNW_IA64_NAT + 3:
@ -150,6 +160,15 @@ unw_get_save_loc (unw_cursor_t *cursor, int reg, unw_save_loc_t *sloc)
case UNW_IA64_AR_CCV:
loc = ia64_scratch_loc (c, reg);
break;
case UNW_IA64_FR + 6 ... UNW_IA64_FR + 15:
loc = ia64_scratch_loc (c, reg);
break;
case UNW_IA64_FR + 32 ... UNW_IA64_FR + 127:
reg = rotate_fr (c, reg - UNW_IA64_FR) + UNW_IA64_FR;
loc = ia64_scratch_loc (c, reg);
break;
}
memset (sloc, 0, sizeof (sloc));