X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Ftarget%2Farmv7m.c;h=45722f54284e3924c0547616f4aeddaf701df190;hb=18d8ac5267a41d29417ea01213be5dc9c2bddf9c;hp=f8c8430622ee18d415e84fc171fbaae8de517327;hpb=d460a7cd6cc218bd4c3cc8a98ba32a4a81a62018;p=openocd.git diff --git a/src/target/armv7m.c b/src/target/armv7m.c index f8c8430622..45722f5428 100644 --- a/src/target/armv7m.c +++ b/src/target/armv7m.c @@ -26,7 +26,7 @@ * Free Software Foundation, Inc., * * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * * * - * ARMv7-M Architecture, Application Level Reference Manual * + * ARMv7-M Architecture, Application Level Reference Manual * * ARM DDI 0405C (September 2008) * * * ***************************************************************************/ @@ -87,35 +87,36 @@ reg_t armv7m_gdb_dummy_cpsr_reg = static const struct { unsigned id; char *name; + unsigned bits; } armv7m_regs[] = { - { ARMV7M_R0, "r0" }, - { ARMV7M_R1, "r1" }, - { ARMV7M_R2, "r2" }, - { ARMV7M_R3, "r3" }, - - { ARMV7M_R4, "r4" }, - { ARMV7M_R5, "r5" }, - { ARMV7M_R6, "r6" }, - { ARMV7M_R7, "r7" }, - - { ARMV7M_R8, "r8" }, - { ARMV7M_R9, "r9" }, - { ARMV7M_R10, "r10" }, - { ARMV7M_R11, "r11" }, - - { ARMV7M_R12, "r12" }, - { ARMV7M_R13, "sp" }, - { ARMV7M_R14, "lr" }, - { ARMV7M_PC, "pc" }, - - { ARMV7M_xPSR, "xPSR" }, - { ARMV7M_MSP, "msp" }, - { ARMV7M_PSP, "psp" }, - - { ARMV7M_PRIMASK, "primask" }, - { ARMV7M_BASEPRI, "basepri" }, - { ARMV7M_FAULTMASK, "faultmask" }, - { ARMV7M_CONTROL, "control" }, + { ARMV7M_R0, "r0", 32 }, + { ARMV7M_R1, "r1", 32 }, + { ARMV7M_R2, "r2", 32 }, + { ARMV7M_R3, "r3", 32 }, + + { ARMV7M_R4, "r4", 32 }, + { ARMV7M_R5, "r5", 32 }, + { ARMV7M_R6, "r6", 32 }, + { ARMV7M_R7, "r7", 32 }, + + { ARMV7M_R8, "r8", 32 }, + { ARMV7M_R9, "r9", 32 }, + { ARMV7M_R10, "r10", 32 }, + { ARMV7M_R11, "r11", 32 }, + + { ARMV7M_R12, "r12", 32 }, + { ARMV7M_R13, "sp", 32 }, + { ARMV7M_R14, "lr", 32 }, + { ARMV7M_PC, "pc", 32 }, + + { ARMV7M_xPSR, "xPSR", 32 }, + { ARMV7M_MSP, "msp", 32 }, + { ARMV7M_PSP, "psp", 32 }, + + { ARMV7M_PRIMASK, "primask", 1 }, + { ARMV7M_BASEPRI, "basepri", 8 }, + { ARMV7M_FAULTMASK, "faultmask", 1 }, + { ARMV7M_CONTROL, "control", 2 }, }; #define ARMV7M_NUM_REGS ARRAY_SIZE(armv7m_regs) @@ -454,7 +455,7 @@ int armv7m_run_algorithm(struct target_s *target, int num_mem_params, mem_param_ } } - for (i = ARMV7M_NUM_REGS; i >= 0; i--) + for (i = ARMV7M_NUM_REGS - 1; i >= 0; i--) { uint32_t regvalue; regvalue = buf_get_u32(armv7m->core_cache->reg_list[i].value, 0, 32); @@ -534,7 +535,7 @@ reg_cache_t *armv7m_build_reg_cache(target_t *target) arch_info[i].target = target; arch_info[i].armv7m_common = armv7m; reg_list[i].name = armv7m_regs[i].name; - reg_list[i].size = 32; + reg_list[i].size = armv7m_regs[i].bits; reg_list[i].value = calloc(1, 4); reg_list[i].dirty = 0; reg_list[i].valid = 0;