diff options
author | Jon Santmyer <jon@jonsantmyer.com> | 2024-03-11 21:40:28 -0400 |
---|---|---|
committer | Jon Santmyer <jon@jonsantmyer.com> | 2024-03-11 21:40:28 -0400 |
commit | 50392995d6e7f3a10fb74bb2f9073a4790f8933c (patch) | |
tree | c89b067b3bacf35e092af5c31fb6e6a08921f31c /lib/crt | |
download | jove-env-master.tar.gz jove-env-master.tar.bz2 jove-env-master.zip |
Diffstat (limited to 'lib/crt')
-rw-r--r-- | lib/crt/Makefile | 8 | ||||
-rw-r--r-- | lib/crt/x86_64/crt0.s | 22 | ||||
-rw-r--r-- | lib/crt/x86_64/crti.s | 11 | ||||
-rw-r--r-- | lib/crt/x86_64/crtn.s | 7 |
4 files changed, 48 insertions, 0 deletions
diff --git a/lib/crt/Makefile b/lib/crt/Makefile new file mode 100644 index 0000000..8b809fa --- /dev/null +++ b/lib/crt/Makefile @@ -0,0 +1,8 @@ +SFILES := $(wildcard $(TARGET_MACHINE)/*.s) +OFILES := $(patsubst %.s,%.o,$(SFILES)) + +all: ${OFILES} + cp ${OFILES} $(LIBDIR)/ + +%.o:%.s + $(AS) $< -o $@ diff --git a/lib/crt/x86_64/crt0.s b/lib/crt/x86_64/crt0.s new file mode 100644 index 0000000..c5a0ba9 --- /dev/null +++ b/lib/crt/x86_64/crt0.s @@ -0,0 +1,22 @@ +.section .text +.global _start +_start: + #Setup start of stack frame + xorq %rbp, %rbp + pushq %rbp + pushq %rbp + movq %rsp, %rbp + + #Save arguments passed to main + pushq %rdi + pushq %rsi + + #Setup libc and call global constructors + + #Call main + call main + + #Exit + movq %rax, %rdi + call exit +.size _start, . - _start diff --git a/lib/crt/x86_64/crti.s b/lib/crt/x86_64/crti.s new file mode 100644 index 0000000..0f06273 --- /dev/null +++ b/lib/crt/x86_64/crti.s @@ -0,0 +1,11 @@ +.section .init +.global _init +_init: + pushq %rbp + movq %rsp, %rbp + +.section .fini +.global _fini +_fini: + pushq %rbp + movq %rsp, %rbp diff --git a/lib/crt/x86_64/crtn.s b/lib/crt/x86_64/crtn.s new file mode 100644 index 0000000..9e31c23 --- /dev/null +++ b/lib/crt/x86_64/crtn.s @@ -0,0 +1,7 @@ +.section .init + popq %rbp + ret + +.section .fini + popq %rbp + ret |