summaryrefslogtreecommitdiffstats
path: root/apps/init/stage1/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'apps/init/stage1/main.c')
-rw-r--r--apps/init/stage1/main.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/apps/init/stage1/main.c b/apps/init/stage1/main.c
new file mode 100644
index 0000000..90e663d
--- /dev/null
+++ b/apps/init/stage1/main.c
@@ -0,0 +1,24 @@
+#include "stage1.h"
+#include "kprint.h"
+#include <kernel/init.h>
+
+uint8_t *_syscall_payload;
+uint8_t _syscall_message;
+
+void main(void *init_message_ptr)
+{
+ _syscall_payload = init_message_ptr;
+ _syscall_message = INIT_OBJECT_MESSAGE;
+
+ kputs("Hello, Userland!\n");
+ for(;;);
+}
+
+__attribute__((naked))
+void
+_start(void)
+{
+ __asm__ volatile("\
+ popq %rdi; \
+ jmp main");
+}