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)

-- 

Reply via email to