Hi, hab mal wieder ein Problem
, ich kann in meinem C Kernel (PM)
keine Interrupts ausführen. Wenn ich z.B. int 16h ausführe,
bleibt mein Kernel stehen, passiert nichts mehr.
Hier mal der Code.
Weiß jemand warum das nicht geht?
Edit:
Bochs meldet dazu:
, ich kann in meinem C Kernel (PM)keine Interrupts ausführen. Wenn ich z.B. int 16h ausführe,
bleibt mein Kernel stehen, passiert nichts mehr.
Hier mal der Code.
Code: [Auswählen]
char IDT[256 * 8];
void LoadIDT();
void begin() {
LoadIDT();
asm("sti\n\tint $0x16");
v_print("Test");
}
void LoadIDT() {
struct {
unsigned int limit;
unsigned int base;
} __attribute__((packed)) idt_ptr = {
.limit = 256*8 - 1,
.base = (unsigned int)IDT,
};
asm("lidt %0" : : "m" (idt_ptr));
}Weiß jemand warum das nicht geht?
Edit:
Bochs meldet dazu:
Code: [Auswählen]
00004421957-i-@000013f9-[CPU0 ] >> int 0x16 : CD16
00004421957-e-@000013f9-[CPU0 ] exception(): 3rd (13) exception with no resolution, shutdown status is 00h, resetting
Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken


Gespeichert
?