37 FAST486_SEG_REGS SegmentReg,
44 PFAST486_SEG_REG CachedDescriptor;
45 FAST486_EXCEPTIONS Exception = SegmentReg != FAST486_REG_SS
46 ? FAST486_EXCEPTION_GP : FAST486_EXCEPTION_SS;
51 CachedDescriptor = &
State->SegmentRegs[SegmentReg];
53 if (InstFetch || CachedDescriptor->Executable || !CachedDescriptor->DirConf)
55 if ((
Offset +
Size - 1) > CachedDescriptor->Limit)
58 Fast486Exception(
State, Exception);
64 if (Offset < CachedDescriptor->
Limit)
67 Fast486Exception(
State, Exception);
77 if (!CachedDescriptor->Present)
79 Fast486Exception(
State, Exception);
83 if ((!InstFetch && (CachedDescriptor->Rpl > CachedDescriptor->Dpl))
84 || (Fast486GetCurrentPrivLevel(
State) > CachedDescriptor->Dpl))
86 Fast486Exception(
State, Exception);
92 if (!CachedDescriptor->Executable)
95 Fast486Exception(
State, Exception);
101 if (CachedDescriptor->Executable && (!CachedDescriptor->ReadWrite))
104 Fast486Exception(
State, Exception);
111 LinearAddress = CachedDescriptor->Base +
Offset;
113#ifndef FAST486_NO_PREFETCH
116 State->PrefetchAddress = LinearAddress;
134 if (Fast486ReadLinearMemory(
State,
135 State->PrefetchAddress,
136 State->PrefetchCache,
143 &
State->PrefetchCache[LinearAddress -
State->PrefetchAddress],
164 FAST486_SEG_REGS SegmentReg,
170 PFAST486_SEG_REG CachedDescriptor;
171 FAST486_EXCEPTIONS Exception = SegmentReg != FAST486_REG_SS
172 ? FAST486_EXCEPTION_GP : FAST486_EXCEPTION_SS;
177 CachedDescriptor = &
State->SegmentRegs[SegmentReg];
179 if (CachedDescriptor->Executable || !CachedDescriptor->DirConf)
181 if ((
Offset +
Size - 1) > CachedDescriptor->Limit)
184 Fast486Exception(
State, Exception);
190 if (Offset < CachedDescriptor->
Limit)
193 Fast486Exception(
State, Exception);
203 if (!CachedDescriptor->Present)
205 Fast486Exception(
State, Exception);
209 if ((CachedDescriptor->Rpl > CachedDescriptor->Dpl)
210 || (Fast486GetCurrentPrivLevel(
State) > CachedDescriptor->Dpl))
212 Fast486Exception(
State, Exception);
216 if (CachedDescriptor->Executable)
219 Fast486Exception(
State, Exception);
222 else if (!CachedDescriptor->ReadWrite)
225 Fast486Exception(
State, Exception);
231 LinearAddress = CachedDescriptor->Base +
Offset;
233#ifndef FAST486_NO_PREFETCH
234 if (
State->PrefetchValid
235 && (LinearAddress >=
State->PrefetchAddress)
253 PFAST486_IDT_ENTRY IdtEntry)
259 if (!Fast486ReadLinearMemory(
State,
261 +
Number *
sizeof(*IdtEntry),
278 +
Number *
sizeof(FarPointer),
283 IdtEntry->Offset =
LOWORD(FarPointer);
284 IdtEntry->Selector =
HIWORD(FarPointer);
287 IdtEntry->Storage =
FALSE;
289 IdtEntry->Present =
TRUE;
290 IdtEntry->OffsetHigh = 0;
299 PFAST486_IDT_ENTRY IdtEntry,
305 USHORT OldCs =
State->SegmentRegs[FAST486_REG_CS].Selector;
313 USHORT OldSs =
State->SegmentRegs[FAST486_REG_SS].Selector;
314 ULONG OldEsp =
State->GeneralRegs[FAST486_REG_ESP].Long;
333 PFAST486_LEGACY_TSS LegacyTss = (PFAST486_LEGACY_TSS)&Tss;
338 if (!Fast486ReadLinearMemory(
State,
341 State->TaskReg.Modern
342 ?
sizeof(FAST486_TSS) :
sizeof(FAST486_LEGACY_TSS),
360 if (
State->TaskReg.Modern)
367 NewSs = LegacyTss->Ss0;
368 NewEsp = LegacyTss->Sp0;
376 if (
State->TaskReg.Modern)
383 NewSs = LegacyTss->Ss1;
384 NewEsp = LegacyTss->Sp1;
392 if (
State->TaskReg.Modern)
399 NewSs = LegacyTss->Ss2;
400 NewEsp = LegacyTss->Sp2;
413 if (!Fast486LoadSegment(
State, FAST486_REG_SS, NewSs))
419 State->GeneralRegs[FAST486_REG_ESP].Long = NewEsp;
423 if (!Fast486LoadSegment(
State, FAST486_REG_CS, IdtEntry->Selector))
432 State->InstPtr.Long =
MAKELONG(IdtEntry->Offset, IdtEntry->OffsetHigh);
437 State->InstPtr.LowWord = IdtEntry->Offset;
446 if (!Fast486StackPushInternal(
State,
448 State->SegmentRegs[FAST486_REG_GS].Selector))
452 if (!Fast486StackPushInternal(
State,
454 State->SegmentRegs[FAST486_REG_FS].Selector))
458 if (!Fast486StackPushInternal(
State,
460 State->SegmentRegs[FAST486_REG_DS].Selector))
464 if (!Fast486StackPushInternal(
State,
466 State->SegmentRegs[FAST486_REG_ES].Selector))
472 if (!Fast486LoadSegment(
State, FAST486_REG_GS, 0))
return FALSE;
473 if (!Fast486LoadSegment(
State, FAST486_REG_FS, 0))
return FALSE;
474 if (!Fast486LoadSegment(
State, FAST486_REG_DS, 0))
return FALSE;
475 if (!Fast486LoadSegment(
State, FAST486_REG_ES, 0))
return FALSE;
482 if (!Fast486StackPushInternal(
State, GateSize, OldSs))
return FALSE;
485 if (!Fast486StackPushInternal(
State, GateSize, OldEsp))
return FALSE;
491 if (!Fast486LoadSegment(
State, FAST486_REG_CS, IdtEntry->Selector))
498 State->InstPtr.LowWord = IdtEntry->Offset;
505 if (!Fast486StackPushInternal(
State, GateSize, OldCs))
return FALSE;
508 if (!Fast486StackPushInternal(
State, GateSize, OldEip))
return FALSE;
536 FAST486_IDT_ENTRY IdtEntry;
561 FAST486_IDT_ENTRY IdtEntry;
564 State->ExceptionCount++;
567 if (
State->ExceptionCount > 1)
574 if (
State->ExceptionCount == 3)
576 DPRINT(
"Fast486ExceptionWithErrorCode(%04X:%08X) -- Triple fault\n",
577 State->SegmentRegs[FAST486_REG_CS].Selector,
578 State->InstPtr.Long);
586 State->PrefixFlags = 0;
592 State->GeneralRegs[FAST486_REG_ESP] =
State->SavedStackPtr;
619 State->ExceptionCount = 0;
628 FAST486_SYSTEM_DESCRIPTOR NewTssDescriptor;
630 PFAST486_LEGACY_TSS OldLegacyTss = (PFAST486_LEGACY_TSS)&OldTss;
632 PFAST486_LEGACY_TSS NewLegacyTss = (PFAST486_LEGACY_TSS)&NewTss;
633 USHORT NewLdtr, NewEs, NewCs, NewSs, NewDs;
635 if ((
State->TaskReg.Modern &&
State->TaskReg.Limit < (
sizeof(FAST486_TSS) - 1))
636 || (!
State->TaskReg.Modern &&
State->TaskReg.Limit < (
sizeof(FAST486_LEGACY_TSS) - 1)))
644 if (!Fast486ReadLinearMemory(
State,
647 State->TaskReg.Modern
648 ?
sizeof(FAST486_TSS) :
sizeof(FAST486_LEGACY_TSS),
659 if (
State->TaskReg.Modern) Selector =
LOWORD(OldTss.Link);
660 else Selector = OldLegacyTss->Link;
673 if (!Fast486ReadLinearMemory(
State,
676 sizeof(NewTssDescriptor),
683 if (!NewTssDescriptor.Present)
691 NewTssAddress = NewTssDescriptor.Base;
692 NewTssAddress |= NewTssDescriptor.BaseMid << 16;
693 NewTssAddress |= NewTssDescriptor.BaseHigh << 24;
696 NewTssLimit = NewTssDescriptor.Limit | (NewTssDescriptor.LimitHigh << 16);
698 if (NewTssDescriptor.Granularity)
701 NewTssLimit |= 0x00000FFF;
704 if (NewTssLimit < (
sizeof(FAST486_TSS) - 1)
705 && NewTssLimit != (
sizeof(FAST486_LEGACY_TSS) - 1))
728 if (!Fast486ReadLinearMemory(
State,
733 ?
sizeof(FAST486_TSS) :
sizeof(FAST486_LEGACY_TSS),
743 FAST486_SYSTEM_DESCRIPTOR OldTssDescriptor;
745 if (!Fast486ReadLinearMemory(
State,
749 sizeof(OldTssDescriptor),
758 if (!Fast486WriteLinearMemory(
State,
762 sizeof(OldTssDescriptor),
775 NewTss.Link =
State->TaskReg.Selector;
778 if (!Fast486WriteLinearMemory(
State,
790 NewLegacyTss->Link =
State->TaskReg.Selector;
793 if (!Fast486WriteLinearMemory(
State,
796 sizeof(NewLegacyTss->Link),
806 if (
State->TaskReg.Modern)
808 OldTss.Cr3 =
State->ControlRegisters[FAST486_REG_CR3];
809 OldTss.Eip =
State->InstPtr.Long;
810 OldTss.Eflags =
State->Flags.Long;
811 OldTss.Eax =
State->GeneralRegs[FAST486_REG_EAX].Long;
812 OldTss.Ecx =
State->GeneralRegs[FAST486_REG_ECX].Long;
813 OldTss.Edx =
State->GeneralRegs[FAST486_REG_EDX].Long;
814 OldTss.Ebx =
State->GeneralRegs[FAST486_REG_EBX].Long;
815 OldTss.Esp =
State->GeneralRegs[FAST486_REG_ESP].Long;
816 OldTss.Ebp =
State->GeneralRegs[FAST486_REG_EBP].Long;
817 OldTss.Esi =
State->GeneralRegs[FAST486_REG_ESI].Long;
818 OldTss.Edi =
State->GeneralRegs[FAST486_REG_EDI].Long;
819 OldTss.Es =
State->SegmentRegs[FAST486_REG_ES].Selector;
820 OldTss.Cs =
State->SegmentRegs[FAST486_REG_CS].Selector;
821 OldTss.Ss =
State->SegmentRegs[FAST486_REG_SS].Selector;
822 OldTss.Ds =
State->SegmentRegs[FAST486_REG_DS].Selector;
823 OldTss.Fs =
State->SegmentRegs[FAST486_REG_FS].Selector;
824 OldTss.Gs =
State->SegmentRegs[FAST486_REG_GS].Selector;
825 OldTss.Ldtr =
State->Ldtr.Selector;
829 OldLegacyTss->Ip =
State->InstPtr.LowWord;
830 OldLegacyTss->Flags =
State->Flags.LowWord;
831 OldLegacyTss->Ax =
State->GeneralRegs[FAST486_REG_EAX].LowWord;
832 OldLegacyTss->Cx =
State->GeneralRegs[FAST486_REG_ECX].LowWord;
833 OldLegacyTss->Dx =
State->GeneralRegs[FAST486_REG_EDX].LowWord;
834 OldLegacyTss->Bx =
State->GeneralRegs[FAST486_REG_EBX].LowWord;
835 OldLegacyTss->Sp =
State->GeneralRegs[FAST486_REG_ESP].LowWord;
836 OldLegacyTss->Bp =
State->GeneralRegs[FAST486_REG_EBP].LowWord;
837 OldLegacyTss->Si =
State->GeneralRegs[FAST486_REG_ESI].LowWord;
838 OldLegacyTss->Di =
State->GeneralRegs[FAST486_REG_EDI].LowWord;
839 OldLegacyTss->Es =
State->SegmentRegs[FAST486_REG_ES].Selector;
840 OldLegacyTss->Cs =
State->SegmentRegs[FAST486_REG_CS].Selector;
841 OldLegacyTss->Ss =
State->SegmentRegs[FAST486_REG_SS].Selector;
842 OldLegacyTss->Ds =
State->SegmentRegs[FAST486_REG_DS].Selector;
843 OldLegacyTss->Ldtr =
State->Ldtr.Selector;
847 if (!Fast486WriteLinearMemory(
State,
850 State->TaskReg.Modern
851 ?
sizeof(FAST486_TSS) :
sizeof(FAST486_LEGACY_TSS),
872 if (!Fast486WriteLinearMemory(
State,
875 sizeof(NewTssDescriptor),
886 State->TaskReg.Selector = Selector;
887 State->TaskReg.Base = NewTssAddress;
888 State->TaskReg.Limit = NewTssLimit;
894 State->ControlRegisters[FAST486_REG_CR3] = NewTss.Cr3;
898 Fast486FlushTlb(
State);
910#ifndef FAST486_NO_PREFETCH
918 State->InstPtr.Long =
State->SavedInstPtr.Long = NewTss.Eip;
919 State->Flags.Long = NewTss.Eflags;
920 State->GeneralRegs[FAST486_REG_EAX].Long = NewTss.Eax;
921 State->GeneralRegs[FAST486_REG_ECX].Long = NewTss.Ecx;
922 State->GeneralRegs[FAST486_REG_EDX].Long = NewTss.Edx;
923 State->GeneralRegs[FAST486_REG_EBX].Long = NewTss.Ebx;
924 State->GeneralRegs[FAST486_REG_EBP].Long = NewTss.Ebp;
925 State->GeneralRegs[FAST486_REG_ESI].Long = NewTss.Esi;
926 State->GeneralRegs[FAST486_REG_EDI].Long = NewTss.Edi;
930 NewLdtr = NewTss.Ldtr;
938 State->GeneralRegs[FAST486_REG_ESP].Long = NewTss.Esp0;
945 State->GeneralRegs[FAST486_REG_ESP].Long = NewTss.Esp1;
952 State->GeneralRegs[FAST486_REG_ESP].Long = NewTss.Esp2;
960 State->GeneralRegs[FAST486_REG_ESP].Long = NewTss.Esp;
966 State->InstPtr.LowWord =
State->SavedInstPtr.LowWord = NewLegacyTss->Ip;
967 State->Flags.LowWord = NewLegacyTss->Flags;
968 State->GeneralRegs[FAST486_REG_EAX].LowWord = NewLegacyTss->Ax;
969 State->GeneralRegs[FAST486_REG_ECX].LowWord = NewLegacyTss->Cx;
970 State->GeneralRegs[FAST486_REG_EDX].LowWord = NewLegacyTss->Dx;
971 State->GeneralRegs[FAST486_REG_EBX].LowWord = NewLegacyTss->Bx;
972 State->GeneralRegs[FAST486_REG_EBP].LowWord = NewLegacyTss->Bp;
973 State->GeneralRegs[FAST486_REG_ESI].LowWord = NewLegacyTss->Si;
974 State->GeneralRegs[FAST486_REG_EDI].LowWord = NewLegacyTss->Di;
975 NewEs = NewLegacyTss->Es;
976 NewCs = NewLegacyTss->Cs;
977 NewDs = NewLegacyTss->Ds;
978 NewLdtr = NewLegacyTss->Ldtr;
986 State->GeneralRegs[FAST486_REG_ESP].Long = NewLegacyTss->Sp0;
987 NewSs = NewLegacyTss->Ss0;
993 State->GeneralRegs[FAST486_REG_ESP].Long = NewLegacyTss->Sp1;
994 NewSs = NewLegacyTss->Ss1;
1000 State->GeneralRegs[FAST486_REG_ESP].Long = NewLegacyTss->Sp2;
1001 NewSs = NewLegacyTss->Ss2;
1008 State->GeneralRegs[FAST486_REG_ESP].Long = NewLegacyTss->Sp;
1009 NewSs = NewLegacyTss->Ss;
1019 FAST486_SYSTEM_DESCRIPTOR GdtEntry;
1028 if (!Fast486ReadDescriptorEntry(
State, NewLdtr, &Valid, (PFAST486_GDT_ENTRY)&GdtEntry))
1048 if (!GdtEntry.Present)
1055 State->Ldtr.Selector = NewLdtr;
1056 State->Ldtr.Base = GdtEntry.Base | (GdtEntry.BaseMid << 16) | (GdtEntry.BaseHigh << 24);
1057 State->Ldtr.Limit = GdtEntry.Limit | (GdtEntry.LimitHigh << 16);
1059 if (GdtEntry.Granularity)
1061 State->Ldtr.Limit <<= 12;
1062 State->Ldtr.Limit |= 0x00000FFF;
1072 if (!Fast486LoadSegmentInternal(
State, FAST486_REG_CS, NewCs, FAST486_EXCEPTION_TS))
1077 if (!Fast486LoadSegmentInternal(
State, FAST486_REG_SS, NewSs, FAST486_EXCEPTION_TS))
1082 if (!Fast486LoadSegmentInternal(
State, FAST486_REG_ES, NewEs, FAST486_EXCEPTION_TS))
1087 if (!Fast486LoadSegmentInternal(
State, FAST486_REG_DS, NewDs, FAST486_EXCEPTION_TS))
1094 if (!Fast486LoadSegmentInternal(
State,
1097 FAST486_EXCEPTION_TS))
1102 if (!Fast486LoadSegmentInternal(
State,
1105 FAST486_EXCEPTION_TS))
1117 PFAST486_CALL_GATE Gate,
1121 FAST486_GDT_ENTRY NewCodeSegment;
1124 PFAST486_LEGACY_TSS LegacyTss = (PFAST486_LEGACY_TSS)&Tss;
1125 USHORT OldCs =
State->SegmentRegs[FAST486_REG_CS].Selector;
1128 USHORT OldSs =
State->SegmentRegs[FAST486_REG_SS].Selector;
1129 ULONG OldEsp =
State->GeneralRegs[FAST486_REG_ESP].Long;
1130 ULONG ParamBuffer[32];
1134 if (!Gate->Selector)
1137 Fast486Exception(
State, FAST486_EXCEPTION_GP);
1141 if (!Fast486ReadDescriptorEntry(
State, Gate->Selector, &Valid, &NewCodeSegment))
1147 if (!Valid || (NewCodeSegment.Dpl > Fast486GetCurrentPrivLevel(
State)))
1154 if (Call && Gate->ParamCount)
1162 Gate->ParamCount * (GateSize ?
sizeof(
ULONG) :
sizeof(
USHORT))))
1170 if (NewCodeSegment.Dpl < OldCpl)
1178 if (!Fast486ReadLinearMemory(
State,
1179 State->TaskReg.Base,
1181 State->TaskReg.Modern
1182 ?
sizeof(FAST486_TSS) :
sizeof(FAST486_LEGACY_TSS),
1190 State->Cpl = NewCodeSegment.Dpl;
1197 if (
State->TaskReg.Modern)
1204 NewSs = LegacyTss->Ss0;
1205 NewEsp = LegacyTss->Sp0;
1213 if (
State->TaskReg.Modern)
1220 NewSs = LegacyTss->Ss1;
1221 NewEsp = LegacyTss->Sp1;
1229 if (
State->TaskReg.Modern)
1236 NewSs = LegacyTss->Ss2;
1237 NewEsp = LegacyTss->Sp2;
1250 if (!Fast486LoadSegment(
State, FAST486_REG_SS, NewSs))
1256 State->GeneralRegs[FAST486_REG_ESP].Long = NewEsp;
1258 else if (!NewCodeSegment.DirConf)
1267 if (!Fast486LoadSegment(
State, FAST486_REG_CS, Gate->Selector))
1274 if (GateSize)
State->InstPtr.Long =
MAKELONG(Gate->Offset, Gate->OffsetHigh);
1275 else State->InstPtr.Long = Gate->Offset;
1282 if (NewCodeSegment.Dpl < OldCpl)
1285 if (!Fast486StackPushInternal(
State, GateSize, OldSs))
return FALSE;
1288 if (!Fast486StackPushInternal(
State, GateSize, OldEsp))
return FALSE;
1292 for (
i = Gate->ParamCount - 1;
i >= 0;
i--)
1294 if (!Fast486StackPushInternal(
State,
1296 GateSize ? LongParams[
i] : ShortParams[
i]))
1304 if (!Fast486StackPushInternal(
State, GateSize, OldCs))
return FALSE;
1307 if (!Fast486StackPushInternal(
State, GateSize, OldEip))
return FALSE;
_Inout_ PIRP _In_ NTSTATUS ExceptionCode
VOID NTAPI Fast486Reset(PFAST486_STATE State)
#define FAST486_BUSY_TSS_16_SIGNATURE
#define FAST486_TSS_SIGNATURE
#define FAST486_CALL_GATE_SIGNATURE
#define FAST486_TASK_GATE_SIGNATURE
#define FAST486_TSS_16_SIGNATURE
#define FAST486_IDT_INT_GATE_32
#define FAST486_CACHE_SIZE
#define FAST486_NUM_SEG_REGS
#define FAST486_PAGE_SIZE
#define FAST486_LDT_SIGNATURE
#define FAST486_IDT_TRAP_GATE_32
#define FAST486_BUSY_TSS_SIGNATURE
#define FAST486_IDT_INT_GATE
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
_In_ NDIS_ERROR_CODE ErrorCode
_In_ ULONG _In_ ULONG Offset
_In_opt_ PENTER_STATE_SYSTEM_HANDLER _In_opt_ PVOID _In_ LONG _In_opt_ LONG volatile * Number
VOID FASTCALL Fast486ExceptionWithErrorCode(PFAST486_STATE State, FAST486_EXCEPTIONS ExceptionCode, ULONG ErrorCode)
BOOLEAN FASTCALL Fast486CallGate(PFAST486_STATE State, PFAST486_CALL_GATE Gate, BOOLEAN Call)
BOOLEAN FASTCALL Fast486PerformInterrupt(PFAST486_STATE State, UCHAR Number)
static BOOLEAN FASTCALL Fast486InterruptInternal(PFAST486_STATE State, PFAST486_IDT_ENTRY IdtEntry, BOOLEAN PushErrorCode, ULONG ErrorCode)
BOOLEAN FASTCALL Fast486WriteMemory(PFAST486_STATE State, FAST486_SEG_REGS SegmentReg, ULONG Offset, PVOID Buffer, ULONG Size)
BOOLEAN FASTCALL Fast486TaskSwitch(PFAST486_STATE State, FAST486_TASK_SWITCH_TYPE Type, USHORT Selector)
static BOOLEAN FASTCALL Fast486GetIntVector(PFAST486_STATE State, UCHAR Number, PFAST486_IDT_ENTRY IdtEntry)
BOOLEAN FASTCALL Fast486ReadMemory(PFAST486_STATE State, FAST486_SEG_REGS SegmentReg, ULONG Offset, BOOLEAN InstFetch, PVOID Buffer, ULONG Size)
#define GET_SEGMENT_RPL(s)
#define GET_SEGMENT_INDEX(s)
enum _FAST486_TASK_SWITCH_TYPE FAST486_TASK_SWITCH_TYPE
#define EXCEPTION_HAS_ERROR_CODE(x)
#define SEGMENT_TABLE_INDICATOR
#define RtlZeroMemory(Destination, Length)
#define RtlMoveMemory(Destination, Source, Length)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_In_ LONG _In_ LONG Limit