- Implement __yield and __break arm intrinsics.
[DDK]
- Relax INTERLOCKED_RESULT conditional definition.
[PSDK]
- Fix some nasty structure misalignments.
- Fix YieldProcessor definition for ARM.
[ARMDDK]
- Add several missing definitions.
svn path=/branches/header-work/; revision=47196
#define _ReturnAddress() (__builtin_return_address(0))
#define _ReadWriteBarrier() __sync_synchronize()
#define _ReturnAddress() (__builtin_return_address(0))
#define _ReadWriteBarrier() __sync_synchronize()
+__INTRIN_INLINE void __yield(void) { __asm__ __volatile__("yield"); }
+
+__INTRIN_INLINE void __break(unsigned int value) { __asm__ __volatile__("bkpt %0": : "M" (value)); }
+
__INTRIN_INLINE unsigned short _byteswap_ushort(unsigned short value)
{
return (value >> 8) || (value << 8);
__INTRIN_INLINE unsigned short _byteswap_ushort(unsigned short value)
{
return (value >> 8) || (value << 8);
#define RESULT_POSITIVE 2
#endif
#define RESULT_POSITIVE 2
#endif
-#if defined(_X86_) || defined(_IA64_) || defined(_M_AMD64) && !defined(RC_INVOKED) && !defined(MIDL_PASS)
typedef enum _INTERLOCKED_RESULT {
ResultNegative = RESULT_NEGATIVE,
ResultZero = RESULT_ZERO,
ResultPositive = RESULT_POSITIVE
} INTERLOCKED_RESULT;
typedef enum _INTERLOCKED_RESULT {
ResultNegative = RESULT_NEGATIVE,
ResultZero = RESULT_ZERO,
ResultPositive = RESULT_POSITIVE
} INTERLOCKED_RESULT;
} IMAGE_SECTION_HEADER,*PIMAGE_SECTION_HEADER;
#include <pshpack2.h>
} IMAGE_SECTION_HEADER,*PIMAGE_SECTION_HEADER;
#include <pshpack2.h>
typedef struct _IMAGE_SYMBOL {
union {
BYTE ShortName[8];
typedef struct _IMAGE_SYMBOL {
union {
BYTE ShortName[8];
} Section;
} IMAGE_AUX_SYMBOL,*PIMAGE_AUX_SYMBOL;
} Section;
} IMAGE_AUX_SYMBOL,*PIMAGE_AUX_SYMBOL;
+typedef struct _IMAGE_RELOCATION {
+ _ANONYMOUS_UNION union {
+ DWORD VirtualAddress;
+ DWORD RelocCount;
+ } DUMMYUNIONNAME;
+ DWORD SymbolTableIndex;
+ WORD Type;
+} IMAGE_RELOCATION,*PIMAGE_RELOCATION;
+
+#include <poppack.h>
+
#ifndef __IMAGE_COR20_HEADER_DEFINED__
#define __IMAGE_COR20_HEADER_DEFINED__
#ifndef __IMAGE_COR20_HEADER_DEFINED__
#define __IMAGE_COR20_HEADER_DEFINED__
DWORD RvaToLastByteOfData;
} IMAGE_COFF_SYMBOLS_HEADER,*PIMAGE_COFF_SYMBOLS_HEADER;
DWORD RvaToLastByteOfData;
} IMAGE_COFF_SYMBOLS_HEADER,*PIMAGE_COFF_SYMBOLS_HEADER;
-typedef struct _IMAGE_RELOCATION {
- _ANONYMOUS_UNION union {
- DWORD VirtualAddress;
- DWORD RelocCount;
- } DUMMYUNIONNAME;
- DWORD SymbolTableIndex;
- WORD Type;
-} IMAGE_RELOCATION,*PIMAGE_RELOCATION;
-#include <poppack.h>
-
typedef struct _IMAGE_BASE_RELOCATION {
DWORD VirtualAddress;
DWORD SizeOfBlock;
typedef struct _IMAGE_BASE_RELOCATION {
DWORD VirtualAddress;
DWORD SizeOfBlock;
#elif defined(_M_MIPS)
#define YieldProcessor() __asm__ __volatile__("nop");
#elif defined(_M_ARM)
#elif defined(_M_MIPS)
#define YieldProcessor() __asm__ __volatile__("nop");
#elif defined(_M_ARM)
-#define YieldProcessor()
+#define YieldProcessor __yield
#else
#error Unknown architecture
#endif
#else
#error Unknown architecture
#endif
NTAPI
KeGetCurrentThread(VOID);
NTAPI
KeGetCurrentThread(VOID);
+extern volatile struct _KSYSTEM_TIME KeTickCount;
+
+#ifndef YieldProcessor
+#define YieldProcessor __yield
+#endif
+
+#define ASSERT_BREAKPOINT BREAKPOINT_COMMAND_STRING + 1
+
+#define DbgRaiseAssertionFailure() __break(ASSERT_BREAKPOINT)
+
+#define PCR_MINOR_VERSION 1
+#define PCR_MAJOR_VERSION 1
+
+#define RESULT_ZERO 0
+#define RESULT_NEGATIVE 1
+#define RESULT_POSITIVE 2
+
+DECLSPEC_IMPORT
+VOID
+__fastcall
+KfReleaseSpinLock(
+ IN OUT ULONG_PTR* SpinLock,
+ IN KIRQL NewIrql);
+
+DECLSPEC_IMPORT
+KIRQL
+__fastcall
+KfAcquireSpinLock(
+ IN OUT ULONG_PTR* SpinLock);
+
#ifndef _WINNT_H
//
// IRQL Support on ARM is similar to MIPS/ALPHA
#ifndef _WINNT_H
//
// IRQL Support on ARM is similar to MIPS/ALPHA