This is an automated email from Gerrit. Kevin Yang ([email protected]) just uploaded a new patch set to Gerrit, which you can find at http://openocd.zylin.com/5832
-- gerrit commit 22bfe92ff90377d91a6fb8e6086b9f5cb3b755b1 Author: Kevin Yang <[email protected]> Date: Wed Sep 2 22:50:27 2020 -0700 target/armv8: handle halted aarch32 On connection to halted aarch32, openocd tries and fails to read aarch64 registers. Change armv8_dpm_read_current_registers and armv8_reg_current to be core_state aware and switch the register cache appropriately. Change-Id: Ie3801c64613fd843985fd16fb798b44ec38a87d2 Signed-off-by: Kevin Yang <[email protected]> diff --git a/src/target/armv8.c b/src/target/armv8.c index e47f659..26bbd1e 100644 --- a/src/target/armv8.c +++ b/src/target/armv8.c @@ -1706,7 +1706,11 @@ struct reg *armv8_reg_current(struct arm *arm, unsigned regnum) if (regnum > (ARMV8_LAST_REG - 1)) return NULL; - r = arm->core_cache->reg_list + regnum; + if (arm->core_state == ARM_STATE_AARCH64) + r = arm->core_cache->reg_list + regnum; + else + r = arm->core_cache->next->reg_list + regnum; + return r; } diff --git a/src/target/armv8_dpm.c b/src/target/armv8_dpm.c index 90cf4e0..06ec74d 100644 --- a/src/target/armv8_dpm.c +++ b/src/target/armv8_dpm.c @@ -745,12 +745,17 @@ int armv8_dpm_read_current_registers(struct arm_dpm *dpm) struct reg *r; uint32_t cpsr; int retval; + enum arm_state core_state; retval = dpm->prepare(dpm); if (retval != ERROR_OK) return retval; - cache = arm->core_cache; + core_state = armv8_dpm_get_core_state(dpm); + if (core_state == ARM_STATE_AARCH64) + cache = arm->core_cache; + else + cache = arm->core_cache->next; /* read R0 first (it's used for scratch), then CPSR */ r = cache->reg_list + ARMV8_R0; -- _______________________________________________ OpenOCD-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/openocd-devel
