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:
parent
e5426f4221
commit
a6ba57d556
1 changed files with 7 additions and 10 deletions
|
@ -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);
|
||||||
|
|
Loading…
Reference in a new issue