authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-08-08 20:27:51+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2026-08-09 16:56:25+02:00
log71a0bc027304562f7c6ffc5acc95c3ee11c7cf1b
tree7d5bcb786e76bdb36c1eaf4ff6e33056121d1d17
parent511a5c6e192e562b830c30b95820cb37321d98f7
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

std.os.linux.alpha: fix some bugs in the clone assembly


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

lib/std/os/linux/alpha.zig+8-8
...@@ -295,8 +295,8 @@ pub fn clone() callconv(.naked) u64 {...@@ -295,8 +295,8 @@ pub fn clone() callconv(.naked) u64 {
295 // a0 = $16, a1 = $17, a2 = $18, a3 = $19,295 // a0 = $16, a1 = $17, a2 = $18, a3 = $19,
296 // a4 = $20, a5 = $21, sp = $30, v0 = $0296 // a4 = $20, a5 = $21, sp = $30, v0 = $0
297 \\ # Save function pointer and argument pointer on new thread stack297 \\ # Save function pointer and argument pointer on new thread stack
298 \\ ldi $1, -8298 \\ ldi $1, -16
299 \\ and $17, $17, $1299 \\ and $17, $1, $17
300 \\ lda $17, -16($17)300 \\ lda $17, -16($17)
301 \\ stq $16, 0($17)301 \\ stq $16, 0($17)
302 \\ stq $19, 8($17)302 \\ stq $19, 8($17)
...@@ -323,16 +323,16 @@ pub fn clone() callconv(.naked) u64 {...@@ -323,16 +323,16 @@ pub fn clone() callconv(.naked) u64 {
323 \\ .cfi_undefined $26323 \\ .cfi_undefined $26
324 );324 );
325 asm volatile (325 asm volatile (
326 // v0 = $0, t9 = $23, a0 = $16, ra = $26, sp = $30, fp = $15326 // v0 = $0, a0 = $16, ra = $26, sp = $30, fp = $15, pv = $27
327 \\ mov 0, $15327 \\ mov 0, $15
328 \\328 \\
329 \\ ldq $23, 0($30)329 \\ ldq $27, 0($30)
330 \\ ldq $16, 8($30)330 \\ ldq $16, 8($30)
331 \\ lda $30, 16($30)331 \\ lda $30, 16($30)
332 \\ jsr $26, ($23)332 \\ jsr $26, ($27)
333 \\333 \\
334 \\ mov $0, $16334 \\ mov $0, $16
335 \\ ldi $0, 1 # SYS_EXIT335 \\ ldi $0, 1 # SYS_exit
336 \\ callsys336 \\ callsys
337 );337 );
338}338}
...@@ -341,7 +341,7 @@ pub fn restore() noreturn {...@@ -341,7 +341,7 @@ pub fn restore() noreturn {
341 asm volatile (341 asm volatile (
342 // v0 = $0, a0 = $16, sp = $30342 // v0 = $0, a0 = $16, sp = $30
343 \\ mov $30, $16343 \\ mov $30, $16
344 \\ ldi $0, 103 # SIGRETURN344 \\ ldi $0, 103 # SYS_sigreturn
345 \\ callsys345 \\ callsys
346 );346 );
347}347}
...@@ -350,7 +350,7 @@ pub fn restore_rt() noreturn {...@@ -350,7 +350,7 @@ pub fn restore_rt() noreturn {
350 asm volatile (350 asm volatile (
351 // v0 = $0, a0 = $16, sp = $30351 // v0 = $0, a0 = $16, sp = $30
352 \\ mov $30, $16352 \\ mov $30, $16
353 \\ ldi $0, 351 # RT_SIGRETURN353 \\ ldi $0, 351 # SYS_rt_sigreturn
354 \\ callsys354 \\ callsys
355 );355 );
356}356}