| ... | ... | @@ -195,9 +195,10 @@ fn _start() callconv(.naked) noreturn { |
| 195 | 195 | // This is the first userspace frame. Prevent DWARF-based unwinders from unwinding further. We |
| 196 | 196 | // prevent FP-based unwinders from unwinding further by zeroing the register below. |
| 197 | 197 | if (builtin.unwind_tables != .none or !builtin.strip_debug_info) asm volatile (switch (native_arch) { |
| 198 | .aarch64, .aarch64_be => ".cfi_undefined lr", |
| 199 | .alpha => ".cfi_undefined $26", |
| 198 | 200 | .arc, .arceb => ".cfi_undefined blink", |
| 199 | 201 | .arm, .armeb, .thumb, .thumbeb => "", // https://github.com/llvm/llvm-project/issues/115891 |
| 200 | | .aarch64, .aarch64_be => ".cfi_undefined lr", |
| 201 | 202 | .csky => ".cfi_undefined lr", |
| 202 | 203 | .hexagon => ".cfi_undefined r31", |
| 203 | 204 | .loongarch32, .loongarch64 => ".cfi_undefined 1", |
| ... | ... | @@ -253,6 +254,18 @@ fn _start() callconv(.naked) noreturn { |
| 253 | 254 | \\ and sp, x0, #-16 |
| 254 | 255 | \\ b %[posixCallMainAndExit] |
| 255 | 256 | , |
| 257 | .alpha => |
| 258 | // $15 = FP, $26 = LR, $29 = GP, $30 = SP |
| 259 | \\ br $29, 1f |
| 260 | \\1: |
| 261 | \\ ldgp $29, 0($29) |
| 262 | \\ mov 0, $15 |
| 263 | \\ mov 0, $26 |
| 264 | \\ mov $30, $16 |
| 265 | \\ ldi $1, -16 |
| 266 | \\ and $30, $30, $1 |
| 267 | \\ jsr $26, %[posixCallMainAndExit] |
| 268 | , |
| 256 | 269 | .arc, .arceb => |
| 257 | 270 | // ARC v1 and v2 had a very low stack alignment requirement of 4; v3 increased it to 16. |
| 258 | 271 | \\ mov fp, 0 |