mirror of
https://github.com/justinian/jsix.git
synced 2025-12-10 08:24:32 -08:00
Increase to 64 IRQs
This commit is contained in:
@@ -19,6 +19,10 @@ SECTIONS
|
|||||||
*(.rodata)
|
*(.rodata)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.isrs : {
|
||||||
|
*(.isrs)
|
||||||
|
}
|
||||||
|
|
||||||
.bss ALIGN(0x1000) : {
|
.bss ALIGN(0x1000) : {
|
||||||
__bss_start = .;
|
__bss_start = .;
|
||||||
*(.bss)
|
*(.bss)
|
||||||
|
|||||||
@@ -127,7 +127,7 @@ ioapic::ioapic(uint32_t *base, uint32_t base_gsi) :
|
|||||||
|
|
||||||
for (uint8_t i = 0; i < m_num_gsi; ++i) {
|
for (uint8_t i = 0; i < m_num_gsi; ++i) {
|
||||||
uint16_t flags = (i < 0x10) ? 0 : 0xf;
|
uint16_t flags = (i < 0x10) ? 0 : 0xf;
|
||||||
isr vector = isr::irq0 + i;
|
isr vector = isr::irq00 + i;
|
||||||
redirect(i, vector, flags, true);
|
redirect(i, vector, flags, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -175,7 +175,7 @@ device_manager::load_apic(const acpi_apic *apic)
|
|||||||
|
|
||||||
case 2: { // Interrupt source override
|
case 2: { // Interrupt source override
|
||||||
uint8_t source = kutil::read_from<uint8_t>(p+3);
|
uint8_t source = kutil::read_from<uint8_t>(p+3);
|
||||||
isr gsi = isr::irq0 + kutil::read_from<uint32_t>(p+4);
|
isr gsi = isr::irq00 + kutil::read_from<uint32_t>(p+4);
|
||||||
uint16_t flags = kutil::read_from<uint16_t>(p+8);
|
uint16_t flags = kutil::read_from<uint16_t>(p+8);
|
||||||
|
|
||||||
log::debug(logs::devices, " Intr source override IRQ %d -> %d Pol %d Tri %d",
|
log::debug(logs::devices, " Intr source override IRQ %d -> %d Pol %d Tri %d",
|
||||||
|
|||||||
@@ -1,64 +1,109 @@
|
|||||||
ISR ( 0, isr0)
|
ISR (0x00, isrDivideByZero)
|
||||||
ISR ( 1, isr1)
|
ISR (0x01, isrDebug)
|
||||||
ISR ( 2, isr2)
|
ISR (0x02, isrNMI)
|
||||||
ISR ( 3, isr3)
|
ISR (0x03, isrBreakpoint)
|
||||||
ISR ( 4, isr4)
|
ISR (0x04, isrOverflow)
|
||||||
ISR ( 5, isr5)
|
ISR (0x05, isrBRE)
|
||||||
ISR ( 6, isr6)
|
ISR (0x06, isrInvalidOp)
|
||||||
ISR ( 7, isr7)
|
ISR (0x07, isrDNA)
|
||||||
EISR( 8, isr8)
|
EISR(0x08, isrDoubleFault)
|
||||||
ISR ( 9, isr9)
|
ISR (0x09, isrCoprocessor)
|
||||||
EISR(10, isr10)
|
EISR(0x0a, isrInvalidTSS)
|
||||||
EISR(11, isr11)
|
EISR(0x0b, isrSegmentNP)
|
||||||
EISR(12, isr12)
|
EISR(0x0c, isrSSFault)
|
||||||
EISR(13, isr13)
|
EISR(0x0d, isrGPFault)
|
||||||
EISR(14, isr14)
|
EISR(0x0e, isrPageFault)
|
||||||
ISR (15, isr15)
|
ISR (0x0f, isr15)
|
||||||
ISR (16, isr16)
|
|
||||||
ISR (17, isr17)
|
|
||||||
ISR (18, isr18)
|
|
||||||
ISR (19, isr19)
|
|
||||||
ISR (20, isr20)
|
|
||||||
ISR (21, isr21)
|
|
||||||
ISR (22, isr22)
|
|
||||||
ISR (23, isr23)
|
|
||||||
ISR (24, isr24)
|
|
||||||
ISR (25, isr25)
|
|
||||||
ISR (26, isr26)
|
|
||||||
ISR (27, isr27)
|
|
||||||
ISR (28, isr28)
|
|
||||||
ISR (29, isr29)
|
|
||||||
ISR (30, isr30)
|
|
||||||
ISR (31, isr31)
|
|
||||||
|
|
||||||
IRQ (64, 0, irq0)
|
ISR (0x10, isrX87FPE)
|
||||||
IRQ (65, 1, irq1)
|
ISR (0x11, isrAlignmentChk)
|
||||||
IRQ (66, 2, irq2)
|
ISR (0x12, isrMachineChk)
|
||||||
IRQ (67, 3, irq3)
|
ISR (0x13, isrSIMDFPE)
|
||||||
IRQ (68, 4, irq4)
|
ISR (0x14, isrVirt)
|
||||||
IRQ (69, 5, irq5)
|
ISR (0x15, isr21)
|
||||||
IRQ (70, 6, irq6)
|
ISR (0x16, isr22)
|
||||||
IRQ (71, 7, irq7)
|
ISR (0x17, isr23)
|
||||||
IRQ (72, 8, irq8)
|
ISR (0x18, isr24)
|
||||||
IRQ (73, 9, irq9)
|
ISR (0x19, isr25)
|
||||||
IRQ (74, 10, irq10)
|
ISR (0x1a, isr26)
|
||||||
IRQ (75, 11, irq11)
|
ISR (0x1b, isr27)
|
||||||
IRQ (76, 12, irq12)
|
ISR (0x1c, isr28)
|
||||||
IRQ (77, 13, irq13)
|
ISR (0x1d, isr29)
|
||||||
IRQ (78, 14, irq14)
|
ISR (0x1e, isrSecurity)
|
||||||
IRQ (79, 15, irq15)
|
ISR (0x1f, isr31)
|
||||||
IRQ (80, 16, irq16)
|
|
||||||
IRQ (81, 17, irq17)
|
|
||||||
IRQ (82, 18, irq18)
|
|
||||||
IRQ (83, 19, irq19)
|
|
||||||
IRQ (84, 20, irq20)
|
|
||||||
IRQ (85, 21, irq21)
|
|
||||||
IRQ (86, 22, irq22)
|
|
||||||
|
|
||||||
ISR (0x7c, isrTimer)
|
IRQ (0x20, 0x00, irq00)
|
||||||
ISR (0x7d, isrLINT0)
|
IRQ (0x21, 0x01, irq01)
|
||||||
ISR (0x7e, isrLINT1)
|
IRQ (0x22, 0x02, irq02)
|
||||||
ISR (0x7f, isrSpurious)
|
IRQ (0x23, 0x03, irq03)
|
||||||
|
IRQ (0x24, 0x04, irq04)
|
||||||
|
IRQ (0x25, 0x05, irq05)
|
||||||
|
IRQ (0x26, 0x06, irq06)
|
||||||
|
IRQ (0x27, 0x07, irq07)
|
||||||
|
IRQ (0x28, 0x08, irq08)
|
||||||
|
IRQ (0x29, 0x09, irq09)
|
||||||
|
IRQ (0x2a, 0x0a, irq0A)
|
||||||
|
IRQ (0x2b, 0x0b, irq0B)
|
||||||
|
IRQ (0x2c, 0x0c, irq0C)
|
||||||
|
IRQ (0x2d, 0x0d, irq0D)
|
||||||
|
IRQ (0x2e, 0x0e, irq0E)
|
||||||
|
IRQ (0x2f, 0x0f, irq0F)
|
||||||
|
|
||||||
|
IRQ (0x30, 0x10, irq10)
|
||||||
|
IRQ (0x31, 0x11, irq11)
|
||||||
|
IRQ (0x32, 0x12, irq12)
|
||||||
|
IRQ (0x33, 0x13, irq13)
|
||||||
|
IRQ (0x34, 0x14, irq14)
|
||||||
|
IRQ (0x35, 0x15, irq15)
|
||||||
|
IRQ (0x36, 0x16, irq16)
|
||||||
|
IRQ (0x37, 0x17, irq17)
|
||||||
|
IRQ (0x38, 0x18, irq18)
|
||||||
|
IRQ (0x39, 0x19, irq19)
|
||||||
|
IRQ (0x3a, 0x1a, irq1A)
|
||||||
|
IRQ (0x3b, 0x1b, irq1B)
|
||||||
|
IRQ (0x3c, 0x1c, irq1C)
|
||||||
|
IRQ (0x3d, 0x1d, irq1D)
|
||||||
|
IRQ (0x3e, 0x1e, irq1E)
|
||||||
|
IRQ (0x3f, 0x1f, irq1F)
|
||||||
|
|
||||||
|
IRQ (0x40, 0x20, irq20)
|
||||||
|
IRQ (0x41, 0x21, irq21)
|
||||||
|
IRQ (0x42, 0x22, irq22)
|
||||||
|
IRQ (0x43, 0x23, irq23)
|
||||||
|
IRQ (0x44, 0x24, irq24)
|
||||||
|
IRQ (0x45, 0x25, irq25)
|
||||||
|
IRQ (0x46, 0x26, irq26)
|
||||||
|
IRQ (0x47, 0x27, irq27)
|
||||||
|
IRQ (0x48, 0x28, irq28)
|
||||||
|
IRQ (0x49, 0x29, irq29)
|
||||||
|
IRQ (0x4a, 0x2a, irq2A)
|
||||||
|
IRQ (0x4b, 0x2b, irq2B)
|
||||||
|
IRQ (0x4c, 0x2c, irq2C)
|
||||||
|
IRQ (0x4d, 0x2d, irq2D)
|
||||||
|
IRQ (0x4e, 0x2e, irq2E)
|
||||||
|
IRQ (0x4f, 0x2f, irq2F)
|
||||||
|
|
||||||
|
IRQ (0x50, 0x30, irq30)
|
||||||
|
IRQ (0x51, 0x31, irq31)
|
||||||
|
IRQ (0x52, 0x32, irq32)
|
||||||
|
IRQ (0x53, 0x33, irq33)
|
||||||
|
IRQ (0x54, 0x34, irq34)
|
||||||
|
IRQ (0x55, 0x35, irq35)
|
||||||
|
IRQ (0x56, 0x36, irq36)
|
||||||
|
IRQ (0x57, 0x37, irq37)
|
||||||
|
IRQ (0x58, 0x38, irq38)
|
||||||
|
IRQ (0x59, 0x39, irq39)
|
||||||
|
IRQ (0x5a, 0x3a, irq3A)
|
||||||
|
IRQ (0x5b, 0x3b, irq3B)
|
||||||
|
IRQ (0x5c, 0x3c, irq3C)
|
||||||
|
IRQ (0x5d, 0x3d, irq3D)
|
||||||
|
IRQ (0x5e, 0x3e, irq3E)
|
||||||
|
IRQ (0x5f, 0x3f, irq3F)
|
||||||
|
|
||||||
|
ISR (0xec, isrTimer)
|
||||||
|
ISR (0xed, isrLINT0)
|
||||||
|
ISR (0xee, isrLINT1)
|
||||||
|
ISR (0xef, isrSpurious)
|
||||||
|
|
||||||
ISR (0xf0, isrIgnore0)
|
ISR (0xf0, isrIgnore0)
|
||||||
ISR (0xf1, isrIgnore1)
|
ISR (0xf1, isrIgnore1)
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ disable_legacy_pic()
|
|||||||
|
|
||||||
// Remap into ignore ISRs
|
// Remap into ignore ISRs
|
||||||
outb(PIC1+1, static_cast<uint8_t>(isr::isrIgnore0)); io_wait();
|
outb(PIC1+1, static_cast<uint8_t>(isr::isrIgnore0)); io_wait();
|
||||||
outb(PIC2+1, static_cast<uint8_t>(isr::isrIgnore8)); io_wait();
|
outb(PIC2+1, static_cast<uint8_t>(isr::isrIgnore0)); io_wait();
|
||||||
|
|
||||||
// Tell PICs about each other
|
// Tell PICs about each other
|
||||||
outb(PIC1+1, 0x04); io_wait();
|
outb(PIC1+1, 0x04); io_wait();
|
||||||
@@ -236,14 +236,7 @@ isr_handler(registers regs)
|
|||||||
case isr::isrIgnore5:
|
case isr::isrIgnore5:
|
||||||
case isr::isrIgnore6:
|
case isr::isrIgnore6:
|
||||||
case isr::isrIgnore7:
|
case isr::isrIgnore7:
|
||||||
case isr::isrIgnore8:
|
|
||||||
case isr::isrIgnore9:
|
|
||||||
case isr::isrIgnoreA:
|
|
||||||
case isr::isrIgnoreB:
|
|
||||||
case isr::isrIgnoreC:
|
|
||||||
case isr::isrIgnoreD:
|
|
||||||
case isr::isrIgnoreE:
|
|
||||||
case isr::isrIgnoreF:
|
|
||||||
/*
|
/*
|
||||||
cons->printf("\nIGNORED PIC INTERRUPT %d\n",
|
cons->printf("\nIGNORED PIC INTERRUPT %d\n",
|
||||||
(regs.interrupt % 0xff) - 0xf0);
|
(regs.interrupt % 0xff) - 0xf0);
|
||||||
|
|||||||
@@ -118,4 +118,5 @@ irq_handler_prelude:
|
|||||||
%define ISR(i, name) EMIT_ISR name, i
|
%define ISR(i, name) EMIT_ISR name, i
|
||||||
%define IRQ(i, q, name) EMIT_IRQ name, i
|
%define IRQ(i, q, name) EMIT_IRQ name, i
|
||||||
|
|
||||||
|
section .isrs
|
||||||
%include "interrupt_isrs.inc"
|
%include "interrupt_isrs.inc"
|
||||||
|
|||||||
Reference in New Issue
Block a user