From 4b39b82790d17a64d13171ba501efa4ffa044460 Mon Sep 17 00:00:00 2001 From: Kevin O'Connor Date: Thu, 8 May 2008 21:47:33 -0400 Subject: [PATCH] Support 32bit entry point and an elf wrapped binary. --- src/post.c | 12 ++++++++++++ tools/buildrom.py | 7 +++++++ 2 files changed, 19 insertions(+) diff --git a/src/post.c b/src/post.c index 36fc2e9..f69773f 100644 --- a/src/post.c +++ b/src/post.c @@ -265,3 +265,15 @@ _start() post(); } + +// Externally visible 32bit entry point. +asm( + ".global post32\n" + "post32:\n" + "cli\n" + "cld\n" + "lidtl " __stringify(0xf0000 | OFFSET_pmode_IDT_info) "\n" + "lgdtl " __stringify(0xf0000 | OFFSET_rombios32_gdt_48) "\n" + "movl $" __stringify(CONFIG_STACK_OFFSET) ", %esp\n" + "jmp _start\n" + ); diff --git a/tools/buildrom.py b/tools/buildrom.py index fd49076..83bedde 100755 --- a/tools/buildrom.py +++ b/tools/buildrom.py @@ -7,6 +7,7 @@ import sys import struct +import os ROM16='out/rom16.bin' ROM32='out/rom32.bin' @@ -78,5 +79,11 @@ def main(): f.write(outrom) f.close() + # Build elf file with 32bit entry point + os.system( + "objcopy -I binary -O elf32-i386 -B i386" + " --change-addresses 0xf0000 --set-start %s %s %s" %( + int(o32['OFFSET_post32'], 16) - 0xf0000, OUT, OUT+".o")) + if __name__ == '__main__': main() -- 2.25.1