From 702301aa40a1bf9d2dc75d422529dded49c9cc3f Mon Sep 17 00:00:00 2001 From: Daniel Reimer Date: Wed, 16 Dec 2009 20:59:06 +0000 Subject: [PATCH] Some build fixes for ReactOS ARM. Credits go to Alex Ionescu and Timo Kreuzer while I just tried to keep up. :-P - Undefine Unicode which is defined by default in cegcc. - Add a missing include in ke.h - Implement _CountLeadingZeros, _CountTrailingZeros, _BitScanForward for ARM. svn path=/trunk/; revision=44625 --- reactos/ReactOS-arm.rbuild | 2 ++ .../freeldr/freeldr/include/arch/arm/hardware.h | 2 +- reactos/include/crt/mingw32/intrin_arm.h | 16 ++++++++++++++++ reactos/ntoskrnl/include/internal/arm/ke.h | 4 +++- 4 files changed, 22 insertions(+), 2 deletions(-) diff --git a/reactos/ReactOS-arm.rbuild b/reactos/ReactOS-arm.rbuild index aac72e02a0c..204b4a4066c 100644 --- a/reactos/ReactOS-arm.rbuild +++ b/reactos/ReactOS-arm.rbuild @@ -29,6 +29,8 @@ -ftracer -Wno-attributes + -U_UNICODE + -UUNICODE diff --git a/reactos/boot/freeldr/freeldr/include/arch/arm/hardware.h b/reactos/boot/freeldr/freeldr/include/arch/arm/hardware.h index 549eefeaf71..7d6fae69945 100644 --- a/reactos/boot/freeldr/freeldr/include/arch/arm/hardware.h +++ b/reactos/boot/freeldr/freeldr/include/arch/arm/hardware.h @@ -67,7 +67,7 @@ FldrCreateSystemKey( VOID NTAPI FldrCreateComponentKey( - IN PCONFIGURATION_COMPONENT_DATA SystemKey,, + IN PCONFIGURATION_COMPONENT_DATA SystemKey, IN CONFIGURATION_CLASS Class, IN CONFIGURATION_TYPE Type, IN IDENTIFIER_FLAG Flags, diff --git a/reactos/include/crt/mingw32/intrin_arm.h b/reactos/include/crt/mingw32/intrin_arm.h index 066c641254f..99ddb47a841 100644 --- a/reactos/include/crt/mingw32/intrin_arm.h +++ b/reactos/include/crt/mingw32/intrin_arm.h @@ -35,6 +35,22 @@ #define _ReturnAddress() (__builtin_return_address(0)) #define _ReadWriteBarrier() __sync_synchronize() +__INTRIN_INLINE unsigned _CountLeadingZeros(long Mask) +{ + return Mask ? __builtin_clz(Mask) : 32; +} + +__INTRIN_INLINE unsigned _CountTrailingZeros(long Mask) +{ + return Mask ? __builtin_ctz(Mask) : 32; +} + +__INTRIN_INLINE unsigned char _BitScanForward(unsigned long * const Index, const unsigned long Mask) +{ + *Index = __builtin_ctz(Mask); + return Mask ? 1 : 0; +} + __INTRIN_INLINE char _InterlockedCompareExchange8(volatile char * const Destination, const char Exchange, const char Comperand) { return __sync_val_compare_and_swap(Destination, Comperand, Exchange); diff --git a/reactos/ntoskrnl/include/internal/arm/ke.h b/reactos/ntoskrnl/include/internal/arm/ke.h index f539cf4facb..67b8befa048 100644 --- a/reactos/ntoskrnl/include/internal/arm/ke.h +++ b/reactos/ntoskrnl/include/internal/arm/ke.h @@ -1,6 +1,8 @@ #ifndef __NTOSKRNL_INCLUDE_INTERNAL_ARM_KE_H #define __NTOSKRNL_INCLUDE_INTERNAL_ARM_KE_H +#include "intrin_i.h" + // //Lockdown TLB entries // @@ -38,7 +40,7 @@ // Returns the Interrupt State from a Trap Frame. // ON = TRUE, OFF = FALSE // -//#define KeGetTrapFrameInterruptState(TrapFrame) \ +//#define KeGetTrapFrameInterruptState(TrapFrame) // // Invalidates the TLB entry for a specified address -- 2.17.1