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

Auto merged

2005/05/17 06:10:13-07:00 hp.com!davidm
(tdep_access_reg): Don't rotate contents of UNW_IA64_PR.

(Logical change 1.292)
This commit is contained in:
hp.com!davidm 2005-05-17 13:24:49 +00:00
parent e5426f4221
commit a6ba57d556

View file

@ -323,8 +323,8 @@ tdep_access_reg (struct cursor *c, unw_regnum_t reg, unw_word_t *valp,
int write) int write)
{ {
ia64_loc_t loc, reg_loc, nat_loc; ia64_loc_t loc, reg_loc, nat_loc;
unw_word_t nat, mask, pr;
int ret, readonly = 0; int ret, readonly = 0;
unw_word_t nat, mask;
uint8_t nat_bitnr; uint8_t nat_bitnr;
switch (reg) switch (reg)
@ -385,20 +385,17 @@ tdep_access_reg (struct cursor *c, unw_regnum_t reg, unw_word_t *valp,
break; break;
case UNW_IA64_PR: case UNW_IA64_PR:
/*
* Note: broad-side access to the predicates is NOT rotated
* (i.e., it is done as if CFM.rrb.pr == 0.
*/
if (write) if (write)
{ {
c->pr = *valp; /* update the predicate cache */ c->pr = *valp; /* update the predicate cache */
pr = pr_ltop (c, *valp); return ia64_put (c, c->loc[IA64_REG_PR], *valp);
return ia64_put (c, c->loc[IA64_REG_PR], pr);
} }
else else
{ return ia64_get (c, c->loc[IA64_REG_PR], valp);
ret = ia64_get (c, c->loc[IA64_REG_PR], &pr);
if (ret < 0)
return ret;
*valp = pr_ptol (c, pr);
}
return 0;
case UNW_IA64_GR + 32 ... UNW_IA64_GR + 127: /* stacked reg */ case UNW_IA64_GR + 32 ... UNW_IA64_GR + 127: /* stacked reg */
reg = rotate_gr (c, reg - UNW_IA64_GR); reg = rotate_gr (c, reg - UNW_IA64_GR);