diff options
Diffstat (limited to 'contrib/syslinux/syslinux-4.03/dos/crt0.S')
-rw-r--r-- | contrib/syslinux/syslinux-4.03/dos/crt0.S | 70 |
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 |