OSDN Git Service

nvic: Implement "user accesses BusFault" SCS region behaviour
authorPeter Maydell <peter.maydell@linaro.org>
Mon, 4 Sep 2017 14:21:53 +0000 (15:21 +0100)
committerPeter Maydell <peter.maydell@linaro.org>
Mon, 4 Sep 2017 14:21:53 +0000 (15:21 +0100)
commiteb578a2394c55f7d598f60796c8318e40b1c0241
treeddf581003683226733e9548fa0ec03bc773dbc15
parentd2db1de6ff15aad4c8898a416c6d8f2d93ff0282
nvic: Implement "user accesses BusFault" SCS region behaviour

The ARMv7M architecture specifies that most of the addresses in the
PPB region (which includes the NVIC, systick and system registers)
are not accessible to unprivileged accesses, which should
BusFault with a few exceptions:
 * the STIR is configurably user-accessible
 * the ITM (which we don't implement at all) is always
   user-accessible

Implement this by switching the register access functions
to the _with_attrs scheme that lets us distinguish user
mode accesses.

This allows us to pull the handling of the CCR.USERSETMPEND
flag up to the level where we can make it generate a BusFault
as it should for non-permitted accesses.

Note that until the core ARM CPU code implements turning
MEMTX_ERROR into a BusFault the registers will continue to
act as RAZ/WI to user accesses.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Edgar E. Iglesias <edgar.iglesias@xilinx.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-id: 1501692241-23310-16-git-send-email-peter.maydell@linaro.org
hw/intc/armv7m_nvic.c