aboutsummaryrefslogtreecommitdiff
path: root/lib/std/start.zig
diff options
context:
space:
mode:
authorAlex Rønne Petersen <alex@alexrp.com>2024-07-24 22:18:29 +0200
committerAlex Rønne Petersen <alex@alexrp.com>2024-07-26 02:32:16 +0200
commit7c98a65ae4fcebf9ebc918fe3e7af9d062805d36 (patch)
treea02ade36f65c6bfbd8525f1218a979d58c40e500 /lib/std/start.zig
parented847b85c284783c20efd4c4a565138b79d33e2c (diff)
downloadzig-7c98a65ae4fcebf9ebc918fe3e7af9d062805d36.tar.gz
zig-7c98a65ae4fcebf9ebc918fe3e7af9d062805d36.zip
start: Add POSIX hexagon support.
Diffstat (limited to 'lib/std/start.zig')
-rw-r--r--lib/std/start.zig9
1 files changed, 9 insertions, 0 deletions
diff --git a/lib/std/start.zig b/lib/std/start.zig
index 326857d9c0..d97381ef0d 100644
--- a/lib/std/start.zig
+++ b/lib/std/start.zig
@@ -307,6 +307,15 @@ fn _start() callconv(.Naked) noreturn {
\\ and sp, #-16
\\ b %[posixCallMainAndExit]
,
+ .hexagon =>
+ // r29 = SP, r30 = FP
+ \\ r30 = #0
+ \\ r0 = r29
+ \\ r29 = and(r29, #-16)
+ \\ memw(r29 + #-8) = r29
+ \\ r29 = add(r29, #-8)
+ \\ call %[posixCallMainAndExit]
+ ,
.loongarch32, .loongarch64 =>
\\ move $fp, $zero
\\ move $a0, $sp