authorgravatar for contact@taylor.fishtaylor.fish <contact@taylor.fish> 2025-06-22 16:36:44-07:00
committergravatar for contact@taylor.fishtaylor.fish <contact@taylor.fish> 2025-06-22 16:48:36-07:00
log95b638f613406c6bd609c7addd666dbe1758486a
treeb443561403ca23a7041dc81ffbbc353600e74c1c
parent79807468e747bac056cfea4340065e49a5d97120

Update 32-bit PowerPC syscall functions

musl and glibc both specify r0 as an output register because its value may be overwritten by system calls. As with the updates for 64-bit PowerPC in the previous commit, this commit brings Zig's syscall functions for 32-bit PowerPC in line with musl and glibc by adding r0 to the list of clobbers. (Listing r0 as both an input and a clobber is as close as we can get to musl, which declares it as a "+r" read-write output, since Zig doesn't support multiple outputs or the "+" specifier.)

1 files changed, 7 insertions(+), 7 deletions(-)

lib/std/os/linux/powerpc.zig+7-7
...@@ -22,7 +22,7 @@ pub fn syscall0(number: SYS) usize {...@@ -22,7 +22,7 @@ pub fn syscall0(number: SYS) usize {
22 \\ 1:22 \\ 1:
23 : [ret] "={r3}" (-> usize),23 : [ret] "={r3}" (-> usize),
24 : [number] "{r0}" (@intFromEnum(number)),24 : [number] "{r0}" (@intFromEnum(number)),
25 : "memory", "cr0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"25 : "memory", "cr0", "r0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"
26 );26 );
27}27}
2828
...@@ -35,7 +35,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {...@@ -35,7 +35,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
35 : [ret] "={r3}" (-> usize),35 : [ret] "={r3}" (-> usize),
36 : [number] "{r0}" (@intFromEnum(number)),36 : [number] "{r0}" (@intFromEnum(number)),
37 [arg1] "{r3}" (arg1),37 [arg1] "{r3}" (arg1),
38 : "memory", "cr0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"38 : "memory", "cr0", "r0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"
39 );39 );
40}40}
4141
...@@ -49,7 +49,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {...@@ -49,7 +49,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {
49 : [number] "{r0}" (@intFromEnum(number)),49 : [number] "{r0}" (@intFromEnum(number)),
50 [arg1] "{r3}" (arg1),50 [arg1] "{r3}" (arg1),
51 [arg2] "{r4}" (arg2),51 [arg2] "{r4}" (arg2),
52 : "memory", "cr0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"52 : "memory", "cr0", "r0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"
53 );53 );
54}54}
5555
...@@ -64,7 +64,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {...@@ -64,7 +64,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {
64 [arg1] "{r3}" (arg1),64 [arg1] "{r3}" (arg1),
65 [arg2] "{r4}" (arg2),65 [arg2] "{r4}" (arg2),
66 [arg3] "{r5}" (arg3),66 [arg3] "{r5}" (arg3),
67 : "memory", "cr0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"67 : "memory", "cr0", "r0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"
68 );68 );
69}69}
7070
...@@ -80,7 +80,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize)...@@ -80,7 +80,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize)
80 [arg2] "{r4}" (arg2),80 [arg2] "{r4}" (arg2),
81 [arg3] "{r5}" (arg3),81 [arg3] "{r5}" (arg3),
82 [arg4] "{r6}" (arg4),82 [arg4] "{r6}" (arg4),
83 : "memory", "cr0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"83 : "memory", "cr0", "r0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"
84 );84 );
85}85}
8686
...@@ -97,7 +97,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize,...@@ -97,7 +97,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize,
97 [arg3] "{r5}" (arg3),97 [arg3] "{r5}" (arg3),
98 [arg4] "{r6}" (arg4),98 [arg4] "{r6}" (arg4),
99 [arg5] "{r7}" (arg5),99 [arg5] "{r7}" (arg5),
100 : "memory", "cr0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"100 : "memory", "cr0", "r0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"
101 );101 );
102}102}
103103
...@@ -123,7 +123,7 @@ pub fn syscall6(...@@ -123,7 +123,7 @@ pub fn syscall6(
123 [arg4] "{r6}" (arg4),123 [arg4] "{r6}" (arg4),
124 [arg5] "{r7}" (arg5),124 [arg5] "{r7}" (arg5),
125 [arg6] "{r8}" (arg6),125 [arg6] "{r8}" (arg6),
126 : "memory", "cr0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"126 : "memory", "cr0", "r0", "r4", "r5", "r6", "r7", "r8", "r9", "r10", "r11", "r12"
127 );127 );
128}128}
129129