From: Kevin O'Connor Date: Sat, 14 Nov 2009 18:49:06 +0000 (-0500) Subject: Add MPS entries for LINT interrupts. X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=commitdiff_plain;h=b021a57b6af2e1f055391b1d813f7e3a94f41b54;p=seabios.git Add MPS entries for LINT interrupts. Signed-off-by: Magnus Christensson --- diff --git a/src/mptable.c b/src/mptable.c index 8d6db59..1920dfe 100644 --- a/src/mptable.c +++ b/src/mptable.c @@ -23,7 +23,7 @@ mptable_init(void) + sizeof(struct mpt_cpu) * MaxCountCPUs + sizeof(struct mpt_bus) + sizeof(struct mpt_ioapic) - + sizeof(struct mpt_intsrc) * 16); + + sizeof(struct mpt_intsrc) * 18); struct mptable_config_s *config = malloc_fseg(length); struct mptable_floating_s *floating = malloc_fseg(sizeof(*floating)); if (!config || !floating) { @@ -119,6 +119,27 @@ mptable_init(void) } entrycount += intsrc - intsrcs; + /* Local interrupt assignment */ + intsrc->type = MPT_TYPE_LOCAL_INT; + intsrc->irqtype = 3; /* ExtINT */ + intsrc->irqflag = 0; /* PO, EL default */ + intsrc->srcbus = 0; + intsrc->srcbusirq = 0; + intsrc->dstapic = 0; /* BSP == APIC #0 */ + intsrc->dstirq = 0; /* LINTIN0 */ + intsrc++; + entrycount++; + + intsrc->type = MPT_TYPE_LOCAL_INT; + intsrc->irqtype = 1; /* NMI */ + intsrc->irqflag = 0; /* PO, EL default */ + intsrc->srcbus = 0; + intsrc->srcbusirq = 0; + intsrc->dstapic = 0; /* BSP == APIC #0 */ + intsrc->dstirq = 1; /* LINTIN1 */ + intsrc++; + entrycount++; + // Finalize config structure. config->entrycount = entrycount; config->length = (void*)intsrc - (void*)config; diff --git a/src/mptable.h b/src/mptable.h index 4c4d52f..c4e3c51 100644 --- a/src/mptable.h +++ b/src/mptable.h @@ -38,6 +38,7 @@ struct mptable_config_s { #define MPT_TYPE_BUS 1 #define MPT_TYPE_IOAPIC 2 #define MPT_TYPE_INTSRC 3 +#define MPT_TYPE_LOCAL_INT 4 struct mpt_cpu { u8 type;