diff options
author | David Brownell <dbrownell@users.sourceforge.net> | 2009-11-09 14:46:23 -0800 |
---|---|---|
committer | David Brownell <dbrownell@users.sourceforge.net> | 2009-11-09 14:46:23 -0800 |
commit | 7269ba5eb6c4c0e3b8dfceba9d5f2c2f4dfc1618 (patch) | |
tree | 919fb2e1d1e7c844f83459193bf1e36856a9a588 /src/target/target.c | |
parent | d70d9634bf6ab73ec4f2ac1e77012785770b460a (diff) |
Revert "target: add target->type->has_mmu fn"
This patch introduced a bug preventing flash writes from working
on Cortex-M3 targets like the STM32. Moreover, it's the wrong
approach for handling no-MMU targets.
The right way to handle no-MMU targets is to provide accessors
for physical addresses, and use them everywhere; and any code
which tries to work with virtual-to-physical mappings should use
a identity mapping (which can be defaulted).
And ... we can tell if a target has an MMU by seeing if it's
got an mmu() method. No such methood means no MMU.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Diffstat (limited to 'src/target/target.c')
-rw-r--r-- | src/target/target.c | 38 |
1 files changed, 5 insertions, 33 deletions
diff --git a/src/target/target.c b/src/target/target.c index 90c143ff..6e5d3fbd 100644 --- a/src/target/target.c +++ b/src/target/target.c @@ -496,13 +496,7 @@ static int default_virt2phys(struct target_s *target, uint32_t virtual, uint32_t static int default_mmu(struct target_s *target, int *enabled) { - LOG_ERROR("Not implemented."); - return ERROR_FAIL; -} - -static int default_has_mmu(struct target_s *target, bool *has_mmu) -{ - *has_mmu = true; + *enabled = 0; return ERROR_OK; } @@ -773,32 +767,14 @@ int target_mcr(struct target_s *target, int cpnum, uint32_t op1, uint32_t op2, u static int default_read_phys_memory(struct target_s *target, uint32_t address, uint32_t size, uint32_t count, uint8_t *buffer) { - int retval; - bool mmu; - retval = target->type->has_mmu(target, &mmu); - if (retval != ERROR_OK) - return retval; - if (mmu) - { - LOG_ERROR("Not implemented"); - return ERROR_FAIL; - } - return target_read_memory(target, address, size, count, buffer); + LOG_ERROR("Not implemented"); + return ERROR_FAIL; } static int default_write_phys_memory(struct target_s *target, uint32_t address, uint32_t size, uint32_t count, uint8_t *buffer) { - int retval; - bool mmu; - retval = target->type->has_mmu(target, &mmu); - if (retval != ERROR_OK) - return retval; - if (mmu) - { - LOG_ERROR("Not implemented"); - return ERROR_FAIL; - } - return target_write_memory(target, address, size, count, buffer); + LOG_ERROR("Not implemented"); + return ERROR_FAIL; } @@ -875,10 +851,6 @@ int target_init(struct command_context_s *cmd_ctx) { target->type->mmu = default_mmu; } - if (target->type->has_mmu == NULL) - { - target->type->has_mmu = default_has_mmu; - } target = target->next; } |