return (MmioRead32(FixedPcdGet32(PcdPL180SysMciRegAddress)) & 2);\r
}\r
\r
+#if 0\r
+//Note: This function has been commented out because it is not used yet.\r
+// This function could be used to remove the hardcoded BlockLen used\r
+// in MciPrepareDataPath\r
+\r
// Convert block size to 2^n\r
STATIC\r
UINT32\r
\r
return Pow2BlockLen;\r
}\r
+#endif\r
\r
VOID\r
MciPrepareDataPath (\r
#include "BdsInternal.h"
-//#include <Library/PeCoffLib.h>
-#include <Library/DxeServicesLib.h>
-
-//TODO: RemoveMe
-#include <Protocol/DevicePathToText.h>
-
-/**
- Retrieves the magic value from the PE/COFF header.
-
- @param Hdr The buffer in which to return the PE32, PE32+, or TE header.
-
- @return EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC - Image is PE32
- @return EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC - Image is PE32+
-
-**/
-UINT16
-PeCoffLoaderGetPeHeaderMagicValue (
- IN EFI_IMAGE_OPTIONAL_HEADER_PTR_UNION Hdr
- )
-{
- //
- // NOTE: Some versions of Linux ELILO for Itanium have an incorrect magic value
- // in the PE/COFF Header. If the MachineType is Itanium(IA64) and the
- // Magic value in the OptionalHeader is EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC
- // then override the returned value to EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC
- //
- if (Hdr.Pe32->FileHeader.Machine == IMAGE_FILE_MACHINE_IA64 && Hdr.Pe32->OptionalHeader.Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {
- return EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC;
- }
- //
- // Return the magic value from the PC/COFF Optional Header
- //
- return Hdr.Pe32->OptionalHeader.Magic;
-}
-
-STATIC
-BOOLEAN
-IsLoadableImage (
- VOID* Image
- )
-{
- UINT16 Magic;
- EFI_IMAGE_DOS_HEADER *DosHeader;
- EFI_IMAGE_OPTIONAL_HEADER_PTR_UNION Header;
-
- if (Image == NULL) {
- return FALSE;
- }
-
- DosHeader = (EFI_IMAGE_DOS_HEADER*)Image;
- if (DosHeader->e_magic == EFI_IMAGE_DOS_SIGNATURE) {
- Header.Pe32 = (EFI_IMAGE_NT_HEADERS32*)((UINT8*)Image + DosHeader->e_lfanew);
- } else {
- Header.Pe32 = (EFI_IMAGE_NT_HEADERS32*)(Image);
- }
-
- if (Header.Te->Signature == EFI_TE_IMAGE_HEADER_SIGNATURE) {
- // It is a TE Image
- return TRUE;
- } else if (Header.Pe32->Signature == EFI_IMAGE_NT_SIGNATURE) {
- Magic = PeCoffLoaderGetPeHeaderMagicValue (Header);
- if (Magic == EFI_IMAGE_NT_OPTIONAL_HDR32_MAGIC) {
- // It is a PE32 Image
- return TRUE;
- } else if (Magic == EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC) {
- // It is a PE32+ Image
- return TRUE;
- } else {
- DEBUG ((EFI_D_ERROR,"BdsLoadBinaryFromPath(): Fail unrecognized PE Image\n"));
- }
- } else {
- DEBUG ((EFI_D_ERROR,"BdsLoadBinaryFromPath(): Fail unrecognize image\n"));
- }
-
- return FALSE;
-}
+//#include <Library/DxeServicesLib.h>
STATIC
EFI_STATUS
EFI_STATUS Status;
UINTN NoHandles, HandleIndex;
EFI_HANDLE *Handles;
- EFI_DEVICE_PATH *FvDevicePath;
EFI_DEVICE_PATH *EfiAppDevicePath;
// Need to connect every drivers to ensure no dependencies are missing for the application
// Search in all Firmware Volume for the EFI Application
for (HandleIndex = 0; HandleIndex < NoHandles; HandleIndex++) {
+ EfiAppDevicePath = NULL;
Status = BdsLoadFileFromFirmwareVolume (Handles[HandleIndex], EfiApp, EFI_FV_FILETYPE_APPLICATION, &EfiAppDevicePath);
if (!EFI_ERROR (Status)) {
// Start the application
EFI_DEVICE_PATH* RemovableDevicePath;
BOOLEAN RemovableFound;
- RemovableFound = FALSE;
- TmpDevicePath = DevicePath;
+ RemovableDevice = NULL;
+ RemovableDevicePath = NULL;
+ RemovableFound = FALSE;
+ TmpDevicePath = DevicePath;
+
while (!IsDevicePathEnd (TmpDevicePath) && !RemovableFound) {
for (Index = 0; Index < sizeof(RemovableDeviceSupport) / sizeof(BDS_REMOVABLE_DEVICE_SUPPORT); Index++) {
RemovableDevice = &RemovableDeviceSupport[Index];
IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext\r
)\r
{\r
- CHAR8 Temp[512];\r
+#if !defined(MDEPKG_NDEBUG) \r
+ CHAR8 Temp[512];\r
+#endif\r
\r
#ifdef __CC_ARM\r
// Print out the command for the RVD debugger to load symbols for this image\r
IN OUT PE_COFF_LOADER_IMAGE_CONTEXT *ImageContext\r
)\r
{\r
+#if !defined(MDEPKG_NDEBUG)\r
CHAR8 Temp[512];\r
+#endif\r
\r
#ifdef __CC_ARM\r
{ \r
#include <Drivers/PL301Axi.h>
#include <Drivers/SP804Timer.h>
-#define SerialPrint(txt) SerialPortWrite (txt, AsciiStrLen(txt)+1);
+#define SerialPrint(txt) SerialPortWrite ((UINT8*)(txt), AsciiStrLen(txt)+1);
// DDR2 timings
PL341_DMC_CONFIG DDRTimings = {
// We convert back to the text representation of the device Path
EFI_DEVICE_PATH_TO_TEXT_PROTOCOL* DevicePathToTextProtocol;
CHAR16* DevicePathTxt;
+ EFI_STATUS Status;
+
+ Status = gBS->LocateProtocol(&gEfiDevicePathToTextProtocolGuid, NULL, (VOID **)&DevicePathToTextProtocol);
+ if (!EFI_ERROR(Status)) {
+ DevicePathTxt = DevicePathToTextProtocol->ConvertDevicePathToText (DevicePath, TRUE, TRUE);
- ASSERT_EFI_ERROR(gBS->LocateProtocol(&gEfiDevicePathToTextProtocolGuid, NULL, (VOID **)&DevicePathToTextProtocol));
- DevicePathTxt = DevicePathToTextProtocol->ConvertDevicePathToText (DevicePath, TRUE, TRUE);
+ DEBUG((EFI_D_ERROR,"Fail to start the console with the Device Path '%s'. (Error '%r')\n", DevicePathTxt, Status));
- DEBUG((EFI_D_ERROR,"Fail to start the console with the Device Path '%s'. (Error '%r')\n", DevicePathTxt, Status));
-
- FreePool (DevicePathTxt);
+ FreePool (DevicePathTxt);
+ }
}
DEBUG_CODE_END();
EFI_DEVICE_PATH* DevicePath;\r
EFI_DEVICE_PATH_PROTOCOL *DevicePathNode;\r
\r
- Attributes = 0;\r
+ Attributes = 0;\r
+ SupportedBootDevice = NULL;\r
\r
//\r
// List the Boot Devices supported\r
UINTN Index;\r
UINTN BootMainEntryCount;\r
\r
+ BootOption = NULL;\r
BootMainEntryCount = sizeof(BootMainEntries) / sizeof(struct BOOT_MAIN_ENTRY);\r
// Get Boot#### list\r
// Ensure PcdSystemMemorySize has been set\r
ASSERT (FixedPcdGet32 (PcdSystemMemorySize) != 0);\r
\r
- SystemMemoryTop = FixedPcdGet32 (PcdSystemMemoryBase) + FixedPcdGet32 (PcdSystemMemorySize);\r
+ SystemMemoryTop = (UINTN)FixedPcdGet32 (PcdSystemMemoryBase) + (UINTN)FixedPcdGet32 (PcdSystemMemorySize);\r
\r
//\r
// Initialize the System Memory (DRAM)\r
//\r
// The Library classes this module consumes\r
//\r
+#include <Library/ArmPlatformLib.h>\r
#include <Library/DebugLib.h>\r
#include <Library/PeimEntryPoint.h>\r
#include <Library/PcdLib.h>\r
\r
[Packages]\r
MdePkg/MdePkg.dec\r
+ MdeModulePkg/MdeModulePkg.dec\r
EmbeddedPkg/EmbeddedPkg.dec\r
ArmPkg/ArmPkg.dec\r
ArmPlatformPkg/ArmPlatformPkg.dec\r
#define ARM_PRIMARY_CORE 0
-#define SerialPrint(txt) SerialPortWrite (txt, AsciiStrLen(txt)+1);
+#define SerialPrint(txt) SerialPortWrite ((UINT8*)txt, AsciiStrLen(txt)+1);
extern VOID *monitor_vector_table;
)\r
{\r
UINTN Value;\r
+#if !defined(MDEPKG_NDEBUG)\r
CONST CHAR8* str_unit[] = { "100kbit/s","1Mbit/s","10Mbit/s","100MBit/s","Unkbown","Unkbown","Unkbown","Unkbown" };\r
CONST CHAR8* str_value[] = { "1.0","1.2","1.3","1.5","2.0","2.5","3.0","3.5","4.0","4.5","5.0","Unknown","Unknown","Unknown","Unknown" };\r
+#endif\r
\r
if (((Csd[2] >> 30) & 0x3) == 0) {\r
DEBUG((EFI_D_ERROR, "- PrintCSD Version 1.01-1.10/Version 2.00/Standard Capacity\n"));\r