Estoy siguiendo varios tutoriales y referencias tratando de configurar mi kernel. Me encontré con un código desconocido en un tutorial que no lo explica en absoluto. Es el código que me han dicho mapea la 16 IRQs (0-15)
al ISR lugares 32-47
:Configuración de mapeo 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);
}
El código para outportb()
es el siguiente, pero ya tengo una idea clara de lo que lo haga:
void outPortB(unsigned short port, unsigned char data)
{
__asm__ __volatile__ ("outb %1, %0" : : "dN" (port), "a" (data));
}
I debería mencionar que esto es en la arquitectura x86 en modo protegido. Este código fuente funciona bien y entiendo lo que hace, pero no entiendo cómo lo hace. ¿Puede alguien explicarme qué está pasando aquí, de modo que en caso de que necesite ampliar esto sabré lo que estoy haciendo?
Guau, eso es exactamente lo que necesitaba. ¡Gracias, racimos! –