@@ -171,7 +171,7 @@ static int esp32_fetch_all_regs(struct target *target)
171
171
for (i = 0 ; i < XT_NUM_REGS ; i ++ ) {
172
172
if (regReadable (esp32_regs [i ].flags , cpenable ) && (esp32_regs [i ].type == XT_REG_SPECIAL || esp32_regs [i ].type == XT_REG_USER )) {
173
173
if (esp32_regs [i ].type == XT_REG_USER ) {
174
- esp108_queue_exec_ins (target , XT_INS_RUR (esp32_regs [i ].reg_num , XT_REG_A3 ));
174
+ esp108_queue_exec_ins (esp32 -> esp32_targets [ c ] , XT_INS_RUR (esp32_regs [i ].reg_num , XT_REG_A3 ));
175
175
}
176
176
else if (esp32_regs [i ].type == XT_REG_FR ) {
177
177
esp108_queue_exec_ins (esp32 -> esp32_targets [c ], XT_INS_RFR (esp32_regs [i ].reg_num , XT_REG_A3 ));
@@ -242,14 +242,16 @@ static int esp32_write_dirty_registers(struct target *target, struct reg *reg_li
242
242
int i , j ;
243
243
int res ;
244
244
uint32_t regval , windowbase ;
245
+ bool scratch_reg_dirty = false;
245
246
246
247
LOG_DEBUG ("%s: %s" , target -> cmd_name , __FUNCTION__ );
247
248
248
249
//We need to write the dirty registers in the cache list back to the processor.
249
250
//Start by writing the SFR/user registers.
250
251
for (i = 0 ; i < XT_NUM_REGS ; i ++ ) {
251
252
if (reg_list [i ].dirty ) {
252
- if (esp32_regs [i ].type == XT_REG_SPECIAL || esp32_regs [i ].type == XT_REG_USER ) {
253
+ if (esp32_regs [i ].type == XT_REG_SPECIAL || esp32_regs [i ].type == XT_REG_USER || esp32_regs [i ].type == XT_REG_FR ) {
254
+ scratch_reg_dirty = true;
253
255
regval = esp108_reg_get (& reg_list [i ]);
254
256
LOG_DEBUG ("%s: Writing back reg %s val %08X" , target -> cmd_name , esp32_regs [i ].name , regval );
255
257
esp108_queue_nexus_reg_write (target , NARADR_DDR , regval );
@@ -265,6 +267,9 @@ static int esp32_write_dirty_registers(struct target *target, struct reg *reg_li
265
267
}
266
268
}
267
269
}
270
+ if (scratch_reg_dirty ) {
271
+ esp32_mark_register_dirty (reg_list , XT_REG_IDX_A3 );
272
+ }
268
273
269
274
//Grab the windowbase, we need it.
270
275
windowbase = esp108_reg_get (& reg_list [XT_REG_IDX_WINDOWBASE ]);
0 commit comments