diff options
Diffstat (limited to 'contrib/syslinux-4.02/sample/c32entry.S')
-rw-r--r-- | contrib/syslinux-4.02/sample/c32entry.S | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/contrib/syslinux-4.02/sample/c32entry.S b/contrib/syslinux-4.02/sample/c32entry.S new file mode 100644 index 0000000..2e40c58 --- /dev/null +++ b/contrib/syslinux-4.02/sample/c32entry.S @@ -0,0 +1,66 @@ +# ----------------------------------------------------------------------- +# +# Copyright 2003-2008 H. Peter Anvin - All Rights Reserved +# +# Permission is hereby granted, free of charge, to any person +# obtaining a copy of this software and associated documentation +# files (the "Software"), to deal in the Software without +# restriction, including without limitation the rights to use, +# copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom +# the Software is furnished to do so, subject to the following +# conditions: +# +# The above copyright notice and this permission notice shall +# be included in all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +# OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +# HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +# WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +# OTHER DEALINGS IN THE SOFTWARE. +# +# ----------------------------------------------------------------------- + +# COM32 start up code - must be linked first in the binary + + + .section ".text","ax" + .globl _start +_start: + # This first instruction acts as COM32 magic number + movl $0x21cd4cff,%eax + + # Upwards string operations + cld + + # Zero the .bss segment + xorl %eax,%eax + movl $__bss_start,%edi # Symbol provided by linker + movl $_end+3,%ecx # Symbol provided by linker + subl %edi,%ecx + shrl $2,%ecx + rep ; stosl + + # Copy COM32 invocation parameters + leal 4(%esp),%esi # Argument list + movl $__com32,%edi + movl $6,%ecx + movl %esp,-4(%edi) # Save the initial stack ptr + cmpl (%esi),%ecx + jbe 1f + movl (%esi),%ecx +1: rep ; movsl + + # Run program; we call this __start rather than main since we + # did not parse the command line or anything like that. + jmp __start + + .section ".bss","aw" + .globl __entry_esp +__entry_esp: .space 4 + .globl __com32 +__com32: .space 4*6 |