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/+/8214

-- gerrit

commit 2bb8590f0877dc4998208613db90901590e489d1
Author: Antonio Borneo <borneo.anto...@gmail.com>
Date:   Sat Apr 13 18:46:11 2024 +0200

    target: aarch64: fix regs invalidation when -defer-examine
    
    The code for aarch64 allocates the register cache during the very
    first examine of the target.
    To prevent a segmentation fault in assert_reset(), the call to
    register_cache_invalidate() is guarded by target_was_examined().
    
    But for targets with -defer-examine, the target is set as not
    examined in handle_target_reset() just before entering in
    assert_reset().
    
    This causes registers to not be invalidated while reset a target
    examined but with -defer-examine.
    
    Change the condition and invalidate the register cache if it has
    been already allocated.
    
    Change-Id: Ie13abb0ae2cc28fc3295d678c4ad1691024eb7b8
    Signed-off-by: Antonio Borneo <borneo.anto...@gmail.com>

diff --git a/src/target/aarch64.c b/src/target/aarch64.c
index 2e4d0b5c03..6a70b2ddf8 100644
--- a/src/target/aarch64.c
+++ b/src/target/aarch64.c
@@ -1983,7 +1983,7 @@ static int aarch64_assert_reset(struct target *target)
        }
 
        /* registers are now invalid */
-       if (target_was_examined(target)) {
+       if (armv8->arm.core_cache) {
                register_cache_invalidate(armv8->arm.core_cache);
                register_cache_invalidate(armv8->arm.core_cache->next);
        }

-- 

Reply via email to