add asm headers and linker scripts for aarch64
[lunaix-os.git] / lunaix-os / arch / aarch64 / includes / asm / aa64_sysinst.h
diff --git a/lunaix-os/arch/aarch64/includes/asm/aa64_sysinst.h b/lunaix-os/arch/aarch64/includes/asm/aa64_sysinst.h
new file mode 100644 (file)
index 0000000..96cb7ca
--- /dev/null
@@ -0,0 +1,25 @@
+#ifndef __LUNAIX_AA64_SYSINST_H
+#define __LUNAIX_AA64_SYSINST_H
+
+#include "aa64_msrs.h"
+
+#define tlbi_alle1      __sr_encode(1, 4, 8, 7, 4)
+#define tlbi_aside1     __sr_encode(1, 0, 8, 7, 2)
+#define tlbi_rvaae1     __sr_encode(1, 0, 8, 6, 3)
+#define tlbi_rvae1      __sr_encode(1, 0, 8, 6, 1)
+#define tlbi_vaae1      __sr_encode(1, 0, 8, 7, 3)
+#define tlbi_vae1       __sr_encode(1, 0, 8, 7, 1)
+
+#define sys_a0(op)    \
+    ({  asm ("sys " stringify(op)); })
+
+#define sys_a1(op, xt)    \
+    ({  asm ("sys " stringify(op) ", %0" :: "r"(xt)); })
+
+#define sysl(op)    \
+    ({  unsigned long _x;                               \
+        asm ("sysl %0, " stringify(op):"=r"(_x));       \
+        _x;                                             \
+    })
+
+#endif /* __LUNAIX_AA64_SYSINST_H */