git: 9front

Download patch

ref: 99099045696e1242306fe13a47932f8544a2d6c0
parent: 76ada8ed996c09b2f5afe00b3c6d93331c54e502
author: cinap_lenrek <cinap_lenrek@felloff.net>
date: Fri May 3 17:03:12 EDT 2019

libthread: initial support for arm64

--- /dev/null
+++ b/sys/src/libthread/arm64.c
@@ -1,0 +1,28 @@
+#include <u.h>
+#include <libc.h>
+#include <thread.h>
+#include "threadimpl.h"
+
+/* first argument goes in a register; simplest just to ignore it */
+static void
+launcherarm64(int, void (*f)(void *arg), void *arg)
+{
+	(*f)(arg);
+	threadexits(nil);
+}
+
+void
+_threadinitstack(Thread *t, void (*f)(void*), void *arg)
+{
+	uintptr *tos;
+
+	tos = (uintptr*)&t->stk[t->stksize&~15];
+	*--tos = (uintptr)arg;
+	*--tos = (uintptr)f;
+	*--tos = 0;	/* first arg to launcherarm64 */
+	*--tos = 0;	/* place to store return PC */
+
+	t->sched[JMPBUFPC] = (uintptr)launcherarm64+JMPBUFDPC;
+	t->sched[JMPBUFSP] = (uintptr)tos;
+}
+
--