This is an automated email from Gerrit. "Tomas Vanek <[email protected]>" just uploaded a new patch set to Gerrit, which you can find at https://review.openocd.org/c/openocd/+/9269
-- gerrit commit 0c97a09e3c8c935910e9826927c1cfe93dec9c02 Author: Tomas Vanek <[email protected]> Date: Fri Nov 28 11:25:03 2025 +0100 target/aarch64, armv8: avoid adding of error return codes The arithmetic addition of the returned error codes was used as a lazy man's logical or. Handle error passing properly. Change-Id: I05f6d575dd7acb49cc3b3ca20b0e0b1f37d77ffe Signed-off-by: Tomas Vanek <[email protected]> diff --git a/src/target/aarch64.c b/src/target/aarch64.c index ed9cb48aa7..bd3e26429f 100644 --- a/src/target/aarch64.c +++ b/src/target/aarch64.c @@ -2682,16 +2682,18 @@ static int aarch64_examine_first(struct target *target) retval = mem_ap_read_u32(armv8->debug_ap, armv8->debug_base + CPUV8_DBG_MEMFEATURE0, &tmp0); - retval += mem_ap_read_u32(armv8->debug_ap, - armv8->debug_base + CPUV8_DBG_MEMFEATURE0 + 4, &tmp1); + if (retval == ERROR_OK) + retval = mem_ap_read_u32(armv8->debug_ap, + armv8->debug_base + CPUV8_DBG_MEMFEATURE0 + 4, &tmp1); if (retval != ERROR_OK) { LOG_DEBUG("Examine %s failed", "Memory Model Type"); return retval; } retval = mem_ap_read_u32(armv8->debug_ap, armv8->debug_base + CPUV8_DBG_DBGFEATURE0, &tmp2); - retval += mem_ap_read_u32(armv8->debug_ap, - armv8->debug_base + CPUV8_DBG_DBGFEATURE0 + 4, &tmp3); + if (retval == ERROR_OK) + retval = mem_ap_read_u32(armv8->debug_ap, + armv8->debug_base + CPUV8_DBG_DBGFEATURE0 + 4, &tmp3); if (retval != ERROR_OK) { LOG_DEBUG("Examine %s failed", "ID_AA64DFR0_EL1"); return retval; diff --git a/src/target/armv8.c b/src/target/armv8.c index 47a380c9d5..11d55cdb48 100644 --- a/src/target/armv8.c +++ b/src/target/armv8.c @@ -205,7 +205,9 @@ static int armv8_read_ttbcr(struct target *target) retval = dpm->instr_read_data_r0(dpm, ARMV8_MRS(SYSTEM_TCR_EL3, 0), &ttbcr); - retval += dpm->instr_read_data_r0_64(dpm, + if (retval != ERROR_OK) + goto done; + retval = dpm->instr_read_data_r0_64(dpm, ARMV8_MRS(SYSTEM_TTBR0_EL3, 0), &armv8->ttbr_base); if (retval != ERROR_OK) @@ -218,7 +220,9 @@ static int armv8_read_ttbcr(struct target *target) retval = dpm->instr_read_data_r0(dpm, ARMV8_MRS(SYSTEM_TCR_EL2, 0), &ttbcr); - retval += dpm->instr_read_data_r0_64(dpm, + if (retval != ERROR_OK) + goto done; + retval = dpm->instr_read_data_r0_64(dpm, ARMV8_MRS(SYSTEM_TTBR0_EL2, 0), &armv8->ttbr_base); if (retval != ERROR_OK) @@ -234,12 +238,14 @@ static int armv8_read_ttbcr(struct target *target) retval = dpm->instr_read_data_r0_64(dpm, ARMV8_MRS(SYSTEM_TCR_EL1, 0), &ttbcr_64); + if (retval != ERROR_OK) + goto done; armv8->va_size = 64 - (ttbcr_64 & 0x3F); armv8->pa_size = armv8_pa_size((ttbcr_64 >> 32) & 7); armv8->page_size = (ttbcr_64 >> 14) & 3; armv8->armv8_mmu.ttbr1_used = (((ttbcr_64 >> 16) & 0x3F) != 0) ? 1 : 0; armv8->armv8_mmu.ttbr0_mask = 0x0000FFFFFFFFFFFFULL; - retval += dpm->instr_read_data_r0_64(dpm, + retval = dpm->instr_read_data_r0_64(dpm, ARMV8_MRS(SYSTEM_TTBR0_EL1 | (armv8->armv8_mmu.ttbr1_used), 0), &armv8->ttbr_base); if (retval != ERROR_OK) --
