From c0ef6a1b3b873fa9a904e110eb5d558a0d9b4891 Mon Sep 17 00:00:00 2001 From: Wojtek Kosior Date: Mon, 11 Nov 2019 12:27:54 +0100 Subject: rename cpsr.h -> psr.h --- cpsr.h | 39 --------------------------------------- kernel.c | 2 +- psr.h | 39 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 40 insertions(+), 40 deletions(-) delete mode 100644 cpsr.h create mode 100644 psr.h 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 - -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"); -} diff --git a/kernel.c b/kernel.c index e087ccc..40b8a01 100644 --- a/kernel.c +++ b/kernel.c @@ -1,5 +1,5 @@ #include "uart.h" -#include "cpsr.h" +#include "psr.h" #include "strings.h" #include "translation_table_descriptors.h" #include "cp_regs.h" diff --git a/psr.h b/psr.h new file mode 100644 index 0000000..327bdf0 --- /dev/null +++ b/psr.h @@ -0,0 +1,39 @@ +#include + +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"); +} -- cgit v1.2.3