target/xtensa: populate PS correctly during fetch
authorIan Thompson <ianst@cadence.com>
Wed, 14 Sep 2022 16:59:47 +0000 (09:59 -0700)
committerAntonio Borneo <borneo.antonio@gmail.com>
Sat, 17 Sep 2022 20:57:26 +0000 (20:57 +0000)
Read PS from EPS[debuglevel] during fetch such that it reflects the correct value when read via telnet (not just via gdb_server).

Signed-off-by: Ian Thompson <ianst@cadence.com>
Change-Id: I8504f68989bc6d5fe451a8cb69d01c86f4ec0100
Reviewed-on: https://review.openocd.org/c/openocd/+/7195
Tested-by: jenkins
Reviewed-by: Erhan Kurubas <erhan.kurubas@espressif.com>
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
src/target/xtensa/xtensa.c

index a6e50ccc71f8a4c4811c36ac8bb8adbe1c5ba292..f331a86654d69b63a8de287f52700adb0522ba74 100644 (file)
@@ -1100,6 +1100,9 @@ int xtensa_fetch_all_regs(struct target *target)
                                if (reg_num == XT_PC_REG_NUM_VIRTUAL) {
                                        /* reg number of PC for debug interrupt depends on NDEBUGLEVEL */
                                        reg_num = (XT_PC_REG_NUM_BASE + xtensa->core_config->debug.irq_level);
+                               } else if (reg_num == xtensa_regs[XT_REG_IDX_PS].reg_num) {
+                                       /* reg number of PS for debug interrupt depends on NDEBUGLEVEL */
+                                       reg_num = (XT_PS_REG_NUM_BASE + xtensa->core_config->debug.irq_level);
                                } else if (reg_num == xtensa_regs[XT_REG_IDX_CPENABLE].reg_num) {
                                        /* CPENABLE already read/updated; don't re-read */
                                        reg_fetched = false;