authorgravatar for robin@voetter.nlRobin Voetter <robin@voetter.nl> 2019-09-04 15:59:51+02:00
committergravatar for robin@voetter.nlRobin Voetter <robin@voetter.nl> 2019-09-04 15:59:51+02:00
log6a76298740344ba6d82c33b19914238a1233eaa0
treebfab6a5d556079721c40681d2f33572ee548a479
parent5308eb7045b7b6a48356c6e814baf2a45a094d80

Add missing clobbers on arm-eabi and arm64 syscall conventions


2 files changed, 14 insertions(+), 0 deletions(-)

std/os/linux/arm-eabi.zig+7
...@@ -2,6 +2,7 @@ pub fn syscall0(number: usize) usize {...@@ -2,6 +2,7 @@ pub fn syscall0(number: usize) usize {
2 return asm volatile ("svc #0"2 return asm volatile ("svc #0"
3 : [ret] "={r0}" (-> usize)3 : [ret] "={r0}" (-> usize)
4 : [number] "{r7}" (number)4 : [number] "{r7}" (number)
5 : "memory"
5 );6 );
6}7}
78
...@@ -10,6 +11,7 @@ pub fn syscall1(number: usize, arg1: usize) usize {...@@ -10,6 +11,7 @@ pub fn syscall1(number: usize, arg1: usize) usize {
10 : [ret] "={r0}" (-> usize)11 : [ret] "={r0}" (-> usize)
11 : [number] "{r7}" (number),12 : [number] "{r7}" (number),
12 [arg1] "{r0}" (arg1)13 [arg1] "{r0}" (arg1)
14 : "memory"
13 );15 );
14}16}
1517
...@@ -19,6 +21,7 @@ pub fn syscall2(number: usize, arg1: usize, arg2: usize) usize {...@@ -19,6 +21,7 @@ pub fn syscall2(number: usize, arg1: usize, arg2: usize) usize {
19 : [number] "{r7}" (number),21 : [number] "{r7}" (number),
20 [arg1] "{r0}" (arg1),22 [arg1] "{r0}" (arg1),
21 [arg2] "{r1}" (arg2)23 [arg2] "{r1}" (arg2)
24 : "memory"
22 );25 );
23}26}
2427
...@@ -29,6 +32,7 @@ pub fn syscall3(number: usize, arg1: usize, arg2: usize, arg3: usize) usize {...@@ -29,6 +32,7 @@ pub fn syscall3(number: usize, arg1: usize, arg2: usize, arg3: usize) usize {
29 [arg1] "{r0}" (arg1),32 [arg1] "{r0}" (arg1),
30 [arg2] "{r1}" (arg2),33 [arg2] "{r1}" (arg2),
31 [arg3] "{r2}" (arg3)34 [arg3] "{r2}" (arg3)
35 : "memory"
32 );36 );
33}37}
3438
...@@ -40,6 +44,7 @@ pub fn syscall4(number: usize, arg1: usize, arg2: usize, arg3: usize, arg4: usiz...@@ -40,6 +44,7 @@ pub fn syscall4(number: usize, arg1: usize, arg2: usize, arg3: usize, arg4: usiz
40 [arg2] "{r1}" (arg2),44 [arg2] "{r1}" (arg2),
41 [arg3] "{r2}" (arg3),45 [arg3] "{r2}" (arg3),
42 [arg4] "{r3}" (arg4)46 [arg4] "{r3}" (arg4)
47 : "memory"
43 );48 );
44}49}
4550
...@@ -52,6 +57,7 @@ pub fn syscall5(number: usize, arg1: usize, arg2: usize, arg3: usize, arg4: usiz...@@ -52,6 +57,7 @@ pub fn syscall5(number: usize, arg1: usize, arg2: usize, arg3: usize, arg4: usiz
52 [arg3] "{r2}" (arg3),57 [arg3] "{r2}" (arg3),
53 [arg4] "{r3}" (arg4),58 [arg4] "{r3}" (arg4),
54 [arg5] "{r4}" (arg5)59 [arg5] "{r4}" (arg5)
60 : "memory"
55 );61 );
56}62}
5763
...@@ -73,6 +79,7 @@ pub fn syscall6(...@@ -73,6 +79,7 @@ pub fn syscall6(
73 [arg4] "{r3}" (arg4),79 [arg4] "{r3}" (arg4),
74 [arg5] "{r4}" (arg5),80 [arg5] "{r4}" (arg5),
75 [arg6] "{r5}" (arg6)81 [arg6] "{r5}" (arg6)
82 : "memory"
76 );83 );
77}84}
7885
std/os/linux/arm64.zig+7
...@@ -2,6 +2,7 @@ pub fn syscall0(number: usize) usize {...@@ -2,6 +2,7 @@ pub fn syscall0(number: usize) usize {
2 return asm volatile ("svc #0"2 return asm volatile ("svc #0"
3 : [ret] "={x0}" (-> usize)3 : [ret] "={x0}" (-> usize)
4 : [number] "{x8}" (number)4 : [number] "{x8}" (number)
5 : "memory", "cc"
5 );6 );
6}7}
78
...@@ -10,6 +11,7 @@ pub fn syscall1(number: usize, arg1: usize) usize {...@@ -10,6 +11,7 @@ pub fn syscall1(number: usize, arg1: usize) usize {
10 : [ret] "={x0}" (-> usize)11 : [ret] "={x0}" (-> usize)
11 : [number] "{x8}" (number),12 : [number] "{x8}" (number),
12 [arg1] "{x0}" (arg1)13 [arg1] "{x0}" (arg1)
14 : "memory", "cc"
13 );15 );
14}16}
1517
...@@ -19,6 +21,7 @@ pub fn syscall2(number: usize, arg1: usize, arg2: usize) usize {...@@ -19,6 +21,7 @@ pub fn syscall2(number: usize, arg1: usize, arg2: usize) usize {
19 : [number] "{x8}" (number),21 : [number] "{x8}" (number),
20 [arg1] "{x0}" (arg1),22 [arg1] "{x0}" (arg1),
21 [arg2] "{x1}" (arg2)23 [arg2] "{x1}" (arg2)
24 : "memory", "cc"
22 );25 );
23}26}
2427
...@@ -29,6 +32,7 @@ pub fn syscall3(number: usize, arg1: usize, arg2: usize, arg3: usize) usize {...@@ -29,6 +32,7 @@ pub fn syscall3(number: usize, arg1: usize, arg2: usize, arg3: usize) usize {
29 [arg1] "{x0}" (arg1),32 [arg1] "{x0}" (arg1),
30 [arg2] "{x1}" (arg2),33 [arg2] "{x1}" (arg2),
31 [arg3] "{x2}" (arg3)34 [arg3] "{x2}" (arg3)
35 : "memory", "cc"
32 );36 );
33}37}
3438
...@@ -40,6 +44,7 @@ pub fn syscall4(number: usize, arg1: usize, arg2: usize, arg3: usize, arg4: usiz...@@ -40,6 +44,7 @@ pub fn syscall4(number: usize, arg1: usize, arg2: usize, arg3: usize, arg4: usiz
40 [arg2] "{x1}" (arg2),44 [arg2] "{x1}" (arg2),
41 [arg3] "{x2}" (arg3),45 [arg3] "{x2}" (arg3),
42 [arg4] "{x3}" (arg4)46 [arg4] "{x3}" (arg4)
47 : "memory", "cc"
43 );48 );
44}49}
4550
...@@ -52,6 +57,7 @@ pub fn syscall5(number: usize, arg1: usize, arg2: usize, arg3: usize, arg4: usiz...@@ -52,6 +57,7 @@ pub fn syscall5(number: usize, arg1: usize, arg2: usize, arg3: usize, arg4: usiz
52 [arg3] "{x2}" (arg3),57 [arg3] "{x2}" (arg3),
53 [arg4] "{x3}" (arg4),58 [arg4] "{x3}" (arg4),
54 [arg5] "{x4}" (arg5)59 [arg5] "{x4}" (arg5)
60 : "memory", "cc"
55 );61 );
56}62}
5763
...@@ -73,6 +79,7 @@ pub fn syscall6(...@@ -73,6 +79,7 @@ pub fn syscall6(
73 [arg4] "{x3}" (arg4),79 [arg4] "{x3}" (arg4),
74 [arg5] "{x4}" (arg5),80 [arg5] "{x4}" (arg5),
75 [arg6] "{x5}" (arg6)81 [arg6] "{x5}" (arg6)
82 : "memory", "cc"
76 );83 );
77}84}
7885