From f4788652e45662d1e43933dc0620561bc4cddae0 Mon Sep 17 00:00:00 2001 From: David Brownell Date: Tue, 17 Nov 2009 09:06:45 -0800 Subject: target: simplify register get/set ops No need to indirect from registered integers to pointers. Just stash the pointers directly in the register struct, and don't even bother registering. This is a small code shrink, speeds register access just a smidgeon, and gets rid of another rude exit() path. Signed-off-by: David Brownell --- src/target/xscale.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) (limited to 'src/target/xscale.c') diff --git a/src/target/xscale.c b/src/target/xscale.c index 742dd257..4c3945c5 100644 --- a/src/target/xscale.c +++ b/src/target/xscale.c @@ -134,8 +134,6 @@ static const struct xscale_reg xscale_reg_arch_info[] = {-1, NULL}, /* TXRXCTRL implicit access via JTAG */ }; -static int xscale_reg_arch_type = -1; - /* convenience wrapper to access XScale specific registers */ static int xscale_set_reg_u32(struct reg *reg, uint32_t value) { @@ -2819,6 +2817,11 @@ static int xscale_analyze_trace(struct target *target, struct command_context *c return ERROR_OK; } +static const struct reg_arch_type xscale_reg_type = { + .get = xscale_get_reg, + .set = xscale_set_reg, +}; + static void xscale_build_reg_cache(struct target *target) { struct xscale_common *xscale = target_to_xscale(target); @@ -2831,10 +2834,6 @@ static void xscale_build_reg_cache(struct target *target) (*cache_p) = armv4_5_build_reg_cache(target, armv4_5); armv4_5->core_cache = (*cache_p); - /* register a register arch-type for XScale dbg registers only once */ - if (xscale_reg_arch_type == -1) - xscale_reg_arch_type = register_reg_arch_type(xscale_get_reg, xscale_set_reg); - (*cache_p)->next = malloc(sizeof(struct reg_cache)); cache_p = &(*cache_p)->next; @@ -2852,7 +2851,7 @@ static void xscale_build_reg_cache(struct target *target) (*cache_p)->reg_list[i].valid = 0; (*cache_p)->reg_list[i].size = 32; (*cache_p)->reg_list[i].arch_info = &arch_info[i]; - (*cache_p)->reg_list[i].arch_type = xscale_reg_arch_type; + (*cache_p)->reg_list[i].type = &xscale_reg_type; arch_info[i] = xscale_reg_arch_info[i]; arch_info[i].target = target; } -- cgit v1.2.3