Author: ros-arm-bringup Date: Mon Mar 10 23:42:54 2008 New Revision: 32654
URL: http://svn.reactos.org/svn/reactos?rev=3D32654&view=3Drev Log: - Forgot to commit previous HAL changes. - There is no reason to implement the Interlocked* APIs in assembly in the = kernel -- just have them call the intrinsics. - Also fix the way we were overloading the exported APIs, we now use the in= trinsics all the time. - Convert loader block address to virtual, and parse the addresses inside i= t and convert them to virtual too, after we don't use them in FreeLDR anymo= re -- the kernel will delete the p->v identity mapping, and eventually stil= l need to touch the loader block. - Implement MmGetPhysicalAddress and MiGetUserPageDirectoryCount for ARM. - We now reach the point where we start initializing the boot drivers' memo= ry information.
Added: trunk/reactos/ntoskrnl/ex/exintrin.c (with props) Modified: trunk/reactos/hal/halarm/generic/hal.c trunk/reactos/ntoskrnl/ex/i386/fastinterlck_asm.S trunk/reactos/ntoskrnl/include/internal/ntoskrnl.h trunk/reactos/ntoskrnl/ke/arm/stubs_asm.s trunk/reactos/ntoskrnl/mm/arm/stubs.c trunk/reactos/ntoskrnl/ntoskrnl-generic.rbuild trunk/reactos/ntoskrnl/rtl/arm/rtlexcpt.c
Modified: trunk/reactos/hal/halarm/generic/hal.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halarm/generic/ha= l.c?rev=3D32654&r1=3D32653&r2=3D32654&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 Mon Mar 10 23:42:54 2008 @@ -26,6 +26,11 @@ #undef ExAcquireFastMutex #undef ExReleaseFastMutex #undef ExTryToAcquireFastMutex +#undef KeAcquireSpinLock +#undef KeGetCurrentIrql +#undef KeLowerIrql +#undef KeRaiseIrql +#undef KeReleaseSpinLock =
/* DATA ******************************************************************= ****/ =
@@ -730,90 +735,12 @@ return Address; } =
- -#undef KeAcquireSpinLock -VOID -NTAPI -KeAcquireSpinLock( - PKSPIN_LOCK SpinLock, - PKIRQL OldIrql) -{ - UNIMPLEMENTED; -} - - -KIRQL -FASTCALL -KeAcquireSpinLockRaiseToSynch( - PKSPIN_LOCK SpinLock) -{ - UNIMPLEMENTED; - - return 0; -} - - -/* - * @implemented - */ -VOID -FASTCALL -KeAcquireInStackQueuedSpinLock(IN PKSPIN_LOCK SpinLock, - IN PKLOCK_QUEUE_HANDLE LockHandle) -{ - /* Simply raise to dispatch */ - LockHandle->OldIrql =3D KeSwapIrql(DISPATCH_LEVEL); -} - -/* - * @implemented - */ -VOID -FASTCALL -KeAcquireInStackQueuedSpinLockRaiseToSynch(IN PKSPIN_LOCK SpinLock, - IN PKLOCK_QUEUE_HANDLE LockHand= le) -{ - /* Simply raise to synch */ - LockHandle->OldIrql =3D KeSwapIrql(SYNCH_LEVEL); -} - -/* - * @implemented - */ -VOID -FASTCALL -KeReleaseInStackQueuedSpinLock(IN PKLOCK_QUEUE_HANDLE LockHandle) -{ - /* Simply lower IRQL back */ - KeSwapIrql(LockHandle->OldIrql); -} - VOID NTAPI KeFlushWriteBuffer(VOID) { UNIMPLEMENTED; } - -#undef KeGetCurrentIrql -KIRQL -NTAPI -KeGetCurrentIrql(VOID) -{ - UNIMPLEMENTED; - - return (KIRQL)0; -} - -#undef KeLowerIrql -VOID -NTAPI -KeLowerIrql( - KIRQL NewIrql) -{ - UNIMPLEMENTED; -} - =
LARGE_INTEGER NTAPI @@ -829,47 +756,6 @@ return Value; } =
-#undef KeRaiseIrql -VOID -NTAPI -KeRaiseIrql( - KIRQL NewIrql, - PKIRQL OldIrql) -{ - UNIMPLEMENTED; -} - - -KIRQL -NTAPI -KeRaiseIrqlToDpcLevel(VOID) -{ - UNIMPLEMENTED; - - return (KIRQL)0; -} - - -KIRQL -NTAPI -KeRaiseIrqlToSynchLevel(VOID) -{ - UNIMPLEMENTED; - - return (KIRQL)0; -} - -#undef KeReleaseSpinLock -VOID -NTAPI -KeReleaseSpinLock( - PKSPIN_LOCK SpinLock, - KIRQL NewIrql) -{ - UNIMPLEMENTED; -} - - VOID NTAPI KeStallExecutionProcessor( @@ -878,42 +764,6 @@ UNIMPLEMENTED; } =
- -LOGICAL -FASTCALL -KeTryToAcquireQueuedSpinLock( - KSPIN_LOCK_QUEUE_NUMBER LockNumber, - PKIRQL OldIrql) -{ - UNIMPLEMENTED; - - return FALSE; -} - - -BOOLEAN -FASTCALL -KeTryToAcquireQueuedSpinLockRaiseToSynch( - KSPIN_LOCK_QUEUE_NUMBER LockNumber, - PKIRQL OldIrql) -{ - UNIMPLEMENTED; - - return FALSE; -} - - -KIRQL -FASTCALL -KfAcquireSpinLock( - PKSPIN_LOCK SpinLock) -{ - UNIMPLEMENTED; - - return (KIRQL)0; -} - - VOID FASTCALL KfLowerIrql( @@ -932,17 +782,6 @@ =
return (KIRQL)0; } - - -VOID -FASTCALL -KfReleaseSpinLock( - PKSPIN_LOCK SpinLock, - KIRQL NewIrql) -{ - UNIMPLEMENTED; -} - =
VOID NTAPI @@ -1071,31 +910,21 @@ } =
KIRQL -FASTCALL -KeAcquireQueuedSpinLock(IN PKLOCK_QUEUE_HANDLE LockHandle) -{ - UNIMPLEMENTED; - return (KIRQL)0; +KeSwapIrql(IN KIRQL Irql) +{ + UNIMPLEMENTED; + return 0; } =
KIRQL -FASTCALL -KeAcquireQueuedSpinLockRaiseToSynch(IN PKLOCK_QUEUE_HANDLE LockHandle) +KeRaiseIrqlToDpcLevel(VOID) { UNIMPLEMENTED; - return (KIRQL)0; -} - -VOID -FASTCALL -KeReleaseQueuedSpinLock(IN PKLOCK_QUEUE_HANDLE LockHandle, - IN KIRQL OldIrql) -{ - UNIMPLEMENTED; + return 0; } =
KIRQL -KeSwapIrql(IN KIRQL Irql) +KeRaiseIrqlToSynchLevel(VOID) { UNIMPLEMENTED; return 0; @@ -1163,4 +992,195 @@ KeArmFlushIcache(); } =
+/* + * @implemented + */ +KIRQL +NTAPI +KeGetCurrentIrql(VOID) +{ + /* Return IRQL */ + return PCR->CurrentIrql; +} + +/* + * @implemented + */ +VOID +NTAPI +KeLowerIrql(KIRQL NewIrql) +{ + /* Call the fastcall function */ + KfLowerIrql(NewIrql); +} + +/* + * @implemented + */ +VOID +NTAPI +KeRaiseIrql(KIRQL NewIrql, + PKIRQL OldIrql) +{ + /* Call the fastcall function */ + *OldIrql =3D KfRaiseIrql(NewIrql); +} + +/* + * @implemented + */ +VOID +NTAPI +KeAcquireSpinLock(PKSPIN_LOCK SpinLock, + PKIRQL OldIrql) +{ + /* Call the fastcall function */ + *OldIrql =3D KfAcquireSpinLock(SpinLock); +} + +/* + * @implemented + */ +KIRQL +FASTCALL +KeAcquireSpinLockRaiseToSynch(PKSPIN_LOCK SpinLock) +{ + /* Simply raise to dispatch */ + return KfRaiseIrql(DISPATCH_LEVEL); +} + +/* + * @implemented + */ +VOID +NTAPI +KeReleaseSpinLock(PKSPIN_LOCK SpinLock, + KIRQL NewIrql) +{ + /* Call the fastcall function */ + KfReleaseSpinLock(SpinLock, NewIrql); +} + +/* + * @implemented + */ +KIRQL +FASTCALL +KfAcquireSpinLock(PKSPIN_LOCK SpinLock) +{ + /* Simply raise to dispatch */ + return KfRaiseIrql(DISPATCH_LEVEL); +} + +/* + * @implemented + */ +VOID +FASTCALL +KfReleaseSpinLock(PKSPIN_LOCK SpinLock, + KIRQL OldIrql) +{ + /* Simply lower IRQL back */ + KfLowerIrql(OldIrql); +} + +/* + * @implemented + */ +KIRQL +FASTCALL +KeAcquireQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber) +{ + /* Simply raise to dispatch */ + return KfRaiseIrql(DISPATCH_LEVEL); +} + +/* + * @implemented + */ +KIRQL +FASTCALL +KeAcquireQueuedSpinLockRaiseToSynch(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber) +{ + /* Simply raise to dispatch */ + return KfRaiseIrql(DISPATCH_LEVEL); +} + +/* + * @implemented + */ +VOID +FASTCALL +KeAcquireInStackQueuedSpinLock(IN PKSPIN_LOCK SpinLock, + IN PKLOCK_QUEUE_HANDLE LockHandle) +{ + /* Simply raise to dispatch */ + LockHandle->OldIrql =3D KfRaiseIrql(DISPATCH_LEVEL); +} + +/* + * @implemented + */ +VOID +FASTCALL +KeAcquireInStackQueuedSpinLockRaiseToSynch(IN PKSPIN_LOCK SpinLock, + IN PKLOCK_QUEUE_HANDLE LockHand= le) +{ + /* Simply raise to synch */ + LockHandle->OldIrql =3D KfRaiseIrql(SYNCH_LEVEL); +} + +/* + * @implemented + */ +VOID +FASTCALL +KeReleaseQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber, + IN KIRQL OldIrql) +{ + /* Simply lower IRQL back */ + KfLowerIrql(OldIrql); +} + +/* + * @implemented + */ +VOID +FASTCALL +KeReleaseInStackQueuedSpinLock(IN PKLOCK_QUEUE_HANDLE LockHandle) +{ + /* Simply lower IRQL back */ + KfLowerIrql(LockHandle->OldIrql); +} + +/* + * @implemented + */ +BOOLEAN +FASTCALL +KeTryToAcquireQueuedSpinLockRaiseToSynch(IN KSPIN_LOCK_QUEUE_NUMBER LockNu= mber, + IN PKIRQL OldIrql) +{ + /* Simply raise to dispatch */ + *OldIrql =3D KfRaiseIrql(DISPATCH_LEVEL); + =
+ /* Always return true on UP Machines */ + return TRUE; +} + +/* + * @implemented + */ +LOGICAL +FASTCALL +KeTryToAcquireQueuedSpinLock(IN KSPIN_LOCK_QUEUE_NUMBER LockNumber, + OUT PKIRQL OldIrql) +{ + /* Simply raise to dispatch */ + *OldIrql =3D KfRaiseIrql(DISPATCH_LEVEL); + =
+ /* Always return true on UP Machines */ + return TRUE; +} + /* EOF */
Added: trunk/reactos/ntoskrnl/ex/exintrin.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ex/exintrin.= c?rev=3D32654&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/exintrin.c (added) +++ trunk/reactos/ntoskrnl/ex/exintrin.c Mon Mar 10 23:42:54 2008 @@ -1,0 +1,75 @@ +/* + * PROJECT: ReactOS Kernel + * LICENSE: GPL - See COPYING in the top level directory + * FILE: ntoskrnl/ex/exinrin.c + * PURPOSE: Exported kernel functions which are now intrinsics + * PROGRAMMERS: ReactOS Portable Systems Group + */ + +/* INCLUDES **************************************************************= *****/ + +#include <ntoskrnl.h> +#define NDEBUG +#include <debug.h> + +#undef InterlockedIncrement +#undef InterlockedDecrement +#undef InterlockedCompareExchange +#undef InterlockedExchangeAdd +#undef InterlockedExchange + +/* FUNCTIONS *************************************************************= *****/ + +LONG +FASTCALL +InterlockedIncrement(IN LONG volatile *Addend) +{ + // + // Call the intrinsic + // + return _InterlockedIncrement(Addend); =
+} + +LONG +FASTCALL +InterlockedDecrement(IN LONG volatile *Addend) +{ + // + // Call the intrinsic + // + return _InterlockedDecrement(Addend); +} + +LONG +FASTCALL +InterlockedCompareExchange(IN OUT LONG volatile *Destination, + IN LONG Exchange, + IN LONG Comperand) +{ + // + // Call the intrinsic + // + return _InterlockedCompareExchange(Destination, Exchange, Comperand); +} + +LONG +FASTCALL +InterlockedExchange(IN OUT LONG volatile *Destination, + IN LONG Value) +{ + // + // Call the intrinsic + // + return _InterlockedExchange(Destination, Value); +} + +LONG +FASTCALL +InterlockedExchangeAdd(IN OUT LONG volatile *Addend, + IN LONG Increment) +{ + // + // Call the intrinsic + // + return _InterlockedExchangeAdd(Addend, Increment); +}
Propchange: trunk/reactos/ntoskrnl/ex/exintrin.c ---------------------------------------------------------------------------= --- svn:eol-style =3D native
Propchange: trunk/reactos/ntoskrnl/ex/exintrin.c ---------------------------------------------------------------------------= --- svn:mime-type =3D text/plain
Modified: trunk/reactos/ntoskrnl/ex/i386/fastinterlck_asm.S URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ex/i386/fast= interlck_asm.S?rev=3D32654&r1=3D32653&r2=3D32654&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/i386/fastinterlck_asm.S (original) +++ trunk/reactos/ntoskrnl/ex/i386/fastinterlck_asm.S Mon Mar 10 23:42:54 2= 008 @@ -558,54 +558,6 @@ /* Return */ ret =
-/*ULONG - *FASTCALL - *InterlockedIncrement(IN PLONG Addend) - */ -.global @InterlockedIncrement@4 -@InterlockedIncrement@4: - - /* Do the op */ - mov eax, 1 - LOCK xadd dword ptr [ecx], eax - - /* Return */ - inc eax - ret - -/*ULONG - *FASTCALL - *InterlockedDecrement(IN PLONG Addend) - */ -.global @InterlockedDecrement@4 -@InterlockedDecrement@4: - - /* Do the op */ - mov eax, -1 - LOCK xadd dword ptr [ecx], eax - - /* Return */ - dec eax - ret - -/*PVOID - *FASTCALL - *InterlockedCompareExchange(IN OUT PVOID *Destination, - * IN PVOID Exchange, - * IN PVOID Comperand) - */ -.global @InterlockedCompareExchange@12 -@InterlockedCompareExchange@12: - - /* Get comperand */ - mov eax, [esp+4] - - /* Do the op */ - LOCK cmpxchg dword ptr [ecx], edx - - /* Return */ - ret 4 - /*PVOID *FASTCALL *ExfInterlockedCompareExchange64(IN PLONGLONG Destination, @@ -669,21 +621,6 @@ /* Return */ ret 8 =
-/*PVOID - *FASTCALL - *InterlockedExchangeAdd(IN OUT PLONG Addend, - * IN LONG Increment) - */ -.global @InterlockedExchangeAdd@8 -@InterlockedExchangeAdd@8: - - /* Do the op */ - LOCK xadd dword ptr [ecx], edx - - /* Return */ - mov eax, edx - ret - /*** Non-586 functions ***/ =
/*PSINGLE_LIST_ENTRY
Modified: trunk/reactos/ntoskrnl/include/internal/ntoskrnl.h URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/inte= rnal/ntoskrnl.h?rev=3D32654&r1=3D32653&r2=3D32654&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/include/internal/ntoskrnl.h (original) +++ trunk/reactos/ntoskrnl/include/internal/ntoskrnl.h Mon Mar 10 23:42:54 = 2008 @@ -21,6 +21,16 @@ #define KeGetPreviousMode _KeGetPreviousMode #undef PsGetCurrentProcess #define PsGetCurrentProcess _PsGetCurrentProcess + +// +// We are very lazy on ARM -- we just import intrinsics +// Question: Why wasn't this done for x86 too? (see fastintrlck.asm) +// +#define InterlockedDecrement _InterlockedDecrement +#define InterlockedIncrement _InterlockedIncrement +#define InterlockedCompareExchange _InterlockedCompareExchange +#define InterlockedExchange _InterlockedExchange +#define InterlockedExchangeAdd _InterlockedExchangeAdd =
#include "ke.h" #include "i386/mm.h" @@ -54,15 +64,6 @@ #include "vdm.h" #include "hal.h" #include "arch/intrin_i.h" - -// -// We are very lazy on ARM -- we just import intrinsics -// Question: Why wasn't this done for x86 too? (see fastintrlck.asm) -// -#define InterlockedDecrement _InterlockedDecrement -#define InterlockedIncrement _InterlockedIncrement -#define InterlockedCompareExchange _InterlockedCompareExchange -#define InterlockedExchangeAdd _InterlockedExchangeAdd =
#include <pshpack1.h> /*
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=3D32654&r1=3D32653&r2=3D32654&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 Mon Mar 10 23:42:54 2008 @@ -31,11 +31,6 @@ GENERATE_ARM_STUB Exi386InterlockedDecrementLong =
GENERATE_ARM_STUB Exi386InterlockedExchangeUlong =
GENERATE_ARM_STUB Exi386InterlockedIncrementLong =
-GENERATE_ARM_STUB InterlockedCompareExchange =
-GENERATE_ARM_STUB InterlockedDecrement =
-GENERATE_ARM_STUB InterlockedExchange =
-GENERATE_ARM_STUB InterlockedExchangeAdd =
-GENERATE_ARM_STUB InterlockedIncrement =
GENERATE_ARM_STUB InterlockedPopEntrySList =
GENERATE_ARM_STUB InterlockedPushEntrySList =
=
Modified: trunk/reactos/ntoskrnl/mm/arm/stubs.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/arm/stubs= .c?rev=3D32654&r1=3D32653&r2=3D32654&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/mm/arm/stubs.c (original) +++ trunk/reactos/ntoskrnl/mm/arm/stubs.c Mon Mar 10 23:42:54 2008 @@ -11,6 +11,7 @@ #include <ntoskrnl.h> #define NDEBUG #include <debug.h> + /* GLOBALS ***************************************************************= *****/ =
#undef UNIMPLEMENTED @@ -551,15 +552,50 @@ */ PHYSICAL_ADDRESS NTAPI -MmGetPhysicalAddress(IN PVOID vaddr) -{ - PHYSICAL_ADDRESS p; - - // - // TODO - // - UNIMPLEMENTED; - return p; +MmGetPhysicalAddress(IN PVOID Address) +{ + PHYSICAL_ADDRESS PhysicalAddress =3D {{0}}; + PMMPTE PointerPte; + DPRINT1("MmGetPhysicalAddress(%lx)\n", Address); + + // + // Early boot PCR check + // + if (Address =3D=3D PCR) + { + // + // ARM Hack while we still use a section PTE + // + PointerPte =3D MiGetPdeAddress(PCR); + ASSERT(PointerPte->u.Hard.L1.Section.Type =3D=3D SectionPte); + PhysicalAddress.QuadPart =3D PointerPte->u.Hard.L1.Section.BaseAdd= ress; + PhysicalAddress.QuadPart <<=3D CPT_SHIFT; + DPRINT1("Base: %p\n", PhysicalAddress.LowPart); + PhysicalAddress.LowPart +=3D BYTE_OFFSET(Address); + return PhysicalAddress; + } + =
+ // + // Get the PTE + // + PointerPte =3D MiGetPteAddress(Address); + if (PointerPte->u.Hard.L1.Fault.Type =3D=3D FaultPte) + { + // + // Invalid address + // + DPRINT1("Address invalid: %p\n", Address); + return PhysicalAddress; + } + + // + // Return the information + // + ASSERT(PointerPte->u.Hard.L2.Small.Type !=3D SmallPte); + PhysicalAddress.QuadPart =3D PointerPte->u.Hard.L2.Small.BaseAddress; + PhysicalAddress.QuadPart <<=3D PAGE_SHIFT; + PhysicalAddress.LowPart +=3D BYTE_OFFSET(Address); + return PhysicalAddress; } =
PVOID @@ -691,10 +727,9 @@ MiGetUserPageDirectoryCount(VOID) { // - // TODO - // - UNIMPLEMENTED; - return 0; + // Return the index + // + return MiGetPdeOffset(MmSystemRangeStart); } =
VOID
Modified: trunk/reactos/ntoskrnl/ntoskrnl-generic.rbuild URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ntoskrnl-gen= eric.rbuild?rev=3D32654&r1=3D32653&r2=3D32654&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 Mon Mar 10 23:42:54 2008 @@ -181,6 +181,7 @@ <file>efi.c</file> <file>event.c</file> <file>evtpair.c</file> + <file>exintrin.c</file> <file>fmutex.c</file> <file>handle.c</file> <file>harderr.c</file>
Modified: trunk/reactos/ntoskrnl/rtl/arm/rtlexcpt.c URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/rtl/arm/rtle= xcpt.c?rev=3D32654&r1=3D32653&r2=3D32654&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/rtl/arm/rtlexcpt.c (original) +++ trunk/reactos/ntoskrnl/rtl/arm/rtlexcpt.c Mon Mar 10 23:42:54 2008 @@ -1,17 +1,16 @@ /* - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS kernel - * FILE: ntoskrnl/rtl/libsupp.c - * PURPOSE: RTL Support Routines - * PROGRAMMERS: Alex Ionescu (alex@relsoft.net) - * Gunnar Dalsnes + * PROJECT: ReactOS Kernel + * LICENSE: GPL - See COPYING in the top level directory + * FILE: ntoskrnl/rtl/arm/rtlexcpt.c + * PURPOSE: ARM Exception Helper Routines for Stack Walking + * PROGRAMMERS: ReactOS Portable Systems Group */ =
-/* INCLUDES **************************************************************= ****/ +/* INCLUDES **************************************************************= *****/ =
#include <ntoskrnl.h> #define NDEBUG -#include <internal/debug.h> +#include <debug.h> =
/* FUNCTIONS *************************************************************= ****/ =