37 Entry->HighWord.Bits.Granularity = 0;
42 Entry->HighWord.Bits.Granularity = 1;
45 Entry->HighWord.Bits.LimitHi = ((
Limit >> 16) & 0x0f);
61 Entry->HighWord.Bits.Type = (
Type & 0x1f);
62 Entry->HighWord.Bits.Dpl = (Dpl & 0x3);
64 Entry->HighWord.Bits.Sys = 0;
65 Entry->HighWord.Bits.Reserved_0 = 0;
66 Entry->HighWord.Bits.Default_Big = !!(SegMode & 2);
67 Entry->HighWord.Bits.Granularity |= !!Granularity;
114 asm volatile (
"fxrstor (%0)" : :
"r"(SaveArea));
121 asm volatile (
"fxsave (%0)" : :
"r"(SaveArea));
128 asm volatile (
"fnsave (%0); wait" : :
"r"(SaveArea));
138 __asm__ __volatile__ (
"fxsave %0\n" : :
"m"(*SaveArea));
142 __asm__ __volatile__ (
"fnsave %0\n wait\n" : :
"m"(*SaveArea));
153 __asm__ __volatile__ (
"fxrstor %0\n" : :
"m"(*SaveArea));
157 __asm__ __volatile__ (
"frstor %0\n\t" :
"=m" (*SaveArea));
163Ke386ClearFpExceptions(
VOID)
165 __asm__ __volatile__ (
"fnclex");
179#define Ke386SetLocalDescriptorTable(X) \
180 __asm__("lldt %w0\n\t" \
184#define Ke386SetTr(X) __asm__ __volatile__("ltr %%ax" : :"a" (X));
196#define _Ke386GetSeg(N) ({ \
198 __asm__("movl %%" #N ",%0\n\t" :"=r" (__d)); \
202#define _Ke386SetSeg(N,X) __asm__ __volatile__("movl %0,%%" #N : :"r" (X));
204#define Ke386FnInit() __asm__("fninit\n\t");
205#define Ke386ClearDirectionFlag() __asm__ __volatile__ ("cld")
211#define Ke386SetCr2(X) __asm__ __volatile__("movl %0,%%cr2" : :"r" (X));
216#define Ke386GetSs() _Ke386GetSeg(ss)
217#define Ke386GetFs() _Ke386GetSeg(fs)
218#define Ke386GetDs() _Ke386GetSeg(ds)
219#define Ke386GetEs() _Ke386GetSeg(es)
220#define Ke386GetGs() _Ke386GetSeg(gs)
221#define Ke386SetFs(X) _Ke386SetSeg(fs, X)
222#define Ke386SetDs(X) _Ke386SetSeg(ds, X)
223#define Ke386SetEs(X) _Ke386SetSeg(es, X)
224#define Ke386SetSs(X) _Ke386SetSeg(ss, X)
225#define Ke386SetGs(X) _Ke386SetSeg(gs, X)
227#elif defined(_MSC_VER)
251 __asm mov
eax, SaveArea
259 __asm mov
eax, SaveArea
267 __asm mov
eax, SaveArea
275 __asm mov
eax, SaveArea
410Ke386SaveFpuState(
IN PVOID SaveArea)
438Ke386ClearFpExceptions(
VOID)
443#define Ke386FnSave __fnsave
444#define Ke386FxSave __fxsave
446#define Ke386FxStore __fxrstor
449#error Unknown compiler for inline assembler
452#define Ke386GetGlobalDescriptorTable __sgdt
453#define Ke386SetGlobalDescriptorTable __lgdt
454#define Ke386GetLocalDescriptorTable __sldt
FORCEINLINE VOID KiSetGdtDescriptorLimit(PKGDTENTRY Entry, ULONG Limit)
FORCEINLINE PKGDTENTRY64 KiGetGdtEntry(PVOID pGdt, USHORT Selector)
FORCEINLINE VOID KiSetGdtDescriptorBase(PKGDTENTRY Entry, ULONG64 Base)
FORCEINLINE VOID KiSetGdtEntryEx(_Inout_ PKGDTENTRY Entry, _In_ ULONG32 Base, _In_ ULONG Limit, _In_ UCHAR Type, _In_ UCHAR Dpl, _In_ BOOLEAN Granularity, _In_ UCHAR SegMode)
FORCEINLINE VOID KiSetGdtEntry(_Inout_ PKGDTENTRY Entry, _In_ ULONG32 Base, _In_ ULONG Limit, _In_ UCHAR Type, _In_ UCHAR Dpl, _In_ UCHAR SegMode)
static const WCHAR desc[]
__asm__(".p2align 4, 0x90\n" ".seh_proc __seh2_global_filter_func\n" "__seh2_global_filter_func:\n" "\tsub %rbp, %rax\n" "\tpush %rbp\n" "\t.seh_pushreg %rbp\n" "\tsub $32, %rsp\n" "\t.seh_stackalloc 32\n" "\t.seh_endprologue\n" "\tsub %rax, %rdx\n" "\tmov %rdx, %rbp\n" "\tjmp *%r8\n" "__seh2_global_filter_func_exit:\n" "\t.p2align 4\n" "\tadd $32, %rsp\n" "\tpop %rbp\n" "\tret\n" "\t.seh_endproc")
base of all file and directory entries
ecx edi movl ebx edx edi decl ecx esi eax jecxz decl eax andl eax esi movl edx movl TEMP incl eax andl eax ecx incl ebx testl eax jnz xchgl ecx incl TEMP esp ecx subl ebx pushl ecx ecx edx ecx shrl ecx mm0 mm4 mm0 mm4 mm1 mm5 mm1 mm5 mm2 mm6 mm2 mm6 mm3 mm7 mm3 mm7 paddd mm0 paddd mm4 paddd mm0 paddd mm4 paddd mm0 paddd mm4 movq mm1 movq mm5 psrlq mm1 psrlq mm5 paddd mm0 paddd mm4 psrad mm0 psrad mm4 packssdw mm0 packssdw mm4 mm1 punpckldq mm0 pand mm1 pand mm0 por mm1 movq edi esi edx edi decl ecx jnz popl ecx andl ecx jecxz mm0 mm0 mm1 mm1 mm2 mm2 mm3 mm3 paddd mm0 paddd mm0 paddd mm0 movq mm1 psrlq mm1 paddd mm0 psrad mm0 packssdw mm0 movd eax movw ax
ecx edi movl ebx edx edi decl ecx esi eax jecxz decl eax andl eax esi movl eax
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
_In_ LONG _In_ LONG Limit