From 6af21e6a4f2251e71353562d5df7f376fdffc270 Mon Sep 17 00:00:00 2001 From: Freya Murphy Date: Tue, 25 Mar 2025 17:36:52 -0400 Subject: initial checkout from wrc --- lib/entry.S | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 lib/entry.S (limited to 'lib/entry.S') diff --git a/lib/entry.S b/lib/entry.S new file mode 100644 index 0000000..87ad9c7 --- /dev/null +++ b/lib/entry.S @@ -0,0 +1,25 @@ +// +// user-level startup routine +// + .text + .globl _start + .globl main + .globl exit + +// entry point - this is where the kernel starts us running +_start: + // we immediately call main() + call main + + // if we come back from that, it means the user + // program didn't call exit(), in which case the + // value returned from main() is the exit status + + // push that value onto the stack and call exit() + subl $12, %esp + pushl %eax + call exit + + // if we come back from that, something bad has + // happened, so we just lock up +1: jmp 1b -- cgit v1.2.3-freya