2013-05-08 22 views
6

Ich schreibe einen Kernel (mit qemu zu simulieren) für x86 als Schulprojekt und ich stieß auf seltsame Problem. Obwohl ich das Interrupt-Flag im Eflags-Register gesetzt habe, bekomme ich keine Clock-Interrupts (ich habe mit qemu info register-Befehl gecheckt und ich sehe eflag = 0x292, was bedeutet, dass es gesetzt ist).x86 Hardware Interrupt funktioniert nicht auf qemu

Um genau zu sein, wenn ich einen Schleudertest (während (1); Programm) im Benutzermodus ausführen, bekomme ich einen Takt Interrupt, aber danach stoppt es, qemu scheint nicht mehr zu simulieren! Ist es jemandem passiert? Gibt es einen anderen Mechanismus, der Interrupts beeinflussen kann? Wer hat eine Ahnung?
Shai.

Antwort

3

Offenbar in x86, müssen Sie nach jeder Uhr Uhr Interrupts bestätigen. Dh man muss nach jeder Taktunterbrechung eine Bestätigung an den Lapic senden.

0

Wenn Sie Interrupts von der RTC erwarten, müssen Sie den vorherigen Interrupt zuerst durch Lesen von REG_C (CMOS-Register 0x0C) bestätigen.

Verwandte Themen