X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Ftarget%2Farm_dpm.c;h=b8f392cddf669bbe39b3170ef302ddaa6d73d8ec;hp=b602b80e4a592ba66065980c00d421257ad55005;hb=e77b7447f7b30d70961e5bee45400f70baeb16fc;hpb=447fb25324f1e9112523ef78825f8dadf3c7ddb7 diff --git a/src/target/arm_dpm.c b/src/target/arm_dpm.c index b602b80e4a..b8f392cddf 100644 --- a/src/target/arm_dpm.c +++ b/src/target/arm_dpm.c @@ -648,14 +648,15 @@ static int arm_dpm_full_context(struct target *target) did_read = true; mode = r->mode; - /* For R8..R12 when we've entered debug - * state in FIQ mode... patch mode. + /* For regular (ARM_MODE_ANY) R8..R12 + * in case we've entered debug state + * in FIQ mode we need to patch mode. */ - if (mode == ARM_MODE_ANY) - mode = ARM_MODE_USR; + if (mode != ARM_MODE_ANY) + retval = dpm_modeswitch(dpm, mode); + else + retval = dpm_modeswitch(dpm, ARM_MODE_USR); - /* REVISIT error checks */ - retval = dpm_modeswitch(dpm, mode); if (retval != ERROR_OK) goto done; }