add basic exception model and context switching for aarch64
[lunaix-os.git] / lunaix-os / arch / aarch64 / includes / asm / aa64_spsr.h
diff --git a/lunaix-os/arch/aarch64/includes/asm/aa64_spsr.h b/lunaix-os/arch/aarch64/includes/asm/aa64_spsr.h
new file mode 100644 (file)
index 0000000..07a807a
--- /dev/null
@@ -0,0 +1,16 @@
+#ifndef __LUNAIX_AA64_SPSR_H
+#define __LUNAIX_AA64_SPSR_H
+
+#include <lunaix/types.h>
+#include <lunaix/bits.h>
+
+#define SPSR_EL          BITS(3, 2)
+#define SPSR_SP          BIT(0)
+
+static inline bool
+spsr_from_el0(reg_t spsr)
+{
+    return BITS_GET(spsr, SPSR_EL) == 0;
+}
+
+#endif /* __LUNAIX_AA64_SPSR_H */