[INTRIN_ARM]

- 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
This commit is contained in:
Amine Khaldi 2010-05-14 11:45:14 +00:00
parent b596fbada4
commit d052e38953
4 changed files with 47 additions and 13 deletions

View file

@ -35,6 +35,10 @@
#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);

View file

@ -3289,13 +3289,11 @@ ExFreeToZone(
#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;
#endif
#ifdef _X86_

View file

@ -3760,6 +3760,7 @@ typedef struct _IMAGE_SECTION_HEADER {
} IMAGE_SECTION_HEADER,*PIMAGE_SECTION_HEADER;
#include <pshpack2.h>
typedef struct _IMAGE_SYMBOL {
union {
BYTE ShortName[8];
@ -3818,6 +3819,17 @@ typedef union _IMAGE_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__
@ -3885,16 +3897,6 @@ typedef struct _IMAGE_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;
@ -5081,7 +5083,7 @@ MemoryBarrier(VOID)
#elif defined(_M_MIPS)
#define YieldProcessor() __asm__ __volatile__("nop");
#elif defined(_M_ARM)
#define YieldProcessor()
#define YieldProcessor __yield
#else
#error Unknown architecture
#endif

View file

@ -189,6 +189,36 @@ struct _KTHREAD*
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