+\r
+ AsmReadIdtr (&IdtDescriptor);\r
+ IdtEntryCount = (IdtDescriptor.Limit + 1) / sizeof (IA32_IDT_GATE_DESCRIPTOR);\r
+ if (IdtEntryCount < CPU_INTERRUPT_NUM) {\r
+ //\r
+ // Increase Interrupt Descriptor Table and Copy the old IDT table in\r
+ //\r
+ IdtTable = AllocateZeroPool (sizeof (IA32_IDT_GATE_DESCRIPTOR) * CPU_INTERRUPT_NUM);\r
+ ASSERT (IdtTable != NULL);\r
+ CopyMem (IdtTable, (VOID *)IdtDescriptor.Base, sizeof (IA32_IDT_GATE_DESCRIPTOR) * IdtEntryCount);\r
+\r
+ //\r
+ // Load Interrupt Descriptor Table\r
+ //\r
+ IdtDescriptor.Base = (UINTN)IdtTable;\r
+ IdtDescriptor.Limit = (UINT16)(sizeof (IA32_IDT_GATE_DESCRIPTOR) * CPU_INTERRUPT_NUM - 1);\r
+ AsmWriteIdtr (&IdtDescriptor);\r
+ }\r
+\r
+ Status = InitializeCpuExceptionHandlers (VectorInfo);\r