mirror of https://github.com/acidanthera/audk.git
Fixed some alignment faults in IPF platform
Signed-off-by: Eric Dong <eric.dong@intel.com> Reviewed-by: Carsey Jaben <jaben.carsey@intel.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@14081 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
parent
cc7f6cf32f
commit
0b6cb335fa
|
@ -249,7 +249,7 @@ SmbiosPrintStructure (
|
||||||
PRINT_PENDING_STRING (Struct, Type0, BiosReleaseDate);
|
PRINT_PENDING_STRING (Struct, Type0, BiosReleaseDate);
|
||||||
ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_SIZE), gShellDebug1HiiHandle, 64 * (Struct->Type0->BiosSize + 1));
|
ShellPrintHiiEx(-1,-1,NULL,STRING_TOKEN (STR_SMBIOSVIEW_PRINTINFO_BIOS_SIZE), gShellDebug1HiiHandle, 64 * (Struct->Type0->BiosSize + 1));
|
||||||
|
|
||||||
DisplayBiosCharacteristics (*(UINT64 *) &(Struct->Type0->BiosCharacteristics), Option);
|
DisplayBiosCharacteristics (ReadUnaligned64 ((UINT64 *) (UINTN) &(Struct->Type0->BiosCharacteristics)), Option);
|
||||||
|
|
||||||
if (Struct->Hdr->Length > 0x12) {
|
if (Struct->Hdr->Length > 0x12) {
|
||||||
DisplayBiosCharacteristicsExt1 (Struct->Type0->BIOSCharacteristicsExtensionBytes[0], Option);
|
DisplayBiosCharacteristicsExt1 (Struct->Type0->BIOSCharacteristicsExtensionBytes[0], Option);
|
||||||
|
@ -416,7 +416,7 @@ SmbiosPrintStructure (
|
||||||
PRINT_STRUCT_VALUE_H (Struct, Type7, InstalledSize);
|
PRINT_STRUCT_VALUE_H (Struct, Type7, InstalledSize);
|
||||||
PRINT_STRUCT_VALUE_H (Struct, Type7, SupportedSRAMType);
|
PRINT_STRUCT_VALUE_H (Struct, Type7, SupportedSRAMType);
|
||||||
PRINT_STRUCT_VALUE_H (Struct, Type7, CurrentSRAMType);
|
PRINT_STRUCT_VALUE_H (Struct, Type7, CurrentSRAMType);
|
||||||
DisplayCacheSRAMType (*(UINT16 *) &(Struct->Type7->CurrentSRAMType), Option);
|
DisplayCacheSRAMType (ReadUnaligned16 ((UINT16 *) (UINTN) &(Struct->Type7->CurrentSRAMType)), Option);
|
||||||
PRINT_STRUCT_VALUE_H (Struct, Type7, CacheSpeed);
|
PRINT_STRUCT_VALUE_H (Struct, Type7, CacheSpeed);
|
||||||
DisplayCacheErrCorrectingType (Struct->Type7->ErrorCorrectionType, Option);
|
DisplayCacheErrCorrectingType (Struct->Type7->ErrorCorrectionType, Option);
|
||||||
DisplayCacheSystemCacheType (Struct->Type7->SystemCacheType, Option);
|
DisplayCacheSystemCacheType (Struct->Type7->SystemCacheType, Option);
|
||||||
|
@ -633,7 +633,7 @@ SmbiosPrintStructure (
|
||||||
PRINT_PENDING_STRING (Struct, Type17, DeviceLocator);
|
PRINT_PENDING_STRING (Struct, Type17, DeviceLocator);
|
||||||
PRINT_PENDING_STRING (Struct, Type17, BankLocator);
|
PRINT_PENDING_STRING (Struct, Type17, BankLocator);
|
||||||
DisplayMemoryDeviceType (Struct->Type17->MemoryType, Option);
|
DisplayMemoryDeviceType (Struct->Type17->MemoryType, Option);
|
||||||
DisplayMemoryDeviceTypeDetail (*(UINT16 *) &(Struct->Type17->TypeDetail), Option);
|
DisplayMemoryDeviceTypeDetail (ReadUnaligned16 ((UINT16 *) (UINTN) &(Struct->Type17->TypeDetail)), Option);
|
||||||
PRINT_STRUCT_VALUE_H (Struct, Type17, Speed);
|
PRINT_STRUCT_VALUE_H (Struct, Type17, Speed);
|
||||||
PRINT_PENDING_STRING (Struct, Type17, Manufacturer);
|
PRINT_PENDING_STRING (Struct, Type17, Manufacturer);
|
||||||
PRINT_PENDING_STRING (Struct, Type17, SerialNumber);
|
PRINT_PENDING_STRING (Struct, Type17, SerialNumber);
|
||||||
|
|
|
@ -486,6 +486,8 @@ ShellOpenFileByDevicePath(
|
||||||
EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *EfiSimpleFileSystemProtocol;
|
EFI_SIMPLE_FILE_SYSTEM_PROTOCOL *EfiSimpleFileSystemProtocol;
|
||||||
EFI_FILE_PROTOCOL *Handle1;
|
EFI_FILE_PROTOCOL *Handle1;
|
||||||
EFI_FILE_PROTOCOL *Handle2;
|
EFI_FILE_PROTOCOL *Handle2;
|
||||||
|
CHAR16 *FnafPathName;
|
||||||
|
UINTN PathLen;
|
||||||
|
|
||||||
if (FilePath == NULL || FileHandle == NULL || DeviceHandle == NULL) {
|
if (FilePath == NULL || FileHandle == NULL || DeviceHandle == NULL) {
|
||||||
return (EFI_INVALID_PARAMETER);
|
return (EFI_INVALID_PARAMETER);
|
||||||
|
@ -551,13 +553,36 @@ ShellOpenFileByDevicePath(
|
||||||
Handle2 = Handle1;
|
Handle2 = Handle1;
|
||||||
Handle1 = NULL;
|
Handle1 = NULL;
|
||||||
|
|
||||||
|
//
|
||||||
|
// File Name Alignment Fix (FNAF)
|
||||||
|
// Handle2->Open may be incapable of handling a unaligned CHAR16 data.
|
||||||
|
// The structure pointed to by FilePath may be not CHAR16 aligned.
|
||||||
|
// This code copies the potentially unaligned PathName data from the
|
||||||
|
// FilePath structure to the aligned FnafPathName for use in the
|
||||||
|
// calls to Handl2->Open.
|
||||||
|
//
|
||||||
|
|
||||||
|
//
|
||||||
|
// Determine length of PathName, in bytes.
|
||||||
|
//
|
||||||
|
PathLen = DevicePathNodeLength (*FilePath) - SIZE_OF_FILEPATH_DEVICE_PATH;
|
||||||
|
|
||||||
|
//
|
||||||
|
// Allocate memory for the aligned copy of the string Extra allocation is to allow for forced alignment
|
||||||
|
// Copy bytes from possibly unaligned location to aligned location
|
||||||
|
//
|
||||||
|
FnafPathName = AllocateCopyPool(PathLen, (UINT8 *)((FILEPATH_DEVICE_PATH*)*FilePath)->PathName);
|
||||||
|
if (FnafPathName == NULL) {
|
||||||
|
return EFI_OUT_OF_RESOURCES;
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
// Try to test opening an existing file
|
// Try to test opening an existing file
|
||||||
//
|
//
|
||||||
Status = Handle2->Open (
|
Status = Handle2->Open (
|
||||||
Handle2,
|
Handle2,
|
||||||
&Handle1,
|
&Handle1,
|
||||||
((FILEPATH_DEVICE_PATH*)*FilePath)->PathName,
|
FnafPathName,
|
||||||
OpenMode &~EFI_FILE_MODE_CREATE,
|
OpenMode &~EFI_FILE_MODE_CREATE,
|
||||||
0
|
0
|
||||||
);
|
);
|
||||||
|
@ -569,11 +594,17 @@ ShellOpenFileByDevicePath(
|
||||||
Status = Handle2->Open (
|
Status = Handle2->Open (
|
||||||
Handle2,
|
Handle2,
|
||||||
&Handle1,
|
&Handle1,
|
||||||
((FILEPATH_DEVICE_PATH*)*FilePath)->PathName,
|
FnafPathName,
|
||||||
OpenMode,
|
OpenMode,
|
||||||
Attributes
|
Attributes
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Free the alignment buffer
|
||||||
|
//
|
||||||
|
FreePool(FnafPathName);
|
||||||
|
|
||||||
//
|
//
|
||||||
// Close the last node
|
// Close the last node
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in New Issue