add asm headers and linker scripts for aarch64
[lunaix-os.git] / lunaix-os / arch / aarch64 / includes / asm / abi.h
diff --git a/lunaix-os/arch/aarch64/includes/asm/abi.h b/lunaix-os/arch/aarch64/includes/asm/abi.h
new file mode 100644 (file)
index 0000000..099c0f7
--- /dev/null
@@ -0,0 +1,33 @@
+#ifndef __LUNAIX_AA64_ABI_H
+#define __LUNAIX_AA64_ABI_H
+
+#include <lunaix/types.h>
+
+#ifndef __ASM__
+#define align_stack(ptr) ((ptr) & stack_alignment)
+
+static inline void must_inline noret
+switch_context() {
+    // TODO
+    unreachable;
+}
+
+
+static inline ptr_t
+abi_get_retaddr()
+{
+    reg_t lr;
+    asm ("mov %0, lr" : "=r"(lr));
+
+    return lr;
+}
+
+static inline ptr_t
+abi_get_retaddrat(ptr_t fp)
+{
+    return ((ptr_t*)fp)[1];
+}
+
+#endif
+
+#endif /* __LUNAIX_AA64_ABI_H */