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(a)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 806aa54..5639e9f 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..20d2a3e 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 256 KB. To make it fit
+ it into 128 KB (which was big enouth for a long time) you'll
+ probably have to disable some featues such as xhci support.
+
endmenu
menu "Hardware support"
--
1.8.3.1