aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorH. Peter Anvin <hpa@linux.intel.com>2014-02-13 09:32:39 -0800
committerH. Peter Anvin <hpa@linux.intel.com>2014-02-13 15:40:13 -0800
commit636504f7bb6f9e86cc65addbfb36aed14dc1ecb4 (patch)
tree1fad7b5702b5af17c291838d02fd392951b10741
parent8c11d9231fa234ff30477ba9c958c9d3645abfa2 (diff)
downloadsyslinux-636504f7bb6f9e86cc65addbfb36aed14dc1ecb4.tar.gz
syslinux-636504f7bb6f9e86cc65addbfb36aed14dc1ecb4.tar.xz
syslinux-636504f7bb6f9e86cc65addbfb36aed14dc1ecb4.zip
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 <hpa@linux.intel.com>
-rw-r--r--core/adv.inc9
-rw-r--r--core/bios.c16
-rw-r--r--core/comboot.inc29
-rw-r--r--core/include/core.h4
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 <sys/vesa/video.h>
#include <sys/vesa/debug.h>
#include <minmax.h>
+#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(&reg, 0, sizeof(reg));
- reg.eax.w[0] = 0x0025;
- __intcall(0x22, &reg, &reg);
-
- memset(&reg, 0, sizeof(reg));
- reg.eax.w[0] = 0x001c;
- __intcall(0x22, &reg, &reg);
- __syslinux_adv_ptr = MK_PTR(reg.es, reg.ebx.w[0]);
- __syslinux_adv_size = reg.ecx.w[0];
+ call16(adv_init, &reg, NULL);
}
int bios_adv_write(void)
@@ -188,8 +179,7 @@ int bios_adv_write(void)
static com32sys_t reg;
memset(&reg, 0, sizeof(reg));
- reg.eax.w[0] = 0x001d;
- __intcall(0x22, &reg, &reg);
+ call16(adv_write, &reg, &reg);
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
@@ -343,20 +343,6 @@ comapi_err:
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
;
comapi_shufraw:
@@ -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*);