diff options
Diffstat (limited to 'contrib/syslinux/syslinux-4.03/core/com32.inc')
-rw-r--r-- | contrib/syslinux/syslinux-4.03/core/com32.inc | 145 |
1 files changed, 0 insertions, 145 deletions
diff --git a/contrib/syslinux/syslinux-4.03/core/com32.inc b/contrib/syslinux/syslinux-4.03/core/com32.inc deleted file mode 100644 index 111590c..0000000 --- a/contrib/syslinux/syslinux-4.03/core/com32.inc +++ /dev/null @@ -1,145 +0,0 @@ -;; ----------------------------------------------------------------------- -;; -;; Copyright 1994-2009 H. Peter Anvin - All Rights Reserved -;; Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin -;; -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, Inc., 53 Temple Place Ste 330, -;; Boston MA 02111-1307, USA; either version 2 of the License, or -;; (at your option) any later version; incorporated herein by reference. -;; -;; ----------------------------------------------------------------------- - -;; -;; com32.inc -;; -;; Common code for running a COM32 image -;; - - extern pm_api_vector - -; -; Load a COM32 image. A COM32 image is the 32-bit analogue to a DOS -; .com file. A COM32 image is loaded at address 0x101000, with %esp -; set to the high end of usable memory. -; -; A COM32 image should begin with the magic bytes: -; B8 FF 4C CD 21, which is "mov eax,0x21cd4cff" in 32-bit mode and -; "mov ax,0x4cff; int 0x21" in 16-bit mode. This will abort the -; program with an error if run in 16-bit mode. -; -com32_entry equ free_high_memory - - section .text16 -is_com32_image: - push si ; Save file handle - push eax ; Save file length - - call make_plain_cmdline - ; Copy the command line into the low cmdline buffer - mov ax,real_mode_seg - mov fs,ax - mov si,cmd_line_here - mov di,command_line - mov cx,[CmdLinePtr] - inc cx ; Include final null - sub cx,si - fs rep movsb - - mov si,KernelName - mov di,Com32Name - call strcpy - - call comboot_setup_api ; Set up the COMBOOT-style API - - mov edi,com32_entry ; Load address - pop eax ; File length - pop si ; File handle - xor dx,dx ; No padding - mov bx,abort_check ; Don't print dots, but allow abort - call load_high - - mov esi,com32_entry - mov edi,trackbuf - mov ecx,5 - call bcopy - cmp dword [trackbuf],0xcd4cfeb8 - jne not_com32r - cmp byte [trackbuf+4],0x21 - jne not_com32r - -com32_start: - ; - ; Point the stack to the end of (permitted) high memory - ; - mov eax,[HighMemRsvd] - xor ax,ax ; Align to a 64K boundary - mov [PMESP],eax - mov ebx,.pm ; Where to go in PM - jmp enter_pm - -; -; This is invoked right before the actually starting the COM32 -; progam, in 32-bit mode... -; - bits 32 - section .text -.pm: - ; Set up the calling stack frame - - push dword pm_api_vector - push dword Com32Name ; Module filename - push dword [HighMemSize] ; Memory managed by Syslinux - push dword core_cfarcall ; Cfarcall entry point - push dword core_farcall ; Farcall entry point - push dword (1 << 16) ; 64K bounce buffer - push dword core_real_mode ; Bounce buffer address - push dword core_intcall ; Intcall entry point - push dword command_line ; Command line pointer - push dword 9 ; Argument count - sti ; Interrupts OK now - call com32_entry ; Run the program... - ; ... on return, fall through to com32_exit ... -com32_exit: - mov bx,comboot_return - jmp enter_rm - - bits 16 - section .text16 -not_com32r: - mov si,KernelName - call writestr - mov si,not_com32r_msg - call writestr - jmp enter_command - - section .data16 -not_com32r_msg db ': not a COM32R image', CR, LF, 0 - - ; Ersatz com32 invocation structure, to make libcom32 - ; code run the same if linked to the core. This is in - ; the .data16 segment so HighMemSize can live here. - ; - ; Danger, Will Robinson: it's not clear the use of - ; core_xfer_buf is safe here. - global __entry_esp, __com32 - alignz 4 -__entry_esp: - dd 0 ; Dummy to avoid _exit issues -__com32: - dd 9 ; Argument count - dd 0 ; No command line - dd core_intcall ; Intcall entry point - dd 0 ; Bounce buffer address - dd 0 ; 64K bounce buffer - dd core_farcall ; Farcall entry point - dd core_cfarcall ; Cfarcall entry point -HighMemSize dd 0 ; End of memory pointer (bytes) - dd 0 ; No module name - dd pm_api_vector ; Protected mode functions - - section .uibss -Com32Name resb FILENAME_MAX - - section .text16 |