]> git.proxmox.com Git - mirror_qemu.git/commit
nvic: Add cached vectpending_prio state
authorPeter Maydell <peter.maydell@linaro.org>
Tue, 12 Sep 2017 18:13:51 +0000 (19:13 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Thu, 21 Sep 2017 15:29:27 +0000 (16:29 +0100)
commit5255fcf8e47acd059e2f0d414841c40231c1bd22
tree1b2757f564e9e87a050c45527b2d3d0a29af5b4b
parente93bc2ac11cd37796fd48e11eaeacec3aff20f9c
nvic: Add cached vectpending_prio state

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: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 1505240046-11454-5-git-send-email-peter.maydell@linaro.org
hw/intc/armv7m_nvic.c
hw/intc/trace-events
include/hw/intc/armv7m_nvic.h