From 43db353753ffd14163128c23f43a5e588d52cb55 Mon Sep 17 00:00:00 2001 From: "hp.com!davidm" Date: Fri, 19 Mar 2004 02:38:39 +0000 Subject: [PATCH] (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) --- src/ia64/Gregs-ia64.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/ia64/Gregs-ia64.c b/src/ia64/Gregs-ia64.c index 9f46393b..5d53256e 100644 --- a/src/ia64/Gregs-ia64.c +++ b/src/ia64/Gregs-ia64.c @@ -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