[ros-diffs] [akhaldi] 47196: [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.

akhaldi at svn.reactos.org akhaldi at svn.reactos.org
Fri May 14 13:45:16 CEST 2010


Author: akhaldi
Date: Fri May 14 13:45:14 2010
New Revision: 47196

URL: http://svn.reactos.org/svn/reactos?rev=47196&view=rev
Log:
[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.

Modified:
    branches/header-work/include/crt/mingw32/intrin_arm.h
    branches/header-work/include/ddk/ntddk.h
    branches/header-work/include/psdk/winnt.h
    branches/header-work/include/reactos/arm/armddk.h

Modified: branches/header-work/include/crt/mingw32/intrin_arm.h
URL: http://svn.reactos.org/svn/reactos/branches/header-work/include/crt/mingw32/intrin_arm.h?rev=47196&r1=47195&r2=47196&view=diff
==============================================================================
--- branches/header-work/include/crt/mingw32/intrin_arm.h [iso-8859-1] (original)
+++ branches/header-work/include/crt/mingw32/intrin_arm.h [iso-8859-1] Fri May 14 13:45:14 2010
@@ -34,6 +34,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)
 {

Modified: branches/header-work/include/ddk/ntddk.h
URL: http://svn.reactos.org/svn/reactos/branches/header-work/include/ddk/ntddk.h?rev=47196&r1=47195&r2=47196&view=diff
==============================================================================
--- branches/header-work/include/ddk/ntddk.h [iso-8859-1] (original)
+++ branches/header-work/include/ddk/ntddk.h [iso-8859-1] Fri May 14 13:45:14 2010
@@ -3289,13 +3289,11 @@
 #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_
 

Modified: branches/header-work/include/psdk/winnt.h
URL: http://svn.reactos.org/svn/reactos/branches/header-work/include/psdk/winnt.h?rev=47196&r1=47195&r2=47196&view=diff
==============================================================================
--- branches/header-work/include/psdk/winnt.h [iso-8859-1] (original)
+++ branches/header-work/include/psdk/winnt.h [iso-8859-1] Fri May 14 13:45:14 2010
@@ -3760,6 +3760,7 @@
 } IMAGE_SECTION_HEADER,*PIMAGE_SECTION_HEADER;
 
 #include <pshpack2.h>
+
 typedef struct _IMAGE_SYMBOL {
 	union {
 		BYTE ShortName[8];
@@ -3818,6 +3819,17 @@
 	} 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__
 
@@ -3884,16 +3896,6 @@
 	DWORD RvaToFirstByteOfData;
 	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;
@@ -5081,7 +5083,7 @@
 #elif defined(_M_MIPS)
 #define YieldProcessor() __asm__ __volatile__("nop");
 #elif defined(_M_ARM)
-#define YieldProcessor()
+#define YieldProcessor __yield
 #else
 #error Unknown architecture
 #endif

Modified: branches/header-work/include/reactos/arm/armddk.h
URL: http://svn.reactos.org/svn/reactos/branches/header-work/include/reactos/arm/armddk.h?rev=47196&r1=47195&r2=47196&view=diff
==============================================================================
--- branches/header-work/include/reactos/arm/armddk.h [iso-8859-1] (original)
+++ branches/header-work/include/reactos/arm/armddk.h [iso-8859-1] Fri May 14 13:45:14 2010
@@ -189,6 +189,36 @@
 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




More information about the Ros-diffs mailing list