# HG changeset patch
# User Keir Fraser <keir.fraser@xxxxxxxxxx>
# Date 1222699538 -3600
# Node ID 22c9434c5d3e45f695d3f9ae480f8dc45a37b23e
# Parent ccf0205255e15632b2eadde02795fbe4ab87c6c5
hvm: Remove extboot from virtual firmware.
Device model is not present in external qemu repository, and
functionality was never exposed through the toolstack.
Signed-off-by: Keir Fraser <keir.fraser@xxxxxxxxxx>
---
tools/firmware/extboot/Makefile | 20 -
tools/firmware/extboot/STATUS | 5
tools/firmware/extboot/extboot.S | 633 -----------------------------------
tools/firmware/extboot/signrom.c | 79 ----
tools/firmware/Makefile | 1
tools/firmware/hvmloader/Makefile | 4
tools/firmware/hvmloader/config.h | 1
tools/firmware/hvmloader/hvmloader.c | 18
8 files changed, 1 insertion(+), 760 deletions(-)
diff -r ccf0205255e1 -r 22c9434c5d3e tools/firmware/Makefile
--- a/tools/firmware/Makefile Mon Sep 29 11:00:29 2008 +0100
+++ b/tools/firmware/Makefile Mon Sep 29 15:45:38 2008 +0100
@@ -9,7 +9,6 @@ SUBDIRS :=
SUBDIRS :=
SUBDIRS += rombios
SUBDIRS += vgabios
-SUBDIRS += extboot
#SUBDIRS += etherboot
SUBDIRS += hvmloader
diff -r ccf0205255e1 -r 22c9434c5d3e tools/firmware/extboot/Makefile
--- a/tools/firmware/extboot/Makefile Mon Sep 29 11:00:29 2008 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,20 +0,0 @@
-XEN_ROOT = ../../..
-include $(XEN_ROOT)/tools/firmware/Rules.mk
-
-.PHONY: all
-all: extboot.bin
-
-%.o: %.S
- $(CC) $(CPPFLAGS) $(CFLAGS) -o $@ -c $<
-
-extboot.img: extboot.o
- $(LD) $(LDFLAGS_DIRECT) --oformat binary -Ttext 0 -o $@ $<
-
-extboot.bin: extboot.img signrom
- ./signrom extboot.img extboot.bin
-
-signrom: signrom.c
- $(HOSTCC) $(HOSTCFLAGS) -o $@ $^
-
-clean:
- $(RM) -f *.o *.img *.bin signrom *~
diff -r ccf0205255e1 -r 22c9434c5d3e tools/firmware/extboot/STATUS
--- a/tools/firmware/extboot/STATUS Mon Sep 29 11:00:29 2008 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,6 +0,0 @@
-Working
--------
-
-Ubuntu Server 7.04 (i386)
-Windows 2000 Professional (i386)
-Windows XP SP2 (i386)
diff -r ccf0205255e1 -r 22c9434c5d3e tools/firmware/extboot/extboot.S
--- a/tools/firmware/extboot/extboot.S Mon Sep 29 11:00:29 2008 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,633 +0,0 @@
-/*
- * Extended Boot Option ROM
- *
- * 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; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Copyright IBM Corporation, 2007
- * Authors: Anthony Liguori <aliguori@xxxxxxxxxx>
- */
-
-.code16
-.text
- .global _start
-_start:
- .short 0xaa55
- .byte (_end - _start) / 512
-
- push %ax
- push %bx
- push %cx
- push %dx
- push %ds
-
- /* setup ds so we can access the IVT */
- xor %ax, %ax
- mov %ax, %ds
-
- /* save old int 19 at int 2b */
- mov $(0x19 * 4), %bx
- mov 0(%bx), %ax
- mov 2(%bx), %cx
-
- mov $(0x2b * 4), %bx
- mov %ax, 0(%bx)
- mov %cx, 2(%bx)
-
- /* install our int 19 handler */
- mov $(0x19 * 4), %bx
- mov $int19_handler, %ax
- mov %ax, 0(%bx)
- mov %cs, 2(%bx)
-
- pop %ds
- pop %dx
- pop %cx
- pop %bx
- pop %ax
- lret
-
-int19_handler:
- push %ax
- push %bx
- push %cx
- push %dx
- push %ds
-
- movw $0x404, %dx
- inb %dx, %al
- cmp $1, %al
- jne 1f
-
- /* hook int13 */
- /* setup ds to access IVT */
- xor %ax, %ax
- mov %ax, %ds
-
- /* save old int 13 to int 2c */
- mov $(0x13 * 4), %bx
- mov 0(%bx), %ax
- mov 2(%bx), %cx
-
- mov $(0x2c * 4), %bx
- mov %ax, 0(%bx)
- mov %cx, 2(%bx)
-
- /* install our int 13 handler */
- mov $(0x13 * 4), %bx
- mov $int13_handler, %ax
-
- mov %ax, 0(%bx)
- mov %cs, 2(%bx)
-
-1: pop %ds
- pop %dx
- pop %cx
- pop %bx
- pop %ax
- int $0x2b
-
-#define FLAGS_CF 0x01
-
-.macro clc
- push %ax
- pushf
- pop %ax
- and $(~FLAGS_CF), %ax
- push %ax
- popf
- pop %ax
-.endm
-
-.macro stc
- push %ax
- pushf
- pop %ax
- or $(FLAGS_CF), %ax
- push %ax
- popf
- pop %ax
-.endm
-
-/* we clobber %bx */
-.macro alloca size
- push %ds
- push %bp
- mov %sp, %bp /* remember the current stack position */
-
- mov %ss, %bx
- mov %bx, %ds
-
- sub \size, %sp
- and $(~0x0F), %sp
- mov %sp, %bx
-
- push %bp
- mov 0(%bp), %bp
-.endm
-
-/* we clobber %bp */
-.macro allocbpa size
- mov %sp, %bp /* remember the current stack position */
- sub \size, %sp
- and $(~0x0F), %sp
- push %bp
- mov %sp, %bp
- add $2, %bp
-.endm
-
-.macro freea
- pop %sp
- add $2, %sp
- pop %ds
-.endm
-
-.macro freebpa
- pop %sp
-.endm
-
-.macro dump reg
- push %ax
- push %dx
-
- mov \reg, %ax
- mov $0x406, %dx
- outw %ax, %dx
-
- pop %dx
- pop %ax
-.endm
-
-.macro callout value
- push %bp
- push %bx
- mov %sp, %bp
- alloca $16
- push %ax
- push %dx
-
- mov %ax, 0(%bx) /* ax */
- mov 0(%bp), %ax /* bx */
- mov %ax, 2(%bx)
- mov %cx, 4(%bx) /* cx */
- mov %dx, 6(%bx) /* dx */
- mov %si, 8(%bx) /* si */
- mov %ds, 10(%bx) /* ds */
- mov %es, 12(%bx) /* ds */
- movw \value, 14(%bx) /* value */
-
- mov %bx, %ax
- shr $4, %ax
- mov %ds, %dx
- add %dx, %ax
-
- mov $0x407, %dx
- outw %ax, %dx
-
- pop %dx
- pop %ax
- freea
- pop %bx
- pop %bp
-.endm
-
-send_command:
- push %bp
- mov %sp, %bp
- push %ax
- push %bx
- push %dx
-
- mov 4(%bp), %ax
- shr $4, %ax
- and $0x0FFF, %ax
- mov %ss, %bx
- add %bx, %ax
-
- mov $0x405, %dx
- outw %ax, %dx
-
- pop %dx
- pop %bx
- pop %ax
- pop %bp
-
- push %ax
- mov 2(%bx), %ax
- pop %ax
-
- ret
-
-add32: /* lo, hi, lo, hi */
- push %bp
- mov %sp, %bp
-
- movw 4(%bp), %cx /* hi */
- movw 6(%bp), %dx /* lo */
-
- add 10(%bp), %dx
- jnc 1f
- add $1, %cx
-1: add 8(%bp), %cx
-
- pop %bp
- ret
-
-mul32: /* lo, hi, lo, hi */
- /* 10(%bp), 8(%bp), 6(%bp), 4(%bp) */
- push %bp
- mov %sp, %bp
- push %ax
- push %bx
-
- xor %cx, %cx
- xor %dx, %dx
-
- /* for (i = 0; i < 16;) */
- xor %bx, %bx
-0:
- cmp $16, %bx
- jge 2f
-
- mov 6(%bp), %ax
- and $1, %ax
- cmp $1, %ax
- jne 1f
- push 10(%bp)
- push 8(%bp)
- push %dx
- push %cx
- call add32
- add $8, %sp
-1:
- shlw $1, 8(%bp)
- movw 10(%bp), %ax
- and $0x8000, %ax
- cmp $0x8000, %ax
- jne 1f
- orw $1, 8(%bp)
-1:
- shlw $1, 10(%bp)
- shrw $1, 6(%bp)
-
- /* i++) { */
- add $1, %bx
- jmp 0b
-
-2:
- pop %bx
- pop %ax
- pop %bp
- ret
-
-disk_reset:
- movb $0, %ah
- clc
- ret
-
-/* this really should be a function, not a macro but i'm lazy */
-.macro read_write_disk_sectors cmd
- push %ax
- push %bx
- push %cx
- push %dx
- push %si
-
- push %bp
- sub $10, %sp
- mov %sp, %bp
-
- /* save nb_sectors */
- mov %al, 6(%bp)
- movb $0, 7(%bp)
-
- /* save buffer */
- mov %bx, 8(%bp)
-
- /* cylinders */
- xor %ax, %ax
- mov %cl, %al
- shl $2, %ax
- and $0x300, %ax
- mov %ch, %al
- mov %ax, 0(%bp)
-
- /* heads */
- xor %ax, %ax
- mov %dh, %al
- mov %ax, 2(%bp)
-
- /* sectors - 1 */
- xor %ax, %ax
- mov %cl, %al
- and $0x3F, %al
- sub $1, %ax
- mov %ax, 4(%bp)
-
- alloca $8
-
- movw $0, 0(%bx) /* read c,h,s */
- push %bx
- call send_command
- add $2, %sp
-
- mov 6(%bx), %ax /* total_sectors */
- mov 2(%bp), %si /* *= heads */
- mul %si
- add 4(%bp), %ax /* += sectors - 1 */
-
- push 4(%bx) /* total_heads */
- push $0
- push 6(%bx) /* total_sectors */
- push $0
- call mul32
- add $8, %sp
-
- push 0(%bp) /* cylinders */
- push $0
- push %dx
- push %cx
- call mul32
- add $8, %sp
-
- add %ax, %dx
- jnc 1f
- add $1, %cx
-1:
- freea
-
- alloca $16
-
- movw \cmd, 0(%bx) /* read */
- movw 6(%bp), %ax /* nb_sectors */
- movw %ax, 2(%bx)
- movw %es, 4(%bx) /* segment */
- movw 8(%bp), %ax /* offset */
- mov %ax, 6(%bx)
- movw %dx, 8(%bx) /* sector */
- movw %cx, 10(%bx)
- movw $0, 12(%bx)
- movw $0, 14(%bx)
-
- push %bx
- call send_command
- add $2, %sp
-
- freea
-
- add $10, %sp
- pop %bp
-
- pop %si
- pop %dx
- pop %cx
- pop %bx
- pop %ax
-
- mov $0, %ah
- clc
- ret
-.endm
-
-read_disk_sectors:
- read_write_disk_sectors $0x01
-
-write_disk_sectors:
- read_write_disk_sectors $0x02
-
-read_disk_drive_parameters:
- push %bx
-
- /* allocate memory for packet, pointer gets returned in bx */
- alloca $8
-
- /* issue command */
- movw $0, 0(%bx) /* cmd = 0, read c,h,s */
- push %bx
- call send_command
- add $2, %sp
-
- /* normalize sector value */
- movb 6(%bx), %cl
- andb $0x3F, %cl
- movb %cl, 6(%bx)
-
- /* normalize cylinders */
- subw $2, 2(%bx)
-
- /* normalize heads */
- subw $1, 4(%bx)
-
- /* return code */
- mov $0, %ah
-
- /* cylinders */
- movb 2(%bx), %ch
- movb 3(%bx), %cl
- shlb $6, %cl
- andb $0xC0, %cl
-
- /* sectors */
- orb 6(%bx), %cl
-
- /* heads */
- movb 4(%bx), %dh
-
- /* drives */
- movb $1, %dl
-
- /* status */
- mov $0, %ah
-
- freea
-
- pop %bx
-
- /* do this last since it's the most sensitive */
- clc
- ret
-
-alternate_disk_reset:
- movb $0, %ah
- clc
- ret
-
-read_disk_drive_size:
- push %bx
- alloca $8
-
- movw $0, 0(%bx) /* cmd = 0, read c,h,s */
- push %bx
- call send_command
- add $2, %sp
-
- /* cylinders - 1 to cx:dx */
- mov 2(%bx), %dx
- xor %cx, %cx
- sub $1, %dx
-
- /* heads */
- push 4(%bx)
- push $0
- push %dx
- push %cx
- call mul32
- add $8, %sp
-
- /* sectors */
- push 6(%bx)
- push $0
- push %dx
- push %cx
- call mul32
- add $8, %sp
-
- /* status */
- mov $3, %ah
-
- freea
- pop %bx
-
- clc
- ret
-
-check_if_extensions_present:
- mov $0x30, %ah
- mov $0xAA55, %bx
- mov $0x07, %cx
- clc
- ret
-
-.macro extended_read_write_sectors cmd
- cmpb $10, 0(%si)
- jg 1f
- mov $1, %ah
- stc
- ret
-1:
- push %ax
- push %bp
- allocbpa $16
-
- movw \cmd, 0(%bp) /* read */
- movw 2(%si), %ax /* nb_sectors */
- movw %ax, 2(%bp)
- movw 4(%si), %ax /* offset */
- movw %ax, 6(%bp)
- movw 6(%si), %ax /* segment */
- movw %ax, 4(%bp)
- movw 8(%si), %ax /* block */
- movw %ax, 8(%bp)
- movw 10(%si), %ax
- movw %ax, 10(%bp)
- movw 12(%si), %ax
- movw %ax, 12(%bp)
- movw 14(%si), %ax
- movw %ax, 14(%bp)
-
- push %bp
- call send_command
- add $2, %sp
-
- freebpa
- pop %bp
- pop %ax
-
- mov $0, %ah
- clc
- ret
-.endm
-
-extended_read_sectors:
- extended_read_write_sectors $0x01
-
-extended_write_sectors:
- extended_read_write_sectors $0x02
-
-get_extended_drive_parameters:
- mov $1, %ah
- stc
- ret
-
-terminate_disk_emulation:
- mov $1, %ah
- stc
- ret
-
-int13_handler:
- cmp $0x80, %dl
- je 1f
- int $0x2c
- iret
-1:
- cmp $0x0, %ah
- jne 1f
- call disk_reset
- iret
-1:
- cmp $0x2, %ah
- jne 1f
- call read_disk_sectors
- iret
-1:
- cmp $0x8, %ah
- jne 1f
- call read_disk_drive_parameters
- iret
-1:
- cmp $0x15, %ah
- jne 1f
- call read_disk_drive_size
- iret
-1:
- cmp $0x41, %ah
- jne 1f
- call check_if_extensions_present
- iret
-1:
- cmp $0x42, %ah
- jne 1f
- call extended_read_sectors
- iret
-1:
- cmp $0x48, %ah
- jne 1f
- call get_extended_drive_parameters
- iret
-1:
- cmp $0x4b, %ah
- jne 1f
- call terminate_disk_emulation
- iret
-1:
- cmp $0x0d, %ah
- jne 1f
- call alternate_disk_reset
- iret
-1:
- cmp $0x03, %ah
- jne 1f
- call write_disk_sectors
- iret
-1:
- cmp $0x43, %ah
- jne 1f
- call extended_write_sectors
- iret
-1:
- int $0x18 /* boot failed */
- iret
-
-.align 512, 0
-_end:
diff -r ccf0205255e1 -r 22c9434c5d3e tools/firmware/extboot/signrom.c
--- a/tools/firmware/extboot/signrom.c Mon Sep 29 11:00:29 2008 +0100
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,79 +0,0 @@
-/*
- * Extended Boot Option ROM
- *
- * 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; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Copyright IBM Corporation, 2007
- * Authors: Anthony Liguori <aliguori@xxxxxxxxxx>
- */
-
-#include <stdio.h>
-#include <stdint.h>
-#include <string.h>
-
-int main(int argc, char **argv)
-{
- FILE *fin, *fout;
- char buffer[512], oldbuffer[512];
- int i, size, lag = 0;
- uint8_t sum = 0;
-
- if (argc != 3) {
- printf("Usage: %s ROM OUTPUT\n", argv[0]);
- return 1;
- }
-
- fin = fopen(argv[1], "rb");
- fout = fopen(argv[2], "wb");
-
- if (fin == NULL || fout == NULL) {
- fprintf(stderr, "Could not open input/output files\n");
- return 1;
- }
-
- do {
- size = fread(buffer, 512, 1, fin);
- if (size == 1) {
- for (i = 0; i < 512; i++)
- sum += buffer[i];
-
- if (lag) {
- if (fwrite(oldbuffer, 512, 1, fout) != 1) {
- fprintf(stderr, "Write failed\n");
- return 1;
- }
- }
- lag = 1;
- memcpy(oldbuffer, buffer, 512);
- }
- } while (size == 1);
-
- if (size != 0) {
- fprintf(stderr, "Failed to read from input file\n");
- return 1;
- }
-
- oldbuffer[511] = -sum;
-
- if (fwrite(oldbuffer, 512, 1, fout) != 1) {
- fprintf(stderr, "Failed to write to output file\n");
- return 1;
- }
-
- fclose(fin);
- fclose(fout);
-
- return 0;
-}
diff -r ccf0205255e1 -r 22c9434c5d3e tools/firmware/hvmloader/Makefile
--- a/tools/firmware/hvmloader/Makefile Mon Sep 29 11:00:29 2008 +0100
+++ b/tools/firmware/hvmloader/Makefile Mon Sep 29 15:45:38 2008 +0100
@@ -48,14 +48,12 @@ hvmloader: $(OBJS) acpi/acpi.a
rm -f hvmloader.tmp
roms.h: ../rombios/BIOS-bochs-latest ../vgabios/VGABIOS-lgpl-latest.bin \
- ../vgabios/VGABIOS-lgpl-latest.cirrus.bin ../etherboot/eb-roms.h \
- ../extboot/extboot.bin
+ ../vgabios/VGABIOS-lgpl-latest.cirrus.bin ../etherboot/eb-roms.h
sh ./mkhex rombios ../rombios/BIOS-bochs-latest > roms.h
sh ./mkhex vgabios_stdvga ../vgabios/VGABIOS-lgpl-latest.bin >> roms.h
sh ./mkhex vgabios_cirrusvga \
../vgabios/VGABIOS-lgpl-latest.cirrus.bin >> roms.h
cat ../etherboot/eb-roms.h >> roms.h
- sh ./mkhex extboot ../extboot/extboot.bin >> roms.h
.PHONY: clean
clean: subdirs-clean
diff -r ccf0205255e1 -r 22c9434c5d3e tools/firmware/hvmloader/config.h
--- a/tools/firmware/hvmloader/config.h Mon Sep 29 11:00:29 2008 +0100
+++ b/tools/firmware/hvmloader/config.h Mon Sep 29 15:45:38 2008 +0100
@@ -24,7 +24,6 @@
#define HYPERCALL_PHYSICAL_ADDRESS 0x00080000
#define VGABIOS_PHYSICAL_ADDRESS 0x000C0000
#define ETHERBOOT_PHYSICAL_ADDRESS 0x000D0000
-#define EXTBOOT_PHYSICAL_ADDRESS 0x000DF800
#define SMBIOS_PHYSICAL_ADDRESS 0x000E9000
#define SMBIOS_MAXIMUM_SIZE 0x00001000
#define ACPI_PHYSICAL_ADDRESS 0x000EA000
diff -r ccf0205255e1 -r 22c9434c5d3e tools/firmware/hvmloader/hvmloader.c
--- a/tools/firmware/hvmloader/hvmloader.c Mon Sep 29 11:00:29 2008 +0100
+++ b/tools/firmware/hvmloader/hvmloader.c Mon Sep 29 15:45:38 2008 +0100
@@ -315,11 +315,6 @@ static void pci_setup(void)
}
}
-static int must_load_extboot(void)
-{
- return (inb(0x404) == 1);
-}
-
/*
* Scan the PCI bus for the first NIC supported by etherboot, and copy
* the corresponding rom data to *copy_rom_dest. Returns the length of the
@@ -461,7 +456,6 @@ int main(void)
int main(void)
{
int vgabios_sz = 0, etherboot_sz = 0, rombios_sz, smbios_sz;
- int extboot_sz = 0;
uint32_t vga_ram = 0;
uint16_t xen_pfiob;
@@ -518,14 +512,6 @@ int main(void)
etherboot_sz = scan_etherboot_nic((void*)ETHERBOOT_PHYSICAL_ADDRESS);
- if ( must_load_extboot() )
- {
- printf("Loading EXTBOOT ...\n");
- memcpy((void *)EXTBOOT_PHYSICAL_ADDRESS,
- extboot, sizeof(extboot));
- extboot_sz = sizeof(extboot);
- }
-
if ( get_acpi_enabled() )
{
printf("Loading ACPI ...\n");
@@ -543,10 +529,6 @@ int main(void)
printf(" %05x-%05x: Etherboot ROM\n",
ETHERBOOT_PHYSICAL_ADDRESS,
ETHERBOOT_PHYSICAL_ADDRESS + etherboot_sz - 1);
- if ( extboot_sz )
- printf(" %05x-%05x: Extboot ROM\n",
- EXTBOOT_PHYSICAL_ADDRESS,
- EXTBOOT_PHYSICAL_ADDRESS + extboot_sz - 1);
if ( smbios_sz )
printf(" %05x-%05x: SMBIOS tables\n",
SMBIOS_PHYSICAL_ADDRESS,
_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog
|