diff options
author | David Brownell <dbrownell@users.sourceforge.net> | 2009-12-18 09:53:59 -0800 |
---|---|---|
committer | David Brownell <dbrownell@users.sourceforge.net> | 2009-12-18 09:53:59 -0800 |
commit | 12b8c7b89b021c882e68bb0e28863c802fe36ac4 (patch) | |
tree | a3a751516e27c563121595fbe4ea4c7ea4a19d3f /src | |
parent | 85a4136d0baccf5c3b8f717710584f7faed0ca30 (diff) | |
download | openocd+libswd-12b8c7b89b021c882e68bb0e28863c802fe36ac4.tar.gz openocd+libswd-12b8c7b89b021c882e68bb0e28863c802fe36ac4.tar.bz2 openocd+libswd-12b8c7b89b021c882e68bb0e28863c802fe36ac4.tar.xz openocd+libswd-12b8c7b89b021c882e68bb0e28863c802fe36ac4.zip |
XScale: better {read,write}_phys()
We can actually do the right thing if the MMU is off; save
the error message for the phys-but-MMU-enabled path, which
is what isn't yet supported.
Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Diffstat (limited to 'src')
-rw-r--r-- | src/target/xscale.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/src/target/xscale.c b/src/target/xscale.c index 4cf5aeb0..f1afc71f 100644 --- a/src/target/xscale.c +++ b/src/target/xscale.c @@ -1905,7 +1905,13 @@ static int xscale_read_memory(struct target *target, uint32_t address, static int xscale_read_phys_memory(struct target *target, uint32_t address, uint32_t size, uint32_t count, uint8_t *buffer) { - /** \todo: provide a non-stub implementtion of this routine. */ + struct xscale_common *xscale = target_to_xscale(target); + + /* with MMU inactive, there are only physical addresses */ + if (!xscale->armv4_5_mmu.mmu_enabled) + return xscale_read_memory(target, address, size, count, buffer); + + /** \todo: provide a non-stub implementation of this routine. */ LOG_ERROR("%s: %s is not implemented. Disable MMU?", target_name(target), __func__); return ERROR_FAIL; @@ -1992,7 +1998,13 @@ static int xscale_write_memory(struct target *target, uint32_t address, static int xscale_write_phys_memory(struct target *target, uint32_t address, uint32_t size, uint32_t count, uint8_t *buffer) { - /** \todo: provide a non-stub implementtion of this routine. */ + struct xscale_common *xscale = target_to_xscale(target); + + /* with MMU inactive, there are only physical addresses */ + if (!xscale->armv4_5_mmu.mmu_enabled) + return xscale_read_memory(target, address, size, count, buffer); + + /** \todo: provide a non-stub implementation of this routine. */ LOG_ERROR("%s: %s is not implemented. Disable MMU?", target_name(target), __func__); return ERROR_FAIL; |