Author: ros-arm-bringup Date: Tue Mar 11 19:13:09 2008 New Revision: 32664
URL: http://svn.reactos.org/svn/reactos?rev=3D32664&view=3Drev Log: - Make another kind of page fault also be handleable by our hacked-up handl= er: paged pool now fully works. - Current status: we now make it all the way to the first system call at th= e end of Phase 0! - We now make the IRQL routines modify the IRQL saved in the KPCR, to make = some assertions work. - Build mem.c and memgen.c from RTL in order to get non-optimized but porta= ble Rtl*Memory routines and Rtl*Swap routines. - Take the PPC non-optimized but portable Ex*Interlocked* routines and make= them available for ARM as well. Play with the code a bit to get other rout= ines in there too. - Major TODO: Cleanup these routines, re-format them, make them compatible = for all architectures, and later on, provided optimized ARM versions. - Remove _all* _aull* MSVC-i386 helper exports from the kernel, as well as = Exfi386* routines -- they're only for x86 kernels.
Added: trunk/reactos/ntoskrnl/ex/fastinterlck.c (contents, props changed) - copied, changed from r32654, trunk/reactos/ntoskrnl/ex/powerpc/fast= interlck.c Removed: trunk/reactos/ntoskrnl/ex/powerpc/fastinterlck.c Modified: trunk/reactos/hal/halarm/generic/hal.c trunk/reactos/lib/rtl/rtl.rbuild trunk/reactos/ntoskrnl/ke/arm/stubs_asm.s trunk/reactos/ntoskrnl/ke/arm/thrdini.c trunk/reactos/ntoskrnl/ke/arm/trapc.c trunk/reactos/ntoskrnl/ntoskrnl-generic.rbuild trunk/reactos/ntoskrnl/ntoskrnl_arm.def
Modified: trunk/reactos/hal/halarm/generic/hal.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/generic/ha= l.c?rev=3D32664&r1=3D32663&r2=3D32664&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- trunk/reactos/hal/halarm/generic/hal.c (original) +++ trunk/reactos/hal/halarm/generic/hal.c Tue Mar 11 19:13:09 2008 @@ -769,7 +769,8 @@ KfLowerIrql( KIRQL NewIrql) { - UNIMPLEMENTED; + KeGetPcr()->CurrentIrql =3D NewIrql; + UNIMPLEMENTED; } =
=
@@ -778,9 +779,11 @@ KfRaiseIrql( KIRQL NewIrql) { - UNIMPLEMENTED; - - return (KIRQL)0; + KIRQL OldIrql =3D KeGetPcr()->CurrentIrql; + KeGetPcr()->CurrentIrql =3D NewIrql; + UNIMPLEMENTED; + + return OldIrql; } =
VOID @@ -912,22 +915,28 @@ KIRQL KeSwapIrql(IN KIRQL Irql) { + KIRQL OldIrql =3D KeGetPcr()->CurrentIrql; + KeGetPcr()->CurrentIrql =3D Irql; UNIMPLEMENTED; - return 0; + return OldIrql; } =
KIRQL KeRaiseIrqlToDpcLevel(VOID) { + KIRQL OldIrql =3D KeGetPcr()->CurrentIrql; + KeGetPcr()->CurrentIrql =3D SYNCH_LEVEL; UNIMPLEMENTED; - return 0; + return OldIrql; } =
KIRQL KeRaiseIrqlToSynchLevel(VOID) { + KIRQL OldIrql =3D KeGetPcr()->CurrentIrql; + KeGetPcr()->CurrentIrql =3D SYNCH_LEVEL; UNIMPLEMENTED; - return 0; + return OldIrql; } =
BOOLEAN HalpProcessorIdentified;
Modified: trunk/reactos/lib/rtl/rtl.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/rtl/rtl.rbuild?re= v=3D32664&r1=3D32663&r2=3D32664&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- trunk/reactos/lib/rtl/rtl.rbuild (original) +++ trunk/reactos/lib/rtl/rtl.rbuild Tue Mar 11 19:13:09 2008 @@ -33,6 +33,8 @@ <directory name=3D"arm"> <file>debug_asm.S</file> </directory> + <file>mem.c</file> + <file>memgen.c</file> </if> <directory name=3D"austin"> <file>avl.c</file>
Copied: trunk/reactos/ntoskrnl/ex/fastinterlck.c (from r32654, trunk/reacto= s/ntoskrnl/ex/powerpc/fastinterlck.c) URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ex/fastinter= lck.c?p2=3Dtrunk/reactos/ntoskrnl/ex/fastinterlck.c&p1=3Dtrunk/reactos/ntos= krnl/ex/powerpc/fastinterlck.c&r1=3D32654&r2=3D32664&rev=3D32664&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- trunk/reactos/ntoskrnl/ex/powerpc/fastinterlck.c (original) +++ trunk/reactos/ntoskrnl/ex/fastinterlck.c Tue Mar 11 19:13:09 2008 @@ -1,293 +1,370 @@ -/* - * PROJECT: ReactOS Kernel - * COPYRIGHT: GPL - See COPYING in the top level directory - * FILE: ntoskrnl/ex/powerpc/fastinterlck.c - * PURPOSE: Executive Atom Functions - * PROGRAMMERS: Art Yerkes - */ - -/* INCLUDES **************************************************************= ***/ - -#include <ntoskrnl.h> -#include <internal/debug.h> - -NTKERNELAPI -PSINGLE_LIST_ENTRY -FASTCALL -ExInterlockedFlushSList(IN PSLIST_HEADER ListHead) -{ - PSLIST_ENTRY NewHead =3D NULL; - _InterlockedExchangePointer((PVOID *)&ListHead->Next.Next, &NewHead); - return NewHead; -} - -#undef ExInterlockedPushEntrySList -NTKERNELAPI -PSLIST_ENTRY -FASTCALL -ExInterlockedPushEntrySList -(IN PSLIST_HEADER ListHead, - IN PSLIST_ENTRY ListEntry) -{ - return InterlockedPushEntrySList(ListHead, ListEntry); -} - -#undef ExInterlockedPopEntrySList -NTKERNELAPI -PSINGLE_LIST_ENTRY -NTAPI -ExInterlockedPopEntrySList( - IN PSLIST_HEADER ListHead, - IN PKSPIN_LOCK Lock) -{ - return InterlockedPopEntrySList(ListHead); -} - -#undef ExInterlockedAddULong -NTKERNELAPI -ULONG -NTAPI -ExfInterlockedAddUlong( - IN PULONG Addend, - IN ULONG Increment, - PKSPIN_LOCK Lock) -{ - KIRQL OldIrql; - KeAcquireSpinLock(Lock, &OldIrql); - *Addend +=3D Increment; - KeReleaseSpinLock(Lock, OldIrql); - return *Addend; -} - -NTKERNELAPI -LONGLONG -FASTCALL -ExfInterlockedCompareExchange64( - IN OUT LONGLONG volatile *Destination, - IN PLONGLONG Exchange, - IN PLONGLONG Comperand) -{ - return _InterlockedCompareExchange64(Destination, *Exchange, *Comperan= d); -} - -NTKERNELAPI -PLIST_ENTRY -FASTCALL -ExfInterlockedInsertHeadList( - IN PLIST_ENTRY ListHead, - IN PLIST_ENTRY ListEntry, - IN PKSPIN_LOCK Lock) -{ - KIRQL OldIrql; - PLIST_ENTRY OldHead =3D NULL; - KeAcquireSpinLock(Lock, &OldIrql); - if (!IsListEmpty(ListHead)) OldHead =3D ListEntry->Flink; - InsertHeadList(ListHead, ListEntry); - KeReleaseSpinLock(Lock, OldIrql); - return OldHead; -} - -NTKERNELAPI -PLIST_ENTRY -FASTCALL -ExfInterlockedInsertTailList( - IN PLIST_ENTRY ListHead, - IN PLIST_ENTRY ListEntry, - IN PKSPIN_LOCK Lock) -{ - KIRQL OldIrql; - PLIST_ENTRY OldHead =3D NULL; - KeAcquireSpinLock(Lock,&OldIrql); - if (!IsListEmpty(ListHead)) OldHead =3D ListEntry->Blink; - InsertTailList(ListHead, ListEntry); - KeReleaseSpinLock(Lock, OldIrql); - return OldHead; -} - -NTKERNELAPI -PSINGLE_LIST_ENTRY -FASTCALL -ExfInterlockedPopEntryList( - IN PSINGLE_LIST_ENTRY ListHead, - IN PKSPIN_LOCK Lock) -{ - return NULL; -} - -NTKERNELAPI -PSINGLE_LIST_ENTRY -FASTCALL -ExfInterlockedPushEntryList( - IN PSINGLE_LIST_ENTRY ListHead, - IN PSINGLE_LIST_ENTRY ListEntry, - IN PKSPIN_LOCK Lock) -{ - return NULL; -} - -NTKERNELAPI -PLIST_ENTRY -FASTCALL -ExfInterlockedRemoveHeadList( - IN PLIST_ENTRY ListHead, - IN PKSPIN_LOCK Lock) -{ - return ExInterlockedRemoveHeadList(ListHead, Lock); -} - -NTKERNELAPI -INTERLOCKED_RESULT -FASTCALL -Exfi386InterlockedIncrementLong( - IN PLONG Addend) -{ - return InterlockedIncrement(Addend); -} - -NTKERNELAPI -INTERLOCKED_RESULT -FASTCALL -Exfi386InterlockedDecrementLong( - IN PLONG Addend) -{ - return InterlockedDecrement(Addend); -} - -NTKERNELAPI -ULONG -FASTCALL -Exfi386InterlockedExchangeUlong( - IN PULONG Target, - IN ULONG Value) -{ - return (ULONG)_InterlockedExchange((PLONG)Target, Value); -} - -NTKERNELAPI -LARGE_INTEGER -NTAPI -ExInterlockedAddLargeInteger( - IN PLARGE_INTEGER Addend, - IN LARGE_INTEGER Increment, - IN PKSPIN_LOCK Lock) -{ - LARGE_INTEGER tmp, comp, outnum; - - do { - tmp.QuadPart =3D Addend->QuadPart + Increment.QuadPart; - comp =3D *Addend; - outnum.QuadPart =3D _InterlockedCompareExchange64 - (&Addend->QuadPart, tmp.QuadPart, comp.QuadPart); - } while(outnum.QuadPart !=3D comp.QuadPart); - - return outnum; -} - -NTKERNELAPI -ULONG -NTAPI -ExInterlockedAddUlong( - IN PULONG Addend, - IN ULONG Increment, - PKSPIN_LOCK Lock) -{ - return (ULONG)_InterlockedExchangeAdd((PLONG)Addend, Increment); -} - -#undef ExInterlockedIncrementLong -NTKERNELAPI -INTERLOCKED_RESULT -NTAPI -ExInterlockedIncrementLong( - IN PLONG Addend, - IN PKSPIN_LOCK Lock) -{ - return _InterlockedIncrement(Addend); -} - -#undef ExInterlockedDecrementLong -NTKERNELAPI -INTERLOCKED_RESULT -NTAPI -ExInterlockedDecrementLong( - IN PLONG Addend, - IN PKSPIN_LOCK Lock) -{ - return _InterlockedDecrement(Addend); -} - -NTKERNELAPI -ULONG -NTAPI -ExInterlockedExchangeUlong( - IN PULONG Target, - IN ULONG Value, - IN PKSPIN_LOCK Lock) -{ - return (ULONG)_InterlockedExchange((PLONG)Target, Value); -} - -NTKERNELAPI -PLIST_ENTRY -NTAPI -ExInterlockedInsertHeadList( - IN PLIST_ENTRY ListHead, - IN PLIST_ENTRY ListEntry, - IN PKSPIN_LOCK Lock) -{ - KIRQL OldIrql; - PLIST_ENTRY OldHead =3D NULL; - KeAcquireSpinLock(Lock,&OldIrql); - if (!IsListEmpty(ListHead)) OldHead =3D ListEntry->Flink; - InsertHeadList(ListHead, ListEntry); - KeReleaseSpinLock(Lock, OldIrql); - return OldHead; -} - -NTKERNELAPI -PLIST_ENTRY -NTAPI -ExInterlockedInsertTailList( - IN PLIST_ENTRY ListHead, - IN PLIST_ENTRY ListEntry, - IN PKSPIN_LOCK Lock) -{ - KIRQL OldIrql; - PLIST_ENTRY OldHead =3D NULL; - KeAcquireSpinLock(Lock,&OldIrql); - if (!IsListEmpty(ListHead)) OldHead =3D ListEntry->Blink; - InsertTailList(ListHead, ListEntry); - KeReleaseSpinLock(Lock, OldIrql); - return OldHead; -} - -NTKERNELAPI -PSINGLE_LIST_ENTRY -NTAPI -ExInterlockedPopEntryList( - IN PSINGLE_LIST_ENTRY ListHead, - IN PKSPIN_LOCK Lock) -{ - return NULL; -} - -NTKERNELAPI -PSINGLE_LIST_ENTRY -NTAPI -ExInterlockedPushEntryList( - IN PSINGLE_LIST_ENTRY ListHead, - IN PSINGLE_LIST_ENTRY ListEntry, - IN PKSPIN_LOCK Lock) -{ - return NULL; -} - -NTKERNELAPI -PLIST_ENTRY -NTAPI -ExInterlockedRemoveHeadList( - IN PLIST_ENTRY ListHead, - IN PKSPIN_LOCK Lock) -{ - return NULL; -} +/* + * PROJECT: ReactOS Kernel + * COPYRIGHT: GPL - See COPYING in the top level directory + * FILE: ntoskrnl/ex/powerpc/fastinterlck.c + * PURPOSE: Executive Atom Functions + * PROGRAMMERS: Art Yerkes + */ + +/* INCLUDES **************************************************************= ***/ + +#include <ntoskrnl.h> +#include <internal/debug.h> + +NTKERNELAPI +PSLIST_ENTRY +NTAPI +InterlockedPushEntrySList(IN PSLIST_HEADER ListHead, + IN PSLIST_ENTRY ListEntry) +{ + =
+ PSINGLE_LIST_ENTRY FirstEntry, NextEntry, Entry =3D (PVOID)ListEntry, = Head =3D (PVOID)ListHead; + =
+ FirstEntry =3D Head->Next; + do + { + Entry->Next =3D FirstEntry; + NextEntry =3D FirstEntry; + FirstEntry =3D (PVOID)_InterlockedCompareExchange((PLONG)Head, (LO= NG)Entry, (LONG)FirstEntry); + } while (FirstEntry !=3D NextEntry); + =
+ return FirstEntry; +} + +NTKERNELAPI +PSLIST_ENTRY +NTAPI +InterlockedPopEntrySList(IN PSLIST_HEADER ListHead) +{ + PSINGLE_LIST_ENTRY FirstEntry, NextEntry, Head =3D (PVOID)ListHead; + =
+ FirstEntry =3D Head->Next; + do + { + if (!FirstEntry) return NULL; + + NextEntry =3D FirstEntry; + FirstEntry =3D (PVOID)_InterlockedCompareExchange((PLONG)Head, (LO= NG)FirstEntry->Next, (LONG)FirstEntry); + } while (FirstEntry !=3D NextEntry); + + return FirstEntry; =
+} + +NTKERNELAPI +PSINGLE_LIST_ENTRY +FASTCALL +ExInterlockedFlushSList(IN PSLIST_HEADER ListHead) +{ + return (PVOID)_InterlockedExchange((PLONG)&ListHead->Next.Next, (LONG)= NULL); +} + +#undef ExInterlockedPushEntrySList +NTKERNELAPI +PSLIST_ENTRY +FASTCALL +ExInterlockedPushEntrySList +(IN PSLIST_HEADER ListHead, + IN PSLIST_ENTRY ListEntry) +{ + return InterlockedPushEntrySList(ListHead, ListEntry); +} + +#undef ExInterlockedPopEntrySList +NTKERNELAPI +PSINGLE_LIST_ENTRY +NTAPI +ExInterlockedPopEntrySList( + IN PSLIST_HEADER ListHead, + IN PKSPIN_LOCK Lock) +{ + return InterlockedPopEntrySList(ListHead); +} + +#undef ExInterlockedAddULong +NTKERNELAPI +ULONG +NTAPI +ExfInterlockedAddUlong( + IN PULONG Addend, + IN ULONG Increment, + PKSPIN_LOCK Lock) +{ + KIRQL OldIrql; + KeAcquireSpinLock(Lock, &OldIrql); + *Addend +=3D Increment; + KeReleaseSpinLock(Lock, OldIrql); + return *Addend; +} + +NTKERNELAPI +LONGLONG +FASTCALL +ExfInterlockedCompareExchange64( + IN OUT LONGLONG volatile *Destination, + IN PLONGLONG Exchange, + IN PLONGLONG Comperand) +{ + LONGLONG Result; + =
+ Result =3D *Destination; + if (*Destination =3D=3D Result) *Destination =3D *Exchange; + return Result; +} + +NTKERNELAPI +PLIST_ENTRY +FASTCALL +ExfInterlockedInsertHeadList( + IN PLIST_ENTRY ListHead, + IN PLIST_ENTRY ListEntry, + IN PKSPIN_LOCK Lock) +{ + KIRQL OldIrql; + PLIST_ENTRY OldHead =3D NULL; + KeAcquireSpinLock(Lock, &OldIrql); + if (!IsListEmpty(ListHead)) OldHead =3D ListEntry->Flink; + InsertHeadList(ListHead, ListEntry); + KeReleaseSpinLock(Lock, OldIrql); + return OldHead; +} + +NTKERNELAPI +PLIST_ENTRY +FASTCALL +ExfInterlockedInsertTailList( + IN PLIST_ENTRY ListHead, + IN PLIST_ENTRY ListEntry, + IN PKSPIN_LOCK Lock) +{ + KIRQL OldIrql; + PLIST_ENTRY OldHead =3D NULL; + KeAcquireSpinLock(Lock,&OldIrql); + if (!IsListEmpty(ListHead)) OldHead =3D ListEntry->Blink; + InsertTailList(ListHead, ListEntry); + KeReleaseSpinLock(Lock, OldIrql); + return OldHead; +} + +NTKERNELAPI +PSINGLE_LIST_ENTRY +FASTCALL +ExfInterlockedPopEntryList( + IN PSINGLE_LIST_ENTRY ListHead, + IN PKSPIN_LOCK Lock) +{ + return NULL; +} + +NTKERNELAPI +PSINGLE_LIST_ENTRY +FASTCALL +ExfInterlockedPushEntryList( + IN PSINGLE_LIST_ENTRY ListHead, + IN PSINGLE_LIST_ENTRY ListEntry, + IN PKSPIN_LOCK Lock) +{ + return NULL; +} + +NTKERNELAPI +PLIST_ENTRY +FASTCALL +ExfInterlockedRemoveHeadList( + IN PLIST_ENTRY ListHead, + IN PKSPIN_LOCK Lock) +{ + return ExInterlockedRemoveHeadList(ListHead, Lock); +} + +NTKERNELAPI +INTERLOCKED_RESULT +FASTCALL +Exfi386InterlockedIncrementLong( + IN PLONG Addend) +{ + return InterlockedIncrement(Addend); +} + +NTKERNELAPI +INTERLOCKED_RESULT +FASTCALL +Exfi386InterlockedDecrementLong( + IN PLONG Addend) +{ + return InterlockedDecrement(Addend); +} + +NTKERNELAPI +ULONG +FASTCALL +Exfi386InterlockedExchangeUlong( + IN PULONG Target, + IN ULONG Value) +{ + return (ULONG)_InterlockedExchange((PLONG)Target, Value); +} + +NTKERNELAPI +LARGE_INTEGER +NTAPI +ExInterlockedAddLargeInteger( + IN PLARGE_INTEGER Addend, + IN LARGE_INTEGER Increment, + IN PKSPIN_LOCK Lock) +{ + LARGE_INTEGER Integer =3D {{0}}; + UNIMPLEMENTED; + return Integer; +} + +NTKERNELAPI +ULONG +NTAPI +ExInterlockedAddUlong( + IN PULONG Addend, + IN ULONG Increment, + PKSPIN_LOCK Lock) +{ + return (ULONG)_InterlockedExchangeAdd((PLONG)Addend, Increment); +} + +#undef ExInterlockedIncrementLong +NTKERNELAPI +INTERLOCKED_RESULT +NTAPI +ExInterlockedIncrementLong( + IN PLONG Addend, + IN PKSPIN_LOCK Lock) +{ + return _InterlockedIncrement(Addend); +} + +#undef ExInterlockedDecrementLong +NTKERNELAPI +INTERLOCKED_RESULT +NTAPI +ExInterlockedDecrementLong( + IN PLONG Addend, + IN PKSPIN_LOCK Lock) +{ + return _InterlockedDecrement(Addend); +} + +NTKERNELAPI +ULONG +NTAPI +ExInterlockedExchangeUlong( + IN PULONG Target, + IN ULONG Value, + IN PKSPIN_LOCK Lock) +{ + return (ULONG)_InterlockedExchange((PLONG)Target, Value); +} + +NTKERNELAPI +PLIST_ENTRY +NTAPI +ExInterlockedInsertHeadList( + IN PLIST_ENTRY ListHead, + IN PLIST_ENTRY ListEntry, + IN PKSPIN_LOCK Lock) +{ + KIRQL OldIrql; + PLIST_ENTRY OldHead =3D NULL; + KeAcquireSpinLock(Lock,&OldIrql); + if (!IsListEmpty(ListHead)) OldHead =3D ListEntry->Flink; + InsertHeadList(ListHead, ListEntry); + KeReleaseSpinLock(Lock, OldIrql); + return OldHead; +} + +NTKERNELAPI +PLIST_ENTRY +NTAPI +ExInterlockedInsertTailList( + IN PLIST_ENTRY ListHead, + IN PLIST_ENTRY ListEntry, + IN PKSPIN_LOCK Lock) +{ + KIRQL OldIrql; + PLIST_ENTRY OldHead =3D NULL; + KeAcquireSpinLock(Lock,&OldIrql); + if (!IsListEmpty(ListHead)) OldHead =3D ListEntry->Blink; + InsertTailList(ListHead, ListEntry); + KeReleaseSpinLock(Lock, OldIrql); + return OldHead; +} + +NTKERNELAPI +PSINGLE_LIST_ENTRY +NTAPI +ExInterlockedPopEntryList( + IN PSINGLE_LIST_ENTRY ListHead, + IN PKSPIN_LOCK Lock) +{ + KIRQL OldIrql; + PSINGLE_LIST_ENTRY OldHead =3D NULL; + KeAcquireSpinLock(Lock,&OldIrql); + OldHead =3D PopEntryList(ListHead); + KeReleaseSpinLock(Lock, OldIrql); + return OldHead; +} + +NTKERNELAPI +PSINGLE_LIST_ENTRY +NTAPI +ExInterlockedPushEntryList( + IN PSINGLE_LIST_ENTRY ListHead, + IN PSINGLE_LIST_ENTRY ListEntry, + IN PKSPIN_LOCK Lock) +{ + KIRQL OldIrql; + PSINGLE_LIST_ENTRY OldHead =3D NULL; + KeAcquireSpinLock(Lock,&OldIrql); + OldHead =3D PushEntryList(ListHead, ListEntry); + KeReleaseSpinLock(Lock, OldIrql); + return OldHead; +} + +NTKERNELAPI +PLIST_ENTRY +NTAPI +ExInterlockedRemoveHeadList( + IN PLIST_ENTRY ListHead, + IN PKSPIN_LOCK Lock) +{ + KIRQL OldIrql; + PLIST_ENTRY OldHead =3D NULL; + KeAcquireSpinLock(Lock,&OldIrql); + OldHead =3D RemoveHeadList(ListHead); + KeReleaseSpinLock(Lock, OldIrql); + return OldHead; +} + +NTKERNELAPI +VOID +FASTCALL +ExInterlockedAddLargeStatistic +(IN PLARGE_INTEGER Addend, + IN ULONG Increment) +{ + UNIMPLEMENTED; +} + +NTKERNELAPI +LONGLONG +FASTCALL +ExInterlockedCompareExchange64(IN OUT PLONGLONG Destination, + IN PLONGLONG Exchange, + IN PLONGLONG Comparand, + IN PKSPIN_LOCK Lock) +{ + KIRQL OldIrql; + LONGLONG Result; + =
+ KeAcquireSpinLock(Lock, &OldIrql); + Result =3D *Destination; + if (*Destination =3D=3D Result) *Destination =3D *Exchange; + KeReleaseSpinLock(Lock, OldIrql); + return Result; +}
Propchange: trunk/reactos/ntoskrnl/ex/fastinterlck.c ---------------------------------------------------------------------------= --- svn:eol-style =3D native
Propchange: trunk/reactos/ntoskrnl/ex/fastinterlck.c ---------------------------------------------------------------------------= --- svn:mime-type =3D text/plain
Removed: trunk/reactos/ntoskrnl/ex/powerpc/fastinterlck.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ex/powerpc/f= astinterlck.c?rev=3D32663&view=3Dauto =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- trunk/reactos/ntoskrnl/ex/powerpc/fastinterlck.c (original) +++ trunk/reactos/ntoskrnl/ex/powerpc/fastinterlck.c (removed) @@ -1,293 +1,0 @@ -/* - * PROJECT: ReactOS Kernel - * COPYRIGHT: GPL - See COPYING in the top level directory - * FILE: ntoskrnl/ex/powerpc/fastinterlck.c - * PURPOSE: Executive Atom Functions - * PROGRAMMERS: Art Yerkes - */ - -/* INCLUDES **************************************************************= ***/ - -#include <ntoskrnl.h> -#include <internal/debug.h> - -NTKERNELAPI -PSINGLE_LIST_ENTRY -FASTCALL -ExInterlockedFlushSList(IN PSLIST_HEADER ListHead) -{ - PSLIST_ENTRY NewHead =3D NULL; - _InterlockedExchangePointer((PVOID *)&ListHead->Next.Next, &NewHead); - return NewHead; -} - -#undef ExInterlockedPushEntrySList -NTKERNELAPI -PSLIST_ENTRY -FASTCALL -ExInterlockedPushEntrySList -(IN PSLIST_HEADER ListHead, - IN PSLIST_ENTRY ListEntry) -{ - return InterlockedPushEntrySList(ListHead, ListEntry); -} - -#undef ExInterlockedPopEntrySList -NTKERNELAPI -PSINGLE_LIST_ENTRY -NTAPI -ExInterlockedPopEntrySList( - IN PSLIST_HEADER ListHead, - IN PKSPIN_LOCK Lock) -{ - return InterlockedPopEntrySList(ListHead); -} - -#undef ExInterlockedAddULong -NTKERNELAPI -ULONG -NTAPI -ExfInterlockedAddUlong( - IN PULONG Addend, - IN ULONG Increment, - PKSPIN_LOCK Lock) -{ - KIRQL OldIrql; - KeAcquireSpinLock(Lock, &OldIrql); - *Addend +=3D Increment; - KeReleaseSpinLock(Lock, OldIrql); - return *Addend; -} - -NTKERNELAPI -LONGLONG -FASTCALL -ExfInterlockedCompareExchange64( - IN OUT LONGLONG volatile *Destination, - IN PLONGLONG Exchange, - IN PLONGLONG Comperand) -{ - return _InterlockedCompareExchange64(Destination, *Exchange, *Comperan= d); -} - -NTKERNELAPI -PLIST_ENTRY -FASTCALL -ExfInterlockedInsertHeadList( - IN PLIST_ENTRY ListHead, - IN PLIST_ENTRY ListEntry, - IN PKSPIN_LOCK Lock) -{ - KIRQL OldIrql; - PLIST_ENTRY OldHead =3D NULL; - KeAcquireSpinLock(Lock, &OldIrql); - if (!IsListEmpty(ListHead)) OldHead =3D ListEntry->Flink; - InsertHeadList(ListHead, ListEntry); - KeReleaseSpinLock(Lock, OldIrql); - return OldHead; -} - -NTKERNELAPI -PLIST_ENTRY -FASTCALL -ExfInterlockedInsertTailList( - IN PLIST_ENTRY ListHead, - IN PLIST_ENTRY ListEntry, - IN PKSPIN_LOCK Lock) -{ - KIRQL OldIrql; - PLIST_ENTRY OldHead =3D NULL; - KeAcquireSpinLock(Lock,&OldIrql); - if (!IsListEmpty(ListHead)) OldHead =3D ListEntry->Blink; - InsertTailList(ListHead, ListEntry); - KeReleaseSpinLock(Lock, OldIrql); - return OldHead; -} - -NTKERNELAPI -PSINGLE_LIST_ENTRY -FASTCALL -ExfInterlockedPopEntryList( - IN PSINGLE_LIST_ENTRY ListHead, - IN PKSPIN_LOCK Lock) -{ - return NULL; -} - -NTKERNELAPI -PSINGLE_LIST_ENTRY -FASTCALL -ExfInterlockedPushEntryList( - IN PSINGLE_LIST_ENTRY ListHead, - IN PSINGLE_LIST_ENTRY ListEntry, - IN PKSPIN_LOCK Lock) -{ - return NULL; -} - -NTKERNELAPI -PLIST_ENTRY -FASTCALL -ExfInterlockedRemoveHeadList( - IN PLIST_ENTRY ListHead, - IN PKSPIN_LOCK Lock) -{ - return ExInterlockedRemoveHeadList(ListHead, Lock); -} - -NTKERNELAPI -INTERLOCKED_RESULT -FASTCALL -Exfi386InterlockedIncrementLong( - IN PLONG Addend) -{ - return InterlockedIncrement(Addend); -} - -NTKERNELAPI -INTERLOCKED_RESULT -FASTCALL -Exfi386InterlockedDecrementLong( - IN PLONG Addend) -{ - return InterlockedDecrement(Addend); -} - -NTKERNELAPI -ULONG -FASTCALL -Exfi386InterlockedExchangeUlong( - IN PULONG Target, - IN ULONG Value) -{ - return (ULONG)_InterlockedExchange((PLONG)Target, Value); -} - -NTKERNELAPI -LARGE_INTEGER -NTAPI -ExInterlockedAddLargeInteger( - IN PLARGE_INTEGER Addend, - IN LARGE_INTEGER Increment, - IN PKSPIN_LOCK Lock) -{ - LARGE_INTEGER tmp, comp, outnum; - - do { - tmp.QuadPart =3D Addend->QuadPart + Increment.QuadPart; - comp =3D *Addend; - outnum.QuadPart =3D _InterlockedCompareExchange64 - (&Addend->QuadPart, tmp.QuadPart, comp.QuadPart); - } while(outnum.QuadPart !=3D comp.QuadPart); - - return outnum; -} - -NTKERNELAPI -ULONG -NTAPI -ExInterlockedAddUlong( - IN PULONG Addend, - IN ULONG Increment, - PKSPIN_LOCK Lock) -{ - return (ULONG)_InterlockedExchangeAdd((PLONG)Addend, Increment); -} - -#undef ExInterlockedIncrementLong -NTKERNELAPI -INTERLOCKED_RESULT -NTAPI -ExInterlockedIncrementLong( - IN PLONG Addend, - IN PKSPIN_LOCK Lock) -{ - return _InterlockedIncrement(Addend); -} - -#undef ExInterlockedDecrementLong -NTKERNELAPI -INTERLOCKED_RESULT -NTAPI -ExInterlockedDecrementLong( - IN PLONG Addend, - IN PKSPIN_LOCK Lock) -{ - return _InterlockedDecrement(Addend); -} - -NTKERNELAPI -ULONG -NTAPI -ExInterlockedExchangeUlong( - IN PULONG Target, - IN ULONG Value, - IN PKSPIN_LOCK Lock) -{ - return (ULONG)_InterlockedExchange((PLONG)Target, Value); -} - -NTKERNELAPI -PLIST_ENTRY -NTAPI -ExInterlockedInsertHeadList( - IN PLIST_ENTRY ListHead, - IN PLIST_ENTRY ListEntry, - IN PKSPIN_LOCK Lock) -{ - KIRQL OldIrql; - PLIST_ENTRY OldHead =3D NULL; - KeAcquireSpinLock(Lock,&OldIrql); - if (!IsListEmpty(ListHead)) OldHead =3D ListEntry->Flink; - InsertHeadList(ListHead, ListEntry); - KeReleaseSpinLock(Lock, OldIrql); - return OldHead; -} - -NTKERNELAPI -PLIST_ENTRY -NTAPI -ExInterlockedInsertTailList( - IN PLIST_ENTRY ListHead, - IN PLIST_ENTRY ListEntry, - IN PKSPIN_LOCK Lock) -{ - KIRQL OldIrql; - PLIST_ENTRY OldHead =3D NULL; - KeAcquireSpinLock(Lock,&OldIrql); - if (!IsListEmpty(ListHead)) OldHead =3D ListEntry->Blink; - InsertTailList(ListHead, ListEntry); - KeReleaseSpinLock(Lock, OldIrql); - return OldHead; -} - -NTKERNELAPI -PSINGLE_LIST_ENTRY -NTAPI -ExInterlockedPopEntryList( - IN PSINGLE_LIST_ENTRY ListHead, - IN PKSPIN_LOCK Lock) -{ - return NULL; -} - -NTKERNELAPI -PSINGLE_LIST_ENTRY -NTAPI -ExInterlockedPushEntryList( - IN PSINGLE_LIST_ENTRY ListHead, - IN PSINGLE_LIST_ENTRY ListEntry, - IN PKSPIN_LOCK Lock) -{ - return NULL; -} - -NTKERNELAPI -PLIST_ENTRY -NTAPI -ExInterlockedRemoveHeadList( - IN PLIST_ENTRY ListHead, - IN PKSPIN_LOCK Lock) -{ - return NULL; -}
Modified: trunk/reactos/ntoskrnl/ke/arm/stubs_asm.s URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/arm/stubs= _asm.s?rev=3D32664&r1=3D32663&r2=3D32664&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- trunk/reactos/ntoskrnl/ke/arm/stubs_asm.s (original) +++ trunk/reactos/ntoskrnl/ke/arm/stubs_asm.s Tue Mar 11 19:13:09 2008 @@ -1,38 +1,4 @@ #include <internal/arm/asmmacro.S> - -// -// Interlocked APIs -// -GENERATE_ARM_STUB ExInterlockedAddLargeInteger =
-GENERATE_ARM_STUB ExInterlockedAddLargeStatistic =
-GENERATE_ARM_STUB ExInterlockedAddUlong =
-GENERATE_ARM_STUB ExInterlockedCompareExchange64 -GENERATE_ARM_STUB ExInterlockedDecrementLong =
-GENERATE_ARM_STUB ExInterlockedExchangeUlong =
-GENERATE_ARM_STUB ExInterlockedFlushSList =
-GENERATE_ARM_STUB ExInterlockedIncrementLong =
-GENERATE_ARM_STUB ExInterlockedInsertHeadList =
-GENERATE_ARM_STUB ExInterlockedInsertTailList =
-GENERATE_ARM_STUB ExInterlockedPopEntryList =
-GENERATE_ARM_STUB ExInterlockedPopEntrySList =
-GENERATE_ARM_STUB ExInterlockedPushEntryList =
-GENERATE_ARM_STUB ExInterlockedPushEntrySList =
-GENERATE_ARM_STUB ExInterlockedRemoveHeadList =
-GENERATE_ARM_STUB ExfInterlockedAddUlong =
-GENERATE_ARM_STUB ExfInterlockedCompareExchange64 -GENERATE_ARM_STUB ExfInterlockedInsertHeadList =
-GENERATE_ARM_STUB ExfInterlockedInsertTailList =
-GENERATE_ARM_STUB ExfInterlockedPopEntryList =
-GENERATE_ARM_STUB ExfInterlockedPushEntryList =
-GENERATE_ARM_STUB ExfInterlockedRemoveHeadList =
-GENERATE_ARM_STUB Exfi386InterlockedDecrementLong =
-GENERATE_ARM_STUB Exfi386InterlockedExchangeUlong =
-GENERATE_ARM_STUB Exfi386InterlockedIncrementLong =
-GENERATE_ARM_STUB Exi386InterlockedDecrementLong =
-GENERATE_ARM_STUB Exi386InterlockedExchangeUlong =
-GENERATE_ARM_STUB Exi386InterlockedIncrementLong =
-GENERATE_ARM_STUB InterlockedPopEntrySList =
-GENERATE_ARM_STUB InterlockedPushEntrySList =
=
// // Port I/O and Register Access @@ -49,35 +15,6 @@ GENERATE_ARM_STUB WRITE_REGISTER_UCHAR =
GENERATE_ARM_STUB WRITE_REGISTER_ULONG =
GENERATE_ARM_STUB WRITE_REGISTER_USHORT =
- -// -// CRT APIs implemented in ASM -// -GENERATE_ARM_STUB _alldiv =
-GENERATE_ARM_STUB _alldvrm =
-GENERATE_ARM_STUB _allmul =
-GENERATE_ARM_STUB _alloca_probe =
-GENERATE_ARM_STUB _allrem =
-GENERATE_ARM_STUB _allshl =
-GENERATE_ARM_STUB _allshr =
-GENERATE_ARM_STUB _aulldiv =
-GENERATE_ARM_STUB _aulldvrm =
-GENERATE_ARM_STUB _aullrem =
-GENERATE_ARM_STUB _aullshr =
- -// -// RTL CRT-like APIs implemented in ASM -// -GENERATE_ARM_STUB RtlCompareMemory =
-GENERATE_ARM_STUB RtlCompareMemoryUlong =
-GENERATE_ARM_STUB RtlFillMemory =
-GENERATE_ARM_STUB RtlFillMemoryUlong =
-GENERATE_ARM_STUB RtlMoveMemory =
-GENERATE_ARM_STUB RtlPrefetchMemoryNonTemporal =
-GENERATE_ARM_STUB RtlUlongByteSwap =
-GENERATE_ARM_STUB RtlUlonglongByteSwap =
-GENERATE_ARM_STUB RtlUshortByteSwap =
-GENERATE_ARM_STUB RtlZeroMemory =
=
// // Exceptions
Modified: trunk/reactos/ntoskrnl/ke/arm/thrdini.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/arm/thrdi= ni.c?rev=3D32664&r1=3D32663&r2=3D32664&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- trunk/reactos/ntoskrnl/ke/arm/thrdini.c (original) +++ trunk/reactos/ntoskrnl/ke/arm/thrdini.c Tue Mar 11 19:13:09 2008 @@ -87,7 +87,7 @@ // // Set the previous mode as user // - TrapFrame->PreviousMode =3D UserMode; + //TrapFrame->PreviousMode =3D UserMode; Thread->PreviousMode =3D UserMode; =
// @@ -112,7 +112,7 @@ // // Set the previous mode as kernel // - Thread->PreviousMode =3D KernelMode; + //Thread->PreviousMode =3D KernelMode; =
// // Context switch frame to setup below
Modified: trunk/reactos/ntoskrnl/ke/arm/trapc.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/arm/trapc= .c?rev=3D32664&r1=3D32663&r2=3D32664&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- trunk/reactos/ntoskrnl/ke/arm/trapc.c (original) +++ trunk/reactos/ntoskrnl/ke/arm/trapc.c Tue Mar 11 19:13:09 2008 @@ -27,7 +27,7 @@ // // Check if this is a page fault // - if (KeArmFaultStatusRegisterGet() =3D=3D 21) + if (KeArmFaultStatusRegisterGet() =3D=3D 21 || KeArmFaultStatusRegiste= rGet() =3D=3D 23) { Status =3D MmAccessFault(FALSE, Address,
Modified: trunk/reactos/ntoskrnl/ntoskrnl-generic.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ntoskrnl-gen= eric.rbuild?rev=3D32664&r1=3D32663&r2=3D32664&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- trunk/reactos/ntoskrnl/ntoskrnl-generic.rbuild (original) +++ trunk/reactos/ntoskrnl/ntoskrnl-generic.rbuild Tue Mar 11 19:13:09 2008 @@ -172,8 +172,11 @@ <if property=3D"ARCH" value=3D"powerpc"> <directory name=3D"powerpc"> <file>ioport.s</file> - <file>fastinterlck.c</file> - </directory> + </directory> + <file>fastinterlck.c</file> + </if> + <if property=3D"ARCH" value=3D"arm"> + <file>fastinterlck.c</file> </if> <file>atom.c</file> <file>callback.c</file>
Modified: trunk/reactos/ntoskrnl/ntoskrnl_arm.def URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ntoskrnl_arm= .def?rev=3D32664&r1=3D32663&r2=3D32664&view=3Ddiff =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D --- trunk/reactos/ntoskrnl/ntoskrnl_arm.def (original) +++ trunk/reactos/ntoskrnl/ntoskrnl_arm.def Tue Mar 11 19:13:09 2008 @@ -167,12 +167,6 @@ ExfInterlockedPopEntryList ExfInterlockedPushEntryList ExfInterlockedRemoveHeadList -Exfi386InterlockedDecrementLong -Exfi386InterlockedExchangeUlong -Exfi386InterlockedIncrementLong -Exi386InterlockedDecrementLong -Exi386InterlockedExchangeUlong -Exi386InterlockedIncrementLong FsRtlAcquireFileExclusive ;FsRtlAddBaseMcbEntry FsRtlAddLargeMcbEntry @@ -1435,17 +1429,6 @@ ZwWriteFile ZwYieldExecution _abnormal_termination -_alldiv -_allmul -_alloca_probe -_allrem -_allshl -_allshr -_alldvrm -_aulldiv -_aulldvrm -_aullrem -_aullshr _except_handler2 _except_handler3 _global_unwind2