[SeaBIOS] Bochs cvs + SeaBIOS git master + FreeDOS = slow load + invalid opcode
Kevin O'Connor
kevin at koconnor.net
Sun Jan 10 07:09:41 CET 2010
On Sat, Jan 09, 2010 at 07:48:51PM +0100, Sebastian Herbszt wrote:
> I have tried SeaBIOS 0.5.1 on Bochs cvs with FreeDOS 1.0 Final boot floppy.
> Loading from floppy was utterly slow and then FreeDOS dumped
>
> Invalid Opcode at 0013 0000 0202 800F 01F3 20F4 10AA 10AA 109A 0000 0000 0000 00
I saw this as well. I bisected it to this commit:
ee2efa7303077ce98a745f637e213ba9a0965811
and if I apply the following change, it fixes the problem on bochs:
--- a/src/util.h
+++ b/src/util.h
@@ -39,7 +39,7 @@ static inline void cpu_relax(void)
// Atomically enable irqs and sleep until an irq; then re-disable irqs.
static inline void wait_irq(void)
{
- asm volatile("sti ; hlt ; cli ; cld": : :"memory");
+ asm volatile("sti ; rep ; nop ; cli ; cld": : :"memory");
}
static inline void nop(void)
However, I didn't think there was anything wrong with the original
code. Am I missing something?
-Kevin
More information about the SeaBIOS
mailing list