Move QEMU_CFG related code out of smbios.c and into seperate files. Signed-off-by: Jes Sorensen --- Makefile | 4 ++-- src/qemu-cfg.c | 29 +++++++++++++++++++++++++++++ src/qemu-cfg.h | 14 ++++++++++++++ src/smbios.c | 22 +--------------------- 4 files changed, 46 insertions(+), 23 deletions(-) Index: seabios/Makefile =================================================================== --- seabios.orig/Makefile +++ seabios/Makefile @@ -13,8 +13,8 @@ SRCBOTH=output.c util.c floppy.c ata.c m pnpbios.c pirtable.c SRC16=$(SRCBOTH) system.c disk.c apm.c pcibios.c vgahooks.c font.c SRC32=$(SRCBOTH) post.c shadow.c memmap.c coreboot.c boot.c \ - acpi.c smm.c mptable.c smbios.c pciinit.c optionroms.c mtrr.c \ - lzmadecode.c + acpi.c smm.c mptable.c qemu-cfg.c smbios.c pciinit.c optionroms.c \ + mtrr.c lzmadecode.c cc-option = $(shell if test -z "`$(1) $(2) -S -o /dev/null -xc \ /dev/null 2>&1`"; then echo "$(2)"; else echo "$(3)"; fi ;) Index: seabios/src/qemu-cfg.c =================================================================== --- /dev/null +++ seabios/src/qemu-cfg.c @@ -0,0 +1,29 @@ +// qemu-cfg.c: QEMU_CFG related code +// +// Copyright (C) 2009 Jes Sorensen, SGI +// Copyright (C) 2008 Kevin O'Connor +// Copyright (C) 2006 Fabrice Bellard +// +// This file may be distributed under the terms of the GNU LGPLv3 license. + +#include "types.h" +#include "ioport.h" +#include "qemu-cfg.h" + +void +qemu_cfg_read(u8 *buf, u16 f, int len) +{ + outw(f, PORT_QEMU_CFG_CTL); + while (len--) + *(buf++) = inb(PORT_QEMU_CFG_DATA); +} + +int +qemu_cfg_port_probe() +{ + u8 sig[4] = "QEMU"; + u8 buf[4]; + qemu_cfg_read(buf, QEMU_CFG_SIGNATURE, 4); + return *(u32*)buf == *(u32*)sig; +} + Index: seabios/src/qemu-cfg.h =================================================================== --- /dev/null +++ seabios/src/qemu-cfg.h @@ -0,0 +1,14 @@ +// qemu-cfg.h: QEMU_CFG related definitions +// +// Copyright (C) 2009 Jes Sorensen, SGI +// Copyright (C) 2008 Kevin O'Connor +// Copyright (C) 2006 Fabrice Bellard +// +// This file may be distributed under the terms of the GNU LGPLv3 license. + +#define QEMU_CFG_SIGNATURE 0x00 +#define QEMU_CFG_ID 0x01 +#define QEMU_CFG_UUID 0x02 + +void qemu_cfg_read(u8 *buf, u16 f, int len); +int qemu_cfg_port_probe(); Index: seabios/src/smbios.c =================================================================== --- seabios.orig/src/smbios.c +++ seabios/src/smbios.c @@ -8,33 +8,13 @@ #include "util.h" // dprintf #include "memmap.h" // bios_table_cur_addr #include "biosvar.h" // GET_EBDA +#include "qemu-cfg.h" // QEMU_CFG_UUID /**************************************************************** * UUID probe ****************************************************************/ -#define QEMU_CFG_SIGNATURE 0x00 -#define QEMU_CFG_ID 0x01 -#define QEMU_CFG_UUID 0x02 - -static void -qemu_cfg_read(u8 *buf, u16 f, int len) -{ - outw(f, PORT_QEMU_CFG_CTL); - while (len--) - *(buf++) = inb(PORT_QEMU_CFG_DATA); -} - -static int -qemu_cfg_port_probe() -{ - u8 sig[4] = "QEMU"; - u8 buf[4]; - qemu_cfg_read(buf, QEMU_CFG_SIGNATURE, 4); - return *(u32*)buf == *(u32*)sig; -} - static void uuid_probe(u8 *bios_uuid) {