2013-05-08 16 views
6

Piszę jądro (używając qemu do symulacji) dla x86 jako projektu szkolnego i wpadłem na dziwny problem. Mimo że ustawiłem flagę przerwania w rejestrze eflags, to nie mam żadnych przerwań zegara (sprawdziłem za pomocą polecenia qemu info register i widzę eflag = 0x292, co oznacza, że ​​jest ustawione).Przerwa sprzętowa x86 nie działa na qemu

Aby być precyzyjnym, gdy uruchomię test wirowania (podczas (1), program) w trybie użytkownika, otrzymuję jedno przerwanie zegara, ale po tym przestaje, qemu nie wydaje się symulować więcej! czy stało się to komuś innemu? Czy istnieje inny mechanizm, który może wpływać na przerwania? Ktoś ma jakąś wskazówkę?
Shai.

Odpowiedz

3

Najwyraźniej w x86, musisz potwierdzić przerwania zegara po każdym. To znaczy, muszę wysłać potwierdzenie do lapica po każdym przerwaniu zegara.

0

Jeśli oczekujesz przerwania z RTC, musisz najpierw potwierdzić poprzednie przerwanie, odczytując z REG_C (rejestr CMOS 0x0C).

Powiązane problemy