summaryrefslogtreecommitdiff
path: root/src/target/xscale.c
diff options
context:
space:
mode:
authorDavid Brownell <dbrownell@users.sourceforge.net>2009-11-20 16:27:24 -0800
committerDavid Brownell <dbrownell@users.sourceforge.net>2009-11-20 16:27:24 -0800
commit69c751956293e822faa6cf844f2864d81c36a578 (patch)
tree5a13deb8230c7a3436e53e9618e27ab6421a08e4 /src/target/xscale.c
parent85fe1506a2296493d13368e545fa2d4ddb13ea72 (diff)
downloadopenocd_libswd-69c751956293e822faa6cf844f2864d81c36a578.tar.gz
openocd_libswd-69c751956293e822faa6cf844f2864d81c36a578.tar.bz2
openocd_libswd-69c751956293e822faa6cf844f2864d81c36a578.tar.xz
openocd_libswd-69c751956293e822faa6cf844f2864d81c36a578.zip
ARM: pass 'struct reg *' to register r/w routines
Implementations need to access the register struct they modify; make it easier and less error-prone to identify the instance. (This removes over 10% of the ARMV4_5_CORE_REG_MODE nastiness...) Plus some minor fixes noted when making these updates: ARM7/ARM9 accessor methods should be static; don't leave CPSR wrongly marked "dirty"; note significant XScale omissions in register handling; and have armv4_5_build_reg_cache() record its result. Rename "struct armv4_5_core_reg" as "struct arm_reg"; it's used for more than those older architecture generations. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Diffstat (limited to 'src/target/xscale.c')
-rw-r--r--src/target/xscale.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/target/xscale.c b/src/target/xscale.c
index f13366ac..c908fd70 100644
--- a/src/target/xscale.c
+++ b/src/target/xscale.c
@@ -1646,16 +1646,18 @@ static int xscale_deassert_reset(struct target *target)
return ERROR_OK;
}
-static int xscale_read_core_reg(struct target *target, int num,
- enum armv4_5_mode mode)
+static int xscale_read_core_reg(struct target *target, struct reg *r,
+ int num, enum armv4_5_mode mode)
{
+ /** \todo add debug handler support for core register reads */
LOG_ERROR("not implemented");
return ERROR_OK;
}
-static int xscale_write_core_reg(struct target *target, int num,
- enum armv4_5_mode mode, uint32_t value)
+static int xscale_write_core_reg(struct target *target, struct reg *r,
+ int num, enum armv4_5_mode mode, uint32_t value)
{
+ /** \todo add debug handler support for core register writes */
LOG_ERROR("not implemented");
return ERROR_OK;
}
@@ -2829,7 +2831,6 @@ static void xscale_build_reg_cache(struct target *target)
int num_regs = sizeof(xscale_reg_arch_info) / sizeof(struct xscale_reg);
(*cache_p) = armv4_5_build_reg_cache(target, armv4_5);
- armv4_5->core_cache = (*cache_p);
(*cache_p)->next = malloc(sizeof(struct reg_cache));
cache_p = &(*cache_p)->next;