{\r
UINT8 StrIndex;\r
CHAR16 *NewString;\r
- BOOLEAN Find[5];\r
EFI_STATUS Status;\r
EFI_STRING_ID TokenToUpdate;\r
EFI_SMBIOS_HANDLE SmbiosHandle;\r
SMBIOS_TABLE_TYPE4 *Type4Record;\r
SMBIOS_TABLE_TYPE19 *Type19Record;\r
EFI_SMBIOS_TABLE_HEADER *Record;\r
-\r
- ZeroMem (Find, sizeof (Find));\r
+ UINT64 InstalledMemory;\r
+ \r
+ InstalledMemory = 0;\r
\r
//\r
// Update Front Page strings\r
);\r
if (!EFI_ERROR (Status)) {\r
SmbiosHandle = SMBIOS_HANDLE_PI_RESERVED;\r
- do {\r
- Status = Smbios->GetNext (Smbios, &SmbiosHandle, NULL, &Record, NULL);\r
- if (EFI_ERROR(Status)) {\r
- break;\r
- }\r
-\r
+ Status = Smbios->GetNext (Smbios, &SmbiosHandle, NULL, &Record, NULL);\r
+ while (!EFI_ERROR(Status)) {\r
if (Record->Type == EFI_SMBIOS_TYPE_BIOS_INFORMATION) {\r
Type0Record = (SMBIOS_TABLE_TYPE0 *) Record;\r
StrIndex = Type0Record->BiosVersion;\r
TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_BIOS_VERSION);\r
HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
FreePool (NewString);\r
- Find[0] = TRUE;\r
}\r
\r
if (Record->Type == EFI_SMBIOS_TYPE_SYSTEM_INFORMATION) {\r
TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_COMPUTER_MODEL);\r
HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
FreePool (NewString);\r
- Find[1] = TRUE;\r
}\r
\r
if (Record->Type == EFI_SMBIOS_TYPE_PROCESSOR_INFORMATION) {\r
TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_CPU_MODEL);\r
HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
FreePool (NewString);\r
- Find[2] = TRUE;\r
}\r
\r
if (Record->Type == EFI_SMBIOS_TYPE_PROCESSOR_INFORMATION) {\r
TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_CPU_SPEED);\r
HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
FreePool (NewString);\r
- Find[3] = TRUE;\r
}\r
\r
if ( Record->Type == EFI_SMBIOS_TYPE_MEMORY_ARRAY_MAPPED_ADDRESS ) {\r
Type19Record = (SMBIOS_TABLE_TYPE19 *) Record;\r
- ConvertMemorySizeToString (\r
- (UINT32)(RShiftU64((Type19Record->EndingAddress - Type19Record->StartingAddress + 1), 10)),\r
- &NewString\r
- );\r
- TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_MEMORY_SIZE);\r
- HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
- FreePool (NewString);\r
- Find[4] = TRUE;\r
+ if (Type19Record->StartingAddress != 0xFFFFFFFF ) {\r
+ InstalledMemory += RShiftU64(Type19Record->EndingAddress -\r
+ Type19Record->StartingAddress + 1, 10);\r
+ } else {\r
+ InstalledMemory += RShiftU64(Type19Record->ExtendedEndingAddress -\r
+ Type19Record->ExtendedStartingAddress + 1, 20);\r
+ }\r
}\r
- } while ( !(Find[0] && Find[1] && Find[2] && Find[3] && Find[4]));\r
+\r
+ Status = Smbios->GetNext (Smbios, &SmbiosHandle, NULL, &Record, NULL);\r
+ }\r
+\r
+ // now update the total installed RAM size\r
+ ConvertMemorySizeToString ((UINT32)InstalledMemory, &NewString );\r
+ TokenToUpdate = STRING_TOKEN (STR_FRONT_PAGE_MEMORY_SIZE);\r
+ HiiSetString (gFrontPagePrivate.HiiHandle, TokenToUpdate, NewString, NULL);\r
+ FreePool (NewString);\r
}\r
+\r
return ;\r
}\r
\r