From: Matthias Welwarsky Date: Thu, 19 Jan 2017 15:57:04 +0000 (+0100) Subject: arm_dpm: avoid duplicating the register cache X-Git-Tag: v0.10.0~2 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=59820c18d0d8be93344b00a10a2a4e56601fb094;p=openocd arm_dpm: avoid duplicating the register cache This bug was already attempted to fix in an earlier patch but merging the "defer-examine" feature caused a regression, which this patch tries to fix again. Change-Id: Ie1ad1516f0d7f130d44e003d6c29dcc1a02a82ca Signed-off-by: Matthias Welwarsky Reviewed-on: http://openocd.zylin.com/3951 Tested-by: jenkins Reviewed-by: Paul Fertser --- diff --git a/src/target/arm_dpm.c b/src/target/arm_dpm.c index 8ad6575c..62c61755 100644 --- a/src/target/arm_dpm.c +++ b/src/target/arm_dpm.c @@ -972,11 +972,14 @@ int arm_dpm_setup(struct arm_dpm *dpm) arm->read_core_reg = arm_dpm_read_core_reg; arm->write_core_reg = arm_dpm_write_core_reg; - cache = arm_build_reg_cache(target, arm); - if (!cache) - return ERROR_FAIL; + /* avoid duplicating the register cache */ + if (arm->core_cache == NULL) { + cache = arm_build_reg_cache(target, arm); + if (!cache) + return ERROR_FAIL; - *register_get_last_cache_p(&target->reg_cache) = cache; + *register_get_last_cache_p(&target->reg_cache) = cache; + } /* coprocessor access setup */ arm->mrc = dpm_mrc;