COBE 0.1 ALPHA

D:/COBE-Packet/cobe/system/pic.c

gehe zur Dokumentation dieser Datei
00001 #include <io.h>
00002 #include <pic.h>
00003 #include <stdio.h>
00004 
00006 
00007 void pic_remap(unsigned int itr_num) {
00008         //----------Initialisierung des PIC----------
00009         outb(PIC_MASTER_COMMAND, 0x11);
00010         outb(PIC_SLAVE_COMMAND, 0x11);
00011 
00012         //----------Setze Die Addresse für IRQ0 und IRQ8, üblicherweise 32 bzw. 0x20, um an die Exceptions anzuschließen----------
00013         outb(PIC_MASTER_DATA, itr_num);
00014         outb(PIC_SLAVE_DATA, itr_num+8);
00015 
00016         //----------Setzt IRQ2 als Leitung zum 2. PIC, Standard bei Personal Computer----------
00017         outb(PIC_MASTER_DATA, 0x04);
00018         outb(PIC_SLAVE_DATA, 0x02);
00019 
00020         //----------Wir befinden uns im x86-Modus----------
00021         outb(PIC_MASTER_DATA, 0x01);
00022         outb(PIC_SLAVE_DATA, 0x01);
00023         return;
00024 }
00025 
00027 
00028 void pic_mask_irqs(unsigned short mask) {
00029         //----------Die Bitmaske wird an das Interrupt-Mask-Register gesendet-----------
00030         outb(PIC_MASTER_IMR, (uint8_t) mask);
00031         outb(PIC_SLAVE_IMR, (uint8_t) mask>>8);
00032         return;
00033 }
00034 
00036 
00037 void pic_send_eoi(unsigned int irq_num) {
00038         //----------Sendet ein EOI an den jeweiligen PIC-Chip----------
00039         outb(PIC_MASTER_COMMAND, EOI);
00040         if (irq_num > 7) outb(PIC_SLAVE_COMMAND, EOI);
00041         return;
00042 }
00043 
00045 
00046 void init_pic() {
00047         pic_remap(0x20);
00048         pic_mask_irqs(0x1);
00049         pic_send_eoi(0x02);
00050         return;
00051 }
 Alle Datenstrukturen Dateien Funktionen Variablen Typdefinitionen Makrodefinitionen