summaryrefslogtreecommitdiffstats
path: root/target/arm/cpu.h
diff options
context:
space:
mode:
Diffstat (limited to 'target/arm/cpu.h')
-rw-r--r--target/arm/cpu.h38
1 files changed, 28 insertions, 10 deletions
diff --git a/target/arm/cpu.h b/target/arm/cpu.h
index 2f2aa872f7..0b9f9377f8 100644
--- a/target/arm/cpu.h
+++ b/target/arm/cpu.h
@@ -882,6 +882,22 @@ void pmccntr_sync(CPUARMState *env);
/* Mask of bits which may be set by exception return copying them from SPSR */
#define CPSR_ERET_MASK (~CPSR_RESERVED)
+/* Bit definitions for M profile XPSR. Most are the same as CPSR. */
+#define XPSR_EXCP 0x1ffU
+#define XPSR_SPREALIGN (1U << 9) /* Only set in exception stack frames */
+#define XPSR_IT_2_7 CPSR_IT_2_7
+#define XPSR_GE CPSR_GE
+#define XPSR_SFPA (1U << 20) /* Only set in exception stack frames */
+#define XPSR_T (1U << 24) /* Not the same as CPSR_T ! */
+#define XPSR_IT_0_1 CPSR_IT_0_1
+#define XPSR_Q CPSR_Q
+#define XPSR_V CPSR_V
+#define XPSR_C CPSR_C
+#define XPSR_Z CPSR_Z
+#define XPSR_N CPSR_N
+#define XPSR_NZCV CPSR_NZCV
+#define XPSR_IT CPSR_IT
+
#define TTBCR_N (7U << 0) /* TTBCR.EAE==0 */
#define TTBCR_T0SZ (7U << 0) /* TTBCR.EAE==1 */
#define TTBCR_PD0 (1U << 4)
@@ -986,26 +1002,28 @@ static inline uint32_t xpsr_read(CPUARMState *env)
/* Set the xPSR. Note that some bits of mask must be all-set or all-clear. */
static inline void xpsr_write(CPUARMState *env, uint32_t val, uint32_t mask)
{
- if (mask & CPSR_NZCV) {
- env->ZF = (~val) & CPSR_Z;
+ if (mask & XPSR_NZCV) {
+ env->ZF = (~val) & XPSR_Z;
env->NF = val;
env->CF = (val >> 29) & 1;
env->VF = (val << 3) & 0x80000000;
}
- if (mask & CPSR_Q)
- env->QF = ((val & CPSR_Q) != 0);
- if (mask & (1 << 24))
- env->thumb = ((val & (1 << 24)) != 0);
- if (mask & CPSR_IT_0_1) {
+ if (mask & XPSR_Q) {
+ env->QF = ((val & XPSR_Q) != 0);
+ }
+ if (mask & XPSR_T) {
+ env->thumb = ((val & XPSR_T) != 0);
+ }
+ if (mask & XPSR_IT_0_1) {
env->condexec_bits &= ~3;
env->condexec_bits |= (val >> 25) & 3;
}
- if (mask & CPSR_IT_2_7) {
+ if (mask & XPSR_IT_2_7) {
env->condexec_bits &= 3;
env->condexec_bits |= (val >> 8) & 0xfc;
}
- if (mask & 0x1ff) {
- env->v7m.exception = val & 0x1ff;
+ if (mask & XPSR_EXCP) {
+ env->v7m.exception = val & XPSR_EXCP;
}
}
ec8ca60d6cf8270ac'>disas: Add RISC-V supportAlistair Francis2018-12-251-2/+8 * disas.c: Use address_space_read() to read memoryPeter Maydell2018-12-141-1/+4 * RISC-V DisassemblerMichael Clark2018-03-061-0/+2 * disas: Dump insn bytes along with capstone disassemblyRichard Henderson2017-11-091-12/+84 * disas: Remove monitor_disas_is_physicalRichard Henderson2017-10-251-12/+4Star * ppc: Support Capstone in disas_set_infoRichard Henderson2017-10-251-0/+4 * arm: Support Capstone in disas_set_infoRichard Henderson2017-10-251-0/+3 * i386: Support Capstone in disas_set_infoRichard Henderson2017-10-251-0/+4 * disas: Support the Capstone disassembler libraryRichard Henderson2017-10-251-13/+206 * disas: Remove unused flags argumentsRichard Henderson2017-10-251-11/+4Star * target/ppc: Convert to disas_set_info hookRichard Henderson2017-10-251-33/+0Star * target/i386: Convert to disas_set_info hookRichard Henderson2017-10-251-20/+2Star * disas: Always initialize read_memory_inner_func properlyThomas Huth2017-10-121-1/+0Star * tcg: Remove support for ia64 as hostRichard Henderson2017-09-051-2/+0Star * Fix Thumb-1 BE32 execution and disassembly.Julian Brown2017-02-071-0/+1 * Revert "Remove remainders of HPPA backend"Richard Henderson2017-01-231-0/+2 * Remove remainders of HPPA backendThomas Huth2016-09-151-2/+0Star * all: Clean up includesPeter Maydell2016-02-041-2/+1Star * disas: QOMify alpha specific disas setupPeter Crosthwaite2015-10-221-5/+0Star * disas: QOMify mips specific disas setupPeter Crosthwaite2015-10-221-12/+0Star * disas: QOMify sh4 specific disas setupPeter Crosthwaite2015-10-221-6/+0Star * disas: QOMify lm32 specific disas setupPeter Crosthwaite2015-10-221-6/+0Star * disas: QOMify sparc specific disas setupPeter Crosthwaite2015-10-221-10/+0Star * disas: QOMify m68k specific disas setupPeter Crosthwaite2015-10-221-4/+0Star * disas: QOMify moxie specific disas setupPeter Crosthwaite2015-10-221-6/+0Star * disas: QOMify s390x specific disas setupPeter Crosthwaite2015-10-221-6/+0Star * monitor: make monitor_fprintf and mon_get_cpu externally visiblePavel Butsykin2015-09-251-10/+0Star * disas: Defeature print_target_addressPeter Crosthwaite2015-08-141-10/+2Star * disas: cris: QOMify target specific disas setupPeter Crosthwaite2015-07-091-8/+0Star * disas: microblaze: QOMify target specific disas setupPeter Crosthwaite2015-07-091-3/+0Star * disas: arm: QOMify target specific disas setupPeter Crosthwaite2015-07-091-32/+0Star * disas: QOMify target specific setupPeter Crosthwaite2015-07-09