diff options
| author | Peter Maydell <peter.maydell@linaro.org> | 2017-09-14 18:54:09 +0100 |
|---|---|---|
| committer | Peter Maydell <peter.maydell@linaro.org> | 2017-09-14 18:54:09 +0100 |
| commit | d28e29a92585e94264628b1b27262fe2d7573f51 (patch) | |
| tree | e956f9c4bd71330f186a36847460999882a6c651 /target/arm/cpu.h | |
| parent | 3dabde1128b671f36ac6cb36b97b273139964420 (diff) | |
| parent | ce3bc112cdb1d462e2d52eaa17a7314e7f3af504 (diff) | |
| download | focaccia-qemu-d28e29a92585e94264628b1b27262fe2d7573f51.tar.gz focaccia-qemu-d28e29a92585e94264628b1b27262fe2d7573f51.zip | |
Merge remote-tracking branch 'remotes/pmaydell/tags/pull-target-arm-20170914' into staging
target-arm queue: * v7M: various code cleanups * v7M: set correct BFSR bits on bus fault * v7M: clear exclusive monitor on reset and exception entry/exit * v7M: don't apply priority mask to negative priorities * zcu102: support 'secure' and 'virtualization' machine properties * aarch64: fix ERET single stepping * gpex: implement PCI INTx routing * mps2-an511: fix UART overflow interrupt line wiring # gpg: Signature made Thu 14 Sep 2017 18:50:48 BST # gpg: using RSA key 0x3C2525ED14360CDE # gpg: Good signature from "Peter Maydell <peter.maydell@linaro.org>" # gpg: aka "Peter Maydell <pmaydell@gmail.com>" # gpg: aka "Peter Maydell <pmaydell@chiark.greenend.org.uk>" # Primary key fingerprint: E1A5 C593 CD41 9DE2 8E83 15CF 3C25 25ED 1436 0CDE * remotes/pmaydell/tags/pull-target-arm-20170914: mps2-an511: Fix wiring of UART overflow interrupt lines hw/pci-host/gpex: Implement PCI INTx routing hw/arm/virt: Set INTx/gsi mapping hw/pci-host/gpex: Set INTx index/gsi mapping target/arm: Avoid an extra temporary for store_exclusive AArch64: Fix single stepping of ERET instruction xlnx-zcu102: Mark the EP108 machine as deprecated xlnx-zcu102: Add a machine level virtualization property xlnx-zcu102: Add a machine level secure property xlnx-zcu102: Manually create the machines xlnx-ep108: Rename to ZCU102 target/arm: Rename 'type' to 'excret' in do_v7m_exception_exit() target/arm: Add and use defines for EXCRET constants target/arm: Remove unnecessary '| 0xf0000000' from do_v7m_exception_exit() nvic: Don't apply group priority mask to negative priorities target/arm: Get PRECISERR and IBUSERR the right way round target/arm: Clear exclusive monitor on v7M reset, exception entry/exit target/arm: Use M_REG_NUM_BANKS rather than hardcoding 2 Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'target/arm/cpu.h')
| -rw-r--r-- | target/arm/cpu.h | 35 |
1 files changed, 19 insertions, 16 deletions
diff --git a/target/arm/cpu.h b/target/arm/cpu.h index 98b9b26fd3..5a1f957c51 100644 --- a/target/arm/cpu.h +++ b/target/arm/cpu.h @@ -81,8 +81,11 @@ * accessed via env->registerfield[env->v7m.secure] (whether the security * extension is implemented or not). */ -#define M_REG_NS 0 -#define M_REG_S 1 +enum { + M_REG_NS = 0, + M_REG_S = 1, + M_REG_NUM_BANKS = 2, +}; /* ARM-specific interrupt pending bits. */ #define CPU_INTERRUPT_FIQ CPU_INTERRUPT_TGT_EXT_1 @@ -433,19 +436,19 @@ typedef struct CPUARMState { uint32_t other_sp; uint32_t other_ss_msp; uint32_t other_ss_psp; - uint32_t vecbase[2]; - uint32_t basepri[2]; - uint32_t control[2]; - uint32_t ccr[2]; /* Configuration and Control */ - uint32_t cfsr[2]; /* Configurable Fault Status */ + uint32_t vecbase[M_REG_NUM_BANKS]; + uint32_t basepri[M_REG_NUM_BANKS]; + uint32_t control[M_REG_NUM_BANKS]; + uint32_t ccr[M_REG_NUM_BANKS]; /* Configuration and Control */ + uint32_t cfsr[M_REG_NUM_BANKS]; /* Configurable Fault Status */ uint32_t hfsr; /* HardFault Status */ uint32_t dfsr; /* Debug Fault Status Register */ - uint32_t mmfar[2]; /* MemManage Fault Address */ + uint32_t mmfar[M_REG_NUM_BANKS]; /* MemManage Fault Address */ uint32_t bfar; /* BusFault Address */ - unsigned mpu_ctrl[2]; /* MPU_CTRL */ + unsigned mpu_ctrl[M_REG_NUM_BANKS]; /* MPU_CTRL */ int exception; - uint32_t primask[2]; - uint32_t faultmask[2]; + uint32_t primask[M_REG_NUM_BANKS]; + uint32_t faultmask[M_REG_NUM_BANKS]; uint32_t secure; /* Is CPU in Secure state? (not guest visible) */ } v7m; @@ -546,7 +549,7 @@ typedef struct CPUARMState { uint32_t *drbar; uint32_t *drsr; uint32_t *dracr; - uint32_t rnr[2]; + uint32_t rnr[M_REG_NUM_BANKS]; } pmsav7; /* PMSAv8 MPU */ @@ -556,10 +559,10 @@ typedef struct CPUARMState { * pmsav7.rnr (region number register) * pmsav7_dregion (number of configured regions) */ - uint32_t *rbar[2]; - uint32_t *rlar[2]; - uint32_t mair0[2]; - uint32_t mair1[2]; + uint32_t *rbar[M_REG_NUM_BANKS]; + uint32_t *rlar[M_REG_NUM_BANKS]; + uint32_t mair0[M_REG_NUM_BANKS]; + uint32_t mair1[M_REG_NUM_BANKS]; } pmsav8; void *nvic; |