BL_APPLICATION_ENTRY BlpApplicationEntry;
BOOLEAN BlpLibraryParametersInitialized;
-/* temp */
-BL_TRANSLATION_TYPE MmTranslationType;
-
/* FUNCTIONS *****************************************************************/
+/* HACKKKYYY */
+EFI_SYSTEM_TABLE* g_SystemTable;
+
+VOID
+EarlyPrint(_In_ PWCHAR Format, ...)
+{
+ WCHAR buffer[1024];
+ va_list args;
+
+ va_start(args, Format);
+
+ vswprintf(buffer, Format, args);
+
+ g_SystemTable->ConOut->OutputString(g_SystemTable->ConOut, L"\r");
+ g_SystemTable->ConOut->OutputString(g_SystemTable->ConOut, buffer);
+
+ g_SystemTable->BootServices->Stall(1000000);
+
+ va_end(args);
+}
+/* END HACKKKYYY */
+
/*++
* @name InitializeLibrary
*
)
{
NTSTATUS Status;
- //PBL_MEMORY_DATA MemoryData;
+ PBL_MEMORY_DATA MemoryData;
PBL_APPLICATION_ENTRY AppEntry;
PBL_FIRMWARE_DESCRIPTOR FirmwareDescriptor;
ULONG_PTR ParamPointer = (ULONG_PTR)BootAppParameters;
(BootAppParameters->Signature[1] != BOOT_APPLICATION_SIGNATURE_2) ||
(BootAppParameters->Size < sizeof(*BootAppParameters)))
{
- return STATUS_INVALID_PARAMETER;
+ Status = STATUS_INVALID_PARAMETER;
+ goto Quickie;
}
/* Get sub-structures */
- //MemoryData = (PBL_MEMORY_DATA)(ParamPointer + BootAppParameters->MemoryDataOffset);
+ MemoryData = (PBL_MEMORY_DATA)(ParamPointer + BootAppParameters->MemoryDataOffset);
FirmwareDescriptor = (PBL_FIRMWARE_DESCRIPTOR)(ParamPointer + BootAppParameters->FirmwareParametersOffset);
AppEntry = (PBL_APPLICATION_ENTRY)(ParamPointer + BootAppParameters->AppEntryOffset);
BlpBootDevice = (PBL_DEVICE_DESCRIPTOR)(ParamPointer + BootAppParameters->BootDeviceOffset);
if (strncmp(AppEntry->Signature, BL_APP_ENTRY_SIGNATURE, 7))
{
Status = STATUS_INVALID_PARAMETER_9;
+ goto Quickie;
}
/* Read parameters */
goto Quickie;
}
+ /* Initialize the memory manager */
+ Status = BlpMmInitialize(MemoryData,
+ BootAppParameters->MemoryTranslationType,
+ LibraryParameters);
+ if (!NT_SUCCESS(Status))
+ {
+ EarlyPrint(L"MM init failed!\n");
+ goto Quickie;
+ }
+
+ EarlyPrint(L"TODO!\n");
Status = STATUS_NOT_IMPLEMENTED;
Quickie:
+ EarlyPrint(L"Exiting init: %lx\n", Status);
return Status;
}
NTSTATUS Status;
/* Are we re-initializing the library? */
- if (LibraryParameters->LibraryFlags & 2)
+ if (LibraryParameters->LibraryFlags & BL_LIBRARY_FLAG_REINITIALIZE)
{
/* From scratch? */
BlpLibraryParameters = *LibraryParameters;
- if (LibraryParameters->LibraryFlags & 4)
+ if (LibraryParameters->LibraryFlags & BL_LIBRARY_FLAG_REINITIALIZE_ALL)
{
#if 0
/* Initialize all the core modules again */