summaryrefslogtreecommitdiffstats
path: root/contrib/syslinux/syslinux-4.03/core/com32.inc
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/syslinux/syslinux-4.03/core/com32.inc')
-rw-r--r--contrib/syslinux/syslinux-4.03/core/com32.inc145
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