| ... | ... | @@ -212,6 +212,7 @@ fn _start() callconv(.naked) noreturn { |
| 212 | 212 | else |
| 213 | 213 | ".cfi_undefined ra", |
| 214 | 214 | .s390x => ".cfi_undefined %%r14", |
| 215 | .sh, .sheb => ".cfi_undefined pr", |
| 215 | 216 | .sparc, .sparc64 => ".cfi_undefined %%i7", |
| 216 | 217 | .x86 => ".cfi_undefined %%eip", |
| 217 | 218 | .x86_64 => ".cfi_undefined %%rip", |
| ... | ... | @@ -455,6 +456,21 @@ fn _start() callconv(.naked) noreturn { |
| 455 | 456 | \\ stg %%r0, 0(%%r15) |
| 456 | 457 | \\ jg %[posixCallMainAndExit] |
| 457 | 458 | , |
| 459 | .sh, .sheb => |
| 460 | // r14 = FP, r15 = SP, pr = LR |
| 461 | \\ mov #0, r0 |
| 462 | \\ lds r0, pr |
| 463 | \\ mov r0, r14 |
| 464 | \\ mov r15, r4 |
| 465 | \\ mov #-4, r0 |
| 466 | \\ and r0, r15 |
| 467 | \\ mov.l 2f, r1 |
| 468 | \\1: |
| 469 | \\ bsrf r1 |
| 470 | \\2: |
| 471 | \\ .balign 4 |
| 472 | \\ .long %[posixCallMainAndExit]@PCREL - (1b + 4 - .) |
| 473 | , |
| 458 | 474 | .sparc => |
| 459 | 475 | // argc is stored after a register window (16 registers * 4 bytes). |
| 460 | 476 | // i7 = LR |