diff options
Diffstat (limited to 'userspace')
| -rw-r--r--[l---------] | userspace/crt0.s | 41 |
1 files changed, 40 insertions, 1 deletions
diff --git a/userspace/crt0.s b/userspace/crt0.s index 8d17c13..ad9884f 120000..100644 --- a/userspace/crt0.s +++ b/userspace/crt0.s @@ -1 +1,40 @@ -../newlib/crt0.s
\ No newline at end of file +.global _start + +_start: + +# copy reent to this page +push %ebx +push %ecx + +mov _impure_ptr,%eax +mov $0xf5000000,%ebx +copy: +mov (%eax),%ecx +mov %ecx,(%ebx) +add $4, %ebx +add $4, %eax +cmp $0xf5001000,%ebx +jne copy + +pop %ecx +pop %ebx + +# environment adress was passed on stack + +movl $0xf5000000, _impure_ptr + +pop %eax +mov %eax, environ + + +# call main (argc and argv are on the stack) +call main + +# push exit code and pass to _exit syscall +push %eax +call _exit + +# this should never be reached! +.wait: + hlt +jmp .wait |
