On Wed, Apr 15, 2015 at 07:31:21PM +0200, Roger Pau Monné wrote:
Hello,
I've compiled SeaBIOS on FreeBSD with gcc48, and although the build process succeeds, the resulting binary doesn't fully work. Most functions seem to work fine but there are some int15h functions that don't work properly (ie: they return invalid values).
I've compiled SeaBIOS with CONFIG_DEBUG_LEVEL=10 and got the following output (this is from the Xen console):
I'd be careful with debug level 10 - I've seen the high debugging cause issues. I usually don't go above 8. Alternatively, you can decrease the individual debug levels in src/config.h .
[...] (d4) enter handle_1a: (d4) a=00000200 b=00000000 c=00001725 d=00003400 ds=4cf0 es=9eb8 ss=dd00 (d4) si=00000004 di=00000000 bp=00000000 sp=0000fe66 cs=0000 ip=9336 f=0242 (d4) enter handle_1a: (d4) a=00000200 b=00000000 c=00001725 d=00003400 ds=4cf0 es=9eb8 ss=dd00 (d4) si=00000004 di=00000000 bp=00000000 sp=0000fe66 cs=0000 ip=9336 f=0242 (d4) enter handle_1a: (d4) a=00000200 b=00000000 c=00001725 d=00003400 ds=4cf0 es=9eb8 (XEN) irq.c:386: Dom4 callback via changed to Direct Vector 0x93 (XEN) irq.c:276: Dom4 PCI link 0 changed 5 -> 0 (XEN) irq.c:276: Dom4 PCI link 1 changed 10 -> 0 (XEN) irq.c:276: Dom4 PCI link 2 changed 11 -> 0 (XEN) irq.c:276: Dom4 PCI link 3 changed 5 -> 0 (d4) enter handle_15:
And that's all, there's no line containing the register values. I'm quite lost at figuring what's going on, so any help about how to proceed in order to debug this is highly appreciated.
In situations like the above, I run qemu with "-d in_asm,int,exec,cpu" and redirect the output to some log file. I then look through the log to see where things went wrong.
If you know which "int 15h" is returning bogus values, you can also use gdb with qemu and set a break point. See http://seabios.org/Debugging .
Let me know what you find or if you need help. -Kevin