#include <pshpack1.h>
#include <poppack.h>
Go to the source code of this file.
◆ GET_IOAPIC_ARB
◆ GET_IOAPIC_ID
◆ GET_IOAPIC_MRE
◆ GET_IOAPIC_VERSION
◆ IOAPIC_ARB
| #define IOAPIC_ARB 0x0002 /* IO APIC Arbitration ID (R) */ |
◆ IOAPIC_ARB_MASK
| #define IOAPIC_ARB_MASK (0xF << 24) |
◆ IOAPIC_DEFAULT_BASE
◆ IOAPIC_ID
◆ IOAPIC_ID_MASK
| #define IOAPIC_ID_MASK (0xF << 24) |
◆ IOAPIC_IOREGSEL
◆ IOAPIC_IOWIN
◆ IOAPIC_MRE_MASK
| #define IOAPIC_MRE_MASK (0xFF << 16) /* Maximum Redirection Entry */ |
◆ IOAPIC_REDTBL
| #define IOAPIC_REDTBL 0x0010 /* Redirection Table (0-23 64-bit registers) (R/W) */ |
◆ IOAPIC_TBL_DELMOD
| #define IOAPIC_TBL_DELMOD (0x7 << 10) /* Delivery Mode (see APIC_DM_*) */ |
◆ IOAPIC_TBL_DF0
◆ IOAPIC_TBL_DF1
◆ IOAPIC_TBL_DM
◆ IOAPIC_TBL_DS
◆ IOAPIC_TBL_IM
◆ IOAPIC_TBL_INTPOL
◆ IOAPIC_TBL_RIRR
| #define IOAPIC_TBL_RIRR (0x1 << 14) /* Remote IRR */ |
◆ IOAPIC_TBL_TM
| #define IOAPIC_TBL_TM (0x1 << 15) /* Trigger Mode */ |
◆ IOAPIC_TBL_VECTOR
| #define IOAPIC_TBL_VECTOR (0xFF << 0) /* Vector (10h - FEh) */ |
◆ IOAPIC_VER
◆ IOAPIC_VER_MASK
| #define IOAPIC_VER_MASK (0xFF) |
◆ SET_IOAPIC_ID
◆ IOAPIC_INFO
◆ IOAPIC_ROUTE_ENTRY
◆ PIOAPIC_INFO
◆ PIOAPIC_ROUTE_ENTRY
◆ HaliReconfigurePciInterrupts()
| VOID HaliReconfigurePciInterrupts |
( |
VOID |
| ) |
|
Definition at line 634 of file ioapic.c.
635{
637
639 {
641 {
642 DPRINT(
"%02lx: IrqType %02x, IrqFlag %04x, SrcBusId %02x"
643 ", SrcBusIrq %02x, DstApicId %02x, DstApicInt %02x\n",
646
649 (
IRQMap[
i].SrcBusIrq >> 2) & 0x1f,
651 0x3c ,
652 1);
653
654 }
655 }
656}
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
ULONG NTAPI HalSetBusDataByOffset(IN BUS_DATA_TYPE BusDataType, IN ULONG BusNumber, IN ULONG SlotNumber, IN PVOID Buffer, IN ULONG Offset, IN ULONG Length)
MP_CONFIGURATION_INTSRC IRQMap[MAX_IRQ_SOURCE]
◆ IOAPICDump()
Definition at line 524 of file ioapic.c.
525{
527 ULONG reg0, reg1, reg2=0;
528
531 {
532 DbgPrint(
"Number of IO-APIC #%d registers: %d.\n",
535 }
536
537
538
539
540
541 DbgPrint(
"Testing the IO APIC.......................\n");
542
544 {
548 {
550 }
551
554 DbgPrint(
".... register #00: %08X\n", reg0);
556 if (reg0 & 0xF0FFFFFF)
557 {
558 DbgPrint(
" WARNING: Unexpected IO-APIC\n");
559 }
560
561 DbgPrint(
".... register #01: %08X\n", reg1);
563
564 DbgPrint(
"....... : max redirection entries: %04X\n",
i);
572 {
573 DbgPrint(
" WARNING: Unexpected IO-APIC\n");
574 }
575
577 DbgPrint(
"....... : IO APIC version: %04X\n",
i);
582 {
583 DbgPrint(
" WARNING: Unexpected IO-APIC\n");
584 }
585
586 if (reg1 & 0xFF00FF00)
587 {
588 DbgPrint(
" WARNING: Unexpected IO-APIC\n");
589 }
590
592 {
593 DbgPrint(
".... register #02: %08X\n", reg2);
594 DbgPrint(
"....... : arbitration: %02X\n",
596 if (reg2 & 0xF0FFFFFF)
597 {
598 DbgPrint(
" WARNING: Unexpected IO-APIC\n");
599 }
600 }
601
602 DbgPrint(
".... IRQ redirection table:\n");
603 DbgPrint(
" NR Log Phy Mask Trig IRR Pol"
604 " Stat Dest Deli Vect: \n");
605
607 {
609
612
615 entry.dest.logical.logical_dest,
616 entry.dest.physical.physical_dest);
617
618 DbgPrint(
"%C %C %1d %C %C %C %03X %02X\n",
619 (
entry.mask == 0) ?
'U' :
'M',
620 (
entry.trigger == 0) ?
'E' :
'L',
622 (
entry.polarity == 0) ?
'H' :
'L',
623 (
entry.delivery_status == 0) ?
'I' :
'S',
624 (
entry.dest_mode == 0) ?
'P' :
'L',
627 }
628 }
629
630 DbgPrint(
".................................... done.\n");
631}
IOAPIC_INFO IOAPICMap[MAX_IOAPIC]
ULONG IOAPICRead(ULONG Apic, ULONG Offset)
#define GET_IOAPIC_ARB(x)
#define GET_IOAPIC_VERSION(x)
#define GET_IOAPIC_MRE(x)
_Must_inspect_result_ typedef _In_ ULONG ApicId
◆ IOAPICEnable()
Definition at line 409 of file ioapic.c.
410{
412
413
415
416
417
418
420 {
423 }
424
425
426
427
429}
ULONG IRQVectorMap[MAX_IRQ_SOURCE]
static VOID IOAPICClearAll(VOID)
Referenced by HalAllProcessorsStarted().
◆ IOAPICMaskIrq()
Definition at line 494 of file ioapic.c.
495{
498
502 if (
Entry.dest.logical.logical_dest == 0)
503 {
505 }
508}
ULONG IrqApicMap[MAX_IRQ_SOURCE]
VOID IOAPICWrite(ULONG Apic, ULONG Offset, ULONG Value)
FORCEINLINE ULONG KeGetCurrentProcessorNumber(VOID)
Referenced by HalDisableSystemInterrupt().
◆ IOAPICSetupIds()
Definition at line 432 of file ioapic.c.
433{
436
437
438
439
441 {
442
443
445
447
449 {
453 }
454
455
456
457
458
460 {
462 {
463 if (
IRQMap[
i].DstApicId == old_id)
464 {
466 }
467 }
468 }
469
470
471
472
473
475
476 tmp &= ~IOAPIC_ID_MASK;
478
480
481
482
483
486 {
487 DPRINT1(
"Could not set I/O APIC ID!\n");
489 }
490 }
491}
Referenced by HalAllProcessorsStarted().
◆ IOAPICSetupIrqs()
Definition at line 296 of file ioapic.c.
297{
300
301 DPRINT(
"Init IO_APIC IRQs\n");
302
303
305
307 {
309 {
310
311
312
314
315 entry.delivery_mode = (APIC_DM_LOWEST >> 8);
318 entry.dest.logical.logical_dest = 0;
319
322 {
323 if (first_notcon)
324 {
326 first_notcon = 0;
327 }
328 else
329 {
331 }
332 continue;
333 }
334
337
338 if (trigger)
339 {
341 }
342
344
347
349
351 {
352
354 }
355
356 if ((apic == 0) && (
irq < 16))
357 {
359 }
362
364
366 }
367 }
368}
static ULONG Pin2Irq(ULONG idx, ULONG apic, ULONG pin)
static ULONG IOAPICGetIrqEntry(ULONG apic, ULONG pin, ULONG type)
static ULONG IRQPolarity(ULONG idx)
static ULONG IRQTrigger(ULONG idx)
VOID Disable8259AIrq(ULONG irq)
static ULONG AssignIrqVector(ULONG irq)
Referenced by HalAllProcessorsStarted().
◆ IOAPICUnmaskIrq()
◆ APICMode
◆ BUSMap
◆ IOAPICCount
◆ IOAPICMap
◆ IRQCount
◆ IRQMap
◆ PCIBUSMap