aa64: finalise context switch, page fault handler and syscall
[lunaix-os.git] / lunaix-os / arch / aarch64 / includes / asm / aa64_sysinst.h
1 #ifndef __LUNAIX_AA64_SYSINST_H
2 #define __LUNAIX_AA64_SYSINST_H
3
4 #include "aa64_asm.h"
5
6 #define tlbi_alle1      __sysop_encode(4, 8, 7, 4)
7 #define tlbi_aside1     __sysop_encode(0, 8, 7, 2)
8 #define tlbi_rvaae1     __sysop_encode(0, 8, 6, 3)
9 #define tlbi_rvae1      __sysop_encode(0, 8, 6, 1)
10 #define tlbi_vaae1      __sysop_encode(0, 8, 7, 3)
11 #define tlbi_vae1       __sysop_encode(0, 8, 7, 1)
12
13 #define sys_a0(op)    \
14     ({  asm ("sys " op); })
15
16 #define sys_a1(op, xt)    \
17     ({  asm ("sys " op ", %0" :: "r"(xt)); })
18
19 #define sysl(op)    \
20     ({  unsigned long _x;                               \
21         asm ("sysl %0, " op :"=r"(_x));       \
22         _x;                                             \
23     })
24
25 #define data_barrier        asm ("dsb sy")
26
27 #endif /* __LUNAIX_AA64_SYSINST_H */