Also ich habe die IRQs in meiner init.c folgendermaßen (siehe unten) am PIC initialisiert und demaskiert und außerdem auch die Hardwareinterrupts (sti) eingeschaltet. Aber ich bekomme trotz Handling in meinem common InterruptHandler mit:
if (cpu->intr <= 0x1f) {
// kprintf("Exception %d, Kernel angehalten!\n", cpu->intr);
kputs("Exception: n/a, Kernel angehalten!\n");
// Hier den CPU-Zustand ausgeben
while(1) {
// Prozessor anhalten
asm volatile("cli; hlt");
}
} else {
// Hier den Hardwareinterrupt behandeln
kputs("Hardwareinterrupt");
if (cpu->intr >= 0x20 && cpu->intr <= 0x2f) {
if (cpu->intr == 0x20) {
kputs("Timerinterrupt");
}
if (cpu->intr == 0x21) {
kputs("Tastaturinterrupt");
}
if (cpu->intr >= 0x28) {
outb(0xa0, 0x20); // End of Interrupt: Slave PIC
}
outb(0x20, 0x20); // End of Interrupt: Master PIC
}
}
irgendwie keine Ausgabe...
Hier mal meine init.c:
#include "console.h"
#include "gdt.h"
#include "idt.h"
#include "keyboard.h"
static inline void outb(unsigned short port, unsigned char data)
{
asm volatile ("outb %0, %1" : : "a" (data), "Nd" (port));
}
void init(void)
{
// Global Descriptor Table initialisieren
init_gdt();
// Master-PIC initialisieren ( nur 7 IRQs )
outb(0x20, 0x11); // Initialisierungsbefehl fuer den PIC | CmdPort: 0x20
outb(0x21, 0x20); // Interruptnummer fuer IRQ 0 | DataPort: 0x21
outb(0x21, 0x04); // An IRQ 4 haengt der Master ?!
outb(0x21, 0x01); // ICW 4
// Slave-PIC initialisieren ( restliche IRQs )
outb(0xa0, 0x11); // Initialisierungsbefehl fuer den PIC | CmdPort: 0xA0
outb(0xa1, 0x28); // Interruptnummer fuer IRQ 8 | DataPort: 0xA1
outb(0xa1, 0x02); // An IRQ 2 haengt der Slave
outb(0xa1, 0x01); // ICW 4
// Alle IRQs aktivieren (demaskieren)
outb(0x20, 0x0);
outb(0xa0, 0x0);
// Interrupt Descriptor Table initialisieren
init_idt();
init_keyboard();
// Test Things
clrscr();
kputc('A', 0x01, 0, 0);
kputs("Hello World");
kputc('B', 0x04, 4, 5);
kputs("Test\n");
kputs("New Line?");
int a = kprintf("test\n");
kputn(a, 10);
// Aktivieren von Hardware Interrupts
asm volatile("sti");
}
Vielen Dank schonmal im Vorraus
s137