| ... | @@ -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 = $0 | 296 | // a4 = $20, a5 = $21, sp = $30, v0 = $0 |
| 297 | \\ # Save function pointer and argument pointer on new thread stack | 297 | \\ # Save function pointer and argument pointer on new thread stack |
| 298 | \\ ldi $1, -8 | 298 | \\ ldi $1, -16 |
| 299 | \\ and $17, $17, $1 | 299 | \\ 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 $26 | 323 | \\ .cfi_undefined $26 |
| 324 | ); | 324 | ); |
| 325 | asm volatile ( | 325 | asm volatile ( |
| 326 | // v0 = $0, t9 = $23, a0 = $16, ra = $26, sp = $30, fp = $15 | 326 | // v0 = $0, a0 = $16, ra = $26, sp = $30, fp = $15, pv = $27 |
| 327 | \\ mov 0, $15 | 327 | \\ 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, $16 | 334 | \\ mov $0, $16 |
| 335 | \\ ldi $0, 1 # SYS_EXIT | 335 | \\ ldi $0, 1 # SYS_exit |
| 336 | \\ callsys | 336 | \\ 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 = $30 | 342 | // v0 = $0, a0 = $16, sp = $30 |
| 343 | \\ mov $30, $16 | 343 | \\ mov $30, $16 |
| 344 | \\ ldi $0, 103 # SIGRETURN | 344 | \\ ldi $0, 103 # SYS_sigreturn |
| 345 | \\ callsys | 345 | \\ 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 = $30 | 351 | // v0 = $0, a0 = $16, sp = $30 |
| 352 | \\ mov $30, $16 | 352 | \\ mov $30, $16 |
| 353 | \\ ldi $0, 351 # RT_SIGRETURN | 353 | \\ ldi $0, 351 # SYS_rt_sigreturn |
| 354 | \\ callsys | 354 | \\ callsys |
| 355 | ); | 355 | ); |
| 356 | } | 356 | } |