2 * COPYRIGHT: See COPYING.ARM in the top level directory
3 * PROJECT: ReactOS UEFI Boot Library
4 * FILE: boot/environ/lib/mm/i386/mmx86.c
5 * PURPOSE: Boot Library Memory Manager x86-Specific Code
6 * PROGRAMMER: Alex Ionescu (alex.ionescu@reactos.org)
9 /* INCLUDES ******************************************************************/
13 /* DATA VARIABLES ************************************************************/
15 ULONG_PTR MmArchKsegBase
;
16 ULONG_PTR MmArchKsegBias
;
17 ULONG MmArchLargePageSize
;
18 BL_ADDRESS_RANGE MmArchKsegAddressRange
;
19 ULONG_PTR MmArchTopOfApplicationAddressSpace
;
20 ULONG_PTR Mmx86SelfMapBase
;
28 (*PBL_MM_RELOCATE_SELF_MAP
) (
32 PBL_MM_RELOCATE_SELF_MAP BlMmRelocateSelfMap
;
33 PBL_MM_FLUSH_TLB BlMmFlushTlb
;
35 ULONG MmDeferredMappingCount
;
37 /* FUNCTIONS *****************************************************************/
49 Mmx86pMapMemoryRegions (
51 _In_ PBL_MEMORY_DATA MemoryData
56 /* In phase 1 we don't initialize deferred mappings*/
63 /* Don't do anything if there's nothing to initialize */
64 if (!MmDeferredMappingCount
)
66 return STATUS_SUCCESS
;
74 EfiPrintf(L
"Deferred todo\r\n");
77 EfiPrintf(L
"Phase 1 TODO\r\n");
78 return STATUS_NOT_IMPLEMENTED
;
84 _In_ PBL_MEMORY_DATA MemoryData
,
85 _In_ BL_TRANSLATION_TYPE TranslationType
,
86 _In_ BL_TRANSLATION_TYPE RequestedTranslationType
91 /* For phase 2, just map deferred regions */
94 return Mmx86pMapMemoryRegions(2, MemoryData
);
97 /* What translation type are we switching to? */
98 switch (RequestedTranslationType
)
100 /* Physical memory */
103 /* Initialize everything to default/null values */
104 MmArchLargePageSize
= 1;
107 MmArchKsegAddressRange
.Minimum
= 0;
108 MmArchKsegAddressRange
.Maximum
= (ULONGLONG
)~0;
109 MmArchTopOfApplicationAddressSpace
= 0;
110 Mmx86SelfMapBase
= 0;
112 /* Set stub functions */
113 BlMmRelocateSelfMap
= MmArchNullFunction
;
114 BlMmFlushTlb
= MmArchNullFunction
;
117 Status
= STATUS_SUCCESS
;
122 Status
= STATUS_NOT_IMPLEMENTED
;
127 Status
= STATUS_NOT_SUPPORTED
;
131 Status
= STATUS_INVALID_PARAMETER
;