BaseMemoryLib:
authorqhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 7 Jun 2006 15:38:52 +0000 (15:38 +0000)
committerqhuang8 <qhuang8@6f19259b-4bc3-4df7-8a09-765794883524>
Wed, 7 Jun 2006 15:38:52 +0000 (15:38 +0000)
Correct wrong ASSERT()s on SetMem16(), SetMem32(), SetMem64()
HobLib:
Add Missing ASSERT()s for BuildGuidHobData() since CopyMem() now allow zero source buffer with length > 0.
BasePrintLib
Add ASSERT()s to check NULL buffer and NULL format.
PostCodeLib
Add 3 instances of PostCodeLib and introduce new Pcd for post code property mask.

git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@438 6f19259b-4bc3-4df7-8a09-765794883524

40 files changed:
MdePkg/Include/Library/HobLib.h
MdePkg/Include/Library/PostCodeLib.h [new file with mode: 0644]
MdePkg/Library/BaseMemoryLib/SetMem16Wrapper.c
MdePkg/Library/BaseMemoryLib/SetMem32Wrapper.c
MdePkg/Library/BaseMemoryLib/SetMem64Wrapper.c
MdePkg/Library/BaseMemoryLibMmx/SetMem16Wrapper.c
MdePkg/Library/BaseMemoryLibMmx/SetMem32Wrapper.c
MdePkg/Library/BaseMemoryLibMmx/SetMem64Wrapper.c
MdePkg/Library/BaseMemoryLibRepStr/SetMem16Wrapper.c
MdePkg/Library/BaseMemoryLibRepStr/SetMem32Wrapper.c
MdePkg/Library/BaseMemoryLibRepStr/SetMem64Wrapper.c
MdePkg/Library/BaseMemoryLibSse2/SetMem16Wrapper.c
MdePkg/Library/BaseMemoryLibSse2/SetMem32Wrapper.c
MdePkg/Library/BaseMemoryLibSse2/SetMem64Wrapper.c
MdePkg/Library/BasePostCodeLib80/BasePostCodeLib80.mbd [new file with mode: 0644]
MdePkg/Library/BasePostCodeLib80/BasePostCodeLib80.msa [new file with mode: 0644]
MdePkg/Library/BasePostCodeLib80/PostCode.c [new file with mode: 0644]
MdePkg/Library/BasePostCodeLib80/build.xml [new file with mode: 0644]
MdePkg/Library/BasePostCodeLibDebug/BasePostCodeLibDebug.mbd [new file with mode: 0644]
MdePkg/Library/BasePostCodeLibDebug/BasePostCodeLibDebug.msa [new file with mode: 0644]
MdePkg/Library/BasePostCodeLibDebug/PostCode.c [new file with mode: 0644]
MdePkg/Library/BasePostCodeLibDebug/build.xml [new file with mode: 0644]
MdePkg/Library/BasePostCodeLibReportStatusCode/BasePostCodeLibReportStatusCode.mbd [new file with mode: 0644]
MdePkg/Library/BasePostCodeLibReportStatusCode/BasePostCodeLibReportStatusCode.msa [new file with mode: 0644]
MdePkg/Library/BasePostCodeLibReportStatusCode/PostCode.c [new file with mode: 0644]
MdePkg/Library/BasePostCodeLibReportStatusCode/build.xml [new file with mode: 0644]
MdePkg/Library/BasePrintLib/BasePrintLib.msa
MdePkg/Library/BasePrintLib/PrintLib.c
MdePkg/Library/DxeCoreHobLib/HobLib.c
MdePkg/Library/DxeHobLib/HobLib.c
MdePkg/Library/PeiHobLib/HobLib.c
MdePkg/Library/PeiMemoryLib/SetMem16Wrapper.c
MdePkg/Library/PeiMemoryLib/SetMem32Wrapper.c
MdePkg/Library/PeiMemoryLib/SetMem64Wrapper.c
MdePkg/Library/UefiMemoryLib/SetMem16Wrapper.c
MdePkg/Library/UefiMemoryLib/SetMem32Wrapper.c
MdePkg/Library/UefiMemoryLib/SetMem64Wrapper.c
MdePkg/MdePkg-All-Archs.fpd
MdePkg/MdePkg.fpd
MdePkg/MdePkg.spd

index 9789c69..0d9dc83 100644 (file)
@@ -181,7 +181,7 @@ BuildResourceDescriptorHob (
   for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.\r
   If Guid is NULL, then ASSERT().\r
   If there is no additional space for HOB creation, then ASSERT().\r
-  If DataLength > (0x10000 - sizeof (EFI_HOB_TYPE_GUID)), then ASSERT().\r
+  If DataLength >= (0x10000 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT().\r
 \r
   @param  Guid          The GUID to tag the customized HOB.\r
   @param  DataLength    The size of the data payload for the GUID HOB.\r
@@ -208,7 +208,7 @@ BuildGuidHob (
   If Guid is NULL, then ASSERT().\r
   If Data is NULL and DataLength > 0, then ASSERT().\r
   If there is no additional space for HOB creation, then ASSERT().\r
-  If DataLength > (0x10000 - sizeof (EFI_HOB_TYPE_GUID)), then ASSERT().\r
+  If DataLength >= (0x10000 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT().\r
 \r
   @param  Guid          The GUID to tag the customized HOB.\r
   @param  Data          The data to be copied into the data field of the GUID HOB.\r
diff --git a/MdePkg/Include/Library/PostCodeLib.h b/MdePkg/Include/Library/PostCodeLib.h
new file mode 100644 (file)
index 0000000..78ce4b2
--- /dev/null
@@ -0,0 +1,150 @@
+/** @file\r
+  Report Status Code Library public .h file\r
+\r
+  Copyright (c) 2006, Intel Corporation                                                         \r
+  All rights reserved. This program and the accompanying materials                          \r
+  are licensed and made available under the terms and conditions of the BSD License         \r
+  which accompanies this distribution.  The full text of the license may be found at        \r
+  http://opensource.org/licenses/bsd-license.php                                            \r
+\r
+  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
+  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
+\r
+**/\r
+\r
+#ifndef __POST_CODE_LIB_H__\r
+#define __POST_CODE_LIB_H__\r
+\r
+#define POST_CODE_PROPERTY_POST_CODE_ENABLED              0x00000008\r
+#define POST_CODE_PROPERTY_POST_CODE_DESCRIPTION_ENABLED  0x00000010\r
+\r
+/**\r
+  Sends an 32-bit value to a POST card.\r
+\r
+  Sends the 32-bit value specified by Value to a POST card, and returns Value.  \r
+  Some implementations of this library function may perform I/O operations \r
+  directly to a POST card device.  Other implementations may send Value to \r
+  ReportStatusCode(), and the status code reporting mechanism will eventually \r
+  display the 32-bit value on the status reporting device.\r
+  \r
+  PostCode() must actively prevent recursion.  If PostCode() is called while \r
+  processing another any other Report Status Code Library function, then \r
+  PostCode() must return Value immediately.\r
+\r
+  @param  Value  The 32-bit value to write to the POST card.\r
+\r
+  @return  Value\r
+\r
+**/\r
+UINT32\r
+EFIAPI\r
+PostCode (\r
+  IN UINT32  Value\r
+  );\r
+\r
+\r
+/**\r
+  Sends an 32-bit value to a POST and associated ASCII string.\r
+\r
+  Sends the 32-bit value specified by Value to a POST card, and returns Value.\r
+  If Description is not NULL, then the ASCII string specified by Description is \r
+  also passed to the handler that displays the POST card value.  Some \r
+  implementations of this library function may perform I/O operations directly \r
+  to a POST card device.  Other implementations may send Value to ReportStatusCode(), \r
+  and the status code reporting mechanism will eventually display the 32-bit \r
+  value on the status reporting device.  \r
+\r
+  PostCodeWithDescription()must actively prevent recursion.  If \r
+  PostCodeWithDescription() is called while processing another any other Report \r
+  Status Code Library function, then PostCodeWithDescription() must return Value \r
+  immediately.\r
+\r
+  @param  Value        The 32-bit value to write to the POST card.\r
+  @param  Description  Pointer to an ASCII string that is a description of the \r
+                       POST code value.  This is an optional parameter that may \r
+                       be NULL.\r
+\r
+  @return  Value\r
+\r
+**/\r
+UINT32\r
+EFIAPI\r
+PostCodeWithDescription (\r
+  IN UINT32       Value,\r
+  IN CONST CHAR8  *Description  OPTIONAL\r
+  );\r
+\r
+\r
+/**\r
+  Returns TRUE if POST Codes are enabled.\r
+\r
+  This function returns TRUE if the POST_CODE_PROPERTY_POST_CODE_ENABLED \r
+  bit of PcdPostCodePropertyMask is set.  Otherwise FALSE is returned.\r
+\r
+  @retval  TRUE   The POST_CODE_PROPERTY_POST_CODE_ENABLED bit of \r
+                  PcdPostCodeProperyMask is set.\r
+  @retval  FALSE  The POST_CODE_PROPERTY_POST_CODE_ENABLED bit of \r
+                  PcdPostCodeProperyMask is clear.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+PostCodeEnabled (\r
+  VOID\r
+  );\r
+\r
+\r
+/**\r
+  Returns TRUE if POST code descriptions are enabled.\r
+\r
+  This function returns TRUE if the \r
+  POST_CODE_PROPERTY_POST_CODE_ENABLED bit of \r
+  PcdPostCodePropertyMask is set.  Otherwise FALSE is returned.\r
+\r
+  @retval  TRUE   The POST_CODE_PROPERTY_POST_CODE_ENABLED \r
+                  bit of PcdPostCodeProperyMask is set.\r
+  @retval  FALSE  The POST_CODE_PROPERTY_POST_CODE_ENABLED \r
+                  bit of PcdPostCodeProperyMask is clear.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+PostCodeDescriptionEnabled (\r
+  VOID\r
+  );\r
+\r
+\r
+/**\r
+  Sends an 32-bit value to a POST card.\r
+\r
+  If POST codes are enabled in PcdPostCodeProperyMask, then call PostCode() \r
+  passing in Value.  Value is returned.\r
+\r
+  @param  Value  The 32-bit value to write to the POST card.\r
+\r
+  @return  Value\r
+\r
+**/\r
+#define POST_CODE(Value)  ReportPostCodeEnabled() ? PostCode(Value) : Value\r
+\r
+/**\r
+  Sends an 32-bit value to a POST and associated ASCII string.\r
+\r
+  If POST codes and POST code descriptions are enabled in \r
+  PcdPostCodeProperyMask, then call PostCodeWithDescription() passing in \r
+  Value and Description.  If only POST codes are enabled, then call PostCode() \r
+  passing in Value.  Value is returned.\r
+\r
+  @param  Value        The 32-bit value to write to the POST card.\r
+  @param  Description  Pointer to an ASCII string that is a description of the \r
+                       POST code value.\r
+\r
+**/\r
+#define POST_CODE_WITH_DESCRIPTION(Value,Description)  \\r
+  ReportPostCodeEnabled()                        ?     \\r
+    (ReportPostCodeDescriptionEnabled()          ?     \\r
+      PostCodeWithDescription(Value,Description) :     \\r
+      PostCode(Value))                           :     \\r
+    Value\r
+\r
+#endif\r
index 3acbdac..dea3160 100644 (file)
@@ -52,10 +52,10 @@ SetMem16 (
   IN      UINT16                    Value\r
   )\r
 {\r
-  ASSERT (Buffer != NULL);\r
+  ASSERT (!(Buffer == NULL && Length > 0));\r
   ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);\r
-  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);\r
-  ASSERT ((Length & (sizeof (Value) - 1)) != 0);\r
+  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);\r
+  ASSERT ((Length & (sizeof (Value) - 1)) == 0);\r
 \r
   if ((Length /= sizeof (Value)) == 0) {\r
     return Buffer;\r
index 620b69a..1ae7acb 100644 (file)
@@ -52,10 +52,10 @@ SetMem32 (
   IN      UINT32                    Value\r
   )\r
 {\r
-  ASSERT (Buffer != NULL);\r
+  ASSERT (!(Buffer == NULL && Length > 0));\r
   ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);\r
-  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);\r
-  ASSERT ((Length & (sizeof (Value) - 1)) != 0);\r
+  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);\r
+  ASSERT ((Length & (sizeof (Value) - 1)) == 0);\r
 \r
   if ((Length /= sizeof (Value)) == 0) {\r
     return Buffer;\r
index 73c28af..0128a2d 100644 (file)
@@ -52,10 +52,10 @@ SetMem64 (
   IN      UINT64                    Value\r
   )\r
 {\r
-  ASSERT (Buffer != NULL);\r
+  ASSERT (!(Buffer == NULL && Length > 0));\r
   ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);\r
-  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);\r
-  ASSERT ((Length & (sizeof (Value) - 1)) != 0);\r
+  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);\r
+  ASSERT ((Length & (sizeof (Value) - 1)) == 0);\r
 \r
   if ((Length /= sizeof (Value)) == 0) {\r
     return Buffer;\r
index 3acbdac..dea3160 100644 (file)
@@ -52,10 +52,10 @@ SetMem16 (
   IN      UINT16                    Value\r
   )\r
 {\r
-  ASSERT (Buffer != NULL);\r
+  ASSERT (!(Buffer == NULL && Length > 0));\r
   ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);\r
-  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);\r
-  ASSERT ((Length & (sizeof (Value) - 1)) != 0);\r
+  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);\r
+  ASSERT ((Length & (sizeof (Value) - 1)) == 0);\r
 \r
   if ((Length /= sizeof (Value)) == 0) {\r
     return Buffer;\r
index 620b69a..1ae7acb 100644 (file)
@@ -52,10 +52,10 @@ SetMem32 (
   IN      UINT32                    Value\r
   )\r
 {\r
-  ASSERT (Buffer != NULL);\r
+  ASSERT (!(Buffer == NULL && Length > 0));\r
   ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);\r
-  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);\r
-  ASSERT ((Length & (sizeof (Value) - 1)) != 0);\r
+  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);\r
+  ASSERT ((Length & (sizeof (Value) - 1)) == 0);\r
 \r
   if ((Length /= sizeof (Value)) == 0) {\r
     return Buffer;\r
index 73c28af..0128a2d 100644 (file)
@@ -52,10 +52,10 @@ SetMem64 (
   IN      UINT64                    Value\r
   )\r
 {\r
-  ASSERT (Buffer != NULL);\r
+  ASSERT (!(Buffer == NULL && Length > 0));\r
   ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);\r
-  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);\r
-  ASSERT ((Length & (sizeof (Value) - 1)) != 0);\r
+  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);\r
+  ASSERT ((Length & (sizeof (Value) - 1)) == 0);\r
 \r
   if ((Length /= sizeof (Value)) == 0) {\r
     return Buffer;\r
index 3acbdac..dea3160 100644 (file)
@@ -52,10 +52,10 @@ SetMem16 (
   IN      UINT16                    Value\r
   )\r
 {\r
-  ASSERT (Buffer != NULL);\r
+  ASSERT (!(Buffer == NULL && Length > 0));\r
   ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);\r
-  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);\r
-  ASSERT ((Length & (sizeof (Value) - 1)) != 0);\r
+  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);\r
+  ASSERT ((Length & (sizeof (Value) - 1)) == 0);\r
 \r
   if ((Length /= sizeof (Value)) == 0) {\r
     return Buffer;\r
index 620b69a..1ae7acb 100644 (file)
@@ -52,10 +52,10 @@ SetMem32 (
   IN      UINT32                    Value\r
   )\r
 {\r
-  ASSERT (Buffer != NULL);\r
+  ASSERT (!(Buffer == NULL && Length > 0));\r
   ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);\r
-  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);\r
-  ASSERT ((Length & (sizeof (Value) - 1)) != 0);\r
+  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);\r
+  ASSERT ((Length & (sizeof (Value) - 1)) == 0);\r
 \r
   if ((Length /= sizeof (Value)) == 0) {\r
     return Buffer;\r
index 73c28af..0128a2d 100644 (file)
@@ -52,10 +52,10 @@ SetMem64 (
   IN      UINT64                    Value\r
   )\r
 {\r
-  ASSERT (Buffer != NULL);\r
+  ASSERT (!(Buffer == NULL && Length > 0));\r
   ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);\r
-  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);\r
-  ASSERT ((Length & (sizeof (Value) - 1)) != 0);\r
+  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);\r
+  ASSERT ((Length & (sizeof (Value) - 1)) == 0);\r
 \r
   if ((Length /= sizeof (Value)) == 0) {\r
     return Buffer;\r
index 3acbdac..dea3160 100644 (file)
@@ -52,10 +52,10 @@ SetMem16 (
   IN      UINT16                    Value\r
   )\r
 {\r
-  ASSERT (Buffer != NULL);\r
+  ASSERT (!(Buffer == NULL && Length > 0));\r
   ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);\r
-  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);\r
-  ASSERT ((Length & (sizeof (Value) - 1)) != 0);\r
+  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);\r
+  ASSERT ((Length & (sizeof (Value) - 1)) == 0);\r
 \r
   if ((Length /= sizeof (Value)) == 0) {\r
     return Buffer;\r
index 620b69a..1ae7acb 100644 (file)
@@ -52,10 +52,10 @@ SetMem32 (
   IN      UINT32                    Value\r
   )\r
 {\r
-  ASSERT (Buffer != NULL);\r
+  ASSERT (!(Buffer == NULL && Length > 0));\r
   ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);\r
-  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);\r
-  ASSERT ((Length & (sizeof (Value) - 1)) != 0);\r
+  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);\r
+  ASSERT ((Length & (sizeof (Value) - 1)) == 0);\r
 \r
   if ((Length /= sizeof (Value)) == 0) {\r
     return Buffer;\r
index 73c28af..0128a2d 100644 (file)
@@ -52,10 +52,10 @@ SetMem64 (
   IN      UINT64                    Value\r
   )\r
 {\r
-  ASSERT (Buffer != NULL);\r
+  ASSERT (!(Buffer == NULL && Length > 0));\r
   ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);\r
-  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);\r
-  ASSERT ((Length & (sizeof (Value) - 1)) != 0);\r
+  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);\r
+  ASSERT ((Length & (sizeof (Value) - 1)) == 0);\r
 \r
   if ((Length /= sizeof (Value)) == 0) {\r
     return Buffer;\r
diff --git a/MdePkg/Library/BasePostCodeLib80/BasePostCodeLib80.mbd b/MdePkg/Library/BasePostCodeLib80/BasePostCodeLib80.mbd
new file mode 100644 (file)
index 0000000..49d048a
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!--\r
+Copyright (c) 2006, Intel Corporation\r
+All rights reserved. This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution.  The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+-->\r
+<LibraryModuleBuildDescription xmlns="http://www.TianoCore.org/2006/Edk2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.TianoCore.org/2006/Edk2.0  http://www.TianoCore.org/2006/Edk2.0/SurfaceArea.xsd">\r
+  <MbdLibHeader>\r
+    <BaseName>BasePostCodeLib80</BaseName>\r
+    <Guid>55c61087-7367-4546-bc32-4937c5e6aff3</Guid>\r
+    <Version>0</Version>\r
+    <Description>FIX ME!</Description>\r
+    <Copyright>Copyright (c) 2004-2006, Intel Corporation</Copyright>\r
+    <License>\r
+      All rights reserved. This program and the accompanying materials\r
+      are licensed and made available under the terms and conditions of the BSD License\r
+      which accompanies this distribution.  The full text of the license may be found at\r
+      http://opensource.org/licenses/bsd-license.php\r
+      THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+      WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+    </License>\r
+    <Created>2006-03-09 23:16</Created>\r
+    <Modified>2006-03-19 15:17</Modified>\r
+  </MbdLibHeader>\r
+</LibraryModuleBuildDescription>\r
diff --git a/MdePkg/Library/BasePostCodeLib80/BasePostCodeLib80.msa b/MdePkg/Library/BasePostCodeLib80/BasePostCodeLib80.msa
new file mode 100644 (file)
index 0000000..21b055e
--- /dev/null
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!--\r
+Copyright (c) 2006, Intel Corporation\r
+All rights reserved. This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution.  The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+-->\r
+<LibraryModuleSurfaceArea xmlns="http://www.TianoCore.org/2006/Edk2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.TianoCore.org/2006/Edk2.0  http://www.TianoCore.org/2006/Edk2.0/SurfaceArea.xsd">\r
+  <MsaLibHeader>\r
+    <BaseName>BasePostCodeLib80</BaseName>\r
+    <ModuleType>BASE</ModuleType>\r
+    <ComponentType>LIBRARY</ComponentType>\r
+    <Guid>55c61087-7367-4546-bc32-4937c5e6aff3</Guid>\r
+    <Version>0</Version>\r
+    <Abstract>Component description file for the entry point to a EFIDXE Drivers</Abstract>\r
+    <Description>FIX ME!</Description>\r
+    <Copyright>Copyright (c) 2004-2006, Intel Corporation</Copyright>\r
+    <License>\r
+      All rights reserved. This program and the accompanying materials\r
+      are licensed and made available under the terms and conditions of the BSD License\r
+      which accompanies this distribution.  The full text of the license may be found at\r
+      http://opensource.org/licenses/bsd-license.php\r
+      THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+      WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+    </License>\r
+    <Created>2006-03-09 23:16</Created>\r
+    <Updated>2006-03-19 15:17</Updated>\r
+    <Specification>0</Specification>\r
+  </MsaLibHeader>\r
+  <LibraryClassDefinitions>\r
+    <LibraryClass Usage="ALWAYS_PRODUCED">PostCodeLib</LibraryClass>\r
+    <LibraryClass Usage="ALWAYS_CONSUMED">PcdLib</LibraryClass>\r
+    <LibraryClass Usage="ALWAYS_CONSUMED">IoLib</LibraryClass>\r
+  </LibraryClassDefinitions>\r
+  <SourceFiles>\r
+    <Filename>PostCode.c</Filename>\r
+  </SourceFiles>\r
+  <Includes>\r
+    <PackageName>MdePkg</PackageName>\r
+  </Includes>\r
+  <PCDs>\r
+    <PcdData ItemType="FIXED_AT_BUILD">\r
+      <C_Name>PcdPostCodePropertyMask</C_Name>\r
+      <Token>0x0000000b</Token>\r
+      <DatumType>UINT8</DatumType>\r
+    </PcdData>\r
+  </PCDs>\r
+</LibraryModuleSurfaceArea>\r
diff --git a/MdePkg/Library/BasePostCodeLib80/PostCode.c b/MdePkg/Library/BasePostCodeLib80/PostCode.c
new file mode 100644 (file)
index 0000000..93c24d5
--- /dev/null
@@ -0,0 +1,123 @@
+/** @file\r
+  Report Status Code Library Post Code functions for DXE Phase.\r
+\r
+  Copyright (c) 2006, Intel Corporation<BR>\r
+  All rights reserved. This program and the accompanying materials                          \r
+  are licensed and made available under the terms and conditions of the BSD License         \r
+  which accompanies this distribution.  The full text of the license may be found at        \r
+  http://opensource.org/licenses/bsd-license.php                                            \r
+\r
+  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
+  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
+\r
+**/\r
+\r
+\r
+/**\r
+  Sends an 32-bit value to a POST card.\r
+\r
+  Sends the 32-bit value specified by Value to a POST card, and returns Value.  \r
+  Some implementations of this library function may perform I/O operations \r
+  directly to a POST card device.  Other implementations may send Value to \r
+  ReportStatusCode(), and the status code reporting mechanism will eventually \r
+  display the 32-bit value on the status reporting device.\r
+  \r
+  PostCode() must actively prevent recursion.  If PostCode() is called while \r
+  processing another any other Report Status Code Library function, then \r
+  PostCode() must return Value immediately.\r
+\r
+  @param  Value  The 32-bit value to write to the POST card.\r
+\r
+  @return  Value\r
+\r
+**/\r
+UINT32\r
+EFIAPI\r
+PostCode (\r
+  IN UINT32  Value\r
+  )\r
+{\r
+  IoWrite8 (0x80, (UINT8)(Value));\r
+  return Value;\r
+}\r
+\r
+\r
+/**\r
+  Sends an 32-bit value to a POST and associated ASCII string.\r
+\r
+  Sends the 32-bit value specified by Value to a POST card, and returns Value.\r
+  If Description is not NULL, then the ASCII string specified by Description is \r
+  also passed to the handler that displays the POST card value.  Some \r
+  implementations of this library function may perform I/O operations directly \r
+  to a POST card device.  Other implementations may send Value to ReportStatusCode(), \r
+  and the status code reporting mechanism will eventually display the 32-bit \r
+  value on the status reporting device.  \r
+\r
+  PostCodeWithDescription()must actively prevent recursion.  If \r
+  PostCodeWithDescription() is called while processing another any other Report \r
+  Status Code Library function, then PostCodeWithDescription() must return Value \r
+  immediately.\r
+\r
+  @param  Value        The 32-bit value to write to the POST card.\r
+  @param  Description  Pointer to an ASCII string that is a description of the \r
+                       POST code value.  This is an optional parameter that may \r
+                       be NULL.\r
+\r
+  @return  Value\r
+\r
+**/\r
+UINT32\r
+EFIAPI\r
+PostCodeWithDescription (\r
+  IN UINT32       Value,\r
+  IN CONST CHAR8  *Description  OPTIONAL\r
+  )\r
+{\r
+  IoWrite8 (0x80, (UINT8)(Value));\r
+  return Value;\r
+}\r
+\r
+\r
+/**\r
+  Returns TRUE if POST Codes are enabled.\r
+\r
+  This function returns TRUE if the POST_CODE_PROPERTY_POST_CODE_ENABLED \r
+  bit of PcdPostCodePropertyMask is set.  Otherwise FALSE is returned.\r
+\r
+  @retval  TRUE   The POST_CODE_PROPERTY_POST_CODE_ENABLED bit of \r
+                  PcdPostCodeProperyMask is set.\r
+  @retval  FALSE  The POST_CODE_PROPERTY_POST_CODE_ENABLED bit of \r
+                  PcdPostCodeProperyMask is clear.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+PostCodeEnabled (\r
+  VOID\r
+  )\r
+{\r
+  return ((PcdGet8(PcdPostCodePropertyMask) & POST_CODE_PROPERTY_POST_CODE_ENABLED) != 0);\r
+}\r
+\r
+\r
+/**\r
+  Returns TRUE if POST code descriptions are enabled.\r
+\r
+  This function returns TRUE if the \r
+  POST_CODE_PROPERTY_POST_CODE_ENABLED bit of \r
+  PcdPostCodePropertyMask is set.  Otherwise FALSE is returned.\r
+\r
+  @retval  TRUE   The POST_CODE_PROPERTY_POST_CODE_ENABLED \r
+                  bit of PcdPostCodeProperyMask is set.\r
+  @retval  FALSE  The POST_CODE_PROPERTY_POST_CODE_ENABLED \r
+                  bit of PcdPostCodeProperyMask is clear.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+PostCodeDescriptionEnabled (\r
+  VOID\r
+  )\r
+{\r
+  return ((PcdGet8(PcdPostCodePropertyMask) & POST_CODE_PROPERTY_POST_CODE_ENABLED) != 0);\r
+}\r
diff --git a/MdePkg/Library/BasePostCodeLib80/build.xml b/MdePkg/Library/BasePostCodeLib80/build.xml
new file mode 100644 (file)
index 0000000..c854f76
--- /dev/null
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?><!-- Copyright (c) 2006, Intel Corporation \r
+All rights reserved. This program and the accompanying materials \r
+are licensed and made available under the terms and conditions of the BSD License \r
+which accompanies this distribution.  The full text of the license may be found at  \r
+http://opensource.org/licenses/bsd-license.php \r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.-->\r
+<project basedir="." default="BasePostCodeLib80"><!--Apply external ANT tasks-->\r
+   <taskdef resource="GenBuild.tasks"/>\r
+   <taskdef resource="net/sf/antcontrib/antlib.xml"/>\r
+   <property environment="env"/>\r
+   <property name="WORKSPACE_DIR" value="${env.WORKSPACE}"/>\r
+   <import file="${WORKSPACE_DIR}/Tools/Conf/BuildMacro.xml"/><!--MODULE_RELATIVE PATH is relative to PACKAGE_DIR-->\r
+   <property name="MODULE_RELATIVE_PATH" value="Library/BasePostCodeLib80"/>\r
+   <property name="MODULE_DIR" value="${PACKAGE_DIR}/${MODULE_RELATIVE_PATH}"/>\r
+   <property name="COMMON_FILE" value="${WORKSPACE_DIR}/Tools/Conf/Common.xml"/>\r
+   <target name="BasePostCodeLib80">\r
+      <GenBuild baseName="BasePostCodeLib80" mbdFilename="${MODULE_DIR}/BasePostCodeLib80.mbd" msaFilename="${MODULE_DIR}/BasePostCodeLib80.msa"/>\r
+   </target>\r
+   <target depends="BasePostCodeLib80_clean" name="clean"/>\r
+   <target depends="BasePostCodeLib80_cleanall" name="cleanall"/>\r
+   <target name="BasePostCodeLib80_clean">\r
+      <OutputDirSetup baseName="BasePostCodeLib80" mbdFilename="${MODULE_DIR}/BasePostCodeLib80.mbd" msaFilename="${MODULE_DIR}/BasePostCodeLib80.msa"/>\r
+      <if>\r
+         <available file="${DEST_DIR_OUTPUT}/BasePostCodeLib80_build.xml"/>\r
+         <then>\r
+            <ant antfile="${DEST_DIR_OUTPUT}/BasePostCodeLib80_build.xml" target="clean"/>\r
+         </then>\r
+      </if>\r
+      <delete dir="${DEST_DIR_OUTPUT}" excludes="*.xml"/>\r
+   </target>\r
+   <target name="BasePostCodeLib80_cleanall">\r
+      <OutputDirSetup baseName="BasePostCodeLib80" mbdFilename="${MODULE_DIR}/BasePostCodeLib80.mbd" msaFilename="${MODULE_DIR}/BasePostCodeLib80.msa"/>\r
+      <if>\r
+         <available file="${DEST_DIR_OUTPUT}/BasePostCodeLib80_build.xml"/>\r
+         <then>\r
+            <ant antfile="${DEST_DIR_OUTPUT}/BasePostCodeLib80_build.xml" target="cleanall"/>\r
+         </then>\r
+      </if>\r
+      <delete dir="${DEST_DIR_OUTPUT}"/>\r
+      <delete dir="${DEST_DIR_DEBUG}"/>\r
+      <delete>\r
+         <fileset dir="${BIN_DIR}" includes="**BasePostCodeLib80*"/>\r
+      </delete>\r
+   </target>\r
+</project>
\ No newline at end of file
diff --git a/MdePkg/Library/BasePostCodeLibDebug/BasePostCodeLibDebug.mbd b/MdePkg/Library/BasePostCodeLibDebug/BasePostCodeLibDebug.mbd
new file mode 100644 (file)
index 0000000..7fb7cc3
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!--\r
+Copyright (c) 2006, Intel Corporation\r
+All rights reserved. This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution.  The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+-->\r
+<LibraryModuleBuildDescription xmlns="http://www.TianoCore.org/2006/Edk2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.TianoCore.org/2006/Edk2.0  http://www.TianoCore.org/2006/Edk2.0/SurfaceArea.xsd">\r
+  <MbdLibHeader>\r
+    <BaseName>BasePostCodeLibDebug</BaseName>\r
+    <Guid>55c61087-7367-4546-bc32-4937c5e6aff3</Guid>\r
+    <Version>0</Version>\r
+    <Description>FIX ME!</Description>\r
+    <Copyright>Copyright (c) 2004-2006, Intel Corporation</Copyright>\r
+    <License>\r
+      All rights reserved. This program and the accompanying materials\r
+      are licensed and made available under the terms and conditions of the BSD License\r
+      which accompanies this distribution.  The full text of the license may be found at\r
+      http://opensource.org/licenses/bsd-license.php\r
+      THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+      WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+    </License>\r
+    <Created>2006-03-09 23:16</Created>\r
+    <Modified>2006-03-19 15:17</Modified>\r
+  </MbdLibHeader>\r
+</LibraryModuleBuildDescription>\r
diff --git a/MdePkg/Library/BasePostCodeLibDebug/BasePostCodeLibDebug.msa b/MdePkg/Library/BasePostCodeLibDebug/BasePostCodeLibDebug.msa
new file mode 100644 (file)
index 0000000..0fdf59a
--- /dev/null
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!--\r
+Copyright (c) 2006, Intel Corporation\r
+All rights reserved. This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution.  The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+-->\r
+<LibraryModuleSurfaceArea xmlns="http://www.TianoCore.org/2006/Edk2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.TianoCore.org/2006/Edk2.0  http://www.TianoCore.org/2006/Edk2.0/SurfaceArea.xsd">\r
+  <MsaLibHeader>\r
+    <BaseName>BasePostCodeLibDebug</BaseName>\r
+    <ModuleType>BASE</ModuleType>\r
+    <ComponentType>LIBRARY</ComponentType>\r
+    <Guid>55c61087-7367-4546-bc32-4937c5e6aff3</Guid>\r
+    <Version>0</Version>\r
+    <Abstract>Component description file for the entry point to a EFIDXE Drivers</Abstract>\r
+    <Description>FIX ME!</Description>\r
+    <Copyright>Copyright (c) 2004-2006, Intel Corporation</Copyright>\r
+    <License>\r
+      All rights reserved. This program and the accompanying materials\r
+      are licensed and made available under the terms and conditions of the BSD License\r
+      which accompanies this distribution.  The full text of the license may be found at\r
+      http://opensource.org/licenses/bsd-license.php\r
+      THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+      WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+    </License>\r
+    <Created>2006-03-09 23:16</Created>\r
+    <Updated>2006-03-19 15:17</Updated>\r
+    <Specification>0</Specification>\r
+  </MsaLibHeader>\r
+  <LibraryClassDefinitions>\r
+    <LibraryClass Usage="ALWAYS_PRODUCED">PostCodeLib</LibraryClass>\r
+    <LibraryClass Usage="ALWAYS_CONSUMED">DebugLib</LibraryClass>\r
+    <LibraryClass Usage="ALWAYS_CONSUMED">PcdLib</LibraryClass>\r
+  </LibraryClassDefinitions>\r
+  <SourceFiles>\r
+    <Filename>PostCode.c</Filename>\r
+  </SourceFiles>\r
+  <Includes>\r
+    <PackageName>MdePkg</PackageName>\r
+  </Includes>\r
+  <PCDs>\r
+    <PcdData ItemType="FIXED_AT_BUILD">\r
+      <C_Name>PcdPostCodePropertyMask</C_Name>\r
+      <Token>0x0000000b</Token>\r
+      <DatumType>UINT8</DatumType>\r
+    </PcdData>\r
+  </PCDs>\r
+</LibraryModuleSurfaceArea>\r
diff --git a/MdePkg/Library/BasePostCodeLibDebug/PostCode.c b/MdePkg/Library/BasePostCodeLibDebug/PostCode.c
new file mode 100644 (file)
index 0000000..37f0602
--- /dev/null
@@ -0,0 +1,122 @@
+/** @file\r
+  Report Status Code Library Post Code functions for DXE Phase.\r
+\r
+  Copyright (c) 2006, Intel Corporation<BR>\r
+  All rights reserved. This program and the accompanying materials                          \r
+  are licensed and made available under the terms and conditions of the BSD License         \r
+  which accompanies this distribution.  The full text of the license may be found at        \r
+  http://opensource.org/licenses/bsd-license.php                                            \r
+\r
+  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
+  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
+\r
+**/\r
+\r
+\r
+/**\r
+  Sends an 32-bit value to a POST card.\r
+\r
+  Sends the 32-bit value specified by Value to a POST card, and returns Value.  \r
+  Some implementations of this library function may perform I/O operations \r
+  directly to a POST card device.  Other implementations may send Value to \r
+  ReportStatusCode(), and the status code reporting mechanism will eventually \r
+  display the 32-bit value on the status reporting device.\r
+  \r
+  PostCode() must actively prevent recursion.  If PostCode() is called while \r
+  processing another any other Report Status Code Library function, then \r
+  PostCode() must return Value immediately.\r
+\r
+  @param  Value  The 32-bit value to write to the POST card.\r
+\r
+  @return  Value\r
+\r
+**/\r
+UINT32\r
+EFIAPI\r
+PostCode (\r
+  IN UINT32  Value\r
+  )\r
+{\r
+  DEBUG((EFI_D_INFO, "POST %08x\n", Value));\r
+  return Value;\r
+}\r
+\r
+\r
+/**\r
+  Sends an 32-bit value to a POST and associated ASCII string.\r
+\r
+  Sends the 32-bit value specified by Value to a POST card, and returns Value.\r
+  If Description is not NULL, then the ASCII string specified by Description is \r
+  also passed to the handler that displays the POST card value.  Some \r
+  implementations of this library function may perform I/O operations directly \r
+  to a POST card device.  Other implementations may send Value to ReportStatusCode(), \r
+  and the status code reporting mechanism will eventually display the 32-bit \r
+  value on the status reporting device.  \r
+\r
+  PostCodeWithDescription()must actively prevent recursion.  If \r
+  PostCodeWithDescription() is called while processing another any other Report \r
+  Status Code Library function, then PostCodeWithDescription() must return Value \r
+  immediately.\r
+\r
+  @param  Value        The 32-bit value to write to the POST card.\r
+  @param  Description  Pointer to an ASCII string that is a description of the \r
+                       POST code value.  This is an optional parameter that may \r
+                       be NULL.\r
+\r
+  @return  Value\r
+\r
+**/\r
+UINT32\r
+EFIAPI\r
+PostCodeWithDescription (\r
+  IN UINT32       Value,\r
+  IN CONST CHAR8  *Description  OPTIONAL\r
+  )\r
+{\r
+  DEBUG((EFI_D_INFO, "POST %08x - %s\n", Value, Description));\r
+  return Value;\r
+}\r
+\r
+\r
+/**\r
+  Returns TRUE if POST Codes are enabled.\r
+\r
+  This function returns TRUE if the POST_CODE_PROPERTY_POST_CODE_ENABLED \r
+  bit of PcdPostCodePropertyMask is set.  Otherwise FALSE is returned.\r
+\r
+  @retval  TRUE   The POST_CODE_PROPERTY_POST_CODE_ENABLED bit of \r
+                  PcdPostCodeProperyMask is set.\r
+  @retval  FALSE  The POST_CODE_PROPERTY_POST_CODE_ENABLED bit of \r
+                  PcdPostCodeProperyMask is clear.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+PostCodeEnabled (\r
+  VOID\r
+  )\r
+{\r
+  return ((PcdGet8(PcdPostCodePropertyMask) & POST_CODE_PROPERTY_POST_CODE_ENABLED) != 0);\r
+}\r
+\r
+\r
+/**\r
+  Returns TRUE if POST code descriptions are enabled.\r
+\r
+  This function returns TRUE if the POST_CODE_PROPERTY_POST_CODE_ENABLED\r
+  bit of PcdPostCodePropertyMask is set.  Otherwise FALSE is returned.\r
+\r
+  @retval  TRUE   The POST_CODE_PROPERTY_POST_CODE_ENABLED bit of\r
+                  PcdPostCodeProperyMask is set.\r
+  @retval  FALSE  The POST_CODE_PROPERTY_POST_CODE_ENABLED bit of\r
+                  PcdPostCodeProperyMask is clear.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+PostCodeDescriptionEnabled (\r
+  VOID\r
+  )\r
+{\r
+  return ((PcdGet8(PcdPostCodePropertyMask) & POST_CODE_PROPERTY_POST_CODE_ENABLED) != 0);\r
+}\r
diff --git a/MdePkg/Library/BasePostCodeLibDebug/build.xml b/MdePkg/Library/BasePostCodeLibDebug/build.xml
new file mode 100644 (file)
index 0000000..b07bda2
--- /dev/null
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?><!-- Copyright (c) 2006, Intel Corporation \r
+All rights reserved. This program and the accompanying materials \r
+are licensed and made available under the terms and conditions of the BSD License \r
+which accompanies this distribution.  The full text of the license may be found at  \r
+http://opensource.org/licenses/bsd-license.php \r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.-->\r
+<project basedir="." default="BasePostCodeLibDebug"><!--Apply external ANT tasks-->\r
+   <taskdef resource="GenBuild.tasks"/>\r
+   <taskdef resource="net/sf/antcontrib/antlib.xml"/>\r
+   <property environment="env"/>\r
+   <property name="WORKSPACE_DIR" value="${env.WORKSPACE}"/>\r
+   <import file="${WORKSPACE_DIR}/Tools/Conf/BuildMacro.xml"/><!--MODULE_RELATIVE PATH is relative to PACKAGE_DIR-->\r
+   <property name="MODULE_RELATIVE_PATH" value="Library/BasePostCodeLibDebug"/>\r
+   <property name="MODULE_DIR" value="${PACKAGE_DIR}/${MODULE_RELATIVE_PATH}"/>\r
+   <property name="COMMON_FILE" value="${WORKSPACE_DIR}/Tools/Conf/Common.xml"/>\r
+   <target name="BasePostCodeLibDebug">\r
+      <GenBuild baseName="BasePostCodeLibDebug" mbdFilename="${MODULE_DIR}/BasePostCodeLibDebug.mbd" msaFilename="${MODULE_DIR}/BasePostCodeLibDebug.msa"/>\r
+   </target>\r
+   <target depends="BasePostCodeLibDebug_clean" name="clean"/>\r
+   <target depends="BasePostCodeLibDebug_cleanall" name="cleanall"/>\r
+   <target name="BasePostCodeLibDebug_clean">\r
+      <OutputDirSetup baseName="BasePostCodeLibDebug" mbdFilename="${MODULE_DIR}/BasePostCodeLibDebug.mbd" msaFilename="${MODULE_DIR}/BasePostCodeLibDebug.msa"/>\r
+      <if>\r
+         <available file="${DEST_DIR_OUTPUT}/BasePostCodeLibDebug_build.xml"/>\r
+         <then>\r
+            <ant antfile="${DEST_DIR_OUTPUT}/BasePostCodeLibDebug_build.xml" target="clean"/>\r
+         </then>\r
+      </if>\r
+      <delete dir="${DEST_DIR_OUTPUT}" excludes="*.xml"/>\r
+   </target>\r
+   <target name="BasePostCodeLibDebug_cleanall">\r
+      <OutputDirSetup baseName="BasePostCodeLibDebug" mbdFilename="${MODULE_DIR}/BasePostCodeLibDebug.mbd" msaFilename="${MODULE_DIR}/BasePostCodeLibDebug.msa"/>\r
+      <if>\r
+         <available file="${DEST_DIR_OUTPUT}/BasePostCodeLibDebug_build.xml"/>\r
+         <then>\r
+            <ant antfile="${DEST_DIR_OUTPUT}/BasePostCodeLibDebug_build.xml" target="cleanall"/>\r
+         </then>\r
+      </if>\r
+      <delete dir="${DEST_DIR_OUTPUT}"/>\r
+      <delete dir="${DEST_DIR_DEBUG}"/>\r
+      <delete>\r
+         <fileset dir="${BIN_DIR}" includes="**BasePostCodeLibDebug*"/>\r
+      </delete>\r
+   </target>\r
+</project>
\ No newline at end of file
diff --git a/MdePkg/Library/BasePostCodeLibReportStatusCode/BasePostCodeLibReportStatusCode.mbd b/MdePkg/Library/BasePostCodeLibReportStatusCode/BasePostCodeLibReportStatusCode.mbd
new file mode 100644 (file)
index 0000000..3774aff
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!--\r
+Copyright (c) 2006, Intel Corporation\r
+All rights reserved. This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution.  The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+-->\r
+<LibraryModuleBuildDescription xmlns="http://www.TianoCore.org/2006/Edk2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.TianoCore.org/2006/Edk2.0  http://www.TianoCore.org/2006/Edk2.0/SurfaceArea.xsd">\r
+  <MbdLibHeader>\r
+    <BaseName>BasePostCodeLibReportStatusCode</BaseName>\r
+    <Guid>55c61087-7367-4546-bc32-4937c5e6aff3</Guid>\r
+    <Version>0</Version>\r
+    <Description>FIX ME!</Description>\r
+    <Copyright>Copyright (c) 2004-2006, Intel Corporation</Copyright>\r
+    <License>\r
+      All rights reserved. This program and the accompanying materials\r
+      are licensed and made available under the terms and conditions of the BSD License\r
+      which accompanies this distribution.  The full text of the license may be found at\r
+      http://opensource.org/licenses/bsd-license.php\r
+      THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+      WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+    </License>\r
+    <Created>2006-03-09 23:16</Created>\r
+    <Modified>2006-03-19 15:17</Modified>\r
+  </MbdLibHeader>\r
+</LibraryModuleBuildDescription>\r
diff --git a/MdePkg/Library/BasePostCodeLibReportStatusCode/BasePostCodeLibReportStatusCode.msa b/MdePkg/Library/BasePostCodeLibReportStatusCode/BasePostCodeLibReportStatusCode.msa
new file mode 100644 (file)
index 0000000..28f84d1
--- /dev/null
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<!--\r
+Copyright (c) 2006, Intel Corporation\r
+All rights reserved. This program and the accompanying materials\r
+are licensed and made available under the terms and conditions of the BSD License\r
+which accompanies this distribution.  The full text of the license may be found at\r
+http://opensource.org/licenses/bsd-license.php\r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+-->\r
+<LibraryModuleSurfaceArea xmlns="http://www.TianoCore.org/2006/Edk2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.TianoCore.org/2006/Edk2.0  http://www.TianoCore.org/2006/Edk2.0/SurfaceArea.xsd">\r
+  <MsaLibHeader>\r
+    <BaseName>BasePostCodeLibReportStatusCode</BaseName>\r
+    <ModuleType>BASE</ModuleType>\r
+    <ComponentType>LIBRARY</ComponentType>\r
+    <Guid>55c61087-7367-4546-bc32-4937c5e6aff3</Guid>\r
+    <Version>0</Version>\r
+    <Abstract>Component description file for the entry point to a EFIDXE Drivers</Abstract>\r
+    <Description>FIX ME!</Description>\r
+    <Copyright>Copyright (c) 2004-2006, Intel Corporation</Copyright>\r
+    <License>\r
+      All rights reserved. This program and the accompanying materials\r
+      are licensed and made available under the terms and conditions of the BSD License\r
+      which accompanies this distribution.  The full text of the license may be found at\r
+      http://opensource.org/licenses/bsd-license.php\r
+      THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+      WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+    </License>\r
+    <Created>2006-03-09 23:16</Created>\r
+    <Updated>2006-03-19 15:17</Updated>\r
+    <Specification>0</Specification>\r
+  </MsaLibHeader>\r
+  <LibraryClassDefinitions>\r
+    <LibraryClass Usage="ALWAYS_PRODUCED">PostCodeLib</LibraryClass>\r
+    <LibraryClass Usage="ALWAYS_CONSUMED">PcdLib</LibraryClass>\r
+  </LibraryClassDefinitions>\r
+  <SourceFiles>\r
+    <Filename>PostCode.c</Filename>\r
+  </SourceFiles>\r
+  <Includes>\r
+    <PackageName>MdePkg</PackageName>\r
+  </Includes>\r
+  <PCDs>\r
+    <PcdData ItemType="FIXED_AT_BUILD">\r
+      <C_Name>PcdPostCodePropertyMask</C_Name>\r
+      <Token>0x0000000b</Token>\r
+      <DatumType>UINT8</DatumType>\r
+    </PcdData>\r
+  </PCDs>\r
+</LibraryModuleSurfaceArea>\r
diff --git a/MdePkg/Library/BasePostCodeLibReportStatusCode/PostCode.c b/MdePkg/Library/BasePostCodeLibReportStatusCode/PostCode.c
new file mode 100644 (file)
index 0000000..f3d95dc
--- /dev/null
@@ -0,0 +1,127 @@
+/** @file\r
+  Report Status Code Library Post Code functions for DXE Phase.\r
+\r
+  Copyright (c) 2006, Intel Corporation<BR>\r
+  All rights reserved. This program and the accompanying materials                          \r
+  are licensed and made available under the terms and conditions of the BSD License         \r
+  which accompanies this distribution.  The full text of the license may be found at        \r
+  http://opensource.org/licenses/bsd-license.php                                            \r
+\r
+  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,                     \r
+  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.             \r
+\r
+**/\r
+\r
+\r
+/**\r
+  Sends an 32-bit value to a POST card.\r
+\r
+  Sends the 32-bit value specified by Value to a POST card, and returns Value.  \r
+  Some implementations of this library function may perform I/O operations \r
+  directly to a POST card device.  Other implementations may send Value to \r
+  ReportStatusCode(), and the status code reporting mechanism will eventually \r
+  display the 32-bit value on the status reporting device.\r
+  \r
+  PostCode() must actively prevent recursion.  If PostCode() is called while \r
+  processing another any other Report Status Code Library function, then \r
+  PostCode() must return Value immediately.\r
+\r
+  @param  Value  The 32-bit value to write to the POST card.\r
+\r
+  @return  Value\r
+\r
+**/\r
+UINT32\r
+EFIAPI\r
+PostCode (\r
+  IN UINT32  Value\r
+  )\r
+{\r
+  //\r
+  // Todo: Use approapriate ReportStatusCode\r
+  //\r
+  return Value;\r
+}\r
+\r
+\r
+/**\r
+  Sends an 32-bit value to a POST and associated ASCII string.\r
+\r
+  Sends the 32-bit value specified by Value to a POST card, and returns Value.\r
+  If Description is not NULL, then the ASCII string specified by Description is \r
+  also passed to the handler that displays the POST card value.  Some \r
+  implementations of this library function may perform I/O operations directly \r
+  to a POST card device.  Other implementations may send Value to ReportStatusCode(), \r
+  and the status code reporting mechanism will eventually display the 32-bit \r
+  value on the status reporting device.  \r
+\r
+  PostCodeWithDescription()must actively prevent recursion.  If \r
+  PostCodeWithDescription() is called while processing another any other Report \r
+  Status Code Library function, then PostCodeWithDescription() must return Value \r
+  immediately.\r
+\r
+  @param  Value        The 32-bit value to write to the POST card.\r
+  @param  Description  Pointer to an ASCII string that is a description of the \r
+                       POST code value.  This is an optional parameter that may \r
+                       be NULL.\r
+\r
+  @return  Value\r
+\r
+**/\r
+UINT32\r
+EFIAPI\r
+PostCodeWithDescription (\r
+  IN UINT32       Value,\r
+  IN CONST CHAR8  *Description  OPTIONAL\r
+  )\r
+{\r
+  //\r
+  // Todo: Use approapriate ReportStatusCode\r
+  //\r
+  return Value;\r
+}\r
+\r
+\r
+/**\r
+  Returns TRUE if POST Codes are enabled.\r
+\r
+  This function returns TRUE if the POST_CODE_PROPERTY_POST_CODE_ENABLED \r
+  bit of PcdPostCodePropertyMask is set.  Otherwise FALSE is returned.\r
+\r
+  @retval  TRUE   The POST_CODE_PROPERTY_POST_CODE_ENABLED bit of \r
+                  PcdPostCodeProperyMask is set.\r
+  @retval  FALSE  The POST_CODE_PROPERTY_POST_CODE_ENABLED bit of \r
+                  PcdPostCodeProperyMask is clear.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+PostCodeEnabled (\r
+  VOID\r
+  )\r
+{\r
+  return ((PcdGet8(PcdPostCodePropertyMask) & POST_CODE_PROPERTY_POST_CODE_ENABLED) != 0);\r
+}\r
+\r
+\r
+/**\r
+  Returns TRUE if POST code descriptions are enabled.\r
+\r
+  This function returns TRUE if the \r
+  POST_CODE_PROPERTY_POST_CODE_ENABLED bit of \r
+  PcdPostCodePropertyMask is set.  Otherwise FALSE is returned.\r
+\r
+  @retval  TRUE   The POST_CODE_PROPERTY_POST_CODE_ENABLED \r
+                  bit of PcdPostCodeProperyMask is set.\r
+  @retval  FALSE  The POST_CODE_PROPERTY_POST_CODE_ENABLED \r
+                  bit of PcdPostCodeProperyMask is clear.\r
+\r
+**/\r
+BOOLEAN\r
+EFIAPI\r
+PostCodeDescriptionEnabled (\r
+  VOID\r
+  )\r
+{\r
+  return ((PcdGet8(PcdPostCodePropertyMask) & POST_CODE_PROPERTY_POST_CODE_ENABLED) != 0);\r
+}\r
diff --git a/MdePkg/Library/BasePostCodeLibReportStatusCode/build.xml b/MdePkg/Library/BasePostCodeLibReportStatusCode/build.xml
new file mode 100644 (file)
index 0000000..8b89f4a
--- /dev/null
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?><!-- Copyright (c) 2006, Intel Corporation \r
+All rights reserved. This program and the accompanying materials \r
+are licensed and made available under the terms and conditions of the BSD License \r
+which accompanies this distribution.  The full text of the license may be found at  \r
+http://opensource.org/licenses/bsd-license.php \r
+\r
+THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
+WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.-->\r
+<project basedir="." default="BasePostCodeLibReportStatusCode"><!--Apply external ANT tasks-->\r
+   <taskdef resource="GenBuild.tasks"/>\r
+   <taskdef resource="net/sf/antcontrib/antlib.xml"/>\r
+   <property environment="env"/>\r
+   <property name="WORKSPACE_DIR" value="${env.WORKSPACE}"/>\r
+   <import file="${WORKSPACE_DIR}/Tools/Conf/BuildMacro.xml"/><!--MODULE_RELATIVE PATH is relative to PACKAGE_DIR-->\r
+   <property name="MODULE_RELATIVE_PATH" value="Library/BasePostCodeLibReportStatusCode"/>\r
+   <property name="MODULE_DIR" value="${PACKAGE_DIR}/${MODULE_RELATIVE_PATH}"/>\r
+   <property name="COMMON_FILE" value="${WORKSPACE_DIR}/Tools/Conf/Common.xml"/>\r
+   <target name="BasePostCodeLibReportStatusCode">\r
+      <GenBuild baseName="BasePostCodeLibReportStatusCode" mbdFilename="${MODULE_DIR}/BasePostCodeLibReportStatusCode.mbd" msaFilename="${MODULE_DIR}/BasePostCodeLibReportStatusCode.msa"/>\r
+   </target>\r
+   <target depends="BasePostCodeLibReportStatusCode_clean" name="clean"/>\r
+   <target depends="BasePostCodeLibReportStatusCode_cleanall" name="cleanall"/>\r
+   <target name="BasePostCodeLibReportStatusCode_clean">\r
+      <OutputDirSetup baseName="BasePostCodeLibReportStatusCode" mbdFilename="${MODULE_DIR}/BasePostCodeLibReportStatusCode.mbd" msaFilename="${MODULE_DIR}/BasePostCodeLibReportStatusCode.msa"/>\r
+      <if>\r
+         <available file="${DEST_DIR_OUTPUT}/BasePostCodeLibReportStatusCode_build.xml"/>\r
+         <then>\r
+            <ant antfile="${DEST_DIR_OUTPUT}/BasePostCodeLibReportStatusCode_build.xml" target="clean"/>\r
+         </then>\r
+      </if>\r
+      <delete dir="${DEST_DIR_OUTPUT}" excludes="*.xml"/>\r
+   </target>\r
+   <target name="BasePostCodeLibReportStatusCode_cleanall">\r
+      <OutputDirSetup baseName="BasePostCodeLibReportStatusCode" mbdFilename="${MODULE_DIR}/BasePostCodeLibReportStatusCode.mbd" msaFilename="${MODULE_DIR}/BasePostCodeLibReportStatusCode.msa"/>\r
+      <if>\r
+         <available file="${DEST_DIR_OUTPUT}/BasePostCodeLibReportStatusCode_build.xml"/>\r
+         <then>\r
+            <ant antfile="${DEST_DIR_OUTPUT}/BasePostCodeLibReportStatusCode_build.xml" target="cleanall"/>\r
+         </then>\r
+      </if>\r
+      <delete dir="${DEST_DIR_OUTPUT}"/>\r
+      <delete dir="${DEST_DIR_DEBUG}"/>\r
+      <delete>\r
+         <fileset dir="${BIN_DIR}" includes="**BasePostCodeLibReportStatusCode*"/>\r
+      </delete>\r
+   </target>\r
+</project>
\ No newline at end of file
index ef0159a..552a086 100644 (file)
@@ -34,6 +34,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
   <LibraryClassDefinitions>\r
     <LibraryClass Usage="ALWAYS_PRODUCED">PrintLib</LibraryClass>\r
     <LibraryClass Usage="ALWAYS_CONSUMED">BaseLib</LibraryClass>\r
+    <LibraryClass Usage="ALWAYS_CONSUMED">DebugLib</LibraryClass>\r
   </LibraryClassDefinitions>\r
   <SourceFiles>\r
     <Filename>PrintLib.c</Filename>\r
index 84dceb6..24e0175 100644 (file)
@@ -110,6 +110,9 @@ BasePrintLibVSPrint (
   UINTN           Radix;\r
   RETURN_STATUS   Status;\r
 \r
+  ASSERT (Buffer != NULL);\r
+  ASSERT (Format != NULL);\r
+\r
   OriginalBuffer = Buffer;\r
 \r
   if ((Flags & OUTPUT_UNICODE) != 0) {\r
index 45336c5..c8ac8b4 100644 (file)
@@ -232,7 +232,7 @@ BuildResourceDescriptorHob (
   for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.\r
   If Guid is NULL, then ASSERT().\r
   If there is no additional space for HOB creation, then ASSERT().\r
-  If DataLength > (0x10000 - sizeof (EFI_HOB_TYPE_GUID)), then ASSERT().\r
+  If DataLength >= (0x10000 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT().\r
 \r
   @param  Guid          The GUID to tag the customized HOB.\r
   @param  DataLength    The size of the data payload for the GUID HOB.\r
@@ -265,7 +265,7 @@ BuildGuidHob (
   If Guid is NULL, then ASSERT().\r
   If Data is NULL and DataLength > 0, then ASSERT().\r
   If there is no additional space for HOB creation, then ASSERT().\r
-  If DataLength > (0x10000 - sizeof (EFI_HOB_TYPE_GUID)), then ASSERT().\r
+  If DataLength >= (0x10000 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT().\r
 \r
   @param  Guid          The GUID to tag the customized HOB.\r
   @param  Data          The data to be copied into the data field of the GUID HOB.\r
index 41baba2..fd2d145 100644 (file)
@@ -258,7 +258,7 @@ BuildResourceDescriptorHob (
   for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.\r
   If Guid is NULL, then ASSERT().\r
   If there is no additional space for HOB creation, then ASSERT().\r
-  If DataLength > (0x10000 - sizeof (EFI_HOB_TYPE_GUID)), then ASSERT().\r
+  If DataLength >= (0x10000 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT().\r
 \r
   @param  Guid          The GUID to tag the customized HOB.\r
   @param  DataLength    The size of the data payload for the GUID HOB.\r
@@ -291,7 +291,7 @@ BuildGuidHob (
   If Guid is NULL, then ASSERT().\r
   If Data is NULL and DataLength > 0, then ASSERT().\r
   If there is no additional space for HOB creation, then ASSERT().\r
-  If DataLength > (0x10000 - sizeof (EFI_HOB_TYPE_GUID)), then ASSERT().\r
+  If DataLength >= (0x10000 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT().\r
 \r
   @param  Guid          The GUID to tag the customized HOB.\r
   @param  Data          The data to be copied into the data field of the GUID HOB.\r
index 380a735..1f0c66a 100644 (file)
@@ -275,7 +275,7 @@ BuildResourceDescriptorHob (
   for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.\r
   If Guid is NULL, then ASSERT().\r
   If there is no additional space for HOB creation, then ASSERT().\r
-  If DataLength > (0x10000 - sizeof (EFI_HOB_TYPE_GUID)), then ASSERT().\r
+  If DataLength >= (0x10000 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT().\r
 \r
   @param  Guid          The GUID to tag the customized HOB.\r
   @param  DataLength    The size of the data payload for the GUID HOB.\r
@@ -313,7 +313,7 @@ BuildGuidHob (
   If Guid is NULL, then ASSERT().\r
   If Data is NULL and DataLength > 0, then ASSERT().\r
   If there is no additional space for HOB creation, then ASSERT().\r
-  If DataLength > (0x10000 - sizeof (EFI_HOB_TYPE_GUID)), then ASSERT().\r
+  If DataLength >= (0x10000 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT().\r
 \r
   @param  Guid          The GUID to tag the customized HOB.\r
   @param  Data          The data to be copied into the data field of the GUID HOB.\r
@@ -332,6 +332,8 @@ BuildGuidDataHob (
 {\r
   VOID  *HobData;\r
 \r
+  ASSERT (Data != NULL || DataLength == 0);\r
+\r
   HobData = BuildGuidHob (Guid, DataLength);\r
 \r
   return CopyMem (HobData, Data, DataLength);\r
index 3acbdac..dea3160 100644 (file)
@@ -52,10 +52,10 @@ SetMem16 (
   IN      UINT16                    Value\r
   )\r
 {\r
-  ASSERT (Buffer != NULL);\r
+  ASSERT (!(Buffer == NULL && Length > 0));\r
   ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);\r
-  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);\r
-  ASSERT ((Length & (sizeof (Value) - 1)) != 0);\r
+  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);\r
+  ASSERT ((Length & (sizeof (Value) - 1)) == 0);\r
 \r
   if ((Length /= sizeof (Value)) == 0) {\r
     return Buffer;\r
index 620b69a..1ae7acb 100644 (file)
@@ -52,10 +52,10 @@ SetMem32 (
   IN      UINT32                    Value\r
   )\r
 {\r
-  ASSERT (Buffer != NULL);\r
+  ASSERT (!(Buffer == NULL && Length > 0));\r
   ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);\r
-  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);\r
-  ASSERT ((Length & (sizeof (Value) - 1)) != 0);\r
+  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);\r
+  ASSERT ((Length & (sizeof (Value) - 1)) == 0);\r
 \r
   if ((Length /= sizeof (Value)) == 0) {\r
     return Buffer;\r
index 73c28af..0128a2d 100644 (file)
@@ -52,10 +52,10 @@ SetMem64 (
   IN      UINT64                    Value\r
   )\r
 {\r
-  ASSERT (Buffer != NULL);\r
+  ASSERT (!(Buffer == NULL && Length > 0));\r
   ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);\r
-  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);\r
-  ASSERT ((Length & (sizeof (Value) - 1)) != 0);\r
+  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);\r
+  ASSERT ((Length & (sizeof (Value) - 1)) == 0);\r
 \r
   if ((Length /= sizeof (Value)) == 0) {\r
     return Buffer;\r
index 3acbdac..dea3160 100644 (file)
@@ -52,10 +52,10 @@ SetMem16 (
   IN      UINT16                    Value\r
   )\r
 {\r
-  ASSERT (Buffer != NULL);\r
+  ASSERT (!(Buffer == NULL && Length > 0));\r
   ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);\r
-  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);\r
-  ASSERT ((Length & (sizeof (Value) - 1)) != 0);\r
+  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);\r
+  ASSERT ((Length & (sizeof (Value) - 1)) == 0);\r
 \r
   if ((Length /= sizeof (Value)) == 0) {\r
     return Buffer;\r
index 620b69a..1ae7acb 100644 (file)
@@ -52,10 +52,10 @@ SetMem32 (
   IN      UINT32                    Value\r
   )\r
 {\r
-  ASSERT (Buffer != NULL);\r
+  ASSERT (!(Buffer == NULL && Length > 0));\r
   ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);\r
-  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);\r
-  ASSERT ((Length & (sizeof (Value) - 1)) != 0);\r
+  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);\r
+  ASSERT ((Length & (sizeof (Value) - 1)) == 0);\r
 \r
   if ((Length /= sizeof (Value)) == 0) {\r
     return Buffer;\r
index 73c28af..0128a2d 100644 (file)
@@ -52,10 +52,10 @@ SetMem64 (
   IN      UINT64                    Value\r
   )\r
 {\r
-  ASSERT (Buffer != NULL);\r
+  ASSERT (!(Buffer == NULL && Length > 0));\r
   ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);\r
-  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);\r
-  ASSERT ((Length & (sizeof (Value) - 1)) != 0);\r
+  ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);\r
+  ASSERT ((Length & (sizeof (Value) - 1)) == 0);\r
 \r
   if ((Length /= sizeof (Value)) == 0) {\r
     return Buffer;\r
index 392c239..b12e506 100644 (file)
       <ModuleSA Arch="IA32" FvBinding="NULL" ModuleName="PeiIoLibCpuIo" />\r
       <ModuleSA Arch="IA32" FvBinding="NULL" ModuleName="DxeReportStatusCodeLib" />\r
       <ModuleSA Arch="IA32" FvBinding="NULL" ModuleName="BaseReportStatusCodeLibNull" />\r
+\r
+      <ModuleSA Arch="IA32" FvBinding="NULL" ModuleName="BasePostCodeLib80" />\r
+      <ModuleSA Arch="IA32" FvBinding="NULL" ModuleName="BasePostCodeLibDebug" />\r
+      <ModuleSA Arch="IA32" FvBinding="NULL" ModuleName="BasePostCodeLibReportStatusCode" />\r
+\r
       <ModuleSA Arch="IA32" FvBinding="NULL" ModuleName="UefiDriverEntryPoint" />\r
   \r
       <ModuleSA Arch="IA32" FvBinding="NULL" ModuleName="DxeSmmDriverEntryPoint" />\r
       <ModuleSA Arch="IPF" FvBinding="NULL" ModuleName="DxeReportStatusCodeLib" />\r
       <ModuleSA Arch="IPF" FvBinding="NULL" ModuleName="BaseReportStatusCodeLibNull" />\r
   \r
+      <ModuleSA Arch="IPF" FvBinding="NULL" ModuleName="BasePostCodeLib80" />\r
+      <ModuleSA Arch="IPF" FvBinding="NULL" ModuleName="BasePostCodeLibDebug" />\r
+      <ModuleSA Arch="IPF" FvBinding="NULL" ModuleName="BasePostCodeLibReportStatusCode" />\r
+\r
       <ModuleSA Arch="IPF" FvBinding="NULL" ModuleName="DxeSmmDriverEntryPoint" />\r
   \r
       <ModuleSA Arch="IPF" FvBinding="NULL" ModuleName="UefiBootServicesTableLib" />\r
       <ModuleSA Arch="X64" FvBinding="NULL" ModuleName="PeiIoLibCpuIo" />\r
       <ModuleSA Arch="X64" FvBinding="NULL" ModuleName="DxeReportStatusCodeLib" />\r
       <ModuleSA Arch="X64" FvBinding="NULL" ModuleName="BaseReportStatusCodeLibNull" />\r
+\r
+      <ModuleSA Arch="X64" FvBinding="NULL" ModuleName="BasePostCodeLib80" />\r
+      <ModuleSA Arch="X64" FvBinding="NULL" ModuleName="BasePostCodeLibDebug" />\r
+      <ModuleSA Arch="X64" FvBinding="NULL" ModuleName="BasePostCodeLibReportStatusCode" />\r
   \r
       <ModuleSA Arch="X64" FvBinding="NULL" ModuleName="UefiDriverEntryPoint" />\r
   \r
       <ModuleSA Arch="EBC" FvBinding="NULL" ModuleName="PeiIoLibCpuIo" />\r
       <ModuleSA Arch="EBC" FvBinding="NULL" ModuleName="DxeReportStatusCodeLib" />\r
       <ModuleSA Arch="EBC" FvBinding="NULL" ModuleName="BaseReportStatusCodeLibNull" />\r
+\r
+      <ModuleSA Arch="EBC" FvBinding="NULL" ModuleName="BasePostCodeLib80" />\r
+      <ModuleSA Arch="EBC" FvBinding="NULL" ModuleName="BasePostCodeLibDebug" />\r
+      <ModuleSA Arch="EBC" FvBinding="NULL" ModuleName="BasePostCodeLibReportStatusCode" />\r
   \r
       <ModuleSA Arch="EBC" FvBinding="NULL" ModuleName="DxeSmmDriverEntryPoint" />\r
   \r
             <DefaultValue>0x07</DefaultValue>\r
           </PcdBuildData>\r
         </PcdBuildDeclarations>\r
+      </ModuleSA>\r
+      <ModuleSA Arch="IA32" FvBinding="NULL" ModuleName="BasePostCodeLib80" >\r
+        <PcdBuildDeclarations>\r
+          <PcdBuildData ItemType="FIXED_AT_BUILD">\r
+            <C_Name>PcdPostCodePropertyMask</C_Name>\r
+            <Token>0x0000000b</Token>\r
+            <DatumType>UINT8</DatumType>\r
+            <HiiEnable>false</HiiEnable>\r
+            <VpdEnable>false</VpdEnable>\r
+            <AlternateNameSpaceEnable>false</AlternateNameSpaceEnable>\r
+            <SkuEnable>false</SkuEnable>\r
+            <SkuDataArrayEnable>false</SkuDataArrayEnable>\r
+            <MaxSku>0x00</MaxSku>\r
+            <SkuId>0x00</SkuId>\r
+            <DatumSize>1</DatumSize>\r
+            <VariableGuid>0</VariableGuid>\r
+            <VariableName>L""</VariableName>\r
+            <DataOffset>0</DataOffset>\r
+            <DefaultValue>0x00</DefaultValue>\r
+          </PcdBuildData>\r
+        </PcdBuildDeclarations>\r
+      </ModuleSA>\r
+      <ModuleSA Arch="IA32" FvBinding="NULL" ModuleName="BasePostCodeLibReportStatusCode" >\r
+        <PcdBuildDeclarations>\r
+          <PcdBuildData ItemType="FIXED_AT_BUILD">\r
+            <C_Name>PcdPostCodePropertyMask</C_Name>\r
+            <Token>0x0000000b</Token>\r
+            <DatumType>UINT8</DatumType>\r
+            <HiiEnable>false</HiiEnable>\r
+            <VpdEnable>false</VpdEnable>\r
+            <AlternateNameSpaceEnable>false</AlternateNameSpaceEnable>\r
+            <SkuEnable>false</SkuEnable>\r
+            <SkuDataArrayEnable>false</SkuDataArrayEnable>\r
+            <MaxSku>0x00</MaxSku>\r
+            <SkuId>0x00</SkuId>\r
+            <DatumSize>1</DatumSize>\r
+            <VariableGuid>0</VariableGuid>\r
+            <VariableName>L""</VariableName>\r
+            <DataOffset>0</DataOffset>\r
+            <DefaultValue>0x00</DefaultValue>\r
+          </PcdBuildData>\r
+        </PcdBuildDeclarations>\r
       </ModuleSA>        \r
+      <ModuleSA Arch="IA32" FvBinding="NULL" ModuleName="BasePostCodeLibDebug" >\r
+        <PcdBuildDeclarations>\r
+          <PcdBuildData ItemType="FIXED_AT_BUILD">\r
+            <C_Name>PcdPostCodePropertyMask</C_Name>\r
+            <Token>0x0000000b</Token>\r
+            <DatumType>UINT8</DatumType>\r
+            <HiiEnable>false</HiiEnable>\r
+            <VpdEnable>false</VpdEnable>\r
+            <AlternateNameSpaceEnable>false</AlternateNameSpaceEnable>\r
+            <SkuEnable>false</SkuEnable>\r
+            <SkuDataArrayEnable>false</SkuDataArrayEnable>\r
+            <MaxSku>0x00</MaxSku>\r
+            <SkuId>0x00</SkuId>\r
+            <DatumSize>1</DatumSize>\r
+            <VariableGuid>0</VariableGuid>\r
+            <VariableName>L""</VariableName>\r
+            <DataOffset>0</DataOffset>\r
+            <DefaultValue>0x00</DefaultValue>\r
+          </PcdBuildData>\r
+        </PcdBuildDeclarations>\r
+      </ModuleSA>                \r
       <ModuleSA Arch="IA32" FvBinding="NULL" ModuleName="UefiDriverEntryPoint" >\r
       </ModuleSA>        \r
 \r
             <DefaultValue>0x07</DefaultValue>\r
           </PcdBuildData>\r
         </PcdBuildDeclarations>\r
+      </ModuleSA>\r
+      <ModuleSA Arch="IPF" FvBinding="NULL" ModuleName="BasePostCodeLib80" >\r
+        <PcdBuildDeclarations>\r
+          <PcdBuildData ItemType="FIXED_AT_BUILD">\r
+            <C_Name>PcdPostCodePropertyMask</C_Name>\r
+            <Token>0x0000000b</Token>\r
+            <DatumType>UINT8</DatumType>\r
+            <HiiEnable>false</HiiEnable>\r
+            <VpdEnable>false</VpdEnable>\r
+            <AlternateNameSpaceEnable>false</AlternateNameSpaceEnable>\r
+            <SkuEnable>false</SkuEnable>\r
+            <SkuDataArrayEnable>false</SkuDataArrayEnable>\r
+            <MaxSku>0x00</MaxSku>\r
+            <SkuId>0x00</SkuId>\r
+            <DatumSize>1</DatumSize>\r
+            <VariableGuid>0</VariableGuid>\r
+            <VariableName>L""</VariableName>\r
+            <DataOffset>0</DataOffset>\r
+            <DefaultValue>0x00</DefaultValue>\r
+          </PcdBuildData>\r
+        </PcdBuildDeclarations>\r
+      </ModuleSA>\r
+      <ModuleSA Arch="IPF" FvBinding="NULL" ModuleName="BasePostCodeLibReportStatusCode" >\r
+        <PcdBuildDeclarations>\r
+          <PcdBuildData ItemType="FIXED_AT_BUILD">\r
+            <C_Name>PcdPostCodePropertyMask</C_Name>\r
+            <Token>0x0000000b</Token>\r
+            <DatumType>UINT8</DatumType>\r
+            <HiiEnable>false</HiiEnable>\r
+            <VpdEnable>false</VpdEnable>\r
+            <AlternateNameSpaceEnable>false</AlternateNameSpaceEnable>\r
+            <SkuEnable>false</SkuEnable>\r
+            <SkuDataArrayEnable>false</SkuDataArrayEnable>\r
+            <MaxSku>0x00</MaxSku>\r
+            <SkuId>0x00</SkuId>\r
+            <DatumSize>1</DatumSize>\r
+            <VariableGuid>0</VariableGuid>\r
+            <VariableName>L""</VariableName>\r
+            <DataOffset>0</DataOffset>\r
+            <DefaultValue>0x00</DefaultValue>\r
+          </PcdBuildData>\r
+        </PcdBuildDeclarations>\r
       </ModuleSA>        \r
+      <ModuleSA Arch="IPF" FvBinding="NULL" ModuleName="BasePostCodeLibDebug" >\r
+        <PcdBuildDeclarations>\r
+          <PcdBuildData ItemType="FIXED_AT_BUILD">\r
+            <C_Name>PcdPostCodePropertyMask</C_Name>\r
+            <Token>0x0000000b</Token>\r
+            <DatumType>UINT8</DatumType>\r
+            <HiiEnable>false</HiiEnable>\r
+            <VpdEnable>false</VpdEnable>\r
+            <AlternateNameSpaceEnable>false</AlternateNameSpaceEnable>\r
+            <SkuEnable>false</SkuEnable>\r
+            <SkuDataArrayEnable>false</SkuDataArrayEnable>\r
+            <MaxSku>0x00</MaxSku>\r
+            <SkuId>0x00</SkuId>\r
+            <DatumSize>1</DatumSize>\r
+            <VariableGuid>0</VariableGuid>\r
+            <VariableName>L""</VariableName>\r
+            <DataOffset>0</DataOffset>\r
+            <DefaultValue>0x00</DefaultValue>\r
+          </PcdBuildData>\r
+        </PcdBuildDeclarations>\r
+      </ModuleSA>                \r
       <ModuleSA Arch="IPF" FvBinding="NULL" ModuleName="UefiDriverEntryPoint" >\r
       </ModuleSA>        \r
 \r
             <DefaultValue>0x07</DefaultValue>\r
           </PcdBuildData>\r
         </PcdBuildDeclarations>\r
+      </ModuleSA>       \r
+      <ModuleSA Arch="X64" FvBinding="NULL" ModuleName="BasePostCodeLib80" >\r
+        <PcdBuildDeclarations>\r
+          <PcdBuildData ItemType="FIXED_AT_BUILD">\r
+            <C_Name>PcdPostCodePropertyMask</C_Name>\r
+            <Token>0x0000000b</Token>\r
+            <DatumType>UINT8</DatumType>\r
+            <HiiEnable>false</HiiEnable>\r
+            <VpdEnable>false</VpdEnable>\r
+            <AlternateNameSpaceEnable>false</AlternateNameSpaceEnable>\r
+            <SkuEnable>false</SkuEnable>\r
+            <SkuDataArrayEnable>false</SkuDataArrayEnable>\r
+            <MaxSku>0x00</MaxSku>\r
+            <SkuId>0x00</SkuId>\r
+            <DatumSize>1</DatumSize>\r
+            <VariableGuid>0</VariableGuid>\r
+            <VariableName>L""</VariableName>\r
+            <DataOffset>0</DataOffset>\r
+            <DefaultValue>0x00</DefaultValue>\r
+          </PcdBuildData>\r
+        </PcdBuildDeclarations>\r
+      </ModuleSA>\r
+      <ModuleSA Arch="X64" FvBinding="NULL" ModuleName="BasePostCodeLibReportStatusCode" >\r
+        <PcdBuildDeclarations>\r
+          <PcdBuildData ItemType="FIXED_AT_BUILD">\r
+            <C_Name>PcdPostCodePropertyMask</C_Name>\r
+            <Token>0x0000000b</Token>\r
+            <DatumType>UINT8</DatumType>\r
+            <HiiEnable>false</HiiEnable>\r
+            <VpdEnable>false</VpdEnable>\r
+            <AlternateNameSpaceEnable>false</AlternateNameSpaceEnable>\r
+            <SkuEnable>false</SkuEnable>\r
+            <SkuDataArrayEnable>false</SkuDataArrayEnable>\r
+            <MaxSku>0x00</MaxSku>\r
+            <SkuId>0x00</SkuId>\r
+            <DatumSize>1</DatumSize>\r
+            <VariableGuid>0</VariableGuid>\r
+            <VariableName>L""</VariableName>\r
+            <DataOffset>0</DataOffset>\r
+            <DefaultValue>0x00</DefaultValue>\r
+          </PcdBuildData>\r
+        </PcdBuildDeclarations>\r
       </ModuleSA>        \r
+      <ModuleSA Arch="X64" FvBinding="NULL" ModuleName="BasePostCodeLibDebug" >\r
+        <PcdBuildDeclarations>\r
+          <PcdBuildData ItemType="FIXED_AT_BUILD">\r
+            <C_Name>PcdPostCodePropertyMask</C_Name>\r
+            <Token>0x0000000b</Token>\r
+            <DatumType>UINT8</DatumType>\r
+            <HiiEnable>false</HiiEnable>\r
+            <VpdEnable>false</VpdEnable>\r
+            <AlternateNameSpaceEnable>false</AlternateNameSpaceEnable>\r
+            <SkuEnable>false</SkuEnable>\r
+            <SkuDataArrayEnable>false</SkuDataArrayEnable>\r
+            <MaxSku>0x00</MaxSku>\r
+            <SkuId>0x00</SkuId>\r
+            <DatumSize>1</DatumSize>\r
+            <VariableGuid>0</VariableGuid>\r
+            <VariableName>L""</VariableName>\r
+            <DataOffset>0</DataOffset>\r
+            <DefaultValue>0x00</DefaultValue>\r
+          </PcdBuildData>\r
+        </PcdBuildDeclarations>\r
+      </ModuleSA>         \r
       <ModuleSA Arch="X64" FvBinding="NULL" ModuleName="UefiDriverEntryPoint" >\r
       </ModuleSA>        \r
 \r
           </PcdBuildData>\r
         </PcdBuildDeclarations>\r
       </ModuleSA>        \r
+      <ModuleSA Arch="EBC" FvBinding="NULL" ModuleName="BasePostCodeLib80" >\r
+        <PcdBuildDeclarations>\r
+          <PcdBuildData ItemType="FIXED_AT_BUILD">\r
+            <C_Name>PcdPostCodePropertyMask</C_Name>\r
+            <Token>0x0000000b</Token>\r
+            <DatumType>UINT8</DatumType>\r
+            <HiiEnable>false</HiiEnable>\r
+            <VpdEnable>false</VpdEnable>\r
+            <AlternateNameSpaceEnable>false</AlternateNameSpaceEnable>\r
+            <SkuEnable>false</SkuEnable>\r
+            <SkuDataArrayEnable>false</SkuDataArrayEnable>\r
+            <MaxSku>0x00</MaxSku>\r
+            <SkuId>0x00</SkuId>\r
+            <DatumSize>1</DatumSize>\r
+            <VariableGuid>0</VariableGuid>\r
+            <VariableName>L""</VariableName>\r
+            <DataOffset>0</DataOffset>\r
+            <DefaultValue>0x00</DefaultValue>\r
+          </PcdBuildData>\r
+        </PcdBuildDeclarations>\r
+      </ModuleSA>\r
+      <ModuleSA Arch="EBC" FvBinding="NULL" ModuleName="BasePostCodeLibReportStatusCode" >\r
+        <PcdBuildDeclarations>\r
+          <PcdBuildData ItemType="FIXED_AT_BUILD">\r
+            <C_Name>PcdPostCodePropertyMask</C_Name>\r
+            <Token>0x0000000b</Token>\r
+            <DatumType>UINT8</DatumType>\r
+            <HiiEnable>false</HiiEnable>\r
+            <VpdEnable>false</VpdEnable>\r
+            <AlternateNameSpaceEnable>false</AlternateNameSpaceEnable>\r
+            <SkuEnable>false</SkuEnable>\r
+            <SkuDataArrayEnable>false</SkuDataArrayEnable>\r
+            <MaxSku>0x00</MaxSku>\r
+            <SkuId>0x00</SkuId>\r
+            <DatumSize>1</DatumSize>\r
+            <VariableGuid>0</VariableGuid>\r
+            <VariableName>L""</VariableName>\r
+            <DataOffset>0</DataOffset>\r
+            <DefaultValue>0x00</DefaultValue>\r
+          </PcdBuildData>\r
+        </PcdBuildDeclarations>\r
+      </ModuleSA>        \r
+      <ModuleSA Arch="EBC" FvBinding="NULL" ModuleName="BasePostCodeLibDebug" >\r
+        <PcdBuildDeclarations>\r
+          <PcdBuildData ItemType="FIXED_AT_BUILD">\r
+            <C_Name>PcdPostCodePropertyMask</C_Name>\r
+            <Token>0x0000000b</Token>\r
+            <DatumType>UINT8</DatumType>\r
+            <HiiEnable>false</HiiEnable>\r
+            <VpdEnable>false</VpdEnable>\r
+            <AlternateNameSpaceEnable>false</AlternateNameSpaceEnable>\r
+            <SkuEnable>false</SkuEnable>\r
+            <SkuDataArrayEnable>false</SkuDataArrayEnable>\r
+            <MaxSku>0x00</MaxSku>\r
+            <SkuId>0x00</SkuId>\r
+            <DatumSize>1</DatumSize>\r
+            <VariableGuid>0</VariableGuid>\r
+            <VariableName>L""</VariableName>\r
+            <DataOffset>0</DataOffset>\r
+            <DefaultValue>0x00</DefaultValue>\r
+          </PcdBuildData>\r
+        </PcdBuildDeclarations>\r
+      </ModuleSA>        \r
       <ModuleSA Arch="EBC" FvBinding="NULL" ModuleName="UefiDriverEntryPoint" >\r
       </ModuleSA>        \r
 \r
index e514d44..684662f 100644 (file)
       <ModuleSA Arch="IA32" FvBinding="NULL" ModuleName="PeiIoLibCpuIo" />\r
       <ModuleSA Arch="IA32" FvBinding="NULL" ModuleName="DxeReportStatusCodeLib" />\r
       <ModuleSA Arch="IA32" FvBinding="NULL" ModuleName="BaseReportStatusCodeLibNull" />\r
+      <ModuleSA Arch="IA32" FvBinding="NULL" ModuleName="BasePostCodeLib80" />\r
+      <ModuleSA Arch="IA32" FvBinding="NULL" ModuleName="BasePostCodeLibDebug" />\r
+      <ModuleSA Arch="IA32" FvBinding="NULL" ModuleName="BasePostCodeLibReportStatusCode" />\r
+\r
       <ModuleSA Arch="IA32" FvBinding="NULL" ModuleName="UefiDriverEntryPoint" />\r
       <ModuleSA Arch="IA32" FvBinding="NULL" ModuleName="DxeSmmDriverEntryPoint" />\r
       <ModuleSA Arch="IA32" FvBinding="NULL" ModuleName="UefiBootServicesTableLib" />\r
           </PcdBuildData>\r
         </PcdBuildDeclarations>\r
       </ModuleSA>        \r
+      <ModuleSA Arch="IA32" FvBinding="NULL" ModuleName="BasePostCodeLib80" >\r
+        <PcdBuildDeclarations>\r
+          <PcdBuildData ItemType="FIXED_AT_BUILD">\r
+            <C_Name>PcdPostCodePropertyMask</C_Name>\r
+            <Token>0x0000000b</Token>\r
+            <DatumType>UINT8</DatumType>\r
+            <HiiEnable>false</HiiEnable>\r
+            <VpdEnable>false</VpdEnable>\r
+            <AlternateNameSpaceEnable>false</AlternateNameSpaceEnable>\r
+            <SkuEnable>false</SkuEnable>\r
+            <SkuDataArrayEnable>false</SkuDataArrayEnable>\r
+            <MaxSku>0x00</MaxSku>\r
+            <SkuId>0x00</SkuId>\r
+            <DatumSize>1</DatumSize>\r
+            <VariableGuid>0</VariableGuid>\r
+            <VariableName>L""</VariableName>\r
+            <DataOffset>0</DataOffset>\r
+            <DefaultValue>0x00</DefaultValue>\r
+          </PcdBuildData>\r
+        </PcdBuildDeclarations>\r
+      </ModuleSA>\r
+      <ModuleSA Arch="IA32" FvBinding="NULL" ModuleName="BasePostCodeLibReportStatusCode" >\r
+        <PcdBuildDeclarations>\r
+          <PcdBuildData ItemType="FIXED_AT_BUILD">\r
+            <C_Name>PcdPostCodePropertyMask</C_Name>\r
+            <Token>0x0000000b</Token>\r
+            <DatumType>UINT8</DatumType>\r
+            <HiiEnable>false</HiiEnable>\r
+            <VpdEnable>false</VpdEnable>\r
+            <AlternateNameSpaceEnable>false</AlternateNameSpaceEnable>\r
+            <SkuEnable>false</SkuEnable>\r
+            <SkuDataArrayEnable>false</SkuDataArrayEnable>\r
+            <MaxSku>0x00</MaxSku>\r
+            <SkuId>0x00</SkuId>\r
+            <DatumSize>1</DatumSize>\r
+            <VariableGuid>0</VariableGuid>\r
+            <VariableName>L""</VariableName>\r
+            <DataOffset>0</DataOffset>\r
+            <DefaultValue>0x00</DefaultValue>\r
+          </PcdBuildData>\r
+        </PcdBuildDeclarations>\r
+      </ModuleSA>        \r
+      <ModuleSA Arch="IA32" FvBinding="NULL" ModuleName="BasePostCodeLibDebug" >\r
+        <PcdBuildDeclarations>\r
+          <PcdBuildData ItemType="FIXED_AT_BUILD">\r
+            <C_Name>PcdPostCodePropertyMask</C_Name>\r
+            <Token>0x0000000b</Token>\r
+            <DatumType>UINT8</DatumType>\r
+            <HiiEnable>false</HiiEnable>\r
+            <VpdEnable>false</VpdEnable>\r
+            <AlternateNameSpaceEnable>false</AlternateNameSpaceEnable>\r
+            <SkuEnable>false</SkuEnable>\r
+            <SkuDataArrayEnable>false</SkuDataArrayEnable>\r
+            <MaxSku>0x00</MaxSku>\r
+            <SkuId>0x00</SkuId>\r
+            <DatumSize>1</DatumSize>\r
+            <VariableGuid>0</VariableGuid>\r
+            <VariableName>L""</VariableName>\r
+            <DataOffset>0</DataOffset>\r
+            <DefaultValue>0x00</DefaultValue>\r
+          </PcdBuildData>\r
+        </PcdBuildDeclarations>\r
+      </ModuleSA>        \r
       <ModuleSA Arch="IA32" FvBinding="NULL" ModuleName="UefiDriverEntryPoint" >\r
       </ModuleSA>        \r
 \r
index 9fbb8a6..6b43238 100644 (file)
       <LibraryClass>ReportStatusCodeLib</LibraryClass>\r
       <IncludeHeader>Include/Library/ReportStatusCodeLib.h</IncludeHeader>\r
     </LibraryClassDeclaration>\r
+    <LibraryClassDeclaration>\r
+      <LibraryClass>PostCodeLib</LibraryClass>\r
+      <IncludeHeader>Include/Library/PostCodeLib.h</IncludeHeader>\r
+    </LibraryClassDeclaration>\r
     <LibraryClassDeclaration>\r
       <LibraryClass>ResourcePublicationLib</LibraryClass>\r
       <IncludeHeader>Include/Library/ResourcePublicationLib.h</IncludeHeader>\r
     <MsaFile>\r
       <Filename>Library/BaseReportStatusCodeLibNull/BaseReportStatusCodeLibNull.msa</Filename>\r
     </MsaFile>\r
+    <MsaFile>\r
+      <Filename>Library/BasePostCodeLib80/BasePostCodeLib80.msa</Filename>\r
+    </MsaFile>\r
+    <MsaFile>\r
+      <Filename>Library/BasePostCodeLibDebug/BasePostCodeLibDebug.msa</Filename>\r
+    </MsaFile>\r
+    <MsaFile>\r
+      <Filename>Library/BasePostCodeLibReportStatusCode/BasePostCodeLibReportStatusCode.msa</Filename>\r
+    </MsaFile>\r
     <MsaFile>\r
       <Filename>Library/BaseSmbusLib/BaseSmbusLib.msa</Filename>\r
     </MsaFile>\r
       <DatumType>UINT8</DatumType>\r
       <DefaultValue>0x0</DefaultValue>\r
     </PcdEntry>\r
+    <PcdEntry ItemType="FIXED_AT_BUILD">\r
+      <C_Name>PcdPostCodePropertyMask</C_Name>\r
+      <Token>0x0000000b</Token>\r
+      <DatumType>UINT8</DatumType>\r
+      <DefaultValue>0</DefaultValue>\r
+    </PcdEntry>\r
   </PcdDefinitions>\r
 </PackageSurfaceArea>\r