| author | |
| committer | |
| log | 91b0adc4c15a273b7a8a94371941a3f3f7fd2232 |
| tree | 9fcf6e043cecae0285e2ecb05b5c939e8ea7d93e |
| parent | 4a344de651de757f01d9139ce0fbda7935048cf5 |
| parent | c73df65ded64f0918b9654a8a4133e80444f8701 |
| signature |
Fix `restore_rt` on PowerPC and remove unnecessary clobbers15 files changed, 43 insertions(+), 27 deletions(-)
lib/std/os/linux/aarch64.zig+2-2| ... | ... | @@ -141,12 +141,12 @@ pub fn restore_rt() callconv(.naked) noreturn { |
| 141 | 141 | \\ svc #0 |
| 142 | 142 | : |
| 143 | 143 | : [number] "i" (@intFromEnum(SYS.rt_sigreturn)), |
| 144 | : .{ .memory = true }), | |
| 144 | ), | |
| 145 | 145 | else => asm volatile ( |
| 146 | 146 | \\ svc #0 |
| 147 | 147 | : |
| 148 | 148 | : [number] "{x8}" (@intFromEnum(SYS.rt_sigreturn)), |
| 149 | : .{ .memory = true }), | |
| 149 | ), | |
| 150 | 150 | } |
| 151 | 151 | } |
| 152 | 152 |
lib/std/os/linux/arm.zig+2-2| ... | ... | @@ -150,12 +150,12 @@ pub fn restore_rt() callconv(.naked) noreturn { |
| 150 | 150 | \\ svc #0 |
| 151 | 151 | : |
| 152 | 152 | : [number] "I" (@intFromEnum(SYS.rt_sigreturn)), |
| 153 | : .{ .memory = true }), | |
| 153 | ), | |
| 154 | 154 | else => asm volatile ( |
| 155 | 155 | \\ svc #0 |
| 156 | 156 | : |
| 157 | 157 | : [number] "{r7}" (@intFromEnum(SYS.rt_sigreturn)), |
| 158 | : .{ .memory = true }), | |
| 158 | ), | |
| 159 | 159 | } |
| 160 | 160 | } |
| 161 | 161 |
lib/std/os/linux/hexagon.zig+1-1| ... | ... | @@ -135,7 +135,7 @@ pub fn restore_rt() callconv(.naked) noreturn { |
| 135 | 135 | \\ trap0(#0) |
| 136 | 136 | : |
| 137 | 137 | : [number] "{r6}" (@intFromEnum(SYS.rt_sigreturn)), |
| 138 | : .{ .memory = true }); | |
| 138 | ); | |
| 139 | 139 | } |
| 140 | 140 | |
| 141 | 141 | pub const F = struct { |
lib/std/os/linux/loongarch64.zig+1-1| ... | ... | @@ -143,7 +143,7 @@ pub fn restore_rt() callconv(.naked) noreturn { |
| 143 | 143 | \\ syscall 0 |
| 144 | 144 | : |
| 145 | 145 | : [number] "r" (@intFromEnum(SYS.rt_sigreturn)), |
| 146 | : .{ .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r16 = true, .r17 = true, .r18 = true, .r19 = true, .r20 = true, .memory = true }); | |
| 146 | ); | |
| 147 | 147 | } |
| 148 | 148 | |
| 149 | 149 | pub const msghdr = extern struct { |
lib/std/os/linux/m68k.zig+1-1| ... | ... | @@ -148,7 +148,7 @@ pub fn restore_rt() callconv(.naked) noreturn { |
| 148 | 148 | asm volatile ("trap #0" |
| 149 | 149 | : |
| 150 | 150 | : [number] "{d0}" (@intFromEnum(SYS.rt_sigreturn)), |
| 151 | : .{ .memory = true }); | |
| 151 | ); | |
| 152 | 152 | } |
| 153 | 153 | |
| 154 | 154 | pub const F = struct { |
lib/std/os/linux/mips.zig+1-1| ... | ... | @@ -254,7 +254,7 @@ pub fn restore_rt() callconv(.naked) noreturn { |
| 254 | 254 | \\ syscall |
| 255 | 255 | : |
| 256 | 256 | : [number] "{$2}" (@intFromEnum(SYS.rt_sigreturn)), |
| 257 | : .{ .r1 = true, .r3 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true }); | |
| 257 | ); | |
| 258 | 258 | } |
| 259 | 259 | |
| 260 | 260 | pub const F = struct { |
lib/std/os/linux/mips64.zig+1-1| ... | ... | @@ -233,7 +233,7 @@ pub fn restore_rt() callconv(.naked) noreturn { |
| 233 | 233 | \\ syscall |
| 234 | 234 | : |
| 235 | 235 | : [number] "{$2}" (@intFromEnum(SYS.rt_sigreturn)), |
| 236 | : .{ .r1 = true, .r3 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true, .r13 = true, .r14 = true, .r15 = true, .r24 = true, .r25 = true, .hi = true, .lo = true, .memory = true }); | |
| 236 | ); | |
| 237 | 237 | } |
| 238 | 238 | |
| 239 | 239 | pub const F = struct { |
lib/std/os/linux/powerpc.zig+13-5| ... | ... | @@ -247,11 +247,19 @@ pub fn clone() callconv(.naked) usize { |
| 247 | 247 | pub const restore = restore_rt; |
| 248 | 248 | |
| 249 | 249 | pub fn restore_rt() callconv(.naked) noreturn { |
| 250 | asm volatile ( | |
| 251 | \\ sc | |
| 252 | : | |
| 253 | : [number] "{r0}" (@intFromEnum(SYS.rt_sigreturn)), | |
| 254 | : .{ .memory = true, .cr0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true }); | |
| 250 | switch (@import("builtin").zig_backend) { | |
| 251 | .stage2_c => asm volatile ( | |
| 252 | \\ li 0, %[number] | |
| 253 | \\ sc | |
| 254 | : | |
| 255 | : [number] "i" (@intFromEnum(SYS.rt_sigreturn)), | |
| 256 | ), | |
| 257 | else => _ = asm volatile ( | |
| 258 | \\ sc | |
| 259 | : | |
| 260 | : [number] "{r0}" (@intFromEnum(SYS.rt_sigreturn)), | |
| 261 | ), | |
| 262 | } | |
| 255 | 263 | } |
| 256 | 264 | |
| 257 | 265 | pub const F = struct { |
lib/std/os/linux/powerpc64.zig+13-5| ... | ... | @@ -232,11 +232,19 @@ pub fn clone() callconv(.naked) usize { |
| 232 | 232 | pub const restore = restore_rt; |
| 233 | 233 | |
| 234 | 234 | pub fn restore_rt() callconv(.naked) noreturn { |
| 235 | asm volatile ( | |
| 236 | \\ sc | |
| 237 | : | |
| 238 | : [number] "{r0}" (@intFromEnum(SYS.rt_sigreturn)), | |
| 239 | : .{ .memory = true, .cr0 = true, .r4 = true, .r5 = true, .r6 = true, .r7 = true, .r8 = true, .r9 = true, .r10 = true, .r11 = true, .r12 = true }); | |
| 235 | switch (@import("builtin").zig_backend) { | |
| 236 | .stage2_c => asm volatile ( | |
| 237 | \\ li 0, %[number] | |
| 238 | \\ sc | |
| 239 | : | |
| 240 | : [number] "i" (@intFromEnum(SYS.rt_sigreturn)), | |
| 241 | ), | |
| 242 | else => _ = asm volatile ( | |
| 243 | \\ sc | |
| 244 | : | |
| 245 | : [number] "{r0}" (@intFromEnum(SYS.rt_sigreturn)), | |
| 246 | ), | |
| 247 | } | |
| 240 | 248 | } |
| 241 | 249 | |
| 242 | 250 | pub const F = struct { |
lib/std/os/linux/riscv32.zig+1-1| ... | ... | @@ -142,7 +142,7 @@ pub fn restore_rt() callconv(.naked) noreturn { |
| 142 | 142 | \\ ecall |
| 143 | 143 | : |
| 144 | 144 | : [number] "{x17}" (@intFromEnum(SYS.rt_sigreturn)), |
| 145 | : .{ .memory = true }); | |
| 145 | ); | |
| 146 | 146 | } |
| 147 | 147 | |
| 148 | 148 | pub const F = struct { |
lib/std/os/linux/riscv64.zig+1-1| ... | ... | @@ -142,7 +142,7 @@ pub fn restore_rt() callconv(.naked) noreturn { |
| 142 | 142 | \\ ecall |
| 143 | 143 | : |
| 144 | 144 | : [number] "{x17}" (@intFromEnum(SYS.rt_sigreturn)), |
| 145 | : .{ .memory = true }); | |
| 145 | ); | |
| 146 | 146 | } |
| 147 | 147 | |
| 148 | 148 | pub const F = struct { |
lib/std/os/linux/s390x.zig+1-1| ... | ... | @@ -154,7 +154,7 @@ pub fn restore_rt() callconv(.naked) noreturn { |
| 154 | 154 | \\svc 0 |
| 155 | 155 | : |
| 156 | 156 | : [number] "{r1}" (@intFromEnum(SYS.rt_sigreturn)), |
| 157 | : .{ .memory = true }); | |
| 157 | ); | |
| 158 | 158 | } |
| 159 | 159 | |
| 160 | 160 | pub const F = struct { |
lib/std/os/linux/thumb.zig+1-1| ... | ... | @@ -151,5 +151,5 @@ pub fn restore_rt() callconv(.naked) noreturn { |
| 151 | 151 | \\ svc #0 |
| 152 | 152 | : |
| 153 | 153 | : [number] "I" (@intFromEnum(SYS.rt_sigreturn)), |
| 154 | : .{ .memory = true }); | |
| 154 | ); | |
| 155 | 155 | } |
lib/std/os/linux/x86.zig+2-2| ... | ... | @@ -187,12 +187,12 @@ pub fn restore_rt() callconv(.naked) noreturn { |
| 187 | 187 | \\ int $0x80 |
| 188 | 188 | : |
| 189 | 189 | : [number] "i" (@intFromEnum(SYS.rt_sigreturn)), |
| 190 | : .{ .memory = true }), | |
| 190 | ), | |
| 191 | 191 | else => asm volatile ( |
| 192 | 192 | \\ int $0x80 |
| 193 | 193 | : |
| 194 | 194 | : [number] "{eax}" (@intFromEnum(SYS.rt_sigreturn)), |
| 195 | : .{ .memory = true }), | |
| 195 | ), | |
| 196 | 196 | } |
| 197 | 197 | } |
| 198 | 198 |
lib/std/os/linux/x86_64.zig+2-2| ... | ... | @@ -137,12 +137,12 @@ pub fn restore_rt() callconv(.naked) noreturn { |
| 137 | 137 | \\ syscall |
| 138 | 138 | : |
| 139 | 139 | : [number] "i" (@intFromEnum(SYS.rt_sigreturn)), |
| 140 | : .{ .rcx = true, .r11 = true, .memory = true }), | |
| 140 | ), | |
| 141 | 141 | else => asm volatile ( |
| 142 | 142 | \\ syscall |
| 143 | 143 | : |
| 144 | 144 | : [number] "{rax}" (@intFromEnum(SYS.rt_sigreturn)), |
| 145 | : .{ .rcx = true, .r11 = true, .memory = true }), | |
| 145 | ), | |
| 146 | 146 | } |
| 147 | 147 | } |
| 148 | 148 |