authorgravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-10-23 07:24:24+02:00
committergravatar for alex@alexrp.comAlex Rønne Petersen <alex@alexrp.com> 2025-10-23 09:27:17+02:00
logc792ebfee2fab3ee9c633e7abc344d0e7535c983
tree83cd2247c9e1de52edbc64dd8716d9052c9858d4
parent252e1fd7ecc037b129490af5eb5ca8fdfa6a20bc
signaturebadge-check Signed by SSH key SHA256:7B/LJ7bpR1eX8aCXSr4mtd5M45VMPKcx9zY8e95b5QM

std.start: add microblaze support


1 files changed, 11 insertions(+), 0 deletions(-)

lib/std/start.zig+11
......@@ -203,6 +203,7 @@ fn _start() callconv(.naked) noreturn {
203203 .hexagon => ".cfi_undefined r31",
204204 .loongarch32, .loongarch64 => ".cfi_undefined 1",
205205 .m68k => ".cfi_undefined %%pc",
206 .microblaze, .microblazeel => ".cfi_undefined r15",
206207 .mips, .mipsel, .mips64, .mips64el => ".cfi_undefined $ra",
207208 .or1k => ".cfi_undefined r9",
208209 .powerpc, .powerpcle, .powerpc64, .powerpc64le => ".cfi_undefined lr",
......@@ -346,6 +347,16 @@ fn _start() callconv(.naked) noreturn {
346347 \\ lea %[posixCallMainAndExit] - . - 8, %%a0
347348 \\ jsr (%%pc, %%a0)
348349 ,
350 .microblaze, .microblazeel =>
351 // r1 = SP, r15 = LR, r19 = FP, r20 = GP
352 \\ ori r15, r0, r0
353 \\ ori r19, r0, r0
354 \\ mfs r20, rpc
355 \\ addik r20, r20, _GLOBAL_OFFSET_TABLE_ + 8
356 \\ ori r5, r1, r0
357 \\ andi r1, r1, -4
358 \\ brlid r15, %[posixCallMainAndExit]
359 ,
349360 .mips, .mipsel =>
350361 \\ move $fp, $zero
351362 \\ bal 1f