2013-05-08 4 views
6

Sto scrivendo un kernel (usando qemu per simulare) per x86 come progetto scolastico e mi sono imbattuto in strani problemi. Anche se ho impostato il flag di interrupt nel registro eflags, non ricevo interruzioni di clock (ho controllato con qemu info register command e vedo eflag = 0x292 che significa che è impostato).interrupt hardware x86 non funziona su qemu

Per essere precisi quando eseguo uno spin test (mentre (1); programma) in modalità utente, ottengo un interrupt di clock, ma dopo quello, si interrompe, qemu non sembra simulare di più! è successo a qualcun altro? C'è un altro meccanismo che può influenzare gli interrupt? Qualcuno ha un indizio?
Shai.

risposta

3

Apparentemente in x86, è necessario riconoscere gli interrupt di clock dopo ciascuno di essi. I.e si deve inviare un riconoscimento al lapic dopo ogni interruzione dell'orologio.

0

Se si prevedono interrupt dall'RTC, è necessario prima riconoscere l'interrupt precedente leggendo da REG_C (registro CMOS 0x0C).