[coreboot] [v2] r4049 - in trunk/coreboot-v2: src/arch/i386 src/boot util/newconfig
svn at coreboot.org
svn at coreboot.org
Fri Apr 3 14:52:43 CEST 2009
Author: oxygene
Date: 2009-04-03 14:52:43 +0200 (Fri, 03 Apr 2009)
New Revision: 4049
Modified:
trunk/coreboot-v2/src/arch/i386/Config.lb
trunk/coreboot-v2/src/boot/hardwaremain.c
trunk/coreboot-v2/util/newconfig/config.g
Log:
the attached patch is the last infrastructure change necessary for
romfs.
Everything else to make a target romfs aware happens in the targets.
What the patch does:
1. missing romfs.h include
2. special handling while creating coreboot.rom
While the romfs code path in the makefile doesn't actually use the file,
it's possible that the build of coreboot.rom fails in a romfs setup,
because the individual buildrom image is too small to host both coreboot
and payloads (as the payloads aren't supposed to be there). Thus, a
special case to replace the payload with /dev/null in case of a romfs
build.
There would be cleaner ways, but they're not easily encoded in the
Config.lb format.
3. config.g is changed to create rules for a romfs build
Targets should still build (they do for me)
Signed-off-by: Patrick Georgi <patrick.georgi at coresystems.de>
Acked-by: Stefan Reinauer <stepan at coresystems.de>
Modified: trunk/coreboot-v2/src/arch/i386/Config.lb
===================================================================
--- trunk/coreboot-v2/src/arch/i386/Config.lb 2009-04-03 02:18:23 UTC (rev 4048)
+++ trunk/coreboot-v2/src/arch/i386/Config.lb 2009-04-03 12:52:43 UTC (rev 4049)
@@ -79,8 +79,8 @@
end
else
makerule coreboot.rom
- depends "coreboot.strip buildrom $(PAYLOAD-1)"
- action "./buildrom $< $@ $(PAYLOAD-1) $(ROM_IMAGE_SIZE) $(ROM_SECTION_SIZE)"
+ depends "coreboot.strip buildrom $(PAYLOAD-1)"
+ action "PAYLOAD=$(PAYLOAD-1); if [ $(CONFIG_ROMFS) -eq 1 ]; then PAYLOAD=/dev/null; fi; ./buildrom $< $@ $$PAYLOAD $(ROM_IMAGE_SIZE) $(ROM_SECTION_SIZE)"
end
end
Modified: trunk/coreboot-v2/src/boot/hardwaremain.c
===================================================================
--- trunk/coreboot-v2/src/boot/hardwaremain.c 2009-04-03 02:18:23 UTC (rev 4048)
+++ trunk/coreboot-v2/src/boot/hardwaremain.c 2009-04-03 12:52:43 UTC (rev 4049)
@@ -36,6 +36,7 @@
#include <part/hard_reset.h>
#include <part/init_timer.h>
#include <boot/elf.h>
+#include <romfs.h>
/**
* @brief Main function of the DRAM part of coreboot.
Modified: trunk/coreboot-v2/util/newconfig/config.g
===================================================================
--- trunk/coreboot-v2/util/newconfig/config.g 2009-04-03 02:18:23 UTC (rev 4048)
+++ trunk/coreboot-v2/util/newconfig/config.g 2009-04-03 12:52:43 UTC (rev 4049)
@@ -22,7 +22,9 @@
global_exported_options = []
romimages = {}
buildroms = []
+rommapping = {}
curimage = 0
+bootblocksize = 0
alloptions = 0 # override uses at top level
local_path = re.compile(r'^\.')
@@ -277,8 +279,11 @@
self.arch = arch
def setpayload(self, payload):
+ global rommapping
self.payload = payload
+ rommapping[self.name] = payload
+
def setinitfile(self, initfile):
self.initfile = initfile
@@ -1351,7 +1356,10 @@
def endromimage():
global curimage
+ global bootblocksize
mainboard()
+ imagesize = getoption("ROM_IMAGE_SIZE", curimage)
+ bootblocksize += imagesize
print "End ROMIMAGE"
curimage = 0
#curpart = 0
@@ -2209,16 +2217,22 @@
#
def writemakefile(path):
+ global rommapping
+ global bootblocksize
makefilepath = os.path.join(path, "Makefile")
print "Creating", makefilepath
file = safe_open(makefilepath, 'w+')
writemakefileheader(file, makefilepath)
# main rule
- file.write("\nall:")
+ file.write("\nall: romtool")
for i in buildroms:
- file.write(" %s" % i.name)
+ file.write(" %sfs" % i.name)
file.write("\n\n")
+
+ # romtool rules
+ file.write("\nromtool:\n\tcd $(TOP)/util/romtool; make\n")
+
file.write("include Makefile.settings\n\n")
for i, o in romimages.items():
file.write("%s/coreboot.rom:\n" % o.getname())
@@ -2245,9 +2259,26 @@
for j in i.roms:
file.write(" %s/coreboot.rom " % j)
file.write("> %s\n\n" %i.name)
+ # build the bootblock here as well.
+ file.write("\n")
+ file.write("\t cat ")
+ for j in i.roms:
+ file.write(" %s/coreboot.strip " % j)
+ file.write("> %s.bootblock\n\n" %i.name)
+ romsize = getoption("ROM_SIZE", image)
+ # i.name? That can not be right, can it?
+ file.write("%sfs: %s $(TOP)/util/romtool/romtool\n" %(i.name,i.name));
+ file.write("\trm -f coreboot.romfs\n");
+ file.write("\t$(TOP)/util/romtool/romtool %sfs create %s %s %s.bootblock\n" % (i.name, romsize, bootblocksize, i.name))
+ for i in buildroms:
+ for j in i.roms:
+ #failover is a hack that will go away soon.
+ if (j != "failover") and (rommapping[j] != "/dev/null"):
+ file.write("\t $(TOP)/util/romtool/romtool %sfs add-payload %s %s/payload\n" % (i.name, rommapping[j], j))
+ file.write("\t $(TOP)/util/romtool/romtool %sfs print\n" % i.name)
- file.write(".PHONY: all clean")
+ file.write(".PHONY: all clean romtool")
for i in romimages.keys():
file.write(" %s-clean" % i)
for i, o in romimages.items():
More information about the coreboot
mailing list