Skip site navigation (1)Skip section navigation (2)
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>