Guten Morgen,
Sofort nach dem aktivieren der Tastatur mit "outb(0x60, 0xF4);" wird ein Tastatur IRQ ausgelöst. Danach gehen Interrupts nicht mehr.
Wenn man Interrupts erst nach der Aktivierung anschaltet. Wird nach asm volatile("sti") sofort ein Tastatur IRQ ausgelöst.
Ich glaube eher nicht das es ein Spurious Interrupt ist, weil:
1. Ich den selben Treiber auf tut kernel 5 erfolgreich zum laufen gebracht habe
2. Es unwahrscheinlich ist das immer ein Spurious Interrupt ausgelöst wird
Mein kernel erkennt aber keine Spurious Interrupts
Qemu.log(In der der Inhalt des ISR Registers leider nicht verzeichnet ist):
Sofort nach dem aktivieren der Tastatur mit "outb(0x60, 0xF4);" wird ein Tastatur IRQ ausgelöst. Danach gehen Interrupts nicht mehr.
Wenn man Interrupts erst nach der Aktivierung anschaltet. Wird nach asm volatile("sti") sofort ein Tastatur IRQ ausgelöst.
Ich glaube eher nicht das es ein Spurious Interrupt ist, weil:
1. Ich den selben Treiber auf tut kernel 5 erfolgreich zum laufen gebracht habe
2. Es unwahrscheinlich ist das immer ein Spurious Interrupt ausgelöst wird
Mein kernel erkennt aber keine Spurious Interrupts
Qemu.log(In der der Inhalt des ISR Registers leider nicht verzeichnet ist):
Code: [Auswählen]
SMM: enter
EAX=00000001 EBX=17fe12b0 ECX=02000000 EDX=00000cfc
ESI=000f321d EDI=0003802d EBP=17fe10d0 ESP=00006f08
EIP=000f384b EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA]
CS =0008 00000000 ffffffff 00cf9b00 DPL=0 CS32 [-RA]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA]
DS =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA]
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0000 00000000 0000ffff 00008b00 DPL=0 TSS32-busy
GDT= 000fd3a8 00000037
IDT= 000fd3e6 00000000
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=000f31f0 CCD=00000001 CCO=LOGICB
EFER=0000000000000000
SMM: after RSM
EAX=00000001 EBX=17fe12b0 ECX=02000000 EDX=00000cfc
ESI=000f321d EDI=0003802d EBP=17fe10d0 ESP=00006f08
EIP=000f384b EFL=00000002 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00c09300 DPL=0 DS [-WA]
CS =0008 00000000 ffffffff 00c09b00 DPL=0 CS32 [-RA]
SS =0010 00000000 ffffffff 00c09300 DPL=0 DS [-WA]
DS =0010 00000000 ffffffff 00c09300 DPL=0 DS [-WA]
FS =0010 00000000 ffffffff 00c09300 DPL=0 DS [-WA]
GS =0010 00000000 ffffffff 00c09300 DPL=0 DS [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0000 00000000 0000ffff 00008b00 DPL=0 TSS32-busy
GDT= 000fd3a8 00000037
IDT= 000fd3e6 00000000
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=00000000 CCD=00000000 CCO=EFLAGS
EFER=0000000000000000
0: v=21 e=0000 i=0 cpl=0 IP=0008:0000000000100357 pc=0000000000100357 SP=0010:0000000000104f80 EAX=00000000000000f4
EAX=000000f4 EBX=00036d04 ECX=000b8000 EDX=00000060
ESI=0005d987 EDI=0005d976 EBP=00104fa8 ESP=00104f80
EIP=00100357 EFL=00000202 [-------] CPL=0 II=0 A20=1 SMM=0 HLT=0
ES =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA]
CS =0008 00000000 ffffffff 00cf9a00 DPL=0 CS32 [-R-]
SS =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA]
DS =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA]
FS =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA]
GS =0010 00000000 ffffffff 00cf9300 DPL=0 DS [-WA]
LDT=0000 00000000 0000ffff 00008200 DPL=0 LDT
TR =0000 00000000 0000ffff 00008b00 DPL=0 TSS32-busy
GDT= 00105020 00000027
IDT= 00105060 000007ff
CR0=00000011 CR2=00000000 CR3=00000000 CR4=00000000
DR0=0000000000000000 DR1=0000000000000000 DR2=0000000000000000 DR3=0000000000000000
DR6=00000000ffff0ff0 DR7=0000000000000400
CCS=00000008 CCD=00104f70 CCO=SUBL
EFER=0000000000000000
Im Anhang ist mein OS Quellcode.
Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken

Gespeichert
