ULONG FldrpHwHeapLocation;
PCONFIGURATION_COMPONENT_DATA FldrArcHwTreeRoot;
+BOOLEAN UseRealHeap = FALSE;
+
/* FUNCTIONS ******************************************************************/
PVOID
FldrpHwHeapAlloc(IN ULONG Size)
{
PVOID Buffer;
-
- /* Return a block of memory from the ARC Hardware Heap */
- Buffer = &reactos_arc_hardware_data[FldrpHwHeapLocation];
-
- /* Increment the heap location */
- FldrpHwHeapLocation += Size;
- if (FldrpHwHeapLocation > HW_MAX_ARC_HEAP_SIZE) Buffer = NULL;
+
+ if (UseRealHeap)
+ {
+ /* Allocate memory from generic bootloader heap */
+ Buffer = MmHeapAlloc(Size);
+ }
+ else
+ {
+ /* Return a block of memory from the ARC Hardware Heap */
+ Buffer = &reactos_arc_hardware_data[FldrpHwHeapLocation];
+
+ /* Increment the heap location */
+ FldrpHwHeapLocation += Size;
+ if (FldrpHwHeapLocation > HW_MAX_ARC_HEAP_SIZE) Buffer = NULL;
+ }
/* Clear it */
if (Buffer)
extern ARC_DISK_SIGNATURE reactos_arc_disk_info[];\r
extern char reactos_arc_strings[32][256];\r
\r
+extern BOOLEAN UseRealHeap;\r
+\r
BOOLEAN\r
WinLdrCheckForLoadedDll(IN OUT PLOADER_PARAMETER_BLOCK WinLdrBlock,\r
IN PCH DllName,\r
AllocateAndInitLPB(&LoaderBlock);\r
\r
/* Detect hardware */\r
+ UseRealHeap = TRUE;\r
LoaderBlock->ConfigurationRoot = MachHwDetect();\r
\r
/* Load kernel */\r