diff options
author | H. Peter Anvin <hpa@linux.intel.com> | 2014-02-13 16:27:50 -0800 |
---|---|---|
committer | H. Peter Anvin <hpa@linux.intel.com> | 2014-02-13 16:27:50 -0800 |
commit | fb4eeb70f5f5b122319ad3f6474b38b6d4a389dd (patch) | |
tree | 20c1d124d1435567210112ea0708bfe68eddfaf5 | |
parent | a5727651bb78e7cd1bd90046e24fbcedf4f7dfb9 (diff) | |
download | syslinux-fb4eeb70f5f5b122319ad3f6474b38b6d4a389dd.tar.gz |
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.c | 2 | ||||
-rw-r--r-- | core/bios.c | 2 | ||||
-rw-r--r-- | core/com32.inc | 8 | ||||
-rw-r--r-- | core/comboot.inc | 404 | ||||
-rw-r--r-- | core/diskfs.inc | 14 | ||||
-rw-r--r-- | core/extern.inc | 3 | ||||
-rw-r--r-- | core/init.inc | 6 | ||||
-rw-r--r-- | core/isolinux.asm | 16 | ||||
-rw-r--r-- | core/pxelinux.asm | 17 | ||||
-rw-r--r-- | efi/main.c | 4 |
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 @@ -117,10 +117,6 @@ void kaboom(void) { } -void comboot_cleanup_api(void) -{ -} - void printf_init(void) { } |