| author | |
| committer | |
| log | b2bc44e0d5e5edde083ec281aa0575b16478d881 |
| tree | 4a6ce20e045dc66c657777c073b4cdb4a34069bd |
| parent | a7119d4269f0c31281cd472aab6228593378b294 |
| signature |
sigreturn and rt_sigreturn are distinct syscalls on PowerPC.2 files changed, 30 insertions(+), 2 deletions(-)
lib/std/os/linux/powerpc.zig+15-1| ... | @@ -232,7 +232,21 @@ pub fn clone() callconv(.naked) u32 { | ... | @@ -232,7 +232,21 @@ pub fn clone() callconv(.naked) u32 { |
| 232 | ); | 232 | ); |
| 233 | } | 233 | } |
| 234 | 234 | ||
| 235 | pub const restore = restore_rt; | 235 | pub fn restore() callconv(.naked) noreturn { |
| 236 | switch (builtin.zig_backend) { | ||
| 237 | .stage2_c => asm volatile ( | ||
| 238 | \\ li 0, %[number] | ||
| 239 | \\ sc | ||
| 240 | : | ||
| 241 | : [number] "i" (@intFromEnum(SYS.sigreturn)), | ||
| 242 | ), | ||
| 243 | else => asm volatile ( | ||
| 244 | \\ sc | ||
| 245 | : | ||
| 246 | : [number] "{r0}" (@intFromEnum(SYS.sigreturn)), | ||
| 247 | ), | ||
| 248 | } | ||
| 249 | } | ||
| 236 | 250 | ||
| 237 | pub fn restore_rt() callconv(.naked) noreturn { | 251 | pub fn restore_rt() callconv(.naked) noreturn { |
| 238 | switch (builtin.zig_backend) { | 252 | switch (builtin.zig_backend) { |
lib/std/os/linux/powerpc64.zig+15-1| ... | @@ -217,7 +217,21 @@ pub fn clone() callconv(.naked) u64 { | ... | @@ -217,7 +217,21 @@ pub fn clone() callconv(.naked) u64 { |
| 217 | ); | 217 | ); |
| 218 | } | 218 | } |
| 219 | 219 | ||
| 220 | pub const restore = restore_rt; | 220 | pub fn restore() callconv(.naked) noreturn { |
| 221 | switch (builtin.zig_backend) { | ||
| 222 | .stage2_c => asm volatile ( | ||
| 223 | \\ li 0, %[number] | ||
| 224 | \\ sc | ||
| 225 | : | ||
| 226 | : [number] "i" (@intFromEnum(SYS.sigreturn)), | ||
| 227 | ), | ||
| 228 | else => asm volatile ( | ||
| 229 | \\ sc | ||
| 230 | : | ||
| 231 | : [number] "{r0}" (@intFromEnum(SYS.sigreturn)), | ||
| 232 | ), | ||
| 233 | } | ||
| 234 | } | ||
| 221 | 235 | ||
| 222 | pub fn restore_rt() callconv(.naked) noreturn { | 236 | pub fn restore_rt() callconv(.naked) noreturn { |
| 223 | switch (builtin.zig_backend) { | 237 | switch (builtin.zig_backend) { |