]> git.proxmox.com Git - mirror_edk2.git/blobdiff - EmulatorPkg/CpuRuntimeDxe/Cpu.c
Vlv2TbltDevicePkg: Fix build scripts
[mirror_edk2.git] / EmulatorPkg / CpuRuntimeDxe / Cpu.c
index 7be4146b4926b92a25c70b7a95c07ad42ad776ae..47fb7f07e891a74554b30411f646d615909a6e21 100644 (file)
@@ -1,7 +1,7 @@
 /*++ @file\r
   Emu driver to produce CPU Architectural Protocol.\r
 \r
-Copyright (c) 2006 - 2011, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2006 - 2012, Intel Corporation. All rights reserved.<BR>\r
 Portions copyright (c) 2011 - 2012, Apple Inc. All rights reserved.\r
 This program and the accompanying materials\r
 are licensed and made available under the terms and conditions of the BSD License\r
@@ -127,7 +127,7 @@ SMBIOS_TABLE_TYPE4 mCpuSmbiosType4 = {
 \r
 CHAR8 *mCpuSmbiosType4Strings[] = {\r
   "Socket",\r
-  "edk2.svn.sourceforge.net",\r
+  "http://www.tianocore.org/edk2/",\r
   "Emulated Processor",\r
   "1.0",\r
   "1.0",\r
@@ -137,12 +137,30 @@ CHAR8 *mCpuSmbiosType4Strings[] = {
 \r
 \r
 /**\r
-  Logs SMBIOS record.\r
-\r
-  Note: This should be a genric library function.\r
+  Create SMBIOS record.\r
+\r
+  Converts a fixed SMBIOS structure and an array of pointers to strings into\r
+  an SMBIOS record where the strings are cat'ed on the end of the fixed record\r
+  and terminated via a double NULL and add to SMBIOS table.\r
+\r
+  SMBIOS_TABLE_TYPE32 gSmbiosType12 = {\r
+    { EFI_SMBIOS_TYPE_SYSTEM_CONFIGURATION_OPTIONS, sizeof (SMBIOS_TABLE_TYPE12), 0 },\r
+    1 // StringCount\r
+  };\r
+  CHAR8 *gSmbiosType12Strings[] = {\r
+    "Not Found",\r
+    NULL\r
+  };\r
+  \r
+  ...\r
+  LogSmbiosData (\r
+    (EFI_SMBIOS_TABLE_HEADER*)&gSmbiosType12, \r
+    gSmbiosType12Strings\r
+    );\r
 \r
-  @param  Template    Fixed SMBIOS structure\r
-  @param  StringPack  Array of strings to convert to an SMBIOS string pack. \r
+  @param  Template    Fixed SMBIOS structure, required.\r
+  @param  StringArray Array of strings to convert to an SMBIOS string pack. \r
+                      NULL is OK.\r
 \r
 **/\r
 EFI_STATUS\r
@@ -170,12 +188,21 @@ LogSmbiosData (
 \r
   // Calculate the size of the fixed record and optional string pack\r
   Size = Template->Length;\r
-  for (Index = 0; StringPack[Index] != NULL; Index++) {\r
-    StringSize = AsciiStrSize (StringPack[Index]);\r
-    Size += StringSize;\r
+  if (StringPack == NULL) {\r
+    // At least a double null is required\r
+    Size += 2;\r
+  } else {\r
+    for (Index = 0; StringPack[Index] != NULL; Index++) {\r
+      StringSize = AsciiStrSize (StringPack[Index]);\r
+      Size += StringSize;\r
+    }\r
+    if (StringPack[0] == NULL) {\r
+      // At least a double null is required\r
+      Size += 1;\r
+    }\r
+    // Don't forget the terminating double null\r
+    Size += 1;\r
   }\r
-  // Don't forget the terminating double null\r
-  Size += 1;\r
 \r
   // Copy over Template\r
   Record = (EFI_SMBIOS_TABLE_HEADER *)AllocateZeroPool (Size);\r
@@ -214,9 +241,9 @@ CpuUpdateSmbios (
   IN UINTN  MaxCpus\r
   )\r
 {\r
-  mCpuSmbiosType4.CoreCount        = MaxCpus;\r
-  mCpuSmbiosType4.EnabledCoreCount = MaxCpus;\r
-  mCpuSmbiosType4.ThreadCount      = MaxCpus;\r
+  mCpuSmbiosType4.CoreCount        = (UINT8) MaxCpus;\r
+  mCpuSmbiosType4.EnabledCoreCount = (UINT8) MaxCpus;\r
+  mCpuSmbiosType4.ThreadCount      = (UINT8) MaxCpus;\r
 \r
   LogSmbiosData ((EFI_SMBIOS_TABLE_HEADER *)&mCpuSmbiosType4, mCpuSmbiosType4Strings);\r
 }\r
@@ -300,9 +327,6 @@ EmuInit (
   IN EFI_CPU_INIT_TYPE      InitType\r
   )\r
 {\r
-  CPU_ARCH_PROTOCOL_PRIVATE *Private;\r
-\r
-  Private = CPU_ARCH_PROTOCOL_PRIVATE_DATA_FROM_THIS (This);\r
   return EFI_UNSUPPORTED;\r
 }\r
 \r
@@ -314,8 +338,6 @@ EmuRegisterInterruptHandler (
   IN EFI_CPU_INTERRUPT_HANDLER  InterruptHandler\r
   )\r
 {\r
-  CPU_ARCH_PROTOCOL_PRIVATE *Private;\r
-\r
   //\r
   // Do parameter checking for EFI spec conformance\r
   //\r
@@ -325,7 +347,6 @@ EmuRegisterInterruptHandler (
   //\r
   // Do nothing for Emu emulation\r
   //\r
-  Private = CPU_ARCH_PROTOCOL_PRIVATE_DATA_FROM_THIS (This);\r
   return EFI_UNSUPPORTED;\r
 }\r
 \r
@@ -365,8 +386,6 @@ EmuSetMemoryAttributes (
   IN UINT64                 Attributes\r
   )\r
 {\r
-  CPU_ARCH_PROTOCOL_PRIVATE *Private;\r
-\r
   //\r
   // Check for invalid parameter for Spec conformance\r
   //\r
@@ -377,7 +396,6 @@ EmuSetMemoryAttributes (
   //\r
   // Do nothing for Nt32 emulation\r
   //\r
-  Private = CPU_ARCH_PROTOCOL_PRIVATE_DATA_FROM_THIS (This);\r
   return EFI_UNSUPPORTED;\r
 }\r
 \r