Author: ros-arm-bringup
Date: Sun Jul 27 00:40:31 2008
New Revision: 34824
URL: http://svn.reactos.org/svn/reactos?rev=34824&view=rev
Log:
- On ARM, print out a message and freeze execution inside the native process main routine wrapper. This is essentially the first line of code that will execute in user-mode, and we need to know (celebrate) about it.
Modified:
trunk/reactos/lib/sdk/nt/entry_point.c
Modified: trunk/reactos/lib/sdk/nt/entry_point.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/nt/entry_point.c?r…
==============================================================================
--- trunk/reactos/lib/sdk/nt/entry_point.c [iso-8859-1] (original)
+++ trunk/reactos/lib/sdk/nt/entry_point.c [iso-8859-1] Sun Jul 27 00:40:31 2008
@@ -76,7 +76,10 @@
ULONG Length;
ASSERT(Peb);
- DPRINT("%s(%08lx) called\n", __FUNCTION__, Peb);
+#ifdef _M_ARM // Huge achievement
+ DPRINT1("%s(%08lx) called\n", __FUNCTION__, Peb);
+ while (TRUE);
+#endif
/* Normalize and get the Process Parameters */
ProcessParameters = RtlNormalizeProcessParams(Peb->ProcessParameters);
Author: ros-arm-bringup
Date: Sun Jul 27 00:38:51 2008
New Revision: 34821
URL: http://svn.reactos.org/svn/reactos?rev=34821&view=rev
Log:
- MmDeleteVirtualMapping can be called for memory that isn't mapped yet -- just ignore this like we do on x86.
- This gets us much farther, to the point where we try to load smss.exe but can't find it.
Modified:
trunk/reactos/ntoskrnl/mm/arm/stubs.c
Modified: trunk/reactos/ntoskrnl/mm/arm/stubs.c
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/mm/arm/stubs.c?re…
==============================================================================
--- trunk/reactos/ntoskrnl/mm/arm/stubs.c [iso-8859-1] (original)
+++ trunk/reactos/ntoskrnl/mm/arm/stubs.c [iso-8859-1] Sun Jul 27 00:38:51 2008
@@ -293,12 +293,21 @@
// Get the PTE
//
PointerPte = MiGetPteAddress(Address);
+ if (PointerPte->u.Hard.L1.Fault.Type == FaultPte)
+ {
+ //
+ // Invalid PTE
+ //
+ if (WasDirty) *WasDirty = FALSE;
+ if (Page) *Page = 0;
+ return;
+ }
+
+ //
+ // Save the PTE
+ //
+ Pte = *PointerPte;
ASSERT(PointerPte->u.Hard.L2.Small.Type == SmallPte);
-
- //
- // Save the PTE
- //
- Pte = *PointerPte;
//
// Destroy the PTE