arm_dpm: do not read/write non-existent registers
authorTarek BOCHKATI <tarek.bouchkati@gmail.com>
Sun, 14 Feb 2021 12:21:36 +0000 (13:21 +0100)
committerAntonio Borneo <borneo.antonio@gmail.com>
Sun, 13 Jun 2021 18:59:04 +0000 (19:59 +0100)
Change-Id: I6a991899bb178ee0c6b41870a45d0a9439d9dc1e
Signed-off-by: Tarek BOCHKATI <tarek.bouchkati@gmail.com>
Reviewed-on: http://openocd.zylin.com/6063
Reviewed-by: Antonio Borneo <borneo.antonio@gmail.com>
Tested-by: jenkins
src/target/arm_dpm.c

index 058f0df09b8b5003453e089ae6c98c583e106adb..d1f5748565e6ac96218414d7d7e7c7d1eead1873 100644 (file)
@@ -514,7 +514,7 @@ int arm_dpm_write_dirty_registers(struct arm_dpm *dpm, bool bpwp)
                                continue;
                        if (arm->cpsr == cache->reg_list + i)
                                continue;
-                       if (!cache->reg_list[i].dirty)
+                       if (!cache->reg_list[i].exist || !cache->reg_list[i].dirty)
                                continue;
 
                        r = cache->reg_list[i].arch_info;
@@ -763,7 +763,7 @@ static int arm_dpm_full_context(struct target *target)
                for (unsigned i = 0; i < cache->num_regs; i++) {
                        struct arm_reg *r;
 
-                       if (cache->reg_list[i].valid)
+                       if (!cache->reg_list[i].exist || cache->reg_list[i].valid)
                                continue;
                        r = cache->reg_list[i].arch_info;