authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-08-28 01:21:58+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-08-28 07:41:22+02:00
log417c68d249fc3a3fa5dad4adca57d191fe04daef
treef6b06c0ce43a5ad495ba10b75eae2a1ef56e620b
parent733008ec6b8e15fc54f14399adfc04682c69988b

std.os.linux: powerpc syscalls clobber ctr and xer

https://git.musl-libc.org/cgit/musl/commit/?id=f6944eb3c4ce1c97dc39dc36d32390dc9f70b67b

2 files changed, 14 insertions(+), 14 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 = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true });25 : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true });
26}26}
2727
28pub fn syscall1(number: SYS, arg1: usize) usize {28pub fn syscall1(number: SYS, arg1: usize) usize {
...@@ -34,7 +34,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {...@@ -34,7 +34,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
34 : [ret] "={r3}" (-> usize),34 : [ret] "={r3}" (-> usize),
35 : [number] "{r0}" (@intFromEnum(number)),35 : [number] "{r0}" (@intFromEnum(number)),
36 [arg1] "{r3}" (arg1),36 [arg1] "{r3}" (arg1),
37 : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true });37 : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true });
38}38}
3939
40pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {40pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {
...@@ -47,7 +47,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {...@@ -47,7 +47,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {
47 : [number] "{r0}" (@intFromEnum(number)),47 : [number] "{r0}" (@intFromEnum(number)),
48 [arg1] "{r3}" (arg1),48 [arg1] "{r3}" (arg1),
49 [arg2] "{r4}" (arg2),49 [arg2] "{r4}" (arg2),
50 : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true });50 : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true });
51}51}
5252
53pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {53pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {
...@@ -61,7 +61,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {...@@ -61,7 +61,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {
61 [arg1] "{r3}" (arg1),61 [arg1] "{r3}" (arg1),
62 [arg2] "{r4}" (arg2),62 [arg2] "{r4}" (arg2),
63 [arg3] "{r5}" (arg3),63 [arg3] "{r5}" (arg3),
64 : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true });64 : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true });
65}65}
6666
67pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize {67pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize {
...@@ -76,7 +76,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize)...@@ -76,7 +76,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize)
76 [arg2] "{r4}" (arg2),76 [arg2] "{r4}" (arg2),
77 [arg3] "{r5}" (arg3),77 [arg3] "{r5}" (arg3),
78 [arg4] "{r6}" (arg4),78 [arg4] "{r6}" (arg4),
79 : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true });79 : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true });
80}80}
8181
82pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize {82pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize {
...@@ -92,7 +92,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize,...@@ -92,7 +92,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize,
92 [arg3] "{r5}" (arg3),92 [arg3] "{r5}" (arg3),
93 [arg4] "{r6}" (arg4),93 [arg4] "{r6}" (arg4),
94 [arg5] "{r7}" (arg5),94 [arg5] "{r7}" (arg5),
95 : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true });95 : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true });
96}96}
9797
98pub fn syscall6(98pub fn syscall6(
...@@ -117,7 +117,7 @@ pub fn syscall6(...@@ -117,7 +117,7 @@ pub fn syscall6(
117 [arg4] "{r6}" (arg4),117 [arg4] "{r6}" (arg4),
118 [arg5] "{r7}" (arg5),118 [arg5] "{r7}" (arg5),
119 [arg6] "{r8}" (arg6),119 [arg6] "{r8}" (arg6),
120 : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true });120 : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true });
121}121}
122122
123pub fn clone() callconv(.naked) usize {123pub fn clone() callconv(.naked) usize {
lib/std/os/linux/powerpc64.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 = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true });25 : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true });
26}26}
2727
28pub fn syscall1(number: SYS, arg1: usize) usize {28pub fn syscall1(number: SYS, arg1: usize) usize {
...@@ -34,7 +34,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {...@@ -34,7 +34,7 @@ pub fn syscall1(number: SYS, arg1: usize) usize {
34 : [ret] "={r3}" (-> usize),34 : [ret] "={r3}" (-> usize),
35 : [number] "{r0}" (@intFromEnum(number)),35 : [number] "{r0}" (@intFromEnum(number)),
36 [arg1] "{r3}" (arg1),36 [arg1] "{r3}" (arg1),
37 : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true });37 : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true });
38}38}
3939
40pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {40pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {
...@@ -47,7 +47,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {...@@ -47,7 +47,7 @@ pub fn syscall2(number: SYS, arg1: usize, arg2: usize) usize {
47 : [number] "{r0}" (@intFromEnum(number)),47 : [number] "{r0}" (@intFromEnum(number)),
48 [arg1] "{r3}" (arg1),48 [arg1] "{r3}" (arg1),
49 [arg2] "{r4}" (arg2),49 [arg2] "{r4}" (arg2),
50 : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true });50 : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true });
51}51}
5252
53pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {53pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {
...@@ -61,7 +61,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {...@@ -61,7 +61,7 @@ pub fn syscall3(number: SYS, arg1: usize, arg2: usize, arg3: usize) usize {
61 [arg1] "{r3}" (arg1),61 [arg1] "{r3}" (arg1),
62 [arg2] "{r4}" (arg2),62 [arg2] "{r4}" (arg2),
63 [arg3] "{r5}" (arg3),63 [arg3] "{r5}" (arg3),
64 : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true });64 : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true });
65}65}
6666
67pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize {67pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize) usize {
...@@ -76,7 +76,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize)...@@ -76,7 +76,7 @@ pub fn syscall4(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize)
76 [arg2] "{r4}" (arg2),76 [arg2] "{r4}" (arg2),
77 [arg3] "{r5}" (arg3),77 [arg3] "{r5}" (arg3),
78 [arg4] "{r6}" (arg4),78 [arg4] "{r6}" (arg4),
79 : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true });79 : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true });
80}80}
8181
82pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize {82pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize, arg5: usize) usize {
...@@ -92,7 +92,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize,...@@ -92,7 +92,7 @@ pub fn syscall5(number: SYS, arg1: usize, arg2: usize, arg3: usize, arg4: usize,
92 [arg3] "{r5}" (arg3),92 [arg3] "{r5}" (arg3),
93 [arg4] "{r6}" (arg4),93 [arg4] "{r6}" (arg4),
94 [arg5] "{r7}" (arg5),94 [arg5] "{r7}" (arg5),
95 : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true });95 : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true });
96}96}
9797
98pub fn syscall6(98pub fn syscall6(
...@@ -117,7 +117,7 @@ pub fn syscall6(...@@ -117,7 +117,7 @@ pub fn syscall6(
117 [arg4] "{r6}" (arg4),117 [arg4] "{r6}" (arg4),
118 [arg5] "{r7}" (arg5),118 [arg5] "{r7}" (arg5),
119 [arg6] "{r8}" (arg6),119 [arg6] "{r8}" (arg6),
120 : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true });120 : .{ .memory = true, .cr0 = true, .r0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .ctr = true, .xer = true });
121}121}
122122
123pub fn clone() callconv(.naked) usize {123pub fn clone() callconv(.naked) usize {