| ... | @@ -487,14 +487,22 @@ fn _start() callconv(.naked) noreturn { | ... | @@ -487,14 +487,22 @@ fn _start() callconv(.naked) noreturn { |
| 487 | \\ sub %%sp, 2047, %%sp | 487 | \\ sub %%sp, 2047, %%sp |
| 488 | \\ ba,a %[posixCallMainAndExit] | 488 | \\ ba,a %[posixCallMainAndExit] |
| 489 | , | 489 | , |
| 490 | .xtensa, .xtensaeb => | 490 | .xtensa, .xtensaeb => if (builtin.abi == .call0) |
| 491 | // a0 = LR, a7 = FP, a1 = SP | 491 | // a0 = LR, a15 = FP, a1 = SP |
| 492 | \\ movi a0, 0 | 492 | \\ movi a0, 0 |
| 493 | \\ movi a7, 0 | 493 | \\ movi a15, 0 |
| 494 | \\ mov a6, sp | 494 | \\ mov a2, sp |
| 495 | \\ movi a8, -16 | 495 | \\ movi a8, -16 |
| 496 | \\ and sp, sp, a8 | 496 | \\ and sp, sp, a8 |
| 497 | \\ call4 %[posixCallMainAndExit] | 497 | \\ call0 %[posixCallMainAndExit] |
| | 498 | else |
| | 499 | // a0 = LR, a7 = FP, a1 = SP |
| | 500 | \\ movi a0, 0 |
| | 501 | \\ movi a7, 0 |
| | 502 | \\ mov a6, sp |
| | 503 | \\ movi a8, -16 |
| | 504 | \\ and sp, sp, a8 |
| | 505 | \\ call4 %[posixCallMainAndExit] |
| 498 | , | 506 | , |
| 499 | else => @compileError("unsupported arch"), | 507 | else => @compileError("unsupported arch"), |
| 500 | } | 508 | } |