mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 09:13:55 -06:00
arm: add MPU support to M profile CPUs
The M series MPU is almost the same as the already implemented R profile MPU (v7 PMSA). So all we need to implement here is the MPU register interface in the system register space. This implementation has the same restriction as the R profile MPU that it doesn't permit regions to be sized down smaller than 1K. We also do not yet implement support for MPU_CTRL.HFNMIENA; this bit should if zero disable use of the MPU when running HardFault, NMI or with FAULTMASK set to 1 (ie at an execution priority of less than zero) -- if the MPU is enabled we don't treat these cases any differently. Signed-off-by: Michael Davidsaver <mdavidsaver@gmail.com> Message-id: 1493122030-32191-13-git-send-email-peter.maydell@linaro.org [PMM: Keep all the bits in mpu_ctrl field, rather than using SCTLR bits for them; drop broken HFNMIENA support; various cleanup] Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
5dd0641d23
commit
29c483a506
4 changed files with 137 additions and 3 deletions
|
@ -418,6 +418,7 @@ typedef struct CPUARMState {
|
|||
uint32_t dfsr; /* Debug Fault Status Register */
|
||||
uint32_t mmfar; /* MemManage Fault Address */
|
||||
uint32_t bfar; /* BusFault Address */
|
||||
unsigned mpu_ctrl; /* MPU_CTRL (some bits kept in sctlr_el[1]) */
|
||||
int exception;
|
||||
} v7m;
|
||||
|
||||
|
@ -1168,6 +1169,11 @@ FIELD(V7M_DFSR, DWTTRAP, 2, 1)
|
|||
FIELD(V7M_DFSR, VCATCH, 3, 1)
|
||||
FIELD(V7M_DFSR, EXTERNAL, 4, 1)
|
||||
|
||||
/* v7M MPU_CTRL bits */
|
||||
FIELD(V7M_MPU_CTRL, ENABLE, 0, 1)
|
||||
FIELD(V7M_MPU_CTRL, HFNMIENA, 1, 1)
|
||||
FIELD(V7M_MPU_CTRL, PRIVDEFENA, 2, 1)
|
||||
|
||||
/* If adding a feature bit which corresponds to a Linux ELF
|
||||
* HWCAP bit, remember to update the feature-bit-to-hwcap
|
||||
* mapping in linux-user/elfload.c:get_elf_hwcap().
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue