aarch64: fix debug entry from EL0
If we enter debug state from EL0, some registers are not accessible. Temporarily move to EL1H and back to gain access. Also, fix armv8_dpm_modeswitch() to not immediately restore the previous state on elevating the privilege level. Change-Id: Ic2a92109230ff4eb6834c00ef544397a5b7ad56a Signed-off-by: Matthias Welwarsky <matthias.welwarsky@sysgo.com> Reviewed-on: http://openocd.zylin.com/4461 Tested-by: jenkins Reviewed-by: Matthias Welwarsky <matthias@welwarsky.de>
This commit is contained in:
committed by
Matthias Welwarsky
parent
935f0c5cc2
commit
ffd6b78a2c
@@ -1861,7 +1861,7 @@ static int aarch64_write_cpu_memory(struct target *target,
|
||||
if (dscr & (DSCR_ERR | DSCR_SYS_ERROR_PEND)) {
|
||||
/* Abort occurred - clear it and exit */
|
||||
LOG_ERROR("abort occurred - dscr = 0x%08" PRIx32, dscr);
|
||||
armv8_dpm_handle_exception(dpm);
|
||||
armv8_dpm_handle_exception(dpm, true);
|
||||
return ERROR_FAIL;
|
||||
}
|
||||
|
||||
@@ -2080,7 +2080,7 @@ static int aarch64_read_cpu_memory(struct target *target,
|
||||
if (dscr & (DSCR_ERR | DSCR_SYS_ERROR_PEND)) {
|
||||
/* Abort occurred - clear it and exit */
|
||||
LOG_ERROR("abort occurred - dscr = 0x%08" PRIx32, dscr);
|
||||
armv8_dpm_handle_exception(dpm);
|
||||
armv8_dpm_handle_exception(dpm, true);
|
||||
return ERROR_FAIL;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user