Date: Sat, 4 Aug 2012 03:53:12 +0900 From: Takuya ASADA <syuu@dokukino.com> To: soc-status@freebsd.org, Peter Grehan <grehan@freebsd.org> Subject: [status report #9 & #10] BHyVe BIOS emulation to boot legacy systems Message-ID: <CALG4x-VSMyU2mJtc5QfJ9LoAP7DrNAH_NEBeADuBgVcKW3qJbg@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
* project summary The project goal is to support BIOS emulation on BHyVe, enabling boot from disk image. I going to focus booting FreeBSD/amd64 from disk image on this GSoC, but final goal is to make BHyVe able to support more guest OSes. * porting "doscmd" a DOS emulator to BHyVe, as a BIOS emulation library #2 To make it callable from /usr/sbin/bhyve, I implemented biosemul_init() and biosemul_call(). biosemul_init() initialize libbiosemul, and biosemul_call() handles bios call. Now int 13H is handled by libbiosemul, 10H and 16H is still handled in bios_int*.c but it will soon change to libbiosemul. * debug int 13H MBR writes "Error loading operating system" on the screen. I fix some bugs which was the reason of failing read disks, but it still occurs. The message shows up if JC instruction branches, but in libbiosemul it writes a value to EFLAGS without Carry bit. Now I'm guessing the bit turned on after IRET instruction executed, because IRET restores this register. I'll try to dump register values just after guest returned from INT instruction, probably using INB/OUTB instruction(to VMExit).
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CALG4x-VSMyU2mJtc5QfJ9LoAP7DrNAH_NEBeADuBgVcKW3qJbg>