aboutsummaryrefslogtreecommitdiff
path: root/cpsr.h
diff options
context:
space:
mode:
Diffstat (limited to 'cpsr.h')
-rw-r--r--cpsr.h39
1 files changed, 0 insertions, 39 deletions
diff --git a/cpsr.h b/cpsr.h
deleted file mode 100644
index 327bdf0..0000000
--- a/cpsr.h
+++ /dev/null
@@ -1,39 +0,0 @@
-#include <stdint.h>
-
-enum execution_mode {
- MODE_USER = 0x10,
- MODE_FIQ = 0x11,
- MODE_IRQ = 0x12,
- MODE_SUPERVISOR = 0x13,
- MODE_MONITOR = 0x16,
- MODE_ABORT = 0x17,
- MODE_HYPERVISOR = 0x1a,
- MODE_UNDEFINED = 0x1b,
- MODE_SYSTEM = 0x1f,
-};
-
-inline static uint32_t read_CPSR(void)
-{
- uint32_t CPSR;
- // get content of current program status register
- asm("mrs %0, cpsr" : "=r" (CPSR) ::);
-
- return CPSR;
-}
-
-inline static enum execution_mode read_processor_mode(void)
-{
- /* lowest 5 bits indicate processor mode */
- return read_CPSR() & 0x1f;
-}
-
-inline static void set_system_mode(void)
-{
- uint32_t CPSR = read_CPSR();
-
- CPSR = (CPSR >> 5) << 5;
-
- CPSR |= MODE_SYSTEM;
-
- asm("msr cpsr, %0" :: "r" (CPSR) : "memory");
-}