Add a config option to specify the rom size wanted. Default is zero, which will automatically figure the needed size.
Signed-off-by: Gerd Hoffmann kraxel@redhat.com --- Makefile | 3 ++- scripts/checkrom.py | 21 +++++++++++++++------ src/Kconfig | 11 +++++++++++ 3 files changed, 28 insertions(+), 7 deletions(-)
diff --git a/Makefile b/Makefile index 229fe54..cdda3d5 100644 --- a/Makefile +++ b/Makefile @@ -178,7 +178,8 @@ $(OUT)bios.bin.elf $(OUT)bios.bin: $(OUT)rom.o scripts/checkrom.py @echo " Prepping $@" $(Q)$(OBJDUMP) -thr $< > $<.objdump $(Q)$(OBJCOPY) -O binary $< $(OUT)bios.bin.raw - $(Q)$(PYTHON) ./scripts/checkrom.py $<.objdump $(OUT)bios.bin.raw $(OUT)bios.bin + $(Q)$(PYTHON) ./scripts/checkrom.py $<.objdump $(CONFIG_ROM_SIZE) \ + $(OUT)bios.bin.raw $(OUT)bios.bin $(Q)$(STRIP) -R .comment $< -o $(OUT)bios.bin.elf
diff --git a/scripts/checkrom.py b/scripts/checkrom.py index 6f07ac8..aa3dd0d 100755 --- a/scripts/checkrom.py +++ b/scripts/checkrom.py @@ -21,7 +21,7 @@ def checksum(data, start, size, csum):
def main(): # Get args - objinfo, rawfile, outfile = sys.argv[1:] + objinfo, finalsize, rawfile, outfile = sys.argv[1:]
# Read in symbols objinfofile = open(objinfo, 'rb') @@ -32,11 +32,20 @@ def main(): rawdata = f.read() f.close() datasize = len(rawdata) - finalsize = 64*1024 - if datasize > 64*1024: - finalsize = 128*1024 - if datasize > 128*1024: - finalsize = 256*1024 + finalsize = int(finalsize) * 1024 + if finalsize == 0: + finalsize = 64*1024 + if datasize > 64*1024: + finalsize = 128*1024 + if datasize > 128*1024: + finalsize = 256*1024 + if datasize > finalsize: + print "Error! ROM doesn't fit (%d > %d)" % (datasize, finalsize) + print " You have to either increate the size (CONFIG_ROM_SIZE)" + print " or turn off some features (such as hardware support not" + print " needed) to make it fit. Trying a more recent gcc version" + print " might work too." + sys.exit(1)
# Sanity checks start = symbols['code32flat_start'].offset diff --git a/src/Kconfig b/src/Kconfig index c40cc61..00a6840 100644 --- a/src/Kconfig +++ b/src/Kconfig @@ -122,6 +122,17 @@ endchoice selected, the memory is instead allocated from the "9-segment" (0x90000-0xa0000).
+ config ROM_SIZE + int "ROM size (in kB)" + default 0 + help + Set the rom size. Say '0' here to make seabios figure the + needed size automatically. + + Currently SeaBIOS will easily fit into 256k. To make it fit + it into 128k (which was big enougth for a long time) you'll + probably have to disable some featues. + endmenu
menu "Hardware support"