summaryrefslogtreecommitdiffstats
path: root/target-arm/internals.h
diff options
context:
space:
mode:
authorSoren Brinkmann2015-11-03 14:49:41 +0100
committerPeter Maydell2015-11-03 14:49:41 +0100
commit99a99c1fc8e9bfec1656ac5916c53977a93d3581 (patch)
tree061b54dc59630c9633ca671867d75975f1948d52 /target-arm/internals.h
parentMerge remote-tracking branch 'remotes/kraxel/tags/pull-ui-20151103-1' into st... (diff)
downloadqemu-99a99c1fc8e9bfec1656ac5916c53977a93d3581.tar.gz
qemu-99a99c1fc8e9bfec1656ac5916c53977a93d3581.tar.xz
qemu-99a99c1fc8e9bfec1656ac5916c53977a93d3581.zip
target-arm: Add and use symbolic names for register banks
Add BANK_<cpumode> #defines to index banked registers. Suggested-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Soren Brinkmann <soren.brinkmann@xilinx.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'target-arm/internals.h')
-rw-r--r--target-arm/internals.h16
1 files changed, 13 insertions, 3 deletions
diff --git a/target-arm/internals.h b/target-arm/internals.h
index 412827bcbf..347998c8be 100644
--- a/target-arm/internals.h
+++ b/target-arm/internals.h
@@ -25,6 +25,16 @@
#ifndef TARGET_ARM_INTERNALS_H
#define TARGET_ARM_INTERNALS_H
+/* register banks for CPU modes */
+#define BANK_USRSYS 0
+#define BANK_SVC 1
+#define BANK_ABT 2
+#define BANK_UND 3
+#define BANK_IRQ 4
+#define BANK_FIQ 5
+#define BANK_HYP 6
+#define BANK_MON 7
+
static inline bool excp_is_internal(int excp)
{
/* Return true if this exception number represents a QEMU-internal
@@ -91,9 +101,9 @@ static inline void arm_log_exception(int idx)
static inline unsigned int aarch64_banked_spsr_index(unsigned int el)
{
static const unsigned int map[4] = {
- [1] = 1, /* EL1. */
- [2] = 6, /* EL2. */
- [3] = 7, /* EL3. */
+ [1] = BANK_SVC, /* EL1. */
+ [2] = BANK_HYP, /* EL2. */
+ [3] = BANK_MON, /* EL3. */
};
assert(el >= 1 && el <= 3);
return map[el];