Alien-TinyCCx
view release on metacpan or search on metacpan
src/win32/include/winapi/winnt.h view on Meta::CPAN
#define STATUS_TIMEOUT ((DWORD)0x00000102L)
#define STATUS_PENDING ((DWORD)0x00000103L)
#define DBG_EXCEPTION_HANDLED ((DWORD)0x00010001L)
#define DBG_CONTINUE ((DWORD)0x00010002L)
#define STATUS_SEGMENT_NOTIFICATION ((DWORD)0x40000005L)
#define DBG_TERMINATE_THREAD ((DWORD)0x40010003L)
#define DBG_TERMINATE_PROCESS ((DWORD)0x40010004L)
#define DBG_CONTROL_C ((DWORD)0x40010005L)
#define DBG_CONTROL_BREAK ((DWORD)0x40010008L)
#define DBG_COMMAND_EXCEPTION ((DWORD)0x40010009L)
#define STATUS_GUARD_PAGE_VIOLATION ((DWORD)0x80000001L)
#define STATUS_DATATYPE_MISALIGNMENT ((DWORD)0x80000002L)
#define STATUS_BREAKPOINT ((DWORD)0x80000003L)
#define STATUS_SINGLE_STEP ((DWORD)0x80000004L)
#define DBG_EXCEPTION_NOT_HANDLED ((DWORD)0x80010001L)
#define STATUS_ACCESS_VIOLATION ((DWORD)0xC0000005L)
#define STATUS_IN_PAGE_ERROR ((DWORD)0xC0000006L)
#define STATUS_INVALID_HANDLE ((DWORD)0xC0000008L)
#define STATUS_NO_MEMORY ((DWORD)0xC0000017L)
#define STATUS_ILLEGAL_INSTRUCTION ((DWORD)0xC000001DL)
#define STATUS_NONCONTINUABLE_EXCEPTION ((DWORD)0xC0000025L)
#define STATUS_INVALID_DISPOSITION ((DWORD)0xC0000026L)
#define STATUS_ARRAY_BOUNDS_EXCEEDED ((DWORD)0xC000008CL)
#define STATUS_FLOAT_DENORMAL_OPERAND ((DWORD)0xC000008DL)
#define STATUS_FLOAT_DIVIDE_BY_ZERO ((DWORD)0xC000008EL)
#define STATUS_FLOAT_INEXACT_RESULT ((DWORD)0xC000008FL)
#define STATUS_FLOAT_INVALID_OPERATION ((DWORD)0xC0000090L)
#define STATUS_FLOAT_OVERFLOW ((DWORD)0xC0000091L)
#define STATUS_FLOAT_STACK_CHECK ((DWORD)0xC0000092L)
#define STATUS_FLOAT_UNDERFLOW ((DWORD)0xC0000093L)
#define STATUS_INTEGER_DIVIDE_BY_ZERO ((DWORD)0xC0000094L)
#define STATUS_INTEGER_OVERFLOW ((DWORD)0xC0000095L)
#define STATUS_PRIVILEGED_INSTRUCTION ((DWORD)0xC0000096L)
#define STATUS_STACK_OVERFLOW ((DWORD)0xC00000FDL)
#define STATUS_CONTROL_C_EXIT ((DWORD)0xC000013AL)
#define STATUS_FLOAT_MULTIPLE_FAULTS ((DWORD)0xC00002B4L)
#define STATUS_FLOAT_MULTIPLE_TRAPS ((DWORD)0xC00002B5L)
#define STATUS_REG_NAT_CONSUMPTION ((DWORD)0xC00002C9L)
#define STATUS_SXS_EARLY_DEACTIVATION ((DWORD)0xC015000FL)
#define STATUS_SXS_INVALID_DEACTIVATION ((DWORD)0xC0150010L)
#endif
#define MAXIMUM_WAIT_OBJECTS 64
#define MAXIMUM_SUSPEND_COUNT MAXCHAR
typedef ULONG_PTR KSPIN_LOCK;
typedef KSPIN_LOCK *PKSPIN_LOCK;
#ifdef _AMD64_
#if defined(__x86_64) && !defined(RC_INVOKED)
#ifdef __cplusplus
extern "C" {
#endif
#define BitTest _bittest
#define BitTestAndComplement _bittestandcomplement
#define BitTestAndSet _bittestandset
#define BitTestAndReset _bittestandreset
#define InterlockedBitTestAndSet _interlockedbittestandset
#define InterlockedBitTestAndReset _interlockedbittestandreset
#define BitTest64 _bittest64
#define BitTestAndComplement64 _bittestandcomplement64
#define BitTestAndSet64 _bittestandset64
#define BitTestAndReset64 _bittestandreset64
#define InterlockedBitTestAndSet64 _interlockedbittestandset64
#define InterlockedBitTestAndReset64 _interlockedbittestandreset64
__CRT_INLINE BOOLEAN _bittest(LONG const *Base,LONG Offset) {
int old = 0;
__asm__ __volatile__("btl %2,%1\n\tsbbl %0,%0 "
:"=r" (old),"=m" ((*(volatile long *) Base))
:"Ir" (Offset));
return (BOOLEAN) (old!=0);
}
__CRT_INLINE BOOLEAN _bittestandcomplement(LONG *Base,LONG Offset) {
int old = 0;
__asm__ __volatile__("btcl %2,%1\n\tsbbl %0,%0 "
:"=r" (old),"=m" ((*(volatile long *) Base))
:"Ir" (Offset));
return (BOOLEAN) (old!=0);
}
__CRT_INLINE BOOLEAN InterlockedBitTestAndComplement(LONG *Base,LONG Bit) {
int old = 0;
__asm__ __volatile__("lock ; btcl %2,%1\n\tsbbl %0,%0 "
:"=r" (old),"=m" ((*(volatile long *) Base))
:"Ir" (Bit));
return (BOOLEAN) (old!=0);
}
__CRT_INLINE BOOLEAN _bittestandset(LONG *Base,LONG Offset) {
int old = 0;
__asm__ __volatile__("btsl %2,%1\n\tsbbl %0,%0 "
:"=r" (old),"=m" ((*(volatile long *) Base))
:"Ir" (Offset));
return (BOOLEAN) (old!=0);
}
__CRT_INLINE BOOLEAN _bittestandreset(LONG *Base,LONG Offset) {
int old = 0;
__asm__ __volatile__("btrl %2,%1\n\tsbbl %0,%0 "
:"=r" (old),"=m" ((*(volatile long *) Base))
:"Ir" (Offset));
return (BOOLEAN) (old!=0);
}
__CRT_INLINE BOOLEAN _interlockedbittestandset(LONG *Base,LONG Offset) {
int old = 0;
__asm__ __volatile__("lock ; btsl %2,%1\n\tsbbl %0,%0 "
:"=r" (old),"=m" ((*(volatile long *) Base))
:"Ir" (Offset));
return (BOOLEAN) (old!=0);
}
__CRT_INLINE BOOLEAN _interlockedbittestandreset(LONG *Base,LONG Offset) {
int old = 0;
__asm__ __volatile__("lock ; btrl %2,%1\n\tsbbl %0,%0 "
:"=r" (old),"=m" ((*(volatile long *) Base))
:"Ir" (Offset));
return (BOOLEAN) (old!=0);
}
__CRT_INLINE BOOLEAN _bittest64(LONG64 const *Base,LONG64 Offset) {
int old = 0;
__asm__ __volatile__("btq %2,%1\n\tsbbl %0,%0 "
:"=r" (old),"=m" ((*(volatile long long *) Base))
:"Ir" (Offset));
return (BOOLEAN) (old!=0);
}
__CRT_INLINE BOOLEAN _bittestandcomplement64(LONG64 *Base,LONG64 Offset) {
int old = 0;
__asm__ __volatile__("btcq %2,%1\n\tsbbl %0,%0 "
:"=r" (old),"=m" ((*(volatile long long *) Base))
:"Ir" (Offset));
return (BOOLEAN) (old!=0);
}
__CRT_INLINE BOOLEAN _bittestandset64(LONG64 *Base,LONG64 Offset) {
int old = 0;
__asm__ __volatile__("btsq %2,%1\n\tsbbl %0,%0 "
:"=r" (old),"=m" ((*(volatile long long *) Base))
:"Ir" (Offset));
return (BOOLEAN) (old!=0);
}
__CRT_INLINE BOOLEAN _bittestandreset64(LONG64 *Base,LONG64 Offset) {
int old = 0;
__asm__ __volatile__("btrq %2,%1\n\tsbbl %0,%0 "
:"=r" (old),"=m" ((*(volatile long long *) Base))
:"Ir" (Offset));
return (BOOLEAN) (old!=0);
}
__CRT_INLINE BOOLEAN _interlockedbittestandset64(LONG64 *Base,LONG64 Offset) {
int old = 0;
__asm__ __volatile__("lock ; btsq %2,%1\n\tsbbl %0,%0 "
:"=r" (old),"=m" ((*(volatile long long *) Base))
:"Ir" (Offset));
return (BOOLEAN) (old!=0);
}
__CRT_INLINE BOOLEAN _interlockedbittestandreset64(LONG64 *Base,LONG64 Offset) {
int old = 0;
__asm__ __volatile__("lock ; btrq %2,%1\n\tsbbl %0,%0 "
:"=r" (old),"=m" ((*(volatile long long *) Base))
:"Ir" (Offset));
return (BOOLEAN) (old!=0);
}
#define BitScanForward _BitScanForward
#define BitScanReverse _BitScanReverse
#define BitScanForward64 _BitScanForward64
#define BitScanReverse64 _BitScanReverse64
__CRT_INLINE BOOLEAN _BitScanForward(DWORD *Index,DWORD Mask) {
__asm__ __volatile__("bsfl %1,%0" : "=r" (Mask),"=m" ((*(volatile long *)Index)));
return Mask!=0;
}
__CRT_INLINE BOOLEAN _BitScanReverse(DWORD *Index,DWORD Mask) {
__asm__ __volatile__("bsrl %1,%0" : "=r" (Mask),"=m" ((*(volatile long *)Index)));
return Mask!=0;
}
__CRT_INLINE BOOLEAN _BitScanForward64(DWORD *Index,DWORD64 Mask) {
__asm__ __volatile__("bsfq %1,%0" : "=r" (Mask),"=m" ((*(volatile long long *)Index)));
return Mask!=0;
}
__CRT_INLINE BOOLEAN _BitScanReverse64(DWORD *Index,DWORD64 Mask) {
__asm__ __volatile__("bsrq %1,%0" : "=r" (Mask),"=m" ((*(volatile long long *)Index)));
return Mask!=0;
}
#define InterlockedIncrement16 _InterlockedIncrement16
#define InterlockedDecrement16 _InterlockedDecrement16
#define InterlockedCompareExchange16 _InterlockedCompareExchange16
#define InterlockedAnd _InterlockedAnd
#define InterlockedOr _InterlockedOr
#define InterlockedXor _InterlockedXor
#define InterlockedIncrement _InterlockedIncrement
#define InterlockedIncrementAcquire InterlockedIncrement
#define InterlockedIncrementRelease InterlockedIncrement
#define InterlockedDecrement _InterlockedDecrement
#define InterlockedDecrementAcquire InterlockedDecrement
#define InterlockedDecrementRelease InterlockedDecrement
#define InterlockedAdd _InterlockedAdd
#define InterlockedExchange _InterlockedExchange
#define InterlockedExchangeAdd _InterlockedExchangeAdd
#define InterlockedCompareExchange _InterlockedCompareExchange
#define InterlockedCompareExchangeAcquire InterlockedCompareExchange
#define InterlockedCompareExchangeRelease InterlockedCompareExchange
#define InterlockedAnd64 _InterlockedAnd64
#define InterlockedAndAffinity InterlockedAnd64
#define InterlockedOr64 _InterlockedOr64
#define InterlockedOrAffinity InterlockedOr64
#define InterlockedXor64 _InterlockedXor64
#define InterlockedIncrement64 _InterlockedIncrement64
#define InterlockedDecrement64 _InterlockedDecrement64
#define InterlockedAdd64 _InterlockedAdd64
#define InterlockedExchange64 _InterlockedExchange64
#define InterlockedExchangeAcquire64 InterlockedExchange64
#define InterlockedExchangeAdd64 _InterlockedExchangeAdd64
#define InterlockedCompareExchange64 _InterlockedCompareExchange64
#define InterlockedCompareExchangeAcquire64 InterlockedCompareExchange64
#define InterlockedCompareExchangeRelease64 InterlockedCompareExchange64
#define InterlockedExchangePointer _InterlockedExchangePointer
#define InterlockedCompareExchangePointer _InterlockedCompareExchangePointer
#define InterlockedCompareExchangePointerAcquire _InterlockedCompareExchangePointer
#define InterlockedCompareExchangePointerRelease _InterlockedCompareExchangePointer
#define InterlockedExchangeAddSizeT(a,b) InterlockedExchangeAdd64((LONG64 *)a,b)
#define InterlockedIncrementSizeT(a) InterlockedIncrement64((LONG64 *)a)
#define InterlockedDecrementSizeT(a) InterlockedDecrement64((LONG64 *)a)
__CRT_INLINE SHORT InterlockedIncrement16(SHORT volatile *Addend) {
unsigned char c;
unsigned char s;
__asm__ __volatile__(
"lock ; addw $1,%0; sete %1 ; sets %2"
:"=m" (*Addend), "=qm" (c), "=qm" (s)
:"m" (*Addend) : "memory");
return (c != 0 ? 0 : (s != 0 ? -1 : 1));
}
__CRT_INLINE SHORT InterlockedDecrement16(SHORT volatile *Addend) {
unsigned char c;
unsigned char s;
__asm__ __volatile__(
"lock ; subw $1,%0; sete %1 ; sets %2"
:"=m" (*Addend), "=qm" (c), "=qm" (s)
:"m" (*Addend) : "memory");
return (c != 0 ? 0 : (s != 0 ? -1 : 1));
}
__CRT_INLINE SHORT InterlockedCompareExchange16(SHORT volatile *Destination,SHORT ExChange,SHORT Comperand) {
SHORT prev;
__asm__ __volatile__("lock ; cmpxchgw %w1,%2"
:"=a"(prev)
:"q"(ExChange), "m"(*Destination), "0"(Comperand)
: "memory");
return prev;
}
__CRT_INLINE LONG InterlockedAnd(LONG volatile *Destination,LONG Value) {
__asm__ __volatile__("lock ; andl %0,%1"
: :"r"(Value),"m"(*Destination)
: "memory");
return *Destination;
}
__CRT_INLINE LONG InterlockedOr(LONG volatile *Destination,LONG Value) {
__asm__ __volatile__("lock ; orl %0,%1"
: : "r"(Value),"m"(*Destination) : "memory");
return *Destination;
}
__CRT_INLINE LONG InterlockedXor(LONG volatile *Destination,LONG Value) {
__asm__ __volatile__("lock ; xorl %0,%1"
: : "r"(Value),"m"(*Destination) : "memory");
return *Destination;
}
// $$$$
__CRT_INLINE LONG64 InterlockedAnd64(LONG64 volatile *Destination,LONG64 Value) {
__asm__ __volatile__("lock ; andq %0,%1"
: : "r"(Value),"m"(*Destination) : "memory");
return *Destination;
}
__CRT_INLINE LONG64 InterlockedOr64(LONG64 volatile *Destination,LONG64 Value) {
__asm__ __volatile__("lock ; orq %0,%1"
: : "r"(Value),"m"(*Destination) : "memory");
return *Destination;
}
__CRT_INLINE LONG64 InterlockedXor64(LONG64 volatile *Destination,LONG64 Value) {
__asm__ __volatile__("lock ; xorq %0,%1"
: : "r"(Value),"m"(*Destination) : "memory");
return *Destination;
}
__CRT_INLINE LONG InterlockedIncrement(LONG volatile *Addend) {
unsigned char c;
unsigned char s;
__asm__ __volatile__(
"lock ; addl $1,%0; sete %1 ; sets %2"
:"=m" (*Addend), "=qm" (c), "=qm" (s)
:"m" (*Addend) : "memory");
return (c != 0 ? 0 : (s != 0 ? -1 : 1));
}
__CRT_INLINE LONG InterlockedDecrement(LONG volatile *Addend) {
unsigned char c;
unsigned char s;
__asm__ __volatile__(
"lock ; subl $1,%0; sete %1 ; sets %2"
:"=m" (*Addend), "=qm" (c), "=qm" (s)
:"m" (*Addend) : "memory");
return (c != 0 ? 0 : (s != 0 ? -1 : 1));
}
__CRT_INLINE LONG InterlockedExchange(LONG volatile *Target,LONG Value) {
__asm__ __volatile("lock ; xchgl %0,%1"
: "=r"(Value)
: "m"(*Target),"0"(Value)
: "memory");
return Value;
}
LONG InterlockedExchangeAdd(LONG volatile *Addend,LONG Value);
#ifndef _X86AMD64_
__CRT_INLINE LONG InterlockedAdd(LONG volatile *Addend,LONG Value) { return InterlockedExchangeAdd(Addend,Value) + Value; }
#endif
__CRT_INLINE LONG InterlockedCompareExchange(LONG volatile *Destination,LONG ExChange,LONG Comperand) {
LONG prev;
__asm__ __volatile__("lock ; cmpxchgl %1,%2" : "=a" (prev) : "q" (ExChange),"m" (*Destination), "0" (Comperand) : "memory");
return prev;
}
__CRT_INLINE LONG64 InterlockedIncrement64(LONG64 volatile *Addend) {
unsigned char c;
unsigned char s;
__asm__ __volatile__(
"lock ; addq $1,%0; sete %1 ; sets %2"
:"=m" (*Addend), "=qm" (c), "=qm" (s)
:"m" (*Addend) : "memory");
return (c != 0 ? 0 : (s != 0 ? -1 : 1));
}
__CRT_INLINE LONG64 InterlockedDecrement64(LONG64 volatile *Addend) {
unsigned char c;
unsigned char s;
__asm__ __volatile__(
"lock ; subq $1,%0; sete %1 ; sets %2"
:"=m" (*Addend), "=qm" (c), "=qm" (s)
:"m" (*Addend) : "memory");
return (c != 0 ? 0 : (s != 0 ? -1 : 1));
}
__CRT_INLINE LONG64 InterlockedExchange64(LONG64 volatile *Target,LONG64 Value) {
__asm__ __volatile("lock ; xchgq %0,%1"
: "=r"(Value)
: "m"(*Target),"0"(Value)
: "memory");
return Value;
}
LONG64 InterlockedExchangeAdd64(LONG64 volatile *Addend,LONG64 Value);
#ifndef _X86AMD64_
__CRT_INLINE LONG64 InterlockedAdd64(LONG64 volatile *Addend,LONG64 Value) { return InterlockedExchangeAdd64(Addend,Value) + Value; }
#endif
__CRT_INLINE LONG64 InterlockedCompareExchange64(LONG64 volatile *Destination,LONG64 ExChange,LONG64 Comperand) {
LONG64 prev;
__asm__ __volatile__("lock ; cmpxchgq %1,%2" : "=a" (prev) : "q" (ExChange),"m" (*Destination), "0" (Comperand) : "memory");
return prev;
}
__CRT_INLINE PVOID InterlockedCompareExchangePointer(PVOID volatile *Destination,PVOID ExChange,PVOID Comperand) {
PVOID prev;
__asm__ __volatile__("lock ; cmpxchgq %1,%2" : "=a" (prev) : "q" (ExChange),"m" (*Destination), "0" (Comperand) : "memory");
return prev;
}
__CRT_INLINE PVOID InterlockedExchangePointer(PVOID volatile *Target,PVOID Value) {
__asm__ __volatile("lock ; xchgq %0,%1"
: "=r"(Value)
: "m"(*Target),"0"(Value)
: "memory");
return Value;
}
#define CacheLineFlush(Address) _mm_clflush(Address)
VOID _ReadWriteBarrier(VOID);
#define FastFence __faststorefence
#define LoadFence _mm_lfence
#define MemoryFence _mm_mfence
#define StoreFence _mm_sfence
VOID __faststorefence(VOID);
VOID _m_prefetchw(volatile CONST VOID *Source);
//!__TINYC__: #include <intrin.h>
#define YieldProcessor _mm_pause
#define MemoryBarrier __faststorefence
#define PreFetchCacheLine(l,a) _mm_prefetch((CHAR CONST *) a,l)
#define PrefetchForWrite(p) _m_prefetchw(p)
#define ReadForWriteAccess(p) (_m_prefetchw(p),*(p))
#define PF_TEMPORAL_LEVEL_1 _MM_HINT_T0
#define PF_TEMPORAL_LEVEL_2 _MM_HINT_T1
#define PF_TEMPORAL_LEVEL_3 _MM_HINT_T2
#define PF_NON_TEMPORAL_LEVEL_ALL _MM_HINT_NTA
#define ReadMxCsr _mm_getcsr
#define WriteMxCsr _mm_setcsr
VOID __int2c(VOID);
#define DbgRaiseAssertionFailure() __int2c()
#define GetCallersEflags() __getcallerseflags()
unsigned __int32 __getcallerseflags(VOID);
#define GetSegmentLimit __segmentlimit
DWORD __segmentlimit(DWORD Selector);
#define ReadTimeStampCounter() __rdtsc()
DWORD64 __rdtsc(VOID);
VOID __movsb(PBYTE Destination,BYTE const *Source,SIZE_T Count);
VOID __movsw(PWORD Destination,WORD const *Source,SIZE_T Count);
VOID __movsd(PDWORD Destination,DWORD const *Source,SIZE_T Count);
VOID __movsq(PDWORD64 Destination,DWORD64 const *Source,SIZE_T Count);
VOID __stosb(PBYTE Destination,BYTE Value,SIZE_T Count);
VOID __stosw(PWORD Destination,WORD Value,SIZE_T Count);
VOID __stosd(PDWORD Destination,DWORD Value,SIZE_T Count);
VOID __stosq(PDWORD64 Destination,DWORD64 Value,SIZE_T Count);
#define MultiplyHigh __mulh
#define UnsignedMultiplyHigh __umulh
src/win32/include/winapi/winnt.h view on Meta::CPAN
DWORD64 R15;
DWORD64 Rip;
union {
XMM_SAVE_AREA32 FltSave;
XMM_SAVE_AREA32 FloatSave;
struct {
M128A Header[2];
M128A Legacy[8];
M128A Xmm0;
M128A Xmm1;
M128A Xmm2;
M128A Xmm3;
M128A Xmm4;
M128A Xmm5;
M128A Xmm6;
M128A Xmm7;
M128A Xmm8;
M128A Xmm9;
M128A Xmm10;
M128A Xmm11;
M128A Xmm12;
M128A Xmm13;
M128A Xmm14;
M128A Xmm15;
};
};
M128A VectorRegister[26];
DWORD64 VectorControl;
DWORD64 DebugControl;
DWORD64 LastBranchToRip;
DWORD64 LastBranchFromRip;
DWORD64 LastExceptionToRip;
DWORD64 LastExceptionFromRip;
} CONTEXT,*PCONTEXT;
#define RUNTIME_FUNCTION_INDIRECT 0x1
typedef struct _RUNTIME_FUNCTION {
DWORD BeginAddress;
DWORD EndAddress;
DWORD UnwindData;
} RUNTIME_FUNCTION,*PRUNTIME_FUNCTION;
typedef PRUNTIME_FUNCTION (*PGET_RUNTIME_FUNCTION_CALLBACK)(DWORD64 ControlPc,PVOID Context);
typedef DWORD (*POUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK)(HANDLE Process,PVOID TableAddress,PDWORD Entries,PRUNTIME_FUNCTION *Functions);
#define OUT_OF_PROCESS_FUNCTION_TABLE_CALLBACK_EXPORT_NAME "OutOfProcessFunctionTableCallback"
NTSYSAPI VOID __cdecl RtlRestoreContext (PCONTEXT ContextRecord,struct _EXCEPTION_RECORD *ExceptionRecord);
NTSYSAPI BOOLEAN __cdecl RtlAddFunctionTable(PRUNTIME_FUNCTION FunctionTable,DWORD EntryCount,DWORD64 BaseAddress);
NTSYSAPI BOOLEAN __cdecl RtlInstallFunctionTableCallback(DWORD64 TableIdentifier,DWORD64 BaseAddress,DWORD Length,PGET_RUNTIME_FUNCTION_CALLBACK Callback,PVOID Context,PCWSTR OutOfProcessCallbackDll);
NTSYSAPI BOOLEAN __cdecl RtlDeleteFunctionTable(PRUNTIME_FUNCTION FunctionTable);
#endif
#ifdef I_X86_
#if(defined(_X86_) && !defined(__x86_64)) && !defined(RC_INVOKED)
#ifdef __cplusplus
extern "C" {
#endif
__CRT_INLINE BOOLEAN InterlockedBitTestAndSet(LONG *Base,LONG Bit) {
int old = 0;
__asm__ __volatile__("lock ; btsl %2,%1\n\tsbbl %0,%0 "
:"=r" (old),"=m" ((*(volatile long *) Base))
:"Ir" (Bit));
return (BOOLEAN) (old!=0);
}
__CRT_INLINE BOOLEAN InterlockedBitTestAndReset(LONG *Base,LONG Bit) {
int old = 0;
__asm__ __volatile__("lock ; btrl %2,%1\n\tsbbl %0,%0 "
:"=r" (old),"=m" ((*(volatile long *) Base))
:"Ir" (Bit));
return (BOOLEAN) (old!=0);
}
__CRT_INLINE BOOLEAN InterlockedBitTestAndComplement(LONG *Base,LONG Bit) {
int old = 0;
__asm__ __volatile__("lock ; btcl %2,%1\n\tsbbl %0,%0 "
:"=r" (old),"=m" ((*(volatile long *) Base))
:"Ir" (Bit));
return (BOOLEAN) (old!=0);
}
#ifdef _PREFIX_
BYTE __readfsbyte(DWORD Offset);
WORD __readfsword(DWORD Offset);
DWORD __readfsdword(DWORD Offset);
VOID __writefsbyte(DWORD Offset,BYTE Data);
VOID __writefsword(DWORD Offset,WORD Data);
VOID __writefsdword(DWORD Offset,DWORD Data);
#endif
#ifdef __cplusplus
}
#endif
#endif
#if(defined(_X86_) && !defined(__x86_64))
__CRT_INLINE VOID MemoryBarrier(VOID) {
LONG Barrier;
__asm__ __volatile__("xchgl %eax,%0 "
:"=r" (Barrier));
}
#define YieldProcessor() __asm__ __volatile__("rep nop ");
#define PreFetchCacheLine(l,a)
#define ReadForWriteAccess(p) (*(p))
#define PF_TEMPORAL_LEVEL_1
#define PF_NON_TEMPORAL_LEVEL_ALL
__CRT_INLINE VOID DbgRaiseAssertionFailure(void) {
__asm__ __volatile__("int 0x2c ");
}
PVOID GetCurrentFiber(void);
__CRT_INLINE PVOID GetCurrentFiber(void)
{
void *ret;
__asm__ volatile ("movl %%fs:0x10,%0"
: "=r" (ret));
return ret;
}
PVOID GetFiberData(void);
__CRT_INLINE PVOID GetFiberData(void)
{
void *ret;
__asm__ volatile ("movl %%fs:0x10,%0\n"
"movl (%0),%0"
: "=r" (ret));
return ret;
}
#endif
#define EXCEPTION_READ_FAULT 0
#define EXCEPTION_WRITE_FAULT 1
#define EXCEPTION_EXECUTE_FAULT 8
src/win32/include/winapi/winnt.h view on Meta::CPAN
DWORD cb;
WORD MajorRuntimeVersion;
WORD MinorRuntimeVersion;
IMAGE_DATA_DIRECTORY MetaData;
DWORD Flags;
DWORD EntryPointToken;
IMAGE_DATA_DIRECTORY Resources;
IMAGE_DATA_DIRECTORY StrongNameSignature;
IMAGE_DATA_DIRECTORY CodeManagerTable;
IMAGE_DATA_DIRECTORY VTableFixups;
IMAGE_DATA_DIRECTORY ExportAddressTableJumps;
IMAGE_DATA_DIRECTORY ManagedNativeHeader;
} IMAGE_COR20_HEADER,*PIMAGE_COR20_HEADER;
#endif
#if defined (__x86_64)
NTSYSAPI PRUNTIME_FUNCTION NTAPI RtlLookupFunctionEntry (DWORD64 ControlPc, PDWORD64 ImageBase, PUNWIND_HISTORY_TABLE HistoryTable);
NTSYSAPI VOID NTAPI RtlUnwindEx (PVOID TargetFrame, PVOID TargetIp, PEXCEPTION_RECORD ExceptionRecord, PVOID ReturnValue, PCONTEXT ContextRecord, PUNWIND_HISTORY_TABLE HistoryTable);
#endif
#include <string.h>
#ifndef _SLIST_HEADER_
#define _SLIST_HEADER_
#ifdef _WIN64
typedef struct _SLIST_ENTRY *PSLIST_ENTRY;
typedef DECLSPEC_ALIGN(16) struct _SLIST_ENTRY {
PSLIST_ENTRY Next;
} SLIST_ENTRY;
#else
#define SLIST_ENTRY SINGLE_LIST_ENTRY
#define _SLIST_ENTRY _SINGLE_LIST_ENTRY
#define PSLIST_ENTRY PSINGLE_LIST_ENTRY
#endif
#if defined(_WIN64)
typedef DECLSPEC_ALIGN(16) struct _SLIST_HEADER {
ULONGLONG Alignment;
ULONGLONG Region;
} SLIST_HEADER;
typedef struct _SLIST_HEADER *PSLIST_HEADER;
#else
typedef union _SLIST_HEADER {
ULONGLONG Alignment;
struct {
SLIST_ENTRY Next;
WORD Depth;
WORD Sequence;
};
} SLIST_HEADER,*PSLIST_HEADER;
#endif
#endif
NTSYSAPI VOID NTAPI RtlInitializeSListHead(PSLIST_HEADER ListHead);
NTSYSAPI PSLIST_ENTRY NTAPI RtlFirstEntrySList(const SLIST_HEADER *ListHead);
NTSYSAPI PSLIST_ENTRY NTAPI RtlInterlockedPopEntrySList(PSLIST_HEADER ListHead);
NTSYSAPI PSLIST_ENTRY NTAPI RtlInterlockedPushEntrySList(PSLIST_HEADER ListHead,PSLIST_ENTRY ListEntry);
NTSYSAPI PSLIST_ENTRY NTAPI RtlInterlockedFlushSList(PSLIST_HEADER ListHead);
NTSYSAPI WORD NTAPI RtlQueryDepthSList(PSLIST_HEADER ListHead);
#define HEAP_NO_SERIALIZE 0x00000001
#define HEAP_GROWABLE 0x00000002
#define HEAP_GENERATE_EXCEPTIONS 0x00000004
#define HEAP_ZERO_MEMORY 0x00000008
#define HEAP_REALLOC_IN_PLACE_ONLY 0x00000010
#define HEAP_TAIL_CHECKING_ENABLED 0x00000020
#define HEAP_FREE_CHECKING_ENABLED 0x00000040
#define HEAP_DISABLE_COALESCE_ON_FREE 0x00000080
#define HEAP_CREATE_ALIGN_16 0x00010000
#define HEAP_CREATE_ENABLE_TRACING 0x00020000
#define HEAP_CREATE_ENABLE_EXECUTE 0x00040000
#define HEAP_MAXIMUM_TAG 0x0FFF
#define HEAP_PSEUDO_TAG_FLAG 0x8000
#define HEAP_TAG_SHIFT 18
#define HEAP_MAKE_TAG_FLAGS(b,o) ((DWORD)((b) + ((o) << 18)))
NTSYSAPI VOID NTAPI RtlCaptureContext(PCONTEXT ContextRecord);
#define IS_TEXT_UNICODE_ASCII16 0x0001
#define IS_TEXT_UNICODE_REVERSE_ASCII16 0x0010
#define IS_TEXT_UNICODE_STATISTICS 0x0002
#define IS_TEXT_UNICODE_REVERSE_STATISTICS 0x0020
#define IS_TEXT_UNICODE_CONTROLS 0x0004
#define IS_TEXT_UNICODE_REVERSE_CONTROLS 0x0040
#define IS_TEXT_UNICODE_SIGNATURE 0x0008
#define IS_TEXT_UNICODE_REVERSE_SIGNATURE 0x0080
#define IS_TEXT_UNICODE_ILLEGAL_CHARS 0x0100
#define IS_TEXT_UNICODE_ODD_LENGTH 0x0200
#define IS_TEXT_UNICODE_DBCS_LEADBYTE 0x0400
#define IS_TEXT_UNICODE_NULL_BYTES 0x1000
#define IS_TEXT_UNICODE_UNICODE_MASK 0x000F
#define IS_TEXT_UNICODE_REVERSE_MASK 0x00F0
#define IS_TEXT_UNICODE_NOT_UNICODE_MASK 0x0F00
#define IS_TEXT_UNICODE_NOT_ASCII_MASK 0xF000
#define COMPRESSION_FORMAT_NONE (0x0000)
#define COMPRESSION_FORMAT_DEFAULT (0x0001)
#define COMPRESSION_FORMAT_LZNT1 (0x0002)
#define COMPRESSION_ENGINE_STANDARD (0x0000)
#define COMPRESSION_ENGINE_MAXIMUM (0x0100)
#define COMPRESSION_ENGINE_HIBER (0x0200)
#if _DBG_MEMCPY_INLINE_ && !defined(_MEMCPY_INLINE_) && !defined(_CRTBLD)
#define _MEMCPY_INLINE_
__CRT_INLINE PVOID __cdecl memcpy_inline(void *dst,const void *src,size_t size) {
if(((char *)dst > (char *)src) && ((char *)dst < ((char *)src + size))) {
__debugbreak();
}
return memcpy(dst,src,size);
}
#define memcpy memcpy_inline
#endif
( run in 0.588 second using v1.01-cache-2.11-cpan-524268b4103 )