2013-05-08 27 views
6

Bir okul projesi olarak x86 için bir çekirdek (benzetim yapmak için qemu kullanarak) yazıyorum ve garip bir problemle karşılaştım. Kesme işaretini eflags kaydına koymuş olmama rağmen, herhangi bir saat kesintisi almıyorum (qemu info register komutu ile kontrol ettim ve eflag = 0x292'yi görüyorum).x86 donanım Interrupt çalışmıyor qemu

Kullanıcı modunda bir spin testi (while (1); program) çalıştırdığımda kesin olmak gerekirse, bir saat kesintisi alıyorum, ancak bundan sonra durur, qemu daha fazla benzeşiyor gibi görünmüyor! kimseye oldu mu? Kesmeleri etkileyebilecek başka bir mekanizma var mı? Herkesin bir ipucu var mı?
Shai.

cevap

3

Görünüşe göre x86'da, her birinin ardından saat kesintilerini kabul etmelisiniz. I.e, her saat kesintisinden sonra bir lapic'e bir bildirimde bulunulmalıdır.

0

RTC'den kesmeleri bekliyorsanız, önce REG_C'den (CMOS register 0x0C) okuyarak önceki kesme işlemini kabul etmeniz gerekir.