ReactOS  0.4.14-dev-556-g4c5b21f
winldr.c File Reference
#include <freeldr.h>
#include <debug.h>
#include <internal/arm/mm.h>
#include <internal/arm/intrin_i.h>
#include "../../winldr.h"
Include dependency graph for winldr.c:

Go to the source code of this file.

Classes

struct  _KPDR_PAGE
 

Macros

#define PFN_SHIFT   12
 
#define LARGE_PFN_SHIFT   20
 
#define PTE_BASE   0xC0000000
 
#define PDE_BASE   0xC0400000
 
#define PDR_BASE   0xFFD00000
 
#define VECTOR_BASE   0xFFFF0000
 
#define IDMAP_BASE   0x00000000
 
#define MMIO_BASE   0x10000000
 
#define LowMemPageTableIndex   (IDMAP_BASE >> PDE_SHIFT)
 
#define MmioPageTableIndex   (MMIO_BASE >> PDE_SHIFT)
 
#define KernelPageTableIndex   (KSEG0_BASE >> PDE_SHIFT)
 
#define StartupPtePageTableIndex   (PTE_BASE >> PDE_SHIFT)
 
#define StartupPdePageTableIndex   (PDE_BASE >> PDE_SHIFT)
 
#define PdrPageTableIndex   (PDR_BASE >> PDE_SHIFT)
 
#define VectorPageTableIndex   (VECTOR_BASE >> PDE_SHIFT)
 
#define PaToPfn(p)   ((p) >> PFN_SHIFT)
 
#define PaToLargePfn(p)   ((p) >> LARGE_PFN_SHIFT)
 
#define PaPtrToPfn(p)   (((ULONG_PTR)(p)) >> PFN_SHIFT)
 
#define PaPtrToPdePfn(p)   (((ULONG_PTR)(p)) >> CPT_SHIFT)
 

Typedefs

typedef struct _KPDR_PAGE KPDR_PAGE
 
typedef struct _KPDR_PAGEPKPDR_PAGE
 

Functions

 C_ASSERT (sizeof(KPDR_PAGE)==(1 *1024 *1024))
 
BOOLEAN MempSetupPaging (IN PFN_NUMBER StartPage, IN PFN_NUMBER NumberOfPages, IN BOOLEAN KernelMapping)
 
VOID MempUnmapPage (IN PFN_NUMBER Page)
 
VOID MempDump (VOID)
 
static BOOLEAN WinLdrMapSpecialPages (ULONG PcrBasePage)
 
VOID WinLdrSetupForNt (IN PLOADER_PARAMETER_BLOCK LoaderBlock, IN PVOID *GdtIdt, IN PULONG PcrBasePage, IN PULONG TssBasePage)
 
static BOOLEAN MempAllocatePageTables (VOID)
 
VOID WinLdrSetProcessorContext (VOID)
 
VOID WinLdrSetupMachineDependent (PLOADER_PARAMETER_BLOCK LoaderBlock)
 

Variables

PVOID MempPdrBaseAddress = (PVOID)0x70000
 
PVOID MempKernelBaseAddress = (PVOID)0
 
HARDWARE_PTE_ARMV6 TempPte
 
HARDWARE_LARGE_PTE_ARMV6 TempLargePte
 
HARDWARE_PDE_ARMV6 TempPde
 
PKPDR_PAGE PdrPage
 

Macro Definition Documentation

◆ IDMAP_BASE

#define IDMAP_BASE   0x00000000

Definition at line 29 of file winldr.c.

◆ KernelPageTableIndex

#define KernelPageTableIndex   (KSEG0_BASE >> PDE_SHIFT)

Definition at line 35 of file winldr.c.

◆ LARGE_PFN_SHIFT

#define LARGE_PFN_SHIFT   20

Definition at line 18 of file winldr.c.

◆ LowMemPageTableIndex

#define LowMemPageTableIndex   (IDMAP_BASE >> PDE_SHIFT)

Definition at line 33 of file winldr.c.

◆ MMIO_BASE

#define MMIO_BASE   0x10000000

Definition at line 30 of file winldr.c.

◆ MmioPageTableIndex

#define MmioPageTableIndex   (MMIO_BASE >> PDE_SHIFT)

Definition at line 34 of file winldr.c.

◆ PaPtrToPdePfn

#define PaPtrToPdePfn (   p)    (((ULONG_PTR)(p)) >> CPT_SHIFT)

Definition at line 55 of file winldr.c.

◆ PaPtrToPfn

#define PaPtrToPfn (   p)    (((ULONG_PTR)(p)) >> PFN_SHIFT)

Definition at line 52 of file winldr.c.

◆ PaToLargePfn

#define PaToLargePfn (   p)    ((p) >> LARGE_PFN_SHIFT)

Definition at line 51 of file winldr.c.

◆ PaToPfn

#define PaToPfn (   p)    ((p) >> PFN_SHIFT)

Definition at line 50 of file winldr.c.

◆ PDE_BASE

#define PDE_BASE   0xC0400000

Definition at line 21 of file winldr.c.

◆ PDR_BASE

#define PDR_BASE   0xFFD00000

Definition at line 22 of file winldr.c.

◆ PdrPageTableIndex

#define PdrPageTableIndex   (PDR_BASE >> PDE_SHIFT)

Definition at line 38 of file winldr.c.

◆ PFN_SHIFT

#define PFN_SHIFT   12

Definition at line 17 of file winldr.c.

◆ PTE_BASE

#define PTE_BASE   0xC0000000

Definition at line 20 of file winldr.c.

◆ StartupPdePageTableIndex

#define StartupPdePageTableIndex   (PDE_BASE >> PDE_SHIFT)

Definition at line 37 of file winldr.c.

◆ StartupPtePageTableIndex

#define StartupPtePageTableIndex   (PTE_BASE >> PDE_SHIFT)

Definition at line 36 of file winldr.c.

◆ VECTOR_BASE

#define VECTOR_BASE   0xFFFF0000

Definition at line 23 of file winldr.c.

◆ VectorPageTableIndex

#define VectorPageTableIndex   (VECTOR_BASE >> PDE_SHIFT)

Definition at line 39 of file winldr.c.

Typedef Documentation

◆ KPDR_PAGE

◆ PKPDR_PAGE

Function Documentation

◆ C_ASSERT()

C_ASSERT ( sizeof(KPDR_PAGE = =(1 *1024 *1024))

◆ MempAllocatePageTables()

static BOOLEAN MempAllocatePageTables ( VOID  )
static

Definition at line 198 of file winldr.c.

199 {
200  ULONG i;
201  PHARDWARE_PTE_ARMV6 PointerPte;
202  PHARDWARE_PDE_ARMV6 PointerPde;
203  PHARDWARE_LARGE_PTE_ARMV6 LargePte;
204  PFN_NUMBER Pfn;
205 
206  /* Setup templates */
208 
209  /* Allocate the 1MB "PDR" (Processor Data Region). Must be 1MB aligned */
213 
214  /* Setup the Low Memory PDE as an identity-mapped Large Page (1MB) */
215  LargePte = &PdrPage->PageDir.Pte[LowMemPageTableIndex];
217  *LargePte = TempLargePte;
218 
219  /* Setup the MMIO PDE as two identity mapped large pages -- the kernel will blow these away later */
220  LargePte = &PdrPage->PageDir.Pte[MmioPageTableIndex];
221  Pfn = PaToLargePfn(MMIO_BASE);
222  for (i = 0; i < 2; i++)
223  {
225  *LargePte++ = TempLargePte;
226  }
227 
228  /* Setup the Kernel PDEs */
229  PointerPde = &PdrPage->PageDir.Pde[KernelPageTableIndex];
231  for (i = 0; i < 12; i++)
232  {
233  TempPde.PageFrameNumber = Pfn;
234  *PointerPde++ = TempPde;
235  Pfn++;
236  }
237 
238  /* Setup the Kernel PTEs */
239  PointerPte = PdrPage->KernelPageTable[0].Pte;
241  for (i = 0; i < 3072; i++)
242  {
243  TempPte.PageFrameNumber = Pfn++;
244  *PointerPte++ = TempPte;
245  }
246 
247  /* Done */
248  return TRUE;
249 }
#define TRUE
Definition: types.h:120
HARDWARE_PDE_ARMV6 Pde[4096]
Definition: hardware.h:52
#define LowMemPageTableIndex
Definition: winldr.c:33
HARDWARE_PDE_ARMV6 TempPde
Definition: winldr.c:78
PVOID MempPdrBaseAddress
Definition: winldr.c:42
HARDWARE_LARGE_PTE_ARMV6 Pte[4096]
Definition: hardware.h:53
#define MMIO_BASE
Definition: winldr.c:30
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
ULONG PFN_NUMBER
Definition: ke.h:8
#define PaPtrToPdePfn(p)
Definition: winldr.c:55
#define MmioPageTableIndex
Definition: winldr.c:34
PAGE_DIRECTORY_ARM PageDir
Definition: winldr.c:59
PVOID MempKernelBaseAddress
Definition: winldr.c:43
ULONG PageFrameNumber
Definition: mmtypes.h:74
PAGE_TABLE_ARM KernelPageTable[3]
Definition: winldr.c:61
#define KernelPageTableIndex
Definition: winldr.c:35
HARDWARE_PTE_ARMV6 TempPte
Definition: winldr.c:76
#define PaToLargePfn(p)
Definition: winldr.c:51
PKPDR_PAGE PdrPage
Definition: winldr.c:79
PVOID MmAllocateMemoryAtAddress(SIZE_T MemorySize, PVOID DesiredAddress, TYPE_OF_MEMORY MemoryType)
Definition: mm.c:85
HARDWARE_PTE_ARMV6 Pte[1024]
Definition: hardware.h:44
#define IDMAP_BASE
Definition: winldr.c:29
unsigned int ULONG
Definition: retypes.h:1
#define PaPtrToPfn(p)
Definition: winldr.c:52
ULONG PageFrameNumber
Definition: mmtypes.h:109
HARDWARE_LARGE_PTE_ARMV6 TempLargePte
Definition: winldr.c:77

◆ MempDump()

VOID MempDump ( VOID  )

Definition at line 98 of file winldr.c.

99 {
100  return;
101 }

◆ MempSetupPaging()

BOOLEAN MempSetupPaging ( IN PFN_NUMBER  StartPage,
IN PFN_NUMBER  NumberOfPages,
IN BOOLEAN  KernelMapping 
)

Definition at line 84 of file winldr.c.

87 {
88  return TRUE;
89 }
#define TRUE
Definition: types.h:120

◆ MempUnmapPage()

VOID MempUnmapPage ( IN PFN_NUMBER  Page)

Definition at line 92 of file winldr.c.

93 {
94  return;
95 }

◆ WinLdrMapSpecialPages()

static BOOLEAN WinLdrMapSpecialPages ( ULONG  PcrBasePage)
static

Definition at line 105 of file winldr.c.

106 {
107  ULONG i;
108  PHARDWARE_PTE_ARMV6 PointerPte;
109  PHARDWARE_PDE_ARMV6 PointerPde;
110  PHARDWARE_LARGE_PTE_ARMV6 LargePte;
111  PFN_NUMBER Pfn;
112 
113  /* Setup the Startup PDE */
116  *LargePte = TempLargePte;
117 
118  /* Map-in the PDR */
119  LargePte = &PdrPage->PageDir.Pte[PdrPageTableIndex];
120  *LargePte = TempLargePte;
121 
122  /* After this point, any MiAddressToPde is guaranteed not to fault */
123 
124  /*
125  * Link them in the Startup PDE.
126  * Note these are the entries in the PD at (MiAddressToPde(PTE_BASE)).
127  */
130  for (i = 0; i < 4; i++)
131  {
132  TempPde.PageFrameNumber = Pfn++;
133  *PointerPde++ = TempPde;
134  }
135 
136  /*
137  * Now map these page tables in PTE space (MiAddressToPte(PTE_BASE)).
138  * Note that they all live on a single page, since each is 1KB.
139  */
140  PointerPte = &PdrPage->PageDirPageTable.Pte[0x300];
142  *PointerPte = TempPte;
143 
144  /*
145  * After this point, MiAddressToPte((PDE_BASE) to MiAddressToPte(PDE_TOP))
146  * is guaranteed not to fault.
147  * Any subsequent page allocation will first need its page table created
148  * and mapped in the PTE_BASE first, then the page table itself will be
149  * editable through its flat PTE address.
150  */
151 
152  /* Setup the Vector PDE */
153  PointerPde = &PdrPage->PageDir.Pde[VectorPageTableIndex];
155  *PointerPde = TempPde;
156 
157  /* Setup the Vector PTEs */
158  PointerPte = &PdrPage->VectorPageTable.Pte[0xF0];
160  *PointerPte = TempPte;
161 
162  /* TODO: Map in the kernel CPTs */
163  return TRUE;
164 }
#define TRUE
Definition: types.h:120
HARDWARE_PDE_ARMV6 Pde[4096]
Definition: hardware.h:52
HARDWARE_PDE_ARMV6 TempPde
Definition: winldr.c:78
HARDWARE_LARGE_PTE_ARMV6 Pte[4096]
Definition: hardware.h:53
uint32_t ULONG_PTR
Definition: typedefs.h:63
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
Definition: glfuncs.h:248
ULONG PFN_NUMBER
Definition: ke.h:8
#define PaPtrToPdePfn(p)
Definition: winldr.c:55
PAGE_DIRECTORY_ARM PageDir
Definition: winldr.c:59
ULONG PageFrameNumber
Definition: mmtypes.h:74
PAGE_TABLE_ARM PageDirPageTable
Definition: winldr.c:69
#define StartupPdePageTableIndex
Definition: winldr.c:37
HARDWARE_PTE_ARMV6 TempPte
Definition: winldr.c:76
#define PaToLargePfn(p)
Definition: winldr.c:51
PKPDR_PAGE PdrPage
Definition: winldr.c:79
HARDWARE_PTE_ARMV6 Pte[1024]
Definition: hardware.h:44
PAGE_TABLE_ARM VectorPageTable
Definition: winldr.c:70
#define VectorPageTableIndex
Definition: winldr.c:39
#define PdrPageTableIndex
Definition: winldr.c:38
unsigned int ULONG
Definition: retypes.h:1
#define PaPtrToPfn(p)
Definition: winldr.c:52
ULONG PageFrameNumber
Definition: mmtypes.h:109
#define StartupPtePageTableIndex
Definition: winldr.c:36
HARDWARE_LARGE_PTE_ARMV6 TempLargePte
Definition: winldr.c:77

◆ WinLdrSetProcessorContext()

VOID WinLdrSetProcessorContext ( VOID  )

Definition at line 252 of file winldr.c.

253 {
254  ARM_CONTROL_REGISTER ControlRegister;
255  ARM_TTB_REGISTER TtbRegister;
256  ARM_DOMAIN_REGISTER DomainRegister;
257 
258  /* Set the TTBR */
259  TtbRegister.AsUlong = (ULONG_PTR)&PdrPage->PageDir;
260  ASSERT(TtbRegister.Reserved == 0);
262 
263  /* Disable domains and simply use access bits on PTEs */
264  DomainRegister.AsUlong = 0;
265  DomainRegister.Domain0 = ClientDomain;
266  KeArmDomainRegisterSet(DomainRegister);
267 
268  /* Enable ARMv6+ paging (MMU), caches and the access bit */
269  ControlRegister = KeArmControlRegisterGet();
270  ControlRegister.MmuEnabled = TRUE;
271  ControlRegister.ICacheEnabled = TRUE;
272  ControlRegister.DCacheEnabled = TRUE;
273  ControlRegister.ForceAp = TRUE;
274  ControlRegister.ExtendedPageTables = TRUE;
275  KeArmControlRegisterSet(ControlRegister);
276 }
#define TRUE
Definition: types.h:120
FORCEINLINE VOID KeArmDomainRegisterSet(IN ARM_DOMAIN_REGISTER DomainRegister)
Definition: intrin_i.h:155
FORCEINLINE ARM_CONTROL_REGISTER KeArmControlRegisterGet(VOID)
Definition: intrin_i.h:18
FORCEINLINE VOID KeArmControlRegisterSet(IN ARM_CONTROL_REGISTER ControlRegister)
Definition: intrin_i.h:135
PAGE_DIRECTORY_ARM PageDir
Definition: winldr.c:59
ASSERT((InvokeOnSuccess||InvokeOnError||InvokeOnCancel) ?(CompletionRoutine !=NULL) :TRUE)
PKPDR_PAGE PdrPage
Definition: winldr.c:79
ULONG ExtendedPageTables
Definition: ketypes.h:512
#define ULONG_PTR
Definition: config.h:101
FORCEINLINE VOID KeArmTranslationTableRegisterSet(IN ARM_TTB_REGISTER Ttb)
Definition: intrin_i.h:145

◆ WinLdrSetupForNt()

VOID WinLdrSetupForNt ( IN PLOADER_PARAMETER_BLOCK  LoaderBlock,
IN PVOID GdtIdt,
IN PULONG  PcrBasePage,
IN PULONG  TssBasePage 
)

Definition at line 167 of file winldr.c.

171 {
172  PKPDR_PAGE PdrPage = (PVOID)0xFFD00000;
173 
174  /* Load cache information */
175  LoaderBlock->u.Arm.FirstLevelDcacheSize = FirstLevelDcacheSize;
176  LoaderBlock->u.Arm.FirstLevelDcacheFillSize = FirstLevelDcacheFillSize;
177  LoaderBlock->u.Arm.FirstLevelIcacheSize = FirstLevelIcacheSize;
178  LoaderBlock->u.Arm.FirstLevelIcacheFillSize = FirstLevelIcacheFillSize;
179  LoaderBlock->u.Arm.SecondLevelDcacheSize = SecondLevelDcacheSize;
180  LoaderBlock->u.Arm.SecondLevelDcacheFillSize = SecondLevelDcacheFillSize;
181  LoaderBlock->u.Arm.SecondLevelIcacheSize = SecondLevelIcacheSize;
182  LoaderBlock->u.Arm.SecondLevelIcacheFillSize = SecondLevelIcacheSize;
183 
184  /* Write initial context information */
185  LoaderBlock->KernelStack = (ULONG_PTR)PdrPage->KernelStack;
186  LoaderBlock->KernelStack += KERNEL_STACK_SIZE;
187  LoaderBlock->u.Arm.PanicStack = (ULONG_PTR)PdrPage->PanicStack;
188  LoaderBlock->u.Arm.PanicStack += KERNEL_STACK_SIZE;
189  LoaderBlock->u.Arm.InterruptStack = (ULONG_PTR)PdrPage->InterruptStack;
190  LoaderBlock->u.Arm.InterruptStack += KERNEL_STACK_SIZE;
191  LoaderBlock->Prcb = (ULONG_PTR)PdrPage->Prcb;
192  LoaderBlock->Process = (ULONG_PTR)PdrPage->InitialProcess;
193  LoaderBlock->Thread = (ULONG_PTR)PdrPage->InitialThread;
194 }
ULONG FirstLevelIcacheSize
Definition: macharm.c:25
ULONG FirstLevelDcacheSize
Definition: macharm.c:23
ULONG SecondLevelDcacheSize
Definition: macharm.c:27
uint32_t ULONG_PTR
Definition: typedefs.h:63
CHAR InitialProcess[PAGE_SIZE]
Definition: winldr.c:66
ULONG SecondLevelDcacheFillSize
Definition: macharm.c:28
void * PVOID
Definition: retypes.h:9
#define KERNEL_STACK_SIZE
PKPDR_PAGE PdrPage
Definition: winldr.c:79
ULONG FirstLevelDcacheFillSize
Definition: macharm.c:24
ULONG SecondLevelIcacheSize
Definition: macharm.c:29
CHAR InitialThread[PAGE_SIZE]
Definition: winldr.c:67
CHAR KernelStack[KERNEL_STACK_SIZE]
Definition: winldr.c:63
#define ULONG_PTR
Definition: config.h:101
CHAR Prcb[PAGE_SIZE]
Definition: winldr.c:68
CHAR InterruptStack[KERNEL_STACK_SIZE]
Definition: winldr.c:65
ULONG FirstLevelIcacheFillSize
Definition: macharm.c:26
CHAR PanicStack[KERNEL_STACK_SIZE]
Definition: winldr.c:64

◆ WinLdrSetupMachineDependent()

VOID WinLdrSetupMachineDependent ( PLOADER_PARAMETER_BLOCK  LoaderBlock)

Definition at line 279 of file winldr.c.

281 {
282 }

Variable Documentation

◆ MempKernelBaseAddress

PVOID MempKernelBaseAddress = (PVOID)0

Definition at line 43 of file winldr.c.

Referenced by MempAllocatePageTables().

◆ MempPdrBaseAddress

PVOID MempPdrBaseAddress = (PVOID)0x70000

Definition at line 42 of file winldr.c.

Referenced by MempAllocatePageTables().

◆ PdrPage

◆ TempLargePte

Definition at line 77 of file winldr.c.

Referenced by MempAllocatePageTables(), and WinLdrMapSpecialPages().

◆ TempPde

◆ TempPte

Definition at line 76 of file winldr.c.

Referenced by KdpPhysMap(), MempAllocatePageTables(), MI_UPDATE_VALID_PTE(), MI_WRITE_VALID_PTE(), MiAccessCheck(), MiAddMappedPtes(), MiAllocatePoolPages(), MiBuildPagedPool(), MiCompleteProtoPteFault(), MiCopyPfn(), MiCreatePagingFileMap(), MiDbgTranslatePhysicalAddress(), MiDecrementShareCount(), MiDeletePte(), MiDeleteVirtualAddresses(), MiDetermineUserGlobalPteMask(), MiDispatchFault(), MiFlushTbAndCapture(), MiGetPageProtection(), MiGetPageTableForProcess(), MiInitializeColorTables(), MiInitializePfnAndMakePteValid(), MiInitMachineDependent(), MiLoadImageSection(), MiMapLockedPagesInUserSpace(), MiMapPageInHyperSpace(), MiMapPagesInZeroSpace(), MiMapPfnDatabase(), MiMapViewOfDataSection(), MiProcessValidPteList(), MiProtectFreeNonPagedPool(), MiQueryAddressState(), MiReloadBootLoadedDrivers(), MiResolveDemandZeroFault(), MiResolvePageFileFault(), MiResolveProtoPteFault(), MiResolveTransitionFault(), MiSegmentDelete(), MiSessionCreateInternal(), MiSessionInitializeWorkingSetList(), MiSetProtectionOnSection(), MiSetSystemCodeProtection(), MiUnProtectFreeNonPagedPool(), MiZeroPfn(), MmAllocateNonCachedMemory(), MmAllocateSpecialPool(), MmArmAccessFault(), MmArmInitSystem(), MmChangeKernelResourceSectionProtection(), MmCommitSessionMappedView(), MmCreateKernelStack(), MmCreateProcessAddressSpace(), MmCreateVirtualMappingInternal(), MmGetPhysicalAddress(), MmGrowKernelStackEx(), MmInitializeProcessAddressSpace(), MmInitSystem(), MmMapIoSpace(), MmMapLockedPagesSpecifyCache(), NtAllocateVirtualMemory(), and WinLdrMapSpecialPages().