diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 7b799bd3060..d28552b16d5 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +2016-11-22 Yao Qi + + * spu-tdep.c (spu_software_single_step): Call get_regcache_arch + instead of get_frame_arch. Call regcache_read_pc instead of + get_frame_pc. Call regcache_raw_get_unsigned instead of + get_frame_register_unsigned. + 2016-11-22 Yao Qi * tic6x-tdep.c (tic6x_condition_true): Replace frame with diff --git a/gdb/spu-tdep.c b/gdb/spu-tdep.c index 073be2d7189..d16b68f6274 100644 --- a/gdb/spu-tdep.c +++ b/gdb/spu-tdep.c @@ -1613,7 +1613,8 @@ spu_memory_remove_breakpoint (struct gdbarch *gdbarch, static VEC (CORE_ADDR) * spu_software_single_step (struct frame_info *frame) { - struct gdbarch *gdbarch = get_frame_arch (frame); + struct regcache *regcache = get_current_regcache (); + struct gdbarch *gdbarch = get_regcache_arch (regcache); enum bfd_endian byte_order = gdbarch_byte_order (gdbarch); CORE_ADDR pc, next_pc; unsigned int insn; @@ -1622,7 +1623,7 @@ spu_software_single_step (struct frame_info *frame) ULONGEST lslr; VEC (CORE_ADDR) *next_pcs = NULL; - pc = get_frame_pc (frame); + pc = regcache_read_pc (regcache); if (target_read_memory (pc, buf, 4)) throw_error (MEMORY_ERROR, _("Could not read instruction at %s."), @@ -1631,7 +1632,7 @@ spu_software_single_step (struct frame_info *frame) insn = extract_unsigned_integer (buf, 4, byte_order); /* Get local store limit. */ - lslr = get_frame_register_unsigned (frame, SPU_LSLR_REGNUM); + lslr = regcache_raw_get_unsigned (regcache, SPU_LSLR_REGNUM); if (!lslr) lslr = (ULONGEST) -1; @@ -1652,7 +1653,7 @@ spu_software_single_step (struct frame_info *frame) if (reg == SPU_PC_REGNUM) target += SPUADDR_ADDR (pc); else if (reg != -1) - target += get_frame_register_unsigned (frame, reg) & -4; + target += regcache_raw_get_unsigned (regcache, reg) & -4; target = target & lslr; if (target != next_pc)