From: David B. <dbr...@us...> - 2009-11-07 00:02:04
|
This is an automated email from the git hooks/post-receive script. It was generated because a ref change was pushed to the repository containing the project "Main OpenOCD repository". The branch, master has been updated via fb50efc6e712f413d109c3d77683d0358a557ed4 (commit) via a9abfa7d06dbcfded97b7fb41f50d3581c24fbae (commit) from ca00483a95bd574ff824d66212c10a870d6620ee (commit) Those revisions listed above that are new to this repository have not appeared on any other notification email; so we list those revisions in full, below. - Log ----------------------------------------------------------------- commit fb50efc6e712f413d109c3d77683d0358a557ed4 Merge: a9abfa7 ca00483 Author: David Brownell <dbr...@us...> Date: Fri Nov 6 15:01:46 2009 -0800 Merge branch 'master' of ssh://dbr...@op.../gitroot/openocd/openocd commit a9abfa7d06dbcfded97b7fb41f50d3581c24fbae Author: David Brownell <dbr...@us...> Date: Fri Nov 6 14:57:21 2009 -0800 target: don't swap MMU/no-MMU work areas Resolve serious bug inserted by the "target: require working area for physical/virtual addresses to be specified" patch. It forced use of (invalid) virtual addresses when the MMU was disabled, and vice versa. Observed to break at least Cortex-M3, ARM926, ARM7TDMI whenever work areas are used, such as during bulk writes to flash, DDR2, SRAM, and so on. Also, fix overlong lines and whitespace goofs. Signed-off-by: David Brownell <dbr...@us...> diff --git a/src/target/target.c b/src/target/target.c index b5c473b..5eec09c 100644 --- a/src/target/target.c +++ b/src/target/target.c @@ -1115,32 +1115,33 @@ int target_alloc_working_area(struct target_s *target, uint32_t size, working_ar { int retval; int enabled; + retval = target->type->mmu(target, &enabled); if (retval != ERROR_OK) { return retval; } - if (enabled) - { - if (target->working_area_phys_spec) - { - LOG_DEBUG("MMU disabled, using physical address for working memory 0x%08x", (unsigned)target->working_area_phys); + if (!enabled) { + if (target->working_area_phys_spec) { + LOG_DEBUG("MMU disabled, using physical " + "address for working memory 0x%08x", + (unsigned)target->working_area_phys); target->working_area = target->working_area_phys; - } else - { - LOG_ERROR("No working memory available. Specify -work-area-phys to target."); + } else { + LOG_ERROR("No working memory available. " + "Specify -work-area-phys to target."); return ERROR_TARGET_RESOURCE_NOT_AVAILABLE; } - } else - { - if (target->working_area_virt_spec) - { - LOG_DEBUG("MMU enabled, using virtual address for working memory 0x%08x", (unsigned)target->working_area_virt); + } else { + if (target->working_area_virt_spec) { + LOG_DEBUG("MMU enabled, using virtual " + "address for working memory 0x%08x", + (unsigned)target->working_area_virt); target->working_area = target->working_area_virt; - } else - { - LOG_ERROR("No working memory available. Specify -work-area-virt to target."); + } else { + LOG_ERROR("No working memory available. " + "Specify -work-area-virt to target."); return ERROR_TARGET_RESOURCE_NOT_AVAILABLE; } } ----------------------------------------------------------------------- Summary of changes: src/target/target.c | 33 +++++++++++++++++---------------- 1 files changed, 17 insertions(+), 16 deletions(-) hooks/post-receive -- Main OpenOCD repository |