X-Git-Url: https://review.openocd.org/gitweb?a=blobdiff_plain;f=src%2Ftarget%2Farm_dpm.c;h=5df625f035fc974a3fa4a17bcac4fc8f5d577996;hb=79d0f1345b8d68ff522f21451860c74c8f1018ca;hp=b83d17a1fcbf4ccfb09b2d9ece4a9e3c5e7d30cc;hpb=374127301ec1d72033b9d573b72c7abdfd61990d;p=openocd.git diff --git a/src/target/arm_dpm.c b/src/target/arm_dpm.c index b83d17a1fc..5df625f035 100644 --- a/src/target/arm_dpm.c +++ b/src/target/arm_dpm.c @@ -14,7 +14,7 @@ * You should have received a copy of the GNU General Public License * along with this program; if not, write to the * Free Software Foundation, Inc., - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ #ifdef HAVE_CONFIG_H @@ -571,7 +571,7 @@ fail: } static int arm_dpm_write_core_reg(struct target *target, struct reg *r, - int regnum, enum arm_mode mode, uint32_t value) + int regnum, enum arm_mode mode, uint8_t *value) { struct arm_dpm *dpm = target_to_arm(target)->dpm; int retval; @@ -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; }