aboutsummaryrefslogtreecommitdiff
path: root/lib/std/start.zig
diff options
context:
space:
mode:
authorAlex Rønne Petersen <alex@alexrp.com>2025-10-23 07:24:24 +0200
committerAlex Rønne Petersen <alex@alexrp.com>2025-10-23 09:27:17 +0200
commitc792ebfee2fab3ee9c633e7abc344d0e7535c983 (patch)
tree83cd2247c9e1de52edbc64dd8716d9052c9858d4 /lib/std/start.zig
parent252e1fd7ecc037b129490af5eb5ca8fdfa6a20bc (diff)
downloadzig-c792ebfee2fab3ee9c633e7abc344d0e7535c983.tar.gz
zig-c792ebfee2fab3ee9c633e7abc344d0e7535c983.zip
std.start: add microblaze support
Diffstat (limited to 'lib/std/start.zig')
-rw-r--r--lib/std/start.zig11
1 files changed, 11 insertions, 0 deletions
diff --git a/lib/std/start.zig b/lib/std/start.zig
index ab362a3195..7e45bc42ea 100644
--- a/lib/std/start.zig
+++ b/lib/std/start.zig
@@ -203,6 +203,7 @@ fn _start() callconv(.naked) noreturn {
.hexagon => ".cfi_undefined r31",
.loongarch32, .loongarch64 => ".cfi_undefined 1",
.m68k => ".cfi_undefined %%pc",
+ .microblaze, .microblazeel => ".cfi_undefined r15",
.mips, .mipsel, .mips64, .mips64el => ".cfi_undefined $ra",
.or1k => ".cfi_undefined r9",
.powerpc, .powerpcle, .powerpc64, .powerpc64le => ".cfi_undefined lr",
@@ -346,6 +347,16 @@ fn _start() callconv(.naked) noreturn {
\\ lea %[posixCallMainAndExit] - . - 8, %%a0
\\ jsr (%%pc, %%a0)
,
+ .microblaze, .microblazeel =>
+ // r1 = SP, r15 = LR, r19 = FP, r20 = GP
+ \\ ori r15, r0, r0
+ \\ ori r19, r0, r0
+ \\ mfs r20, rpc
+ \\ addik r20, r20, _GLOBAL_OFFSET_TABLE_ + 8
+ \\ ori r5, r1, r0
+ \\ andi r1, r1, -4
+ \\ brlid r15, %[posixCallMainAndExit]
+ ,
.mips, .mipsel =>
\\ move $fp, $zero
\\ bal 1f