mirror of
https://github.com/tobast/libunwind-eh_elf.git
synced 2024-11-05 09:19:27 +01:00
(access_nat): Check for fp-location first and also do a direct get/put if
the NaT-location is a NaT-register. (Logical change 1.183)
This commit is contained in:
parent
94b71a1cd8
commit
43db353753
1 changed files with 10 additions and 8 deletions
|
@ -242,14 +242,6 @@ access_nat (struct cursor *c,
|
|||
unw_fpreg_t tmp;
|
||||
int ret;
|
||||
|
||||
if (IA64_IS_UC_LOC (reg_loc))
|
||||
{
|
||||
if (write)
|
||||
return ia64_put (c, nat_loc, *valp);
|
||||
else
|
||||
return ia64_get (c, nat_loc, valp);
|
||||
}
|
||||
|
||||
if (IA64_IS_FP_LOC (reg_loc))
|
||||
{
|
||||
/* NaT bit is saved as a NaTVal. This happens when a general
|
||||
|
@ -295,6 +287,16 @@ access_nat (struct cursor *c,
|
|||
return ret;
|
||||
}
|
||||
|
||||
if ((IA64_IS_REG_LOC (nat_loc)
|
||||
&& (unsigned) (IA64_GET_REG (nat_loc) - UNW_IA64_NAT) < 128)
|
||||
|| IA64_IS_UC_LOC (reg_loc))
|
||||
{
|
||||
if (write)
|
||||
return ia64_put (c, nat_loc, *valp);
|
||||
else
|
||||
return ia64_get (c, nat_loc, valp);
|
||||
}
|
||||
|
||||
if (IA64_IS_NULL_LOC (nat_loc))
|
||||
{
|
||||
/* NaT bit is not saved. This happens if a general register is
|
||||
|
|
Loading…
Reference in a new issue