mirror of
https://github.com/reactos/reactos.git
synced 2025-05-25 04:03:56 +00:00
merge from amd64 branch:
37868: Add CONTEXT flags for x64 (Timo Kreuzer) 39346: Use intrinsics for rtl byteswap functions for GNUC, too. Only include them if NTOS_MODE_USER. (Timo Kreuzer) 39347: Move rtl byteswap functions to wdm.h and add intrinsic definitions (Timo Kreuzer) svn path=/trunk/; revision=39439
This commit is contained in:
parent
994dea8d8a
commit
e88b1c8624
3 changed files with 71 additions and 15 deletions
|
@ -646,5 +646,48 @@ typedef struct _QUOTA_LIMITS {
|
|||
#define QUOTA_LIMITS_USE_DEFAULT_LIMITS 0x00000010
|
||||
|
||||
|
||||
//
|
||||
// Byte Swap Functions
|
||||
//
|
||||
#if (defined(_M_IX86) && (_MSC_FULL_VER > 13009037)) || \
|
||||
((defined(_M_AMD64) || \
|
||||
defined(_M_IA64)) && (_MSC_FULL_VER > 13009175))
|
||||
|
||||
unsigned short __cdecl _byteswap_ushort(unsigned short);
|
||||
unsigned long __cdecl _byteswap_ulong (unsigned long);
|
||||
unsigned __int64 __cdecl _byteswap_uint64(unsigned __int64);
|
||||
#pragma intrinsic(_byteswap_ushort)
|
||||
#pragma intrinsic(_byteswap_ulong)
|
||||
#pragma intrinsic(_byteswap_uint64)
|
||||
#define RtlUshortByteSwap(_x) _byteswap_ushort((USHORT)(_x))
|
||||
#define RtlUlongByteSwap(_x) _byteswap_ulong((_x))
|
||||
#define RtlUlonglongByteSwap(_x) _byteswap_uint64((_x))
|
||||
|
||||
#elif defined(__GNUC__)
|
||||
|
||||
#define RtlUshortByteSwap(_x) _byteswap_ushort((USHORT)(_x))
|
||||
#define RtlUlongByteSwap(_x) _byteswap_ulong((_x))
|
||||
#define RtlUlonglongByteSwap(_x) _byteswap_uint64((_x))
|
||||
|
||||
#else
|
||||
|
||||
#if (NTDDI_VERSION >= NTDDI_WIN2K)
|
||||
NTSYSAPI
|
||||
USHORT
|
||||
FASTCALL
|
||||
RtlUshortByteSwap(IN USHORT Source);
|
||||
|
||||
NTSYSAPI
|
||||
ULONG
|
||||
FASTCALL
|
||||
RtlUlongByteSwap(IN ULONG Source);
|
||||
|
||||
NTSYSAPI
|
||||
ULONGLONG
|
||||
FASTCALL
|
||||
RtlUlonglongByteSwap(IN ULONGLONG Source);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
#endif // _WDMDDK_
|
||||
|
|
|
@ -5632,6 +5632,23 @@ extern NTKERNELAPI ULONG_PTR MmUserProbeAddress;
|
|||
|
||||
#elif defined(__x86_64__)
|
||||
|
||||
#define CONTEXT_AMD64 0x100000
|
||||
#if !defined(RC_INVOKED)
|
||||
#define CONTEXT_CONTROL (CONTEXT_AMD64 | 0x1L)
|
||||
#define CONTEXT_INTEGER (CONTEXT_AMD64 | 0x2L)
|
||||
#define CONTEXT_SEGMENTS (CONTEXT_AMD64 | 0x4L)
|
||||
#define CONTEXT_FLOATING_POINT (CONTEXT_AMD64 | 0x8L)
|
||||
#define CONTEXT_DEBUG_REGISTERS (CONTEXT_AMD64 | 0x10L)
|
||||
|
||||
#define CONTEXT_FULL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_FLOATING_POINT)
|
||||
#define CONTEXT_ALL (CONTEXT_CONTROL | CONTEXT_INTEGER | CONTEXT_SEGMENTS | CONTEXT_FLOATING_POINT | CONTEXT_DEBUG_REGISTERS)
|
||||
|
||||
#define CONTEXT_EXCEPTION_ACTIVE 0x8000000
|
||||
#define CONTEXT_SERVICE_ACTIVE 0x10000000
|
||||
#define CONTEXT_EXCEPTION_REQUEST 0x40000000
|
||||
#define CONTEXT_EXCEPTION_REPORTING 0x80000000
|
||||
#endif
|
||||
|
||||
typedef struct DECLSPEC_ALIGN(16) _M128A {
|
||||
ULONGLONG Low;
|
||||
LONGLONG High;
|
||||
|
@ -7166,16 +7183,6 @@ RtlTimeToTimeFields(
|
|||
IN PLARGE_INTEGER Time,
|
||||
IN PTIME_FIELDS TimeFields);
|
||||
|
||||
ULONG
|
||||
FASTCALL
|
||||
RtlUlongByteSwap(
|
||||
IN ULONG Source);
|
||||
|
||||
ULONGLONG
|
||||
FASTCALL
|
||||
RtlUlonglongByteSwap(
|
||||
IN ULONGLONG Source);
|
||||
|
||||
#define RtlUnicodeStringToAnsiSize(STRING) ( \
|
||||
NLS_MB_CODE_PAGE_TAG ? \
|
||||
RtlxUnicodeStringToAnsiSize(STRING) : \
|
||||
|
@ -7247,11 +7254,6 @@ RtlUpperString(
|
|||
IN OUT PSTRING DestinationString,
|
||||
IN PSTRING SourceString);
|
||||
|
||||
USHORT
|
||||
FASTCALL
|
||||
RtlUshortByteSwap(
|
||||
IN USHORT Source);
|
||||
|
||||
NTSYSAPI
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
|
|
|
@ -1370,6 +1370,8 @@ RtlCharToInteger(
|
|||
//
|
||||
// Byte Swap Functions
|
||||
//
|
||||
#ifdef NTOS_MODE_USER
|
||||
|
||||
#if (defined(_M_IX86) && (_MSC_FULL_VER > 13009037)) || \
|
||||
((defined(_M_AMD64) || \
|
||||
defined(_M_IA64)) && (_MSC_FULL_VER > 13009175))
|
||||
|
@ -1384,8 +1386,15 @@ unsigned __int64 __cdecl _byteswap_uint64(unsigned __int64);
|
|||
#define RtlUlongByteSwap(_x) _byteswap_ulong((_x))
|
||||
#define RtlUlonglongByteSwap(_x) _byteswap_uint64((_x))
|
||||
|
||||
#elif defined (__GNUC__)
|
||||
|
||||
#define RtlUshortByteSwap(_x) _byteswap_ushort((USHORT)(_x))
|
||||
#define RtlUlongByteSwap(_x) _byteswap_ulong((_x))
|
||||
#define RtlUlonglongByteSwap(_x) _byteswap_uint64((_x))
|
||||
|
||||
#else
|
||||
|
||||
#if (NTDDI_VERSION >= NTDDI_WIN2K)
|
||||
NTSYSAPI
|
||||
USHORT
|
||||
FASTCALL
|
||||
|
@ -1400,8 +1409,10 @@ NTSYSAPI
|
|||
ULONGLONG
|
||||
FASTCALL
|
||||
RtlUlonglongByteSwap(IN ULONGLONG Source);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif // NTOS_MODE_USER
|
||||
|
||||
//
|
||||
// Unicode->Ansi String Functions
|
||||
|
|
Loading…
Reference in a new issue