Enable rom size to be over 128K.
Apparently, only the first 128K of the rom are mirrored to the 0xc0000-0xfffff area under qemu, so make sure to copy the rom (via make_bios_writable) in the non-init part of the startup code. This ensure the copy code is itself available. --- src/post.c | 13 ++++++------- tools/checkrom.py | 2 ++ 2 files changed, 8 insertions(+), 7 deletions(-)
diff --git a/src/post.c b/src/post.c index 4a75f51..a72b8cd 100644 --- a/src/post.c +++ b/src/post.c @@ -321,18 +321,11 @@ reloc_init(void) func(); }
-static int HaveRunPost; - // Start of Power On Self Test (POST) - the BIOS initilization phase. // This function sets up for and attempts relocation of the init code. void VISIBLE32INIT post(void) { - // Allow writes to modify bios area (0xf0000) - make_bios_writable(); - - HaveRunPost = 1; - // Detect ram and setup internal malloc. memmap_setup(); qemu_cfg_port_probe(); @@ -347,6 +340,8 @@ post(void) * POST entry point ****************************************************************/
+static int HaveRunPost; + // Attempt to invoke a hard-reboot. static void tryReboot(void) @@ -385,6 +380,10 @@ _start(void) // This is a soft reboot - invoke a hard reboot. tryReboot();
+ // Allow writes to modify bios area (0xf0000) + make_bios_writable(); + HaveRunPost = 1; + // Perform main setup code. post(); } diff --git a/tools/checkrom.py b/tools/checkrom.py index 42cf2df..6309528 100755 --- a/tools/checkrom.py +++ b/tools/checkrom.py @@ -24,6 +24,8 @@ def main(): finalsize = 64*1024 if datasize > 64*1024: finalsize = 128*1024 + if datasize > 128*1024: + finalsize = 256*1024
# Sanity checks start = symbols['code32flat_start'].offset