• Matt Evans's avatar
    powerpc: Clear branch trap (MSR.BE) before delivering SIGTRAP · 0e524e76
    Matt Evans authored
    When using SIG_DBG_BRANCH_TRACING, MSR.BE is left enabled in the
    user context when single_step_exception() prepares the SIGTRAP
    delivery.  The resulting branch-trap-within-the-SIGTRAP-handler
    isn't healthy.
    
    Commit 2538c2d0 broke this, by
    replacing an MSR mask operation of ~(MSR_SE | MSR_BE) with a call
    to clear_single_step() which only clears MSR_SE.
    
    This patch adds a new helper, clear_br_trace(), which clears the
    debug trap before invoking the signal handler.  This helper is a
    NOP for BookE as SIG_DBG_BRANCH_TRACING isn't supported on BookE.
    Signed-off-by: default avatarMatt Evans <matt@ozlabs.org>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    0e524e76
traps.c 55.6 KB