summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Brownell <dbrownell@users.sourceforge.net>2009-11-19 13:23:49 -0800
committerDavid Brownell <dbrownell@users.sourceforge.net>2009-11-19 13:23:49 -0800
commit8f446fcf676e9cd13cf53d9946f0cae5d29a10ec (patch)
tree840321d1f6f90fc4b20b94a275a1c94307e18f82
parentcbc13187c315227c0cf8d85fb0b92d0ba4a10dab (diff)
downloadopenocd_libswd-8f446fcf676e9cd13cf53d9946f0cae5d29a10ec.tar.gz
openocd_libswd-8f446fcf676e9cd13cf53d9946f0cae5d29a10ec.tar.bz2
openocd_libswd-8f446fcf676e9cd13cf53d9946f0cae5d29a10ec.tar.xz
openocd_libswd-8f446fcf676e9cd13cf53d9946f0cae5d29a10ec.zip
ARM: remove per-register malloc
Just pre-allocate memory for the cached register value. Shrinks heap overhead; increases locality-of-reference. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
-rw-r--r--src/target/armv4_5.c2
-rw-r--r--src/target/armv4_5.h1
2 files changed, 2 insertions, 1 deletions
diff --git a/src/target/armv4_5.c b/src/target/armv4_5.c
index b6061af3..44e5b0ac 100644
--- a/src/target/armv4_5.c
+++ b/src/target/armv4_5.c
@@ -489,7 +489,7 @@ struct reg_cache* armv4_5_build_reg_cache(struct target *target, struct arm *arm
reg_list[i].name = (char *) arm_core_regs[i].name;
reg_list[i].size = 32;
- reg_list[i].value = calloc(1, 4);
+ reg_list[i].value = &arch_info[i].value;
reg_list[i].type = &arm_reg_type;
reg_list[i].arch_info = &arch_info[i];
diff --git a/src/target/armv4_5.h b/src/target/armv4_5.h
index 6b1dd769..50af57b3 100644
--- a/src/target/armv4_5.h
+++ b/src/target/armv4_5.h
@@ -143,6 +143,7 @@ struct armv4_5_core_reg
enum armv4_5_mode mode;
struct target *target;
struct arm *armv4_5_common;
+ uint32_t value;
};
struct reg_cache* armv4_5_build_reg_cache(struct target *target,