mirror of
https://github.com/reactos/reactos.git
synced 2024-06-25 15:31:47 +00:00
44 lines
1.3 KiB
C
44 lines
1.3 KiB
C
|
|
#include <freeldr.h>
|
|
|
|
|
|
KIDTENTRY DECLSPEC_ALIGN(4) i386Idt[32];
|
|
KDESCRIPTOR i386IdtDescriptor = {0, 255, (ULONG)i386Idt};
|
|
|
|
static
|
|
void
|
|
InitIdtVector(
|
|
UCHAR Vector,
|
|
PVOID ServiceHandler,
|
|
USHORT Access)
|
|
{
|
|
i386Idt[Vector].Offset = (ULONG)ServiceHandler & 0xffff;
|
|
i386Idt[Vector].ExtendedOffset = (ULONG)ServiceHandler >> 16;
|
|
i386Idt[Vector].Selector = PMODE_CS;
|
|
i386Idt[Vector].Access = Access;
|
|
}
|
|
|
|
void
|
|
__cdecl
|
|
InitIdt(void)
|
|
{
|
|
InitIdtVector(0, i386DivideByZero, 0x8e00);
|
|
InitIdtVector(1, i386DebugException, 0x8e00);
|
|
InitIdtVector(2, i386NMIException, 0x8e00);
|
|
InitIdtVector(3, i386Breakpoint, 0x8e00);
|
|
InitIdtVector(4, i386Overflow, 0x8e00);
|
|
InitIdtVector(5, i386BoundException, 0x8e00);
|
|
InitIdtVector(6, i386InvalidOpcode, 0x8e00);
|
|
InitIdtVector(7, i386FPUNotAvailable, 0x8e00);
|
|
InitIdtVector(8, i386DoubleFault, 0x8e00);
|
|
InitIdtVector(9, i386CoprocessorSegment, 0x8e00);
|
|
InitIdtVector(10, i386InvalidTSS, 0x8e00);
|
|
InitIdtVector(11, i386SegmentNotPresent, 0x8e00);
|
|
InitIdtVector(12, i386StackException, 0x8e00);
|
|
InitIdtVector(13, i386GeneralProtectionFault, 0x8e00);
|
|
InitIdtVector(14, i386PageFault, 0x8e00);
|
|
InitIdtVector(16, i386CoprocessorError, 0x8e00);
|
|
InitIdtVector(17, i386AlignmentCheck, 0x8e00);
|
|
InitIdtVector(18, i386MachineCheck, 0x8e00);
|
|
}
|