2013-12-20 7 views
7

Ich führe meinen Protected-Mode-Kernel unter QEMU, und es verursacht einen allgemeinen Schutzfehler beim Versuch, den Assembler-HLT-Befehl auszuführen. CPL ist 0, IOPL ist 0 in EFLAGS, Unterbrechungen sind aktiviert.HLT-Befehl verursacht allgemeine Schutzverletzung in QEMU

Könnte dies ein QEMU-Problem sein oder fehle ich etwas?

Dies geschieht beim Emulieren von SMP (Symmetric Multi-Prozessor).

+1

Dasselbe gilt für nicht-SMP oder mit Interrupts aus (nach einer CLI). qemu-kvm-0.14.1. – valplo

+0

true ich habe eine Erfahrung davon gemacht. Es kann auch passieren, wenn es ein Problem mit IDT gibt – geek1000

Antwort

0

Es kann nicht helfen, aber wir verwenden asm ("hlt") die ganze Zeit mit qemu nicht smp und es funktioniert gut.

Allerdings ruft es wahrscheinlich zu einem Interrupt mit einer Chance zu laufen führen. Bist du dir sicher, dass die EIP das AMS ist? Wenn dies der Fall ist, sollten Sie die .o-Datei mit einem Objdump-Befehl versehen, um sicherzustellen, dass der Compiler das generiert, was Sie denken.

hth

1

Überprüfen Sie den DPL-Code-Selektor.