Replacing the SeaBios implementation of the delay in src/clock.c with
the method used in the Bochs BIOS is also a workaround for FreeBSD:
//=========================
// Wait for CX:DX microseconds
void
handle_1586(struct bregs *regs)
{
// Use the rtc to wait for the specified time.
u32 count = (regs->cx << 16) | regs->dx;
#if 0
u8 statusflag = 0;
int ret = set_usertimer(count, GET_SEG(SS), (u32)&statusflag);
if (ret) {
set_code_invalid(regs, RET_ECLOCKINUSE);
return;
}
while (!statusflag)
wait_irq();
#else
// Use bochs code: ([email protected])
count/= 15;
while (count-- > 0) {
u8 orig = inb(PORT_PS2_CTRLB) & 0x10;
while (orig == (inb(PORT_PS2_CTRLB) & 0x10))
;
}
#endif
set_success(regs);
}
//=======================
You can replace /usr/share/seabios/bios.bin with
the bios downloaded from:
http://www.v7f.eu/public/bios.bin
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/780657
Title:
FreeBSD Hangs on Boot
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/780657/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs