summaryrefslogtreecommitdiff
path: root/libc/bios/bios.c
diff options
context:
space:
mode:
Diffstat (limited to 'libc/bios/bios.c')
-rw-r--r--libc/bios/bios.c22
1 files changed, 16 insertions, 6 deletions
diff --git a/libc/bios/bios.c b/libc/bios/bios.c
index 402f689..e0e5c23 100644
--- a/libc/bios/bios.c
+++ b/libc/bios/bios.c
@@ -33,12 +33,22 @@ loop_save:
.text
export ___cstartup ! Crt0 startup
___cstartup:
- mov ___argr+0,ax
- mov ___argr+2,bx
- mov ___argr+4,cx
- mov ___argr+6,dx
- mov ___argr+8,si
- mov ___argr+10,di
+ cli
+ mov sp,cs
+ add sp,#__segoff
+ mov ds,sp
+ mov ss,sp
+ mov sp,#___argr+12
+ push di
+ push si
+ push dx
+ push cx
+ push bx
+ push ax
+ xor bp,bp
+ mov sp,bp
+ push bp
+ sti
zap_bss: ! Clear the BSS
mov ax,ds