This is an automated email from Gerrit.

"Antonio Borneo <borneo.anto...@gmail.com>" just uploaded a new patch set to 
Gerrit, which you can find at https://review.openocd.org/c/openocd/+/6818

-- gerrit

commit 1e85463d2c6f1feb6bf2cc8078bea0a76c3328e6
Author: Antonio Borneo <borneo.anto...@gmail.com>
Date:   Fri Jan 14 15:15:30 2022 +0100

    arm_adi_v5: handle faulting entry in ROM table
    
    ARM IHI0031F "Arm Debug Interface Architecture Specification"
    chapter C2.6.1 "BASE, Debug Base Address register" reports:
            A debugger must handle the following situations as
            non-fatal errors:
            - ...
            - An entry in the ROM Table points to a faulting location.
            - ...
            Typically, a debugger issues a warning if it encounters
            one of these situations. However, Arm recommends that it
            continues operating. An example of an implementation that
            might cause errors of this type is a system with static
            base address or ROM Table entries that enable entire
            subsystems to be disabled, for example by a tie-off input,
            packaging choice, fuse, or similar.
    
    Don't halt ROM table parsing if one entry causes an error; log the
    error condition and continue to next entry.
    Not sure if we have to send an ABORT before continuing.
    
    Change-Id: I94fdb5b175bfb07dde378149421582b7e7cd5b09
    Signed-off-by: Antonio Borneo <borneo.anto...@gmail.com>

diff --git a/src/target/arm_adi_v5.c b/src/target/arm_adi_v5.c
index 5c3941b3f..4d24e8f2f 100644
--- a/src/target/arm_adi_v5.c
+++ b/src/target/arm_adi_v5.c
@@ -1522,8 +1522,11 @@ static int rtp_rom_loop(struct command_invocation *cmd,
                /* Recurse. "romentry" is signed */
                target_addr_t component_base = base_address + 
(int32_t)(romentry & ARM_CS_ROMENTRY_OFFSET_MASK);
                retval = rtp_cs_component(cmd, ap, component_base, depth + 1);
-               if (retval != ERROR_OK)
-                       return retval;
+               if (retval != ERROR_OK) {
+                       /* TODO: do we need to send an ABORT before continuing? 
*/
+                       LOG_DEBUG("Ignore error parsing CoreSight component");
+                       continue;
+               }
        }
 
        return ERROR_OK;

-- 

Reply via email to