Author: jcrouse
Date: 2007-12-06 17:18:18 +0100 (Thu, 06 Dec 2007)
New Revision: 77
Modified:
buildrom-devel/Config.in
buildrom-devel/config/payloads/payloads.conf
buildrom-devel/config/platforms/Config.in
buildrom-devel/config/platforms/platforms.conf
buildrom-devel/packages/linuxbios/linuxbios.inc
Log:
This patch adds support for QEMU to buildrom, for both v2 and v3. It
also allows you to build QEMU from sources with the patches.
Signed-off-by: Myles Watson <myles(a)pel.cs.byu.edu>
Acked-by: Jordan Crouse <jordan.crouse(a)amd.com>
Modified: buildrom-devel/Config.in
===================================================================
--- buildrom-devel/Config.in 2007-12-05 23:27:08 UTC (rev 76)
+++ buildrom-devel/Config.in 2007-12-06 16:18:18 UTC (rev 77)
@@ -43,6 +43,23 @@
menu "LinuxBIOS configuration"
+config LINUXBIOS_V3
+ bool "Use LinuxBIOSv3"
+ depends ADVANCED
+ default n
+ help
+ Use the v3 tree. LinuxBIOSv3 doesn't support all platforms yet.
+
+config LINUXBIOS_V3_LGDT_PATCH
+ bool "Avoid an error in stage0_i586 with some compilers"
+ depends LINUXBIOS_V3
+ default n
+ help
+ Say 'y' here to use the patch from the mailing list to replace
+ "data32 lgdt %cs:gdtptr" with
+ "movl $gdtptr"
+ "%ebx lgdt %cs:(%bx)"
+
config USE_LZMA
bool "Enable LZMA compression"
depends !PAYLOAD_OFW
Modified: buildrom-devel/config/payloads/payloads.conf
===================================================================
--- buildrom-devel/config/payloads/payloads.conf 2007-12-05 23:27:08 UTC (rev 76)
+++ buildrom-devel/config/payloads/payloads.conf 2007-12-06 16:18:18 UTC (rev 77)
@@ -29,6 +29,7 @@
# Add LZMA if it is enabled
HOSTTOOLS-$(CONFIG_USE_LZMA) += lzma
+HOSTTOOLS-$(CONFIG_BUILD_QEMU) += qemu
# Sanity check
Modified: buildrom-devel/config/platforms/Config.in
===================================================================
--- buildrom-devel/config/platforms/Config.in 2007-12-05 23:27:08 UTC (rev 76)
+++ buildrom-devel/config/platforms/Config.in 2007-12-06 16:18:18 UTC (rev 77)
@@ -21,6 +21,9 @@
config VENDOR_PC_ENGINES
bool "PC Engines"
+config VENDOR_QEMU
+ bool "QEMU Emulator"
+
config VENDOR_SUPERMICRO
bool "Supermicro"
@@ -84,6 +87,11 @@
select PLATFORM
select PLATFORM_SUPPORT_64BIT
+config PLATFORM_QEMU-i386
+ bool "QEMU Emulator"
+ depends VENDOR_QEMU
+ select PLATFORM
+
config PLATFORM_SERENGETI_CHEETAH
bool "AMD Serengeti-Cheetah"
depends VENDOR_AMD
@@ -98,6 +106,22 @@
endchoice
+config BUILD_QEMU
+ bool "Build QEMU with patches for LinuxBIOS"
+ depends PLATFORM_QEMU-i386
+ default n
+ help
+ Say 'y' here to build a patched version of QEMU to work with
+ LinuxBIOS. This downloads the correct version and patches it
+ it even builds it if you specify the QEMU_CC correctly.
+
+config QEMU_CC
+ string "Compiler to use when building QEMU"
+ depends BUILD_QEMU
+ default "gcc32"
+ help
+ Set this string to point to your compiler (GCC_VER <=3.2)
+
config SIMNOW
bool "Build for the AMD SimNow (TM) emulator"
depends PLATFORM_SERENGETI_CHEETAH || PLATFORM_SERENGETI_CHEETAH_64
Modified: buildrom-devel/config/platforms/platforms.conf
===================================================================
--- buildrom-devel/config/platforms/platforms.conf 2007-12-05 23:27:08 UTC (rev 76)
+++ buildrom-devel/config/platforms/platforms.conf 2007-12-06 16:18:18 UTC (rev 77)
@@ -18,5 +18,6 @@
PLATFORM-$(CONFIG_PLATFORM_SERENGETI_CHEETAH) = serengeti_cheetah.conf
PLATFORM-$(CONFIG_PLATFORM_SERENGETI_CHEETAH_64) = serengeti_cheetah-x86_64.conf
PLATFORM-$(CONFIG_PLATFORM_GA_2761GXDK) = ga-2761gxdk.conf
+PLATFORM-$(CONFIG_PLATFORM_QEMU-i386) = qemu.conf
include $(CONFIG_DIR)/platforms/$(PLATFORM-y)
Modified: buildrom-devel/packages/linuxbios/linuxbios.inc
===================================================================
--- buildrom-devel/packages/linuxbios/linuxbios.inc 2007-12-05 23:27:08 UTC (rev 76)
+++ buildrom-devel/packages/linuxbios/linuxbios.inc 2007-12-06 16:18:18 UTC (rev 77)
@@ -7,8 +7,14 @@
ifeq ($(LINUXBIOS_BOARD),)
$(error No LinuxBIOS board specified)
endif
-ifeq ($(LINUXBIOS_CONFIG),)
-$(error No LinuxBIOS config specified)
+ifeq ($(CONFIG_LINUXBIOS_V3),y)
+ ifeq ($(LINUXBIOS_V3_CONFIG),)
+ $(error No LinuxBIOSv3 config specified)
+ endif
+else
+ ifeq ($(LINUXBIOS_CONFIG),)
+ $(error No LinuxBIOS config specified)
+ endif
endif
ifeq ($(LINUXBIOS_TDIR),)
$(error No LinuxBIOS TDIR specified)
@@ -29,7 +35,12 @@
LINUXBIOS_TARGET_DIR=$(LINUXBIOS_SRC_DIR)/targets/
LINUXBIOS_TARGET_NAME=$(LINUXBIOS_VENDOR)/$(LINUXBIOS_BOARD)
LINUXBIOS_CONFIG_NAME=$(LINUXBIOS_TARGET_NAME)/$(LINUXBIOS_CONFIG)
+
+ifeq ($(CONFIG_LINUXBIOS_V3),y)
+LINUXBIOS_BUILD_DIR=$(LINUXBIOS_SRC_DIR)
+else
LINUXBIOS_BUILD_DIR=$(LINUXBIOS_TARGET_DIR)/$(LINUXBIOS_TARGET_NAME)/$(LINUXBIOS_TDIR)
+endif
LINUXBIOS_STAMP_DIR=$(LINUXBIOS_DIR)/stamps
LINUXBIOS_LOG_DIR=$(LINUXBIOS_DIR)/logs
@@ -68,10 +79,17 @@
@ touch $@
$(LINUXBIOS_STAMP_DIR)/.configured: $(LINUXBIOS_STAMP_DIR)/.patched
+ifeq ($(CONFIG_LINUXBIOS_V3),y)
+ @ echo "Configuring v3..."
+ @ cp $(LINUXBIOS_V3_CONFIG) $(LINUXBIOS_SRC_DIR)/.config
+ @ make -C $(LINUXBIOS_SRC_DIR) oldconfig > $(LINUXBIOS_CONFIG_LOG) 2>&1
+ @ touch $@
+else
@ echo "Building target..."
@( cd $(LINUXBIOS_TARGET_DIR); \
./buildtarget $(LINUXBIOS_CONFIG_NAME) > $(LINUXBIOS_CONFIG_LOG) 2>&1)
@ touch $@
+endif
$(LINUXBIOS_STAMP_DIR) $(LINUXBIOS_LOG_DIR):
@ mkdir -p $@