diff --git a/crt0.c b/crt0.c index d8acec6..a5b7580 100644 --- a/crt0.c +++ b/crt0.c @@ -4,10 +4,18 @@ int main(); asm ( - ".section .init \n" - ".global _start \n" - "_start: \n" - " jmp main \n" + ".section .init \n" + ".global _start \n" + "_start: \n\t" + "mov %cs, %ax \n\t" + "mov %ax, %ds \n\t" + "mov %ax, %es \n\t" + "cli \n\t" + "mov %ax, %ss \n\t" + "mov $0x1000, %ax \n\t" + "mov %ax, %sp \n\t" + "sti \n\t" + "jmp main" ); void* memset(void* ptr, int val, size_t len) {