summaryrefslogtreecommitdiffstats
path: root/contrib/syslinux/syslinux-4.03/dos/crt0.S
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/syslinux/syslinux-4.03/dos/crt0.S')
-rw-r--r--contrib/syslinux/syslinux-4.03/dos/crt0.S70
1 files changed, 0 insertions, 70 deletions
diff --git a/contrib/syslinux/syslinux-4.03/dos/crt0.S b/contrib/syslinux/syslinux-4.03/dos/crt0.S
deleted file mode 100644
index 3be5712..0000000
--- a/contrib/syslinux/syslinux-4.03/dos/crt0.S
+++ /dev/null
@@ -1,70 +0,0 @@
- .code16
-
-#ifndef REGPARM
-# error "This file assumes -mregparm=3 -DREGPARM=3"
-#endif
-
- .section ".text","ax"
- .globl _start
- .type _start,@function
-_start:
- # Align the stack and make sure the high half is zero
- andl $0xfff8,%esp
-
- # DS, ES points to the PSP at this point
- pushw %es # Save PSP pointer
- movw %cs,%ax
- movw %ax,%ds
- movw %ax,%es
-
- # Clear the .bss
- cld
- xorl %eax,%eax
- movw $__bss_start,%di
- movw $__bss_end+3,%cx
- subw %di,%cx
- shrw $2,%cx
- rep ; stosl
-
- # Copy the command line into our own segment
- popw %fs # FS -> PSP
- movw $_cmdline,%di
- movzbw %fs:0x80,%cx
- movw $0x81,%si
- fs ; rep ; movsb
- # Already zero-terminated since we're writing into clean bss
-
- # Compute argc and argv (assumes REGPARM)
- movl $_cmdline,%edx
- pushl %eax # Make space for argv
- movl %esp,%eax
- calll __parse_argv
- pushl %eax # argc
-
- # Initialize malloc
- calll __init_memory_arena
-
- # Now call main... (NOTE: gcc forces main to be regparm 0)
- popl %eax # argc
- popl %edx # argv
- calll main
-
- # Here %eax is the exit code, fall through into exit
-
- .size _start,.-_start
-
- .globl exit
- .type exit,@function
-exit:
- # Exit code already in %eax
- movb $0x4c,%ah # Terminate program
- int $0x21
-1: hlt
- jmp 1b
- .size exit,.-exit
-
- .section ".bss","aw"
- .balign 4
-_cmdline:
- .space 128
- .size _cmdline,.-_cmdline