diff options
author | mlu <mlu@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2009-04-03 10:10:12 +0000 |
---|---|---|
committer | mlu <mlu@b42882b7-edfa-0310-969c-e2dbd0fdcd60> | 2009-04-03 10:10:12 +0000 |
commit | 47a81338a592084ad4be9e49ba076192e93d6260 (patch) | |
tree | f9b0980e4900f440d09155bf80c05bc51d2537a4 /src/target/armv7m.c | |
parent | 9646f21ad8288f8a4fa6d260e949e599f3978939 (diff) |
Slight improvement in run_algorithm register restore.
More debug info for cortex swjdp errors.
git-svn-id: svn://svn.berlios.de/openocd/trunk@1453 b42882b7-edfa-0310-969c-e2dbd0fdcd60
Diffstat (limited to 'src/target/armv7m.c')
-rw-r--r-- | src/target/armv7m.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/src/target/armv7m.c b/src/target/armv7m.c index d4c6d357..f69f9096 100644 --- a/src/target/armv7m.c +++ b/src/target/armv7m.c @@ -449,10 +449,15 @@ int armv7m_run_algorithm(struct target_s *target, int num_mem_params, mem_param_ for (i = ARMV7NUMCOREREGS-1; i >= 0; i--) { - LOG_DEBUG("restoring register %s with value 0x%8.8x", armv7m->core_cache->reg_list[i].name, context[i]); - buf_set_u32(armv7m->core_cache->reg_list[i].value, 0, 32, context[i]); - armv7m->core_cache->reg_list[i].valid = 1; - armv7m->core_cache->reg_list[i].dirty = 1; + u32 regvalue; + regvalue = buf_get_u32(armv7m->core_cache->reg_list[i].value, 0, 32); + if (regvalue != context[i]) + { + LOG_DEBUG("restoring register %s with value 0x%8.8x", armv7m->core_cache->reg_list[i].name, context[i]); + buf_set_u32(armv7m->core_cache->reg_list[i].value, 0, 32, context[i]); + armv7m->core_cache->reg_list[i].valid = 1; + armv7m->core_cache->reg_list[i].dirty = 1; + } } armv7m->core_mode = core_mode; |