summaryrefslogtreecommitdiff
path: root/include/nitro/os_system.c
diff options
context:
space:
mode:
authorMartmists <martmists@gmail.com>2020-04-23 14:28:27 +0200
committerMartmists <martmists@gmail.com>2020-04-23 14:28:27 +0200
commit4e2316c01dea50716173a97f36228d2b9607964f (patch)
treecca579f8e74b24f1f95ec2dc2e184b156f26be44 /include/nitro/os_system.c
parent9b3107c478c9f39c17ef4171c9c5330adcb1385a (diff)
Estimate file boundaries for os_alloc
Diffstat (limited to 'include/nitro/os_system.c')
-rw-r--r--include/nitro/os_system.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/include/nitro/os_system.c b/include/nitro/os_system.c
new file mode 100644
index 00000000..08ebeff9
--- /dev/null
+++ b/include/nitro/os_system.c
@@ -0,0 +1,34 @@
+//
+// Created by mart on 4/23/20.
+//
+
+#include "os_system.h"
+
+OSProcMode OS_GetProcMode() {
+ __asm {
+ mrs r0, cpsr
+ and r0, r0, #HW_PSR_CPU_MODE_MASK
+ bx lr
+ }
+}
+
+OSIntrMode OS_DisableInterrupts() {
+ __asm {
+ mrs r0, cpsr
+ orr r1, r0, #HW_PSR_IRQ_DISABLE
+ msr cpsr_c, r1
+ and r0, r0, #HW_PSR_IRQ_DISABLE
+ bx lr
+ }
+}
+
+OSIntrMode OS_RestoreInterrupts(OSIntrMode state) {
+ __asm {
+ mrs r1, cpsr
+ bic r2, r1, #HW_PSR_IRQ_DISABLE
+ orr r2, r2, r0
+ msr cpsr_c, r2
+ and r0, r1, #HW_PSR_IRQ_DISABLE
+ bx lr
+ }
+}