From 636504f7bb6f9e86cc65addbfb36aed14dc1ecb4 Mon Sep 17 00:00:00 2001 From: "H. Peter Anvin" Date: Thu, 13 Feb 2014 09:32:39 -0800 Subject: bios: Remove comapi calls related to the ADV The only comapi calls left are the ones related to the ADV and to shuffle and boot. Remove the ADV-related ones as part of getting rid of the comapi framework completely. Signed-off-by: H. Peter Anvin --- core/adv.inc | 9 +++++++++ core/bios.c | 16 +++------------- core/comboot.inc | 29 ++++------------------------- core/include/core.h | 4 ++++ 4 files changed, 20 insertions(+), 38 deletions(-) diff --git a/core/adv.inc b/core/adv.inc index 0b45a6c7..288bf03c 100644 --- a/core/adv.inc +++ b/core/adv.inc @@ -43,6 +43,13 @@ ADV_LEN equ 500 ; Data bytes adv_retries equ 6 ; Disk retries + section .data + global __syslinux_adv_ptr, __syslinux_adv_size +__syslinux_adv_ptr: + dd adv0.data +__syslinux_adv_size: + dd ADV_LEN + section .adv ; Introduce the ADVs to valid but blank adv0: @@ -63,6 +70,7 @@ adv1: ; This is called after config file parsing, so we know ; the intended location of the ADV ; + global adv_init adv_init: cmp byte [ADVDrive],-1 jne adv_read @@ -293,6 +301,7 @@ adv_cleanup: ; ; Returns CF=1 if the ADV cannot be written. ; + global adv_write adv_write: push eax mov eax,[ADVSec0] diff --git a/core/bios.c b/core/bios.c index 7ad10bb3..ac1f48bc 100644 --- a/core/bios.c +++ b/core/bios.c @@ -12,6 +12,7 @@ #include #include #include +#include "core.h" __export struct firmware *firmware = NULL; @@ -165,22 +166,12 @@ static void bios_get_serial_console_info(uint16_t *iobase, uint16_t *divisor, *flowctl |= (0x80 << 8); } -void *__syslinux_adv_ptr; -size_t __syslinux_adv_size; - void bios_adv_init(void) { static com32sys_t reg; memset(®, 0, sizeof(reg)); - reg.eax.w[0] = 0x0025; - __intcall(0x22, ®, ®); - - memset(®, 0, sizeof(reg)); - reg.eax.w[0] = 0x001c; - __intcall(0x22, ®, ®); - __syslinux_adv_ptr = MK_PTR(reg.es, reg.ebx.w[0]); - __syslinux_adv_size = reg.ecx.w[0]; + call16(adv_init, ®, NULL); } int bios_adv_write(void) @@ -188,8 +179,7 @@ int bios_adv_write(void) static com32sys_t reg; memset(®, 0, sizeof(reg)); - reg.eax.w[0] = 0x001d; - __intcall(0x22, ®, ®); + call16(adv_write, ®, ®); return (reg.eflags.l & EFLAGS_CF) ? -1 : 0; } diff --git a/core/comboot.inc b/core/comboot.inc index 63394350..c6514837 100644 --- a/core/comboot.inc +++ b/core/comboot.inc @@ -1,7 +1,7 @@ ;; ----------------------------------------------------------------------- ;; ;; Copyright 1994-2009 H. Peter Anvin - All Rights Reserved -;; Copyright 2009-2010 Intel Corporation; author: H. Peter Anvin +;; 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 @@ -342,20 +342,6 @@ comapi_err: stc ret -; -; INT 22h AX=001Ch Get pointer to auxillary data vector -; -comapi_getadv: - mov P_ES,ds - mov P_BX,adv0.data - mov P_CX,ADV_LEN - ret - -; -; INT 22h AX=001Dh Write auxillary data vector -; -comapi_writeadv equ adv_write - ; ; INT 22h AX=0024h Cleanup, shuffle and boot raw ; @@ -378,13 +364,6 @@ comapi_shufraw: mov ecx,P_ECX jmp shuffle_and_boot_raw -; -; INT 22h AX=0025h Initialize the ADV structure -; -comapi_initadv: - call adv_init - ret - section .data16 alignz 2 @@ -417,8 +396,8 @@ int22_table: 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_getadv ; 001C get pointer to ADV - dw comapi_writeadv ; 001D write ADV to disk + 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 @@ -426,7 +405,7 @@ int22_table: dw comapi_err ; 0022 close directory dw comapi_err ; 0023 query shuffler size dw comapi_shufraw ; 0024 cleanup, shuffle and boot raw - dw comapi_initadv ; 0025 initialize adv structure + dw comapi_err ; 0025 initialize adv structure int22_count equ ($-int22_table)/2 APIKeyWait db 0 diff --git a/core/include/core.h b/core/include/core.h index 1fd283e3..f8d6cac6 100644 --- a/core/include/core.h +++ b/core/include/core.h @@ -61,6 +61,10 @@ extern void (*core_pm_hook)(void); /* getc.inc */ extern void core_open(void); +/* adv.inc */ +extern void adv_init(void); +extern void adv_write(void); + /* hello.c */ extern void myputs(const char*); -- cgit v1.2.1