• P
    nvic: Add cached vectpending_prio state · 5255fcf8
    Peter Maydell 提交于
    Instead of looking up the pending priority
    in nvic_pending_prio(), cache it in a new state struct
    field. The calculation of the pending priority given
    the interrupt number is more complicated in v8M with
    the security extension, so the caching will be worthwhile.
    
    This changes nvic_pending_prio() from returning a full
    (group + subpriority) priority value to returning a group
    priority. This doesn't require changes to its callsites
    because we use it only in comparisons of the form
      execution_prio > nvic_pending_prio()
    and execution priority is always a group priority, so
    a test (exec prio > full prio) is true if and only if
    (execprio > group_prio).
    
    (Architecturally the expected comparison is with the
    group priority for this sort of "would we preempt" test;
    we were only doing a test with a full priority as an
    optimisation to avoid the mask, which is possible
    precisely because the two comparisons always give the
    same answer.)
    Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
    Reviewed-by: NRichard Henderson <richard.henderson@linaro.org>
    Message-id: 1505240046-11454-5-git-send-email-peter.maydell@linaro.org
    5255fcf8
trace-events 14.9 KB