1#[macro_export]
2macro_rules! define_utee_syscalls {
3
4 ( $( $id_name:ident = $id_val:expr => fn $func_name:ident() );* $(;)? ) => {
5 $(
6 pub const $id_name: usize = $id_val + 500;
7
8 #[inline]
9 pub unsafe extern "C" fn $func_name() -> usize {
10 unsafe {
11 $crate::syscalls::arch::syscall0($id_name)
12 }
13 }
14 )*
15 };
16
17 ( $( $id_name:ident = $id_val:expr => fn $func_name:ident($a:ident : $at:ty) );* $(;)? ) => {
18 $(
19 pub const $id_name: usize = $id_val + 500;
20
21 #[inline]
22 pub unsafe extern "C" fn $func_name($a: $at) -> usize {
23 unsafe {
24 $crate::syscalls::arch::syscall1($id_name, $a as usize)
25 }
26 }
27 )*
28 };
29
30 ( $( $id_name:ident = $id_val:expr => fn $func_name:ident($a:ident : $at:ty, $b:ident : $bt:ty) );* $(;)? ) => {
31 $(
32 pub const $id_name: usize = $id_val + 500;
33
34 #[inline]
35 pub unsafe extern "C" fn $func_name($a: $at, $b: $bt) -> usize {
36 unsafe {
37 $crate::syscalls::arch::syscall2($id_name, $a as usize, $b as usize)
38 }
39 }
40 )*
41 };
42
43
44 ( $( $id_name:ident = $id_val:expr => fn $func_name:ident($a:ident : $at:ty, $b:ident : $bt:ty, $c:ident : $ct:ty) );* $(;)? ) => {
45 $(
46 pub const $id_name: usize = $id_val + 500;
47
48 #[inline]
49 pub unsafe extern "C" fn $func_name($a: $at, $b: $bt, $c: $ct) -> usize {
50 unsafe {
51 $crate::syscalls::arch::syscall3($id_name, $a as usize, $b as usize, $c as usize)
52 }
53 }
54 )*
55 };
56
57 ( $( $id_name:ident = $id_val:expr => fn $func_name:ident($a:ident : $at:ty, $b:ident : $bt:ty, $c:ident : $ct:ty, $d:ident : $dt:ty) );* $(;)? ) => {
58 $(
59 pub const $id_name: usize = $id_val + 500;
60 #[inline]
61 pub unsafe extern "C" fn $func_name($a: $at, $b: $bt, $c: $ct, $d: $dt) -> usize {
62 unsafe {
63 $crate::syscalls::arch::syscall4($id_name, $a as usize, $b as usize, $c as usize, $d as usize)
64 }
65 }
66 )*
67 };
68
69 ( $( $id_name:ident = $id_val:expr => fn $func_name:ident($a:ident : $at:ty, $b:ident : $bt:ty, $c:ident : $ct:ty, $d:ident : $dt:ty, $e:ident : $et:ty) );* $(;)? ) => {
70 $(
71 pub const $id_name: usize = $id_val + 500;
72 #[inline]
73 pub unsafe extern "C" fn $func_name($a: $at, $b: $bt, $c: $ct, $d: $dt, $e: $et) -> usize {
74 unsafe {
75 $crate::syscalls::arch::syscall5($id_name, $a as usize, $b as usize, $c as usize, $d as usize, $e as usize)
76 }
77 }
78 )*
79 };
80
81 ( $( $id_name:ident = $id_val:expr => fn $func_name:ident($a:ident : $at:ty, $b:ident : $bt:ty, $c:ident : $ct:ty, $d:ident : $dt:ty, $e:ident : $et:ty, $f:ident : $ft:ty) );* $(;)? ) => {
82 $(
83 pub const $id_name: usize = $id_val + 500;
84 #[inline]
85 pub unsafe extern "C" fn $func_name($a: $at, $b: $bt, $c: $ct, $d: $dt, $e: $et, $f: $ft) -> usize {
86 unsafe {
87 $crate::syscalls::arch::syscall6($id_name, $a as usize, $b as usize, $c as usize, $d as usize, $e as usize, $f as usize)
88 }
89 }
90 )*
91 };
92
93 ( $( $id_name:ident = $id_val:expr => fn $func_name:ident($a:ident : $at:ty, $b:ident : $bt:ty, $c:ident : $ct:ty, $d:ident : $dt:ty, $e:ident : $et:ty, $f:ident : $ft:ty, $g:ident : $gt:ty) );* $(;)? ) => {
94 $(
95 pub const $id_name: usize = $id_val + 500;
96 #[inline]
97 pub unsafe extern "C" fn $func_name($a: $at, $b: $bt, $c: $ct, $d: $dt, $e: $et, $f: $ft, $g: $gt) -> usize {
98 unsafe {
99 $crate::syscalls::arch::syscall7($id_name, $a as usize, $b as usize, $c as usize, $d as usize, $e as usize, $f as usize, $g as usize)
100 }
101 }
102 )*
103 };
104
105 ( $( $id_name:ident = $id_val:expr => fn $func_name:ident($a:ident : $at:ty, $b:ident : $bt:ty, $c:ident : $ct:ty, $d:ident : $dt:ty, $e:ident : $et:ty, $f:ident : $ft:ty, $g:ident : $gt:ty, $h:ident : $ht:ty) );* $(;)? ) => {
106 $(
107 pub const $id_name: usize = $id_val + 500;
108 #[inline]
109 pub unsafe extern "C" fn $func_name($a: $at, $b: $bt, $c: $ct, $d: $dt, $e: $et, $f: $ft, $g: $gt, $h: $ht) -> usize {
110 unsafe {
111 $crate::syscalls::arch::syscall8($id_name, $a as usize, $b as usize, $c as usize, $d as usize, $e as usize, $f as usize, $g as usize, $h as usize)
112 }
113 }
114 )*
115 };
116}