summaryrefslogtreecommitdiff
path: root/gdb/arm-linux-nat.c
diff options
context:
space:
mode:
authorDaniel Jacobowitz <dan@debian.org>2005-03-29 16:58:23 +0000
committerDaniel Jacobowitz <dan@debian.org>2005-03-29 16:58:23 +0000
commit3839323d98020519a11cda2717ff9a0ff5a8ec15 (patch)
treed0a4dede70e4d631d418473343eb3b5cad0c7f15 /gdb/arm-linux-nat.c
parenta722256a62c6417d4df625005a1baf31483e2088 (diff)
downloadgdb-3839323d98020519a11cda2717ff9a0ff5a8ec15.tar.gz
* arm-linux-nat.c (store_register, store_regs): Handle
ARM_PS_REGNUM.
Diffstat (limited to 'gdb/arm-linux-nat.c')
-rw-r--r--gdb/arm-linux-nat.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/gdb/arm-linux-nat.c b/gdb/arm-linux-nat.c
index b5311f4c2c0..8059af6c052 100644
--- a/gdb/arm-linux-nat.c
+++ b/gdb/arm-linux-nat.c
@@ -492,6 +492,12 @@ store_register (int regno)
if (regno >= ARM_A1_REGNUM && regno <= ARM_PC_REGNUM)
regcache_raw_collect (current_regcache, regno, (char *) &regs[regno]);
+ else if (arm_apcs_32 && regno == ARM_PS_REGNUM)
+ regcache_raw_collect (current_regcache, regno,
+ (char *) &regs[ARM_CPSR_REGNUM]);
+ else if (!arm_apcs_32 && regno == ARM_PS_REGNUM)
+ regcache_raw_collect (current_regcache, ARM_PC_REGNUM,
+ (char *) &regs[ARM_PC_REGNUM]);
ret = ptrace (PTRACE_SETREGS, tid, 0, &regs);
if (ret < 0)
@@ -524,6 +530,10 @@ store_regs (void)
regcache_raw_collect (current_regcache, regno, (char *) &regs[regno]);
}
+ if (arm_apcs_32 && register_cached (ARM_PS_REGNUM))
+ regcache_raw_collect (current_regcache, ARM_PS_REGNUM,
+ (char *) &regs[ARM_CPSR_REGNUM]);
+
ret = ptrace (PTRACE_SETREGS, tid, 0, &regs);
if (ret < 0)