Tôi đang theo một số hướng dẫn và tham khảo đang cố gắng thiết lập hạt nhân của mình. Tôi đã đi qua một số mã không quen thuộc trong một hướng dẫn mà không phải là giải thích nó cả. Đó là mã được Tôi nói với bản đồ các 16 IRQs (0-15)
đến ISR địa điểm 32-47
:Thiết lập ánh xạ IRQ
void irq_remap(void)
{
outportb(0x20, 0x11);
outportb(0xA0, 0x11);
outportb(0x21, 0x20);
outportb(0xA1, 0x28);
outportb(0x21, 0x04);
outportb(0xA1, 0x02);
outportb(0x21, 0x01);
outportb(0xA1, 0x01);
outportb(0x21, 0x0);
outportb(0xA1, 0x0);
}
Mã cho outportb()
được như sau, nhưng tôi đã có một nắm bắt rõ ràng về những gì bạn làm nó:
void outPortB(unsigned short port, unsigned char data)
{
__asm__ __volatile__ ("outb %1, %0" : : "dN" (port), "a" (data));
}
tôi nên đề cập rằng đây là kiến trúc x86 trong chế độ được bảo vệ. Mã nguồn này hoạt động tốt và tôi hiểu nó làm gì, nhưng tôi không hiểu nó làm như thế nào. Ai đó có thể giải thích cho tôi những gì đang xảy ra ở đây, để trong trường hợp tôi cần phải mở rộng về điều này tôi sẽ biết những gì tôi đang làm?
Ồ, đó chính xác là những gì tôi cần. Thanks bunches! –