aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@linux.intel.com>2014-02-13 16:27:50 -0800
committerH. Peter Anvin <hpa@linux.intel.com>2014-02-13 16:27:50 -0800
commitfb4eeb70f5f5b122319ad3f6474b38b6d4a389dd (patch)
tree20c1d124d1435567210112ea0708bfe68eddfaf5
parenta5727651bb78e7cd1bd90046e24fbcedf4f7dfb9 (diff)
downloadsyslinux-fb4eeb70f5f5b122319ad3f6474b38b6d4a389dd.tar.gz
syslinux-fb4eeb70f5f5b122319ad3f6474b38b6d4a389dd.tar.xz
syslinux-fb4eeb70f5f5b122319ad3f6474b38b6d4a389dd.zip
comapi: Remove the comapi interfaces completely
Remove the last bits of the comapi interfaces completely. This does not install stub handlers for the INT 20-3Fh handlers, as we don't support loading old COMBOOT/COM32/COM32R images anymore. We could put those back if we really need them. Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
-rw-r--r--com32/lib/syslinux/shuffle.c2
-rw-r--r--core/bios.c2
-rw-r--r--core/com32.inc8
-rw-r--r--core/comboot.inc404
-rw-r--r--core/diskfs.inc14
-rw-r--r--core/extern.inc3
-rw-r--r--core/init.inc6
-rw-r--r--core/isolinux.asm16
-rw-r--r--core/pxelinux.asm17
-rw-r--r--efi/main.c4
10 files changed, 17 insertions, 459 deletions
diff --git a/com32/lib/syslinux/shuffle.c b/com32/lib/syslinux/shuffle.c
index 2752c881..2e2d6f0e 100644
--- a/com32/lib/syslinux/shuffle.c
+++ b/com32/lib/syslinux/shuffle.c
@@ -225,7 +225,7 @@ bail:
/* Actually do it... */
bios_do_shuffle_and_boot(bootflags, descaddr, dbuf,
- (addr_t)dp - (addr_t)dbuf);
+ (size_t)dp - (size_t)dbuf);
return -1; /* Shouldn't have returned! */
}
diff --git a/core/bios.c b/core/bios.c
index 9cfb94be..7e0f2278 100644
--- a/core/bios.c
+++ b/core/bios.c
@@ -665,7 +665,6 @@ void bios_init(void)
dmi_init();
}
-extern void comboot_cleanup_api(void);
extern void bios_timer_cleanup(void);
extern uint32_t OrigFDCTabPtr;
@@ -683,7 +682,6 @@ static void bios_cleanup_hardware(void)
*/
__intcall(0x13, &zero_regs, NULL);
- call16(comboot_cleanup_api, &zero_regs, NULL);
call16(bios_timer_cleanup, &zero_regs, NULL);
/* If we enabled serial port interrupts, clean them up now */
diff --git a/core/com32.inc b/core/com32.inc
index 9c565f1d..5561c720 100644
--- a/core/com32.inc
+++ b/core/com32.inc
@@ -29,8 +29,6 @@
; "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
-
bits 16
section .data16
@@ -59,4 +57,10 @@ HighMemSize dd 0 ; End of memory pointer (bytes)
section .uibss
Com32Name resb FILENAME_MAX
+ section .bss16
+%ifndef HAVE_CURRENTDIRNAME
+ global CurrentDirName:data hidden
+CurrentDirName resb FILENAME_MAX
+%endif
+
section .text16
diff --git a/core/comboot.inc b/core/comboot.inc
deleted file mode 100644
index 4b64d086..00000000
--- a/core/comboot.inc
+++ /dev/null
@@ -1,404 +0,0 @@
-;; -----------------------------------------------------------------------
-;;
-;; Copyright 1994-2009 H. Peter Anvin - All Rights Reserved
-;; Copyright 2009-2014 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.
-;;
-;; -----------------------------------------------------------------------
-
-;;
-;; comboot.inc
-;;
-;; Common code for running a COMBOOT image
-;;
- section .text16
-
-; Parameter registers definition; this is the definition
-; of the stack frame used by INT 21h and INT 22h.
-%define P_FLAGS word [bp+44]
-%define P_FLAGSL byte [bp+44]
-%define P_FLAGSH byte [bp+45]
-%define P_CS word [bp+42]
-%define P_IP word [bp+40]
-%define P_CSIP dword [bp+40]
-%define P_DS word [bp+38]
-%define P_ES word [bp+36]
-%define P_FS word [bp+34]
-%define P_GS word [bp+32]
-%define P_EAX dword [bp+28]
-%define P_AX word [bp+28]
-%define P_HAX word [bp+30]
-%define P_AL byte [bp+28]
-%define P_AH byte [bp+29]
-%define P_ECX dword [bp+24]
-%define P_CX word [bp+24]
-%define P_HCX word [bp+26]
-%define P_CL byte [bp+24]
-%define P_CH byte [bp+25]
-%define P_EDX dword [bp+20]
-%define P_DX word [bp+20]
-%define P_HDX word [bp+22]
-%define P_DL byte [bp+20]
-%define P_DH byte [bp+21]
-%define P_EBX dword [bp+16]
-%define P_BX word [bp+16]
-%define P_HBX word [bp+18]
-%define P_BL byte [bp+16]
-%define P_BH byte [bp+17]
-%define P_EBP dword [bp+8]
-%define P_BP word [bp+8]
-%define P_HBP word [bp+10]
-%define P_ESI dword [bp+4]
-%define P_SI word [bp+4]
-%define P_HSI word [bp+6]
-%define P_EDI dword [bp]
-%define P_DI word [bp]
-%define P_HDI word [bp+2]
-
-;
-; Set up the COMBOOT API interrupt vectors. This is now done at
-; initialization time.
-;
-comboot_setup_api:
- mov di,DOSErrTramp ; Error trampolines
- mov cx,32
- push cx
- mov eax,02EB206Ah ; push 20h; jmp $+4
-.loop1: stosd
- inc ah
- loop .loop1
- dec di
- mov byte [di-1],0E9h
- mov ax,comboot_bogus-2
- sub ax,di
- stosw
-
- pop cx ; CX <- 32
- mov si,4*20h ; DOS interrupt vectors
- mov bx,comboot_vectors
- mov di,DOSSaveVectors
-.loop2:
- movsd
- movzx eax,word [bx]
- inc bx
- inc bx
- mov [si-4],eax
- loop .loop2
- ret
-
-;
-; Restore the original state of the COMBOOT API vectors, and free
-; any low memory allocated by the comboot module.
-;
- global comboot_cleanup_api:function hidden
-comboot_cleanup_api:
- pusha
- mov si,DOSSaveVectors
- mov di,4*20h
- mov cx,20h
- rep movsd ; Restore DOS-range vectors
- popa
- ret
-
- section .bss16
- alignb 4
-DOSSaveVectors resd 32
-
- section .data16
-%define comboot_err(x) (DOSErrTramp+4*((x)-20h))
-
-comboot_vectors:
- dw comboot_return ; INT 20 = exit
- dw comboot_err(21h) ; INT 21 = DOS-compatible system calls
- dw comboot_int22 ; INT 22 = native system calls
- dw comboot_err(23h) ; INT 23 = DOS Ctrl-C handler
- dw comboot_err(24h) ; INT 24 = DOS critical error handler
- dw comboot_err(25h) ; INT 25 = DOS absolute disk read
- dw comboot_err(26h) ; INT 26 = DOS absolute disk write
- dw comboot_err(27h) ; INT 27 = DOS TSR
- dw comboot_int28 ; INT 28 = DOS idle interrupt
- dw comboot_int29 ; INT 29 = DOS fast console output
- dw comboot_err(2Ah) ; INT 2A = DOS network API (NetBIOS)
- dw comboot_err(2Bh) ; INT 2B = DOS reserved
- dw comboot_err(2Ch) ; INT 2C = DOS reserved
- dw comboot_iret ; INT 2D = DOS reserved, AMIS
- dw comboot_err(2Eh) ; INT 2E = DOS run command
- dw comboot_iret ; INT 2F = DOS multiplex interrupt
- dw comboot_err(30h) ; INT 30 = DOS CP/M system calls
- dw comboot_err(31h) ; INT 31 = DPMI
- dw comboot_err(32h) ; INT 32 = DOS reserved
- dw comboot_iret ; INT 33 = DOS mouse API
- dw comboot_err(34h) ; INT 34 = DOS FPU emulation
- dw comboot_err(35h) ; INT 35 = DOS FPU emulation
- dw comboot_err(36h) ; INT 36 = DOS FPU emulation
- dw comboot_err(37h) ; INT 37 = DOS FPU emulation
- dw comboot_err(38h) ; INT 38 = DOS FPU emulation
- dw comboot_err(39h) ; INT 39 = DOS FPU emulation
- dw comboot_err(3Ah) ; INT 3A = DOS FPU emulation
- dw comboot_err(3Bh) ; INT 3B = DOS FPU emulation
- dw comboot_err(3Ch) ; INT 3C = DOS FPU emulation
- dw comboot_err(3Dh) ; INT 3D = DOS FPU emulation
- dw comboot_err(3Eh) ; INT 3E = DOS FPU emulation
- dw comboot_err(3Fh) ; INT 3F = DOS overlay manager
-
- section .text16
-
-comboot_resume:
- mov bp,sp ; In case the function clobbers BP
- setc P_FLAGSL ; Propagate CF->error
- popad
- pop gs
- pop fs
- pop es
- pop ds
-comboot_iret:
- iret
-
-comboot_bad_int21:
- mov ax,P_AX
- push P_CSIP
- push 21h
- ; Fall through
-
-; Attempted to execute invalid DOS system call
-; The interrupt number is on the stack.
-comboot_bogus: pop dx ; Interrupt number
- pop edi ; CS:IP
- mov cx,err_notdos
- push comboot_bogus_tail
- jmp comboot_exit_msg
-comboot_bogus_tail:
- xchg ax,dx
- pm_call pm_writehex2 ; Interrupt number
- mov al,' '
- pm_call pm_writechr
- xchg ax,dx
- pm_call pm_writehex4 ; Function number (AX)
- mov al,' '
- pm_call pm_writechr
- mov eax,edi
- pm_call pm_writehex8 ; CS:IP of the origin
- pm_call crlf
- jmp kaboom
-
-; Proper return vector
-; Note: this gets invoked directly via INT 20h.
-; We don't need to cld explicitly here, because comboot_exit does that
-; when invoking RESET_STACK_AND_SEGS.
-comboot_return:
- cli ; May not have a safe stack
- push enter_command ; Normal return to command prompt
- ; jmp comboot_exit
-
-;
-; Generic COMBOOT return to command line code
-; stack -> where to go next
-; CX -> message (for _msg version)
-;
- extern comboot_cleanup_lowmem
-comboot_exit:
- xor cx,cx
-comboot_exit_msg:
- pop bx ; Return address
- RESET_STACK_AND_SEGS si ; Contains sti, cld
- pm_call comboot_cleanup_lowmem
- pm_call pm_adjust_screen; The COMBOOT program might have change the screen
- jcxz .nomsg
- mov si,KernelName
- pm_call pm_writestr
- mov si,cx
- pm_call pm_writestr
-.nomsg:
- jmp bx
-
-;
-; INT 21h system calls
-;
-comboot_getkey: ; 01 = get key with echo
- pm_call vgashowcursor
- call comboot_getchar
- pm_call vgahidecursor
- pm_call pm_writechr
- clc
- ret
-
-comboot_writechr: ; 02 = writechr
- mov al,P_DL
- pm_call pm_writechr
- clc
- ret
-
-comboot_writeserial: ; 04 = write serial port
- mov al,P_DL
- pm_call pm_write_serial
- clc
- ret
-
-comboot_getkeynoecho: ; 08 = get key w/o echo
- call comboot_getchar
- clc
- ret
-
-comboot_writestr: ; 09 = write DOS string
- mov es,P_DS
- mov si,P_DX
-.loop: es lodsb
- cmp al,'$' ; End string with $ - bizarre
- je .done
- pm_call pm_writechr
- jmp short .loop
-.done: clc
- ret
-
-comboot_checkkey: ; 0B = check keyboard status
- cmp byte [APIKeyFlag],00h
- jnz .waiting
- pm_call pm_pollchar
-.waiting: setz al
- dec al ; AL = 0FFh if present, 0 if not
- mov P_AL,al
- clc
- ret
-
-comboot_checkver: ; 30 = check DOS version
- ; We return 0 in all DOS-compatible version registers,
- ; but the high part of eax-ebx-ecx-edx spell "SYSLINUX"
- mov P_EAX,'SY' << 16
- mov P_EBX,'SL' << 16
- mov P_ECX,'IN' << 16
- mov P_EDX,'UX' << 16
- ret
-
-comboot_getchar:
- cmp byte [APIKeyFlag],00h
- jne .queued
- pm_call pm_getchar ; If not queued get input
- and al,al ; Function key? (CF <- 0)
- jnz .done
- mov [APIKeyWait],ah ; High part of key
- inc byte [APIKeyFlag] ; Set flag
-.done: mov P_AL,al
- ret
-.queued: mov al,[APIKeyWait]
- dec byte [APIKeyFlag]
- jmp .done
-
-;
-; INT 28h - DOS idle
-;
-comboot_int28:
- sti
- cld
- extern __idle
- pm_call __idle
- iret
-
-;
-; INT 29h - DOS fast write character
-;
-comboot_int29:
- sti
- cld
- pm_call pm_writechr
- iret
-
-;
-; INT 22h - SYSLINUX-specific system calls
-; System call number in ax
-;
-comboot_int22:
- sti
- push ds
- push es
- push fs
- push gs
- pushad
- cld
- mov bp,cs
- mov ds,bp
- mov es,bp
- mov bp,sp ; Set up stack frame
-
- pm_call pm_adjust_screen ; The COMBOOT program might hav changed the screen
-
- cmp ax,int22_count
- jb .ok
- xor ax,ax ; Function 0 -> unimplemented
-.ok:
- xchg ax,bx
- add bx,bx ; CF <- 0
- call [bx+int22_table]
- jmp comboot_resume ; On return
-
-;
-; INT 22h AX=0000h Unimplemented call
-;
-comapi_err:
- stc
- ret
-
- section .data16
-
- alignz 2
-int22_table:
- dw comapi_err ; 0000 unimplemented syscall
- dw comapi_err ; 0001 get SYSLINUX version
- dw comapi_err ; 0002 write string
- dw comapi_err ; 0003 run specified command
- dw comapi_err ; 0004 run default command
- dw comapi_err ; 0005 force text mode
- dw comapi_err ; 0006 open file
- dw comapi_err ; 0007 read file
- dw comapi_err ; 0008 close file
- dw comapi_err ; 0009 call PXE stack
- dw comapi_err ; 000A derivative-specific info
- dw comapi_err ; 000B get serial port config
- dw comapi_err ; 000C perform final cleanup
- dw comapi_err ; 000D clean up then bootstrap
- dw comapi_err ; 000E get name of config file
- dw comapi_err ; 000F get ipappend strings
- dw comapi_err ; 0010 resolve hostname
- dw comapi_err ; 0011 maximum shuffle descriptors
- dw comapi_err ; 0012 cleanup, shuffle and boot
- dw comapi_err ; 0013 idle call
- dw comapi_err ; 0014 local boot
- dw comapi_err ; 0015 feature flags
- dw comapi_err ; 0016 run kernel image
- dw comapi_err ; 0017 report video mode change
- dw comapi_err ; 0018 query custom font
- dw comapi_err ; 0019 read disk
- dw comapi_err ; 001A cleanup, shuffle and boot to pm
- dw comapi_err ; 001B cleanup, shuffle and boot to rm
- dw comapi_err ; 001C get pointer to ADV
- dw comapi_err ; 001D write ADV to disk
- dw comapi_err ; 001E keyboard remapping table
- dw comapi_err ; 001F get current working directory
- dw comapi_err ; 0020 open directory
- dw comapi_err ; 0021 read directory
- dw comapi_err ; 0022 close directory
- dw comapi_err ; 0023 query shuffler size
- dw comapi_err ; 0024 cleanup, shuffle and boot raw
- dw comapi_err ; 0025 initialize adv structure
-int22_count equ ($-int22_table)/2
-
-APIKeyWait db 0
-APIKeyFlag db 0
-
-zero_string db 0 ; Empty, null-terminated string
-
-err_notdos db ': attempted DOS system call INT ',0
-err_comlarge db 'COMBOOT image too large.', CR, LF, 0
-
- section .bss16
- alignb 4
-DOSErrTramp resd 33 ; Error trampolines
-
-%ifndef HAVE_CURRENTDIRNAME
- global CurrentDirName:data hidden
-CurrentDirName resb FILENAME_MAX
-%endif
diff --git a/core/diskfs.inc b/core/diskfs.inc
index d0f2804c..93016649 100644
--- a/core/diskfs.inc
+++ b/core/diskfs.inc
@@ -83,23 +83,13 @@ KernelName resb FILENAME_MAX ; Mangled name for kernel
section .text16
;
-; COMBOOT-loading code
+; COM32 vestigial data structure
;
-%include "comboot.inc"
%include "com32.inc"
;
-; Boot sector loading code
+; Common local boot code
;
-
-;
-; Abort loading code
-;
-
-;
-; Hardware cleanup common code
-;
-
%include "localboot.inc"
;
diff --git a/core/extern.inc b/core/extern.inc
index 673191cf..af8eb04c 100644
--- a/core/extern.inc
+++ b/core/extern.inc
@@ -44,6 +44,9 @@
; newconfig.c
extern pm_is_config_file
+ ; idle.c
+ extern __idle
+
%ifdef DEBUG
; debug.c
extern pm_debug_msg
diff --git a/core/init.inc b/core/init.inc
index b74cf30b..8ecbdbd8 100644
--- a/core/init.inc
+++ b/core/init.inc
@@ -39,12 +39,6 @@ common_init:
pm_call init
;
-; Set up the COMBOOT APIs
-;
- call comboot_setup_api
-
- section .text16
-;
; The code to decompress the PM code and initialize other segments.
;
extern _lzo1x_decompress_asm_fast_safe
diff --git a/core/isolinux.asm b/core/isolinux.asm
index 94a5b0b4..50d9fe1c 100644
--- a/core/isolinux.asm
+++ b/core/isolinux.asm
@@ -1205,23 +1205,13 @@ KernelName resb FILENAME_MAX ; Mangled name for kernel
section .text16
;
-; COMBOOT-loading code
+; COM32 vestigial data structure
;
-%include "comboot.inc"
%include "com32.inc"
;
-; Boot sector loading code
+; Common local boot code
;
-
-;
-; Abort loading code
-;
-
-;
-; Hardware cleanup common code
-;
-
%include "localboot.inc"
; -----------------------------------------------------------------------------
@@ -1239,4 +1229,4 @@ err_disk_image db 'Cannot load disk image (invalid file)?', CR, LF, 0
section .bss16
global OrigFDCTabPtr
-OrigFDCTabPtr dd 0 ; Keep bios_cleanup_hardware() honest
+OrigFDCTabPtr resd 1 ; Keep bios_cleanup_hardware() honest
diff --git a/core/pxelinux.asm b/core/pxelinux.asm
index 029e4004..953a906f 100644
--- a/core/pxelinux.asm
+++ b/core/pxelinux.asm
@@ -272,23 +272,10 @@ KernelName resb FILENAME_MAX ; Mangled name for kernel
section .text16
;
-; COMBOOT-loading code
+; COM32 vestigial data structure
;
-%include "comboot.inc"
%include "com32.inc"
-;
-; Boot sector loading code
-;
-
-;
-; Abort loading code
-;
-
-;
-; Hardware cleanup common code
-;
-
section .text16
global local_boot16:function hidden
local_boot16:
@@ -578,4 +565,4 @@ KeepPXE db 0 ; Should PXE be kept around?
section .bss16
global OrigFDCTabPtr
-OrigFDCTabPtr dd 0 ; Keep bios_cleanup_hardware() honest
+OrigFDCTabPtr resd 1 ; Keep bios_cleanup_hardware() honest
diff --git a/efi/main.c b/efi/main.c
index 94878f93..49c5c3e6 100644
--- a/efi/main.c
+++ b/efi/main.c
@@ -117,10 +117,6 @@ void kaboom(void)
{
}
-void comboot_cleanup_api(void)
-{
-}
-
void printf_init(void)
{
}