diff --git a/MdePkg/Include/Library/HobLib.h b/MdePkg/Include/Library/HobLib.h
index 9789c693e7..0d9dc83ad9 100644
--- a/MdePkg/Include/Library/HobLib.h
+++ b/MdePkg/Include/Library/HobLib.h
@@ -181,7 +181,7 @@ BuildResourceDescriptorHob (
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
If Guid is NULL, then ASSERT().
If there is no additional space for HOB creation, then ASSERT().
- If DataLength > (0x10000 - sizeof (EFI_HOB_TYPE_GUID)), then ASSERT().
+ If DataLength >= (0x10000 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT().
@param Guid The GUID to tag the customized HOB.
@param DataLength The size of the data payload for the GUID HOB.
@@ -208,7 +208,7 @@ BuildGuidHob (
If Guid is NULL, then ASSERT().
If Data is NULL and DataLength > 0, then ASSERT().
If there is no additional space for HOB creation, then ASSERT().
- If DataLength > (0x10000 - sizeof (EFI_HOB_TYPE_GUID)), then ASSERT().
+ If DataLength >= (0x10000 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT().
@param Guid The GUID to tag the customized HOB.
@param Data The data to be copied into the data field of the GUID HOB.
diff --git a/MdePkg/Include/Library/PostCodeLib.h b/MdePkg/Include/Library/PostCodeLib.h
new file mode 100644
index 0000000000..78ce4b205a
--- /dev/null
+++ b/MdePkg/Include/Library/PostCodeLib.h
@@ -0,0 +1,150 @@
+/** @file
+ Report Status Code Library public .h file
+
+ Copyright (c) 2006, Intel Corporation
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which accompanies this distribution. The full text of the license may be found at
+ http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+#ifndef __POST_CODE_LIB_H__
+#define __POST_CODE_LIB_H__
+
+#define POST_CODE_PROPERTY_POST_CODE_ENABLED 0x00000008
+#define POST_CODE_PROPERTY_POST_CODE_DESCRIPTION_ENABLED 0x00000010
+
+/**
+ Sends an 32-bit value to a POST card.
+
+ Sends the 32-bit value specified by Value to a POST card, and returns Value.
+ Some implementations of this library function may perform I/O operations
+ directly to a POST card device. Other implementations may send Value to
+ ReportStatusCode(), and the status code reporting mechanism will eventually
+ display the 32-bit value on the status reporting device.
+
+ PostCode() must actively prevent recursion. If PostCode() is called while
+ processing another any other Report Status Code Library function, then
+ PostCode() must return Value immediately.
+
+ @param Value The 32-bit value to write to the POST card.
+
+ @return Value
+
+**/
+UINT32
+EFIAPI
+PostCode (
+ IN UINT32 Value
+ );
+
+
+/**
+ Sends an 32-bit value to a POST and associated ASCII string.
+
+ Sends the 32-bit value specified by Value to a POST card, and returns Value.
+ If Description is not NULL, then the ASCII string specified by Description is
+ also passed to the handler that displays the POST card value. Some
+ implementations of this library function may perform I/O operations directly
+ to a POST card device. Other implementations may send Value to ReportStatusCode(),
+ and the status code reporting mechanism will eventually display the 32-bit
+ value on the status reporting device.
+
+ PostCodeWithDescription()must actively prevent recursion. If
+ PostCodeWithDescription() is called while processing another any other Report
+ Status Code Library function, then PostCodeWithDescription() must return Value
+ immediately.
+
+ @param Value The 32-bit value to write to the POST card.
+ @param Description Pointer to an ASCII string that is a description of the
+ POST code value. This is an optional parameter that may
+ be NULL.
+
+ @return Value
+
+**/
+UINT32
+EFIAPI
+PostCodeWithDescription (
+ IN UINT32 Value,
+ IN CONST CHAR8 *Description OPTIONAL
+ );
+
+
+/**
+ Returns TRUE if POST Codes are enabled.
+
+ This function returns TRUE if the POST_CODE_PROPERTY_POST_CODE_ENABLED
+ bit of PcdPostCodePropertyMask is set. Otherwise FALSE is returned.
+
+ @retval TRUE The POST_CODE_PROPERTY_POST_CODE_ENABLED bit of
+ PcdPostCodeProperyMask is set.
+ @retval FALSE The POST_CODE_PROPERTY_POST_CODE_ENABLED bit of
+ PcdPostCodeProperyMask is clear.
+
+**/
+BOOLEAN
+EFIAPI
+PostCodeEnabled (
+ VOID
+ );
+
+
+/**
+ Returns TRUE if POST code descriptions are enabled.
+
+ This function returns TRUE if the
+ POST_CODE_PROPERTY_POST_CODE_ENABLED bit of
+ PcdPostCodePropertyMask is set. Otherwise FALSE is returned.
+
+ @retval TRUE The POST_CODE_PROPERTY_POST_CODE_ENABLED
+ bit of PcdPostCodeProperyMask is set.
+ @retval FALSE The POST_CODE_PROPERTY_POST_CODE_ENABLED
+ bit of PcdPostCodeProperyMask is clear.
+
+**/
+BOOLEAN
+EFIAPI
+PostCodeDescriptionEnabled (
+ VOID
+ );
+
+
+/**
+ Sends an 32-bit value to a POST card.
+
+ If POST codes are enabled in PcdPostCodeProperyMask, then call PostCode()
+ passing in Value. Value is returned.
+
+ @param Value The 32-bit value to write to the POST card.
+
+ @return Value
+
+**/
+#define POST_CODE(Value) ReportPostCodeEnabled() ? PostCode(Value) : Value
+
+/**
+ Sends an 32-bit value to a POST and associated ASCII string.
+
+ If POST codes and POST code descriptions are enabled in
+ PcdPostCodeProperyMask, then call PostCodeWithDescription() passing in
+ Value and Description. If only POST codes are enabled, then call PostCode()
+ passing in Value. Value is returned.
+
+ @param Value The 32-bit value to write to the POST card.
+ @param Description Pointer to an ASCII string that is a description of the
+ POST code value.
+
+**/
+#define POST_CODE_WITH_DESCRIPTION(Value,Description) \
+ ReportPostCodeEnabled() ? \
+ (ReportPostCodeDescriptionEnabled() ? \
+ PostCodeWithDescription(Value,Description) : \
+ PostCode(Value)) : \
+ Value
+
+#endif
diff --git a/MdePkg/Library/BaseMemoryLib/SetMem16Wrapper.c b/MdePkg/Library/BaseMemoryLib/SetMem16Wrapper.c
index 3acbdac436..dea31608fe 100644
--- a/MdePkg/Library/BaseMemoryLib/SetMem16Wrapper.c
+++ b/MdePkg/Library/BaseMemoryLib/SetMem16Wrapper.c
@@ -52,10 +52,10 @@ SetMem16 (
IN UINT16 Value
)
{
- ASSERT (Buffer != NULL);
+ ASSERT (!(Buffer == NULL && Length > 0));
ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);
- ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);
- ASSERT ((Length & (sizeof (Value) - 1)) != 0);
+ ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);
+ ASSERT ((Length & (sizeof (Value) - 1)) == 0);
if ((Length /= sizeof (Value)) == 0) {
return Buffer;
diff --git a/MdePkg/Library/BaseMemoryLib/SetMem32Wrapper.c b/MdePkg/Library/BaseMemoryLib/SetMem32Wrapper.c
index 620b69aef4..1ae7acb013 100644
--- a/MdePkg/Library/BaseMemoryLib/SetMem32Wrapper.c
+++ b/MdePkg/Library/BaseMemoryLib/SetMem32Wrapper.c
@@ -52,10 +52,10 @@ SetMem32 (
IN UINT32 Value
)
{
- ASSERT (Buffer != NULL);
+ ASSERT (!(Buffer == NULL && Length > 0));
ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);
- ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);
- ASSERT ((Length & (sizeof (Value) - 1)) != 0);
+ ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);
+ ASSERT ((Length & (sizeof (Value) - 1)) == 0);
if ((Length /= sizeof (Value)) == 0) {
return Buffer;
diff --git a/MdePkg/Library/BaseMemoryLib/SetMem64Wrapper.c b/MdePkg/Library/BaseMemoryLib/SetMem64Wrapper.c
index 73c28af4a1..0128a2d6f1 100644
--- a/MdePkg/Library/BaseMemoryLib/SetMem64Wrapper.c
+++ b/MdePkg/Library/BaseMemoryLib/SetMem64Wrapper.c
@@ -52,10 +52,10 @@ SetMem64 (
IN UINT64 Value
)
{
- ASSERT (Buffer != NULL);
+ ASSERT (!(Buffer == NULL && Length > 0));
ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);
- ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);
- ASSERT ((Length & (sizeof (Value) - 1)) != 0);
+ ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);
+ ASSERT ((Length & (sizeof (Value) - 1)) == 0);
if ((Length /= sizeof (Value)) == 0) {
return Buffer;
diff --git a/MdePkg/Library/BaseMemoryLibMmx/SetMem16Wrapper.c b/MdePkg/Library/BaseMemoryLibMmx/SetMem16Wrapper.c
index 3acbdac436..dea31608fe 100644
--- a/MdePkg/Library/BaseMemoryLibMmx/SetMem16Wrapper.c
+++ b/MdePkg/Library/BaseMemoryLibMmx/SetMem16Wrapper.c
@@ -52,10 +52,10 @@ SetMem16 (
IN UINT16 Value
)
{
- ASSERT (Buffer != NULL);
+ ASSERT (!(Buffer == NULL && Length > 0));
ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);
- ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);
- ASSERT ((Length & (sizeof (Value) - 1)) != 0);
+ ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);
+ ASSERT ((Length & (sizeof (Value) - 1)) == 0);
if ((Length /= sizeof (Value)) == 0) {
return Buffer;
diff --git a/MdePkg/Library/BaseMemoryLibMmx/SetMem32Wrapper.c b/MdePkg/Library/BaseMemoryLibMmx/SetMem32Wrapper.c
index 620b69aef4..1ae7acb013 100644
--- a/MdePkg/Library/BaseMemoryLibMmx/SetMem32Wrapper.c
+++ b/MdePkg/Library/BaseMemoryLibMmx/SetMem32Wrapper.c
@@ -52,10 +52,10 @@ SetMem32 (
IN UINT32 Value
)
{
- ASSERT (Buffer != NULL);
+ ASSERT (!(Buffer == NULL && Length > 0));
ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);
- ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);
- ASSERT ((Length & (sizeof (Value) - 1)) != 0);
+ ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);
+ ASSERT ((Length & (sizeof (Value) - 1)) == 0);
if ((Length /= sizeof (Value)) == 0) {
return Buffer;
diff --git a/MdePkg/Library/BaseMemoryLibMmx/SetMem64Wrapper.c b/MdePkg/Library/BaseMemoryLibMmx/SetMem64Wrapper.c
index 73c28af4a1..0128a2d6f1 100644
--- a/MdePkg/Library/BaseMemoryLibMmx/SetMem64Wrapper.c
+++ b/MdePkg/Library/BaseMemoryLibMmx/SetMem64Wrapper.c
@@ -52,10 +52,10 @@ SetMem64 (
IN UINT64 Value
)
{
- ASSERT (Buffer != NULL);
+ ASSERT (!(Buffer == NULL && Length > 0));
ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);
- ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);
- ASSERT ((Length & (sizeof (Value) - 1)) != 0);
+ ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);
+ ASSERT ((Length & (sizeof (Value) - 1)) == 0);
if ((Length /= sizeof (Value)) == 0) {
return Buffer;
diff --git a/MdePkg/Library/BaseMemoryLibRepStr/SetMem16Wrapper.c b/MdePkg/Library/BaseMemoryLibRepStr/SetMem16Wrapper.c
index 3acbdac436..dea31608fe 100644
--- a/MdePkg/Library/BaseMemoryLibRepStr/SetMem16Wrapper.c
+++ b/MdePkg/Library/BaseMemoryLibRepStr/SetMem16Wrapper.c
@@ -52,10 +52,10 @@ SetMem16 (
IN UINT16 Value
)
{
- ASSERT (Buffer != NULL);
+ ASSERT (!(Buffer == NULL && Length > 0));
ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);
- ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);
- ASSERT ((Length & (sizeof (Value) - 1)) != 0);
+ ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);
+ ASSERT ((Length & (sizeof (Value) - 1)) == 0);
if ((Length /= sizeof (Value)) == 0) {
return Buffer;
diff --git a/MdePkg/Library/BaseMemoryLibRepStr/SetMem32Wrapper.c b/MdePkg/Library/BaseMemoryLibRepStr/SetMem32Wrapper.c
index 620b69aef4..1ae7acb013 100644
--- a/MdePkg/Library/BaseMemoryLibRepStr/SetMem32Wrapper.c
+++ b/MdePkg/Library/BaseMemoryLibRepStr/SetMem32Wrapper.c
@@ -52,10 +52,10 @@ SetMem32 (
IN UINT32 Value
)
{
- ASSERT (Buffer != NULL);
+ ASSERT (!(Buffer == NULL && Length > 0));
ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);
- ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);
- ASSERT ((Length & (sizeof (Value) - 1)) != 0);
+ ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);
+ ASSERT ((Length & (sizeof (Value) - 1)) == 0);
if ((Length /= sizeof (Value)) == 0) {
return Buffer;
diff --git a/MdePkg/Library/BaseMemoryLibRepStr/SetMem64Wrapper.c b/MdePkg/Library/BaseMemoryLibRepStr/SetMem64Wrapper.c
index 73c28af4a1..0128a2d6f1 100644
--- a/MdePkg/Library/BaseMemoryLibRepStr/SetMem64Wrapper.c
+++ b/MdePkg/Library/BaseMemoryLibRepStr/SetMem64Wrapper.c
@@ -52,10 +52,10 @@ SetMem64 (
IN UINT64 Value
)
{
- ASSERT (Buffer != NULL);
+ ASSERT (!(Buffer == NULL && Length > 0));
ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);
- ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);
- ASSERT ((Length & (sizeof (Value) - 1)) != 0);
+ ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);
+ ASSERT ((Length & (sizeof (Value) - 1)) == 0);
if ((Length /= sizeof (Value)) == 0) {
return Buffer;
diff --git a/MdePkg/Library/BaseMemoryLibSse2/SetMem16Wrapper.c b/MdePkg/Library/BaseMemoryLibSse2/SetMem16Wrapper.c
index 3acbdac436..dea31608fe 100644
--- a/MdePkg/Library/BaseMemoryLibSse2/SetMem16Wrapper.c
+++ b/MdePkg/Library/BaseMemoryLibSse2/SetMem16Wrapper.c
@@ -52,10 +52,10 @@ SetMem16 (
IN UINT16 Value
)
{
- ASSERT (Buffer != NULL);
+ ASSERT (!(Buffer == NULL && Length > 0));
ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);
- ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);
- ASSERT ((Length & (sizeof (Value) - 1)) != 0);
+ ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);
+ ASSERT ((Length & (sizeof (Value) - 1)) == 0);
if ((Length /= sizeof (Value)) == 0) {
return Buffer;
diff --git a/MdePkg/Library/BaseMemoryLibSse2/SetMem32Wrapper.c b/MdePkg/Library/BaseMemoryLibSse2/SetMem32Wrapper.c
index 620b69aef4..1ae7acb013 100644
--- a/MdePkg/Library/BaseMemoryLibSse2/SetMem32Wrapper.c
+++ b/MdePkg/Library/BaseMemoryLibSse2/SetMem32Wrapper.c
@@ -52,10 +52,10 @@ SetMem32 (
IN UINT32 Value
)
{
- ASSERT (Buffer != NULL);
+ ASSERT (!(Buffer == NULL && Length > 0));
ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);
- ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);
- ASSERT ((Length & (sizeof (Value) - 1)) != 0);
+ ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);
+ ASSERT ((Length & (sizeof (Value) - 1)) == 0);
if ((Length /= sizeof (Value)) == 0) {
return Buffer;
diff --git a/MdePkg/Library/BaseMemoryLibSse2/SetMem64Wrapper.c b/MdePkg/Library/BaseMemoryLibSse2/SetMem64Wrapper.c
index 73c28af4a1..0128a2d6f1 100644
--- a/MdePkg/Library/BaseMemoryLibSse2/SetMem64Wrapper.c
+++ b/MdePkg/Library/BaseMemoryLibSse2/SetMem64Wrapper.c
@@ -52,10 +52,10 @@ SetMem64 (
IN UINT64 Value
)
{
- ASSERT (Buffer != NULL);
+ ASSERT (!(Buffer == NULL && Length > 0));
ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);
- ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);
- ASSERT ((Length & (sizeof (Value) - 1)) != 0);
+ ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);
+ ASSERT ((Length & (sizeof (Value) - 1)) == 0);
if ((Length /= sizeof (Value)) == 0) {
return Buffer;
diff --git a/MdePkg/Library/BasePostCodeLib80/BasePostCodeLib80.mbd b/MdePkg/Library/BasePostCodeLib80/BasePostCodeLib80.mbd
new file mode 100644
index 0000000000..49d048ac80
--- /dev/null
+++ b/MdePkg/Library/BasePostCodeLib80/BasePostCodeLib80.mbd
@@ -0,0 +1,30 @@
+
+
+
+
+ BasePostCodeLib80
+ 55c61087-7367-4546-bc32-4937c5e6aff3
+ 0
+ FIX ME!
+ Copyright (c) 2004-2006, Intel Corporation
+
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which accompanies this distribution. The full text of the license may be found at
+ http://opensource.org/licenses/bsd-license.php
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+ 2006-03-09 23:16
+ 2006-03-19 15:17
+
+
diff --git a/MdePkg/Library/BasePostCodeLib80/BasePostCodeLib80.msa b/MdePkg/Library/BasePostCodeLib80/BasePostCodeLib80.msa
new file mode 100644
index 0000000000..21b055edb3
--- /dev/null
+++ b/MdePkg/Library/BasePostCodeLib80/BasePostCodeLib80.msa
@@ -0,0 +1,52 @@
+
+
+
+
+ BasePostCodeLib80
+ BASE
+ LIBRARY
+ 55c61087-7367-4546-bc32-4937c5e6aff3
+ 0
+ Component description file for the entry point to a EFIDXE Drivers
+ FIX ME!
+ Copyright (c) 2004-2006, Intel Corporation
+
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which accompanies this distribution. The full text of the license may be found at
+ http://opensource.org/licenses/bsd-license.php
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+ 2006-03-09 23:16
+ 2006-03-19 15:17
+ 0
+
+
+ PostCodeLib
+ PcdLib
+ IoLib
+
+
+ PostCode.c
+
+
+ MdePkg
+
+
+
+ PcdPostCodePropertyMask
+ 0x0000000b
+ UINT8
+
+
+
diff --git a/MdePkg/Library/BasePostCodeLib80/PostCode.c b/MdePkg/Library/BasePostCodeLib80/PostCode.c
new file mode 100644
index 0000000000..93c24d5eb6
--- /dev/null
+++ b/MdePkg/Library/BasePostCodeLib80/PostCode.c
@@ -0,0 +1,123 @@
+/** @file
+ Report Status Code Library Post Code functions for DXE Phase.
+
+ Copyright (c) 2006, Intel Corporation
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which accompanies this distribution. The full text of the license may be found at
+ http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+
+/**
+ Sends an 32-bit value to a POST card.
+
+ Sends the 32-bit value specified by Value to a POST card, and returns Value.
+ Some implementations of this library function may perform I/O operations
+ directly to a POST card device. Other implementations may send Value to
+ ReportStatusCode(), and the status code reporting mechanism will eventually
+ display the 32-bit value on the status reporting device.
+
+ PostCode() must actively prevent recursion. If PostCode() is called while
+ processing another any other Report Status Code Library function, then
+ PostCode() must return Value immediately.
+
+ @param Value The 32-bit value to write to the POST card.
+
+ @return Value
+
+**/
+UINT32
+EFIAPI
+PostCode (
+ IN UINT32 Value
+ )
+{
+ IoWrite8 (0x80, (UINT8)(Value));
+ return Value;
+}
+
+
+/**
+ Sends an 32-bit value to a POST and associated ASCII string.
+
+ Sends the 32-bit value specified by Value to a POST card, and returns Value.
+ If Description is not NULL, then the ASCII string specified by Description is
+ also passed to the handler that displays the POST card value. Some
+ implementations of this library function may perform I/O operations directly
+ to a POST card device. Other implementations may send Value to ReportStatusCode(),
+ and the status code reporting mechanism will eventually display the 32-bit
+ value on the status reporting device.
+
+ PostCodeWithDescription()must actively prevent recursion. If
+ PostCodeWithDescription() is called while processing another any other Report
+ Status Code Library function, then PostCodeWithDescription() must return Value
+ immediately.
+
+ @param Value The 32-bit value to write to the POST card.
+ @param Description Pointer to an ASCII string that is a description of the
+ POST code value. This is an optional parameter that may
+ be NULL.
+
+ @return Value
+
+**/
+UINT32
+EFIAPI
+PostCodeWithDescription (
+ IN UINT32 Value,
+ IN CONST CHAR8 *Description OPTIONAL
+ )
+{
+ IoWrite8 (0x80, (UINT8)(Value));
+ return Value;
+}
+
+
+/**
+ Returns TRUE if POST Codes are enabled.
+
+ This function returns TRUE if the POST_CODE_PROPERTY_POST_CODE_ENABLED
+ bit of PcdPostCodePropertyMask is set. Otherwise FALSE is returned.
+
+ @retval TRUE The POST_CODE_PROPERTY_POST_CODE_ENABLED bit of
+ PcdPostCodeProperyMask is set.
+ @retval FALSE The POST_CODE_PROPERTY_POST_CODE_ENABLED bit of
+ PcdPostCodeProperyMask is clear.
+
+**/
+BOOLEAN
+EFIAPI
+PostCodeEnabled (
+ VOID
+ )
+{
+ return ((PcdGet8(PcdPostCodePropertyMask) & POST_CODE_PROPERTY_POST_CODE_ENABLED) != 0);
+}
+
+
+/**
+ Returns TRUE if POST code descriptions are enabled.
+
+ This function returns TRUE if the
+ POST_CODE_PROPERTY_POST_CODE_ENABLED bit of
+ PcdPostCodePropertyMask is set. Otherwise FALSE is returned.
+
+ @retval TRUE The POST_CODE_PROPERTY_POST_CODE_ENABLED
+ bit of PcdPostCodeProperyMask is set.
+ @retval FALSE The POST_CODE_PROPERTY_POST_CODE_ENABLED
+ bit of PcdPostCodeProperyMask is clear.
+
+**/
+BOOLEAN
+EFIAPI
+PostCodeDescriptionEnabled (
+ VOID
+ )
+{
+ return ((PcdGet8(PcdPostCodePropertyMask) & POST_CODE_PROPERTY_POST_CODE_ENABLED) != 0);
+}
diff --git a/MdePkg/Library/BasePostCodeLib80/build.xml b/MdePkg/Library/BasePostCodeLib80/build.xml
new file mode 100644
index 0000000000..c854f76606
--- /dev/null
+++ b/MdePkg/Library/BasePostCodeLib80/build.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MdePkg/Library/BasePostCodeLibDebug/BasePostCodeLibDebug.mbd b/MdePkg/Library/BasePostCodeLibDebug/BasePostCodeLibDebug.mbd
new file mode 100644
index 0000000000..7fb7cc3df9
--- /dev/null
+++ b/MdePkg/Library/BasePostCodeLibDebug/BasePostCodeLibDebug.mbd
@@ -0,0 +1,30 @@
+
+
+
+
+ BasePostCodeLibDebug
+ 55c61087-7367-4546-bc32-4937c5e6aff3
+ 0
+ FIX ME!
+ Copyright (c) 2004-2006, Intel Corporation
+
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which accompanies this distribution. The full text of the license may be found at
+ http://opensource.org/licenses/bsd-license.php
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+ 2006-03-09 23:16
+ 2006-03-19 15:17
+
+
diff --git a/MdePkg/Library/BasePostCodeLibDebug/BasePostCodeLibDebug.msa b/MdePkg/Library/BasePostCodeLibDebug/BasePostCodeLibDebug.msa
new file mode 100644
index 0000000000..0fdf59ac71
--- /dev/null
+++ b/MdePkg/Library/BasePostCodeLibDebug/BasePostCodeLibDebug.msa
@@ -0,0 +1,52 @@
+
+
+
+
+ BasePostCodeLibDebug
+ BASE
+ LIBRARY
+ 55c61087-7367-4546-bc32-4937c5e6aff3
+ 0
+ Component description file for the entry point to a EFIDXE Drivers
+ FIX ME!
+ Copyright (c) 2004-2006, Intel Corporation
+
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which accompanies this distribution. The full text of the license may be found at
+ http://opensource.org/licenses/bsd-license.php
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+ 2006-03-09 23:16
+ 2006-03-19 15:17
+ 0
+
+
+ PostCodeLib
+ DebugLib
+ PcdLib
+
+
+ PostCode.c
+
+
+ MdePkg
+
+
+
+ PcdPostCodePropertyMask
+ 0x0000000b
+ UINT8
+
+
+
diff --git a/MdePkg/Library/BasePostCodeLibDebug/PostCode.c b/MdePkg/Library/BasePostCodeLibDebug/PostCode.c
new file mode 100644
index 0000000000..37f060228b
--- /dev/null
+++ b/MdePkg/Library/BasePostCodeLibDebug/PostCode.c
@@ -0,0 +1,122 @@
+/** @file
+ Report Status Code Library Post Code functions for DXE Phase.
+
+ Copyright (c) 2006, Intel Corporation
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which accompanies this distribution. The full text of the license may be found at
+ http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+
+/**
+ Sends an 32-bit value to a POST card.
+
+ Sends the 32-bit value specified by Value to a POST card, and returns Value.
+ Some implementations of this library function may perform I/O operations
+ directly to a POST card device. Other implementations may send Value to
+ ReportStatusCode(), and the status code reporting mechanism will eventually
+ display the 32-bit value on the status reporting device.
+
+ PostCode() must actively prevent recursion. If PostCode() is called while
+ processing another any other Report Status Code Library function, then
+ PostCode() must return Value immediately.
+
+ @param Value The 32-bit value to write to the POST card.
+
+ @return Value
+
+**/
+UINT32
+EFIAPI
+PostCode (
+ IN UINT32 Value
+ )
+{
+ DEBUG((EFI_D_INFO, "POST %08x\n", Value));
+ return Value;
+}
+
+
+/**
+ Sends an 32-bit value to a POST and associated ASCII string.
+
+ Sends the 32-bit value specified by Value to a POST card, and returns Value.
+ If Description is not NULL, then the ASCII string specified by Description is
+ also passed to the handler that displays the POST card value. Some
+ implementations of this library function may perform I/O operations directly
+ to a POST card device. Other implementations may send Value to ReportStatusCode(),
+ and the status code reporting mechanism will eventually display the 32-bit
+ value on the status reporting device.
+
+ PostCodeWithDescription()must actively prevent recursion. If
+ PostCodeWithDescription() is called while processing another any other Report
+ Status Code Library function, then PostCodeWithDescription() must return Value
+ immediately.
+
+ @param Value The 32-bit value to write to the POST card.
+ @param Description Pointer to an ASCII string that is a description of the
+ POST code value. This is an optional parameter that may
+ be NULL.
+
+ @return Value
+
+**/
+UINT32
+EFIAPI
+PostCodeWithDescription (
+ IN UINT32 Value,
+ IN CONST CHAR8 *Description OPTIONAL
+ )
+{
+ DEBUG((EFI_D_INFO, "POST %08x - %s\n", Value, Description));
+ return Value;
+}
+
+
+/**
+ Returns TRUE if POST Codes are enabled.
+
+ This function returns TRUE if the POST_CODE_PROPERTY_POST_CODE_ENABLED
+ bit of PcdPostCodePropertyMask is set. Otherwise FALSE is returned.
+
+ @retval TRUE The POST_CODE_PROPERTY_POST_CODE_ENABLED bit of
+ PcdPostCodeProperyMask is set.
+ @retval FALSE The POST_CODE_PROPERTY_POST_CODE_ENABLED bit of
+ PcdPostCodeProperyMask is clear.
+
+**/
+BOOLEAN
+EFIAPI
+PostCodeEnabled (
+ VOID
+ )
+{
+ return ((PcdGet8(PcdPostCodePropertyMask) & POST_CODE_PROPERTY_POST_CODE_ENABLED) != 0);
+}
+
+
+/**
+ Returns TRUE if POST code descriptions are enabled.
+
+ This function returns TRUE if the POST_CODE_PROPERTY_POST_CODE_ENABLED
+ bit of PcdPostCodePropertyMask is set. Otherwise FALSE is returned.
+
+ @retval TRUE The POST_CODE_PROPERTY_POST_CODE_ENABLED bit of
+ PcdPostCodeProperyMask is set.
+ @retval FALSE The POST_CODE_PROPERTY_POST_CODE_ENABLED bit of
+ PcdPostCodeProperyMask is clear.
+
+**/
+BOOLEAN
+EFIAPI
+PostCodeDescriptionEnabled (
+ VOID
+ )
+{
+ return ((PcdGet8(PcdPostCodePropertyMask) & POST_CODE_PROPERTY_POST_CODE_ENABLED) != 0);
+}
diff --git a/MdePkg/Library/BasePostCodeLibDebug/build.xml b/MdePkg/Library/BasePostCodeLibDebug/build.xml
new file mode 100644
index 0000000000..b07bda2596
--- /dev/null
+++ b/MdePkg/Library/BasePostCodeLibDebug/build.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MdePkg/Library/BasePostCodeLibReportStatusCode/BasePostCodeLibReportStatusCode.mbd b/MdePkg/Library/BasePostCodeLibReportStatusCode/BasePostCodeLibReportStatusCode.mbd
new file mode 100644
index 0000000000..3774aff6a5
--- /dev/null
+++ b/MdePkg/Library/BasePostCodeLibReportStatusCode/BasePostCodeLibReportStatusCode.mbd
@@ -0,0 +1,30 @@
+
+
+
+
+ BasePostCodeLibReportStatusCode
+ 55c61087-7367-4546-bc32-4937c5e6aff3
+ 0
+ FIX ME!
+ Copyright (c) 2004-2006, Intel Corporation
+
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which accompanies this distribution. The full text of the license may be found at
+ http://opensource.org/licenses/bsd-license.php
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+ 2006-03-09 23:16
+ 2006-03-19 15:17
+
+
diff --git a/MdePkg/Library/BasePostCodeLibReportStatusCode/BasePostCodeLibReportStatusCode.msa b/MdePkg/Library/BasePostCodeLibReportStatusCode/BasePostCodeLibReportStatusCode.msa
new file mode 100644
index 0000000000..28f84d116f
--- /dev/null
+++ b/MdePkg/Library/BasePostCodeLibReportStatusCode/BasePostCodeLibReportStatusCode.msa
@@ -0,0 +1,51 @@
+
+
+
+
+ BasePostCodeLibReportStatusCode
+ BASE
+ LIBRARY
+ 55c61087-7367-4546-bc32-4937c5e6aff3
+ 0
+ Component description file for the entry point to a EFIDXE Drivers
+ FIX ME!
+ Copyright (c) 2004-2006, Intel Corporation
+
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which accompanies this distribution. The full text of the license may be found at
+ http://opensource.org/licenses/bsd-license.php
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+ 2006-03-09 23:16
+ 2006-03-19 15:17
+ 0
+
+
+ PostCodeLib
+ PcdLib
+
+
+ PostCode.c
+
+
+ MdePkg
+
+
+
+ PcdPostCodePropertyMask
+ 0x0000000b
+ UINT8
+
+
+
diff --git a/MdePkg/Library/BasePostCodeLibReportStatusCode/PostCode.c b/MdePkg/Library/BasePostCodeLibReportStatusCode/PostCode.c
new file mode 100644
index 0000000000..f3d95dc31f
--- /dev/null
+++ b/MdePkg/Library/BasePostCodeLibReportStatusCode/PostCode.c
@@ -0,0 +1,127 @@
+/** @file
+ Report Status Code Library Post Code functions for DXE Phase.
+
+ Copyright (c) 2006, Intel Corporation
+ All rights reserved. This program and the accompanying materials
+ are licensed and made available under the terms and conditions of the BSD License
+ which accompanies this distribution. The full text of the license may be found at
+ http://opensource.org/licenses/bsd-license.php
+
+ THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
+ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
+
+**/
+
+
+/**
+ Sends an 32-bit value to a POST card.
+
+ Sends the 32-bit value specified by Value to a POST card, and returns Value.
+ Some implementations of this library function may perform I/O operations
+ directly to a POST card device. Other implementations may send Value to
+ ReportStatusCode(), and the status code reporting mechanism will eventually
+ display the 32-bit value on the status reporting device.
+
+ PostCode() must actively prevent recursion. If PostCode() is called while
+ processing another any other Report Status Code Library function, then
+ PostCode() must return Value immediately.
+
+ @param Value The 32-bit value to write to the POST card.
+
+ @return Value
+
+**/
+UINT32
+EFIAPI
+PostCode (
+ IN UINT32 Value
+ )
+{
+ //
+ // Todo: Use approapriate ReportStatusCode
+ //
+ return Value;
+}
+
+
+/**
+ Sends an 32-bit value to a POST and associated ASCII string.
+
+ Sends the 32-bit value specified by Value to a POST card, and returns Value.
+ If Description is not NULL, then the ASCII string specified by Description is
+ also passed to the handler that displays the POST card value. Some
+ implementations of this library function may perform I/O operations directly
+ to a POST card device. Other implementations may send Value to ReportStatusCode(),
+ and the status code reporting mechanism will eventually display the 32-bit
+ value on the status reporting device.
+
+ PostCodeWithDescription()must actively prevent recursion. If
+ PostCodeWithDescription() is called while processing another any other Report
+ Status Code Library function, then PostCodeWithDescription() must return Value
+ immediately.
+
+ @param Value The 32-bit value to write to the POST card.
+ @param Description Pointer to an ASCII string that is a description of the
+ POST code value. This is an optional parameter that may
+ be NULL.
+
+ @return Value
+
+**/
+UINT32
+EFIAPI
+PostCodeWithDescription (
+ IN UINT32 Value,
+ IN CONST CHAR8 *Description OPTIONAL
+ )
+{
+ //
+ // Todo: Use approapriate ReportStatusCode
+ //
+ return Value;
+}
+
+
+/**
+ Returns TRUE if POST Codes are enabled.
+
+ This function returns TRUE if the POST_CODE_PROPERTY_POST_CODE_ENABLED
+ bit of PcdPostCodePropertyMask is set. Otherwise FALSE is returned.
+
+ @retval TRUE The POST_CODE_PROPERTY_POST_CODE_ENABLED bit of
+ PcdPostCodeProperyMask is set.
+ @retval FALSE The POST_CODE_PROPERTY_POST_CODE_ENABLED bit of
+ PcdPostCodeProperyMask is clear.
+
+**/
+BOOLEAN
+EFIAPI
+PostCodeEnabled (
+ VOID
+ )
+{
+ return ((PcdGet8(PcdPostCodePropertyMask) & POST_CODE_PROPERTY_POST_CODE_ENABLED) != 0);
+}
+
+
+/**
+ Returns TRUE if POST code descriptions are enabled.
+
+ This function returns TRUE if the
+ POST_CODE_PROPERTY_POST_CODE_ENABLED bit of
+ PcdPostCodePropertyMask is set. Otherwise FALSE is returned.
+
+ @retval TRUE The POST_CODE_PROPERTY_POST_CODE_ENABLED
+ bit of PcdPostCodeProperyMask is set.
+ @retval FALSE The POST_CODE_PROPERTY_POST_CODE_ENABLED
+ bit of PcdPostCodeProperyMask is clear.
+
+**/
+BOOLEAN
+EFIAPI
+PostCodeDescriptionEnabled (
+ VOID
+ )
+{
+ return ((PcdGet8(PcdPostCodePropertyMask) & POST_CODE_PROPERTY_POST_CODE_ENABLED) != 0);
+}
diff --git a/MdePkg/Library/BasePostCodeLibReportStatusCode/build.xml b/MdePkg/Library/BasePostCodeLibReportStatusCode/build.xml
new file mode 100644
index 0000000000..8b89f4aa1f
--- /dev/null
+++ b/MdePkg/Library/BasePostCodeLibReportStatusCode/build.xml
@@ -0,0 +1,47 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/MdePkg/Library/BasePrintLib/BasePrintLib.msa b/MdePkg/Library/BasePrintLib/BasePrintLib.msa
index ef0159a179..552a08609c 100644
--- a/MdePkg/Library/BasePrintLib/BasePrintLib.msa
+++ b/MdePkg/Library/BasePrintLib/BasePrintLib.msa
@@ -34,6 +34,7 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
PrintLib
BaseLib
+ DebugLib
PrintLib.c
diff --git a/MdePkg/Library/BasePrintLib/PrintLib.c b/MdePkg/Library/BasePrintLib/PrintLib.c
index 84dceb6e85..24e0175545 100644
--- a/MdePkg/Library/BasePrintLib/PrintLib.c
+++ b/MdePkg/Library/BasePrintLib/PrintLib.c
@@ -110,6 +110,9 @@ BasePrintLibVSPrint (
UINTN Radix;
RETURN_STATUS Status;
+ ASSERT (Buffer != NULL);
+ ASSERT (Format != NULL);
+
OriginalBuffer = Buffer;
if ((Flags & OUTPUT_UNICODE) != 0) {
diff --git a/MdePkg/Library/DxeCoreHobLib/HobLib.c b/MdePkg/Library/DxeCoreHobLib/HobLib.c
index 45336c5e54..c8ac8b4952 100644
--- a/MdePkg/Library/DxeCoreHobLib/HobLib.c
+++ b/MdePkg/Library/DxeCoreHobLib/HobLib.c
@@ -232,7 +232,7 @@ BuildResourceDescriptorHob (
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
If Guid is NULL, then ASSERT().
If there is no additional space for HOB creation, then ASSERT().
- If DataLength > (0x10000 - sizeof (EFI_HOB_TYPE_GUID)), then ASSERT().
+ If DataLength >= (0x10000 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT().
@param Guid The GUID to tag the customized HOB.
@param DataLength The size of the data payload for the GUID HOB.
@@ -265,7 +265,7 @@ BuildGuidHob (
If Guid is NULL, then ASSERT().
If Data is NULL and DataLength > 0, then ASSERT().
If there is no additional space for HOB creation, then ASSERT().
- If DataLength > (0x10000 - sizeof (EFI_HOB_TYPE_GUID)), then ASSERT().
+ If DataLength >= (0x10000 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT().
@param Guid The GUID to tag the customized HOB.
@param Data The data to be copied into the data field of the GUID HOB.
diff --git a/MdePkg/Library/DxeHobLib/HobLib.c b/MdePkg/Library/DxeHobLib/HobLib.c
index 41baba2847..fd2d145419 100644
--- a/MdePkg/Library/DxeHobLib/HobLib.c
+++ b/MdePkg/Library/DxeHobLib/HobLib.c
@@ -258,7 +258,7 @@ BuildResourceDescriptorHob (
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
If Guid is NULL, then ASSERT().
If there is no additional space for HOB creation, then ASSERT().
- If DataLength > (0x10000 - sizeof (EFI_HOB_TYPE_GUID)), then ASSERT().
+ If DataLength >= (0x10000 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT().
@param Guid The GUID to tag the customized HOB.
@param DataLength The size of the data payload for the GUID HOB.
@@ -291,7 +291,7 @@ BuildGuidHob (
If Guid is NULL, then ASSERT().
If Data is NULL and DataLength > 0, then ASSERT().
If there is no additional space for HOB creation, then ASSERT().
- If DataLength > (0x10000 - sizeof (EFI_HOB_TYPE_GUID)), then ASSERT().
+ If DataLength >= (0x10000 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT().
@param Guid The GUID to tag the customized HOB.
@param Data The data to be copied into the data field of the GUID HOB.
diff --git a/MdePkg/Library/PeiHobLib/HobLib.c b/MdePkg/Library/PeiHobLib/HobLib.c
index 380a735b99..1f0c66acd0 100644
--- a/MdePkg/Library/PeiHobLib/HobLib.c
+++ b/MdePkg/Library/PeiHobLib/HobLib.c
@@ -275,7 +275,7 @@ BuildResourceDescriptorHob (
for DXE phase, it will ASSERT() since PEI HOB is read-only for DXE phase.
If Guid is NULL, then ASSERT().
If there is no additional space for HOB creation, then ASSERT().
- If DataLength > (0x10000 - sizeof (EFI_HOB_TYPE_GUID)), then ASSERT().
+ If DataLength >= (0x10000 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT().
@param Guid The GUID to tag the customized HOB.
@param DataLength The size of the data payload for the GUID HOB.
@@ -313,7 +313,7 @@ BuildGuidHob (
If Guid is NULL, then ASSERT().
If Data is NULL and DataLength > 0, then ASSERT().
If there is no additional space for HOB creation, then ASSERT().
- If DataLength > (0x10000 - sizeof (EFI_HOB_TYPE_GUID)), then ASSERT().
+ If DataLength >= (0x10000 - sizeof (EFI_HOB_GUID_TYPE)), then ASSERT().
@param Guid The GUID to tag the customized HOB.
@param Data The data to be copied into the data field of the GUID HOB.
@@ -332,6 +332,8 @@ BuildGuidDataHob (
{
VOID *HobData;
+ ASSERT (Data != NULL || DataLength == 0);
+
HobData = BuildGuidHob (Guid, DataLength);
return CopyMem (HobData, Data, DataLength);
diff --git a/MdePkg/Library/PeiMemoryLib/SetMem16Wrapper.c b/MdePkg/Library/PeiMemoryLib/SetMem16Wrapper.c
index 3acbdac436..dea31608fe 100644
--- a/MdePkg/Library/PeiMemoryLib/SetMem16Wrapper.c
+++ b/MdePkg/Library/PeiMemoryLib/SetMem16Wrapper.c
@@ -52,10 +52,10 @@ SetMem16 (
IN UINT16 Value
)
{
- ASSERT (Buffer != NULL);
+ ASSERT (!(Buffer == NULL && Length > 0));
ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);
- ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);
- ASSERT ((Length & (sizeof (Value) - 1)) != 0);
+ ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);
+ ASSERT ((Length & (sizeof (Value) - 1)) == 0);
if ((Length /= sizeof (Value)) == 0) {
return Buffer;
diff --git a/MdePkg/Library/PeiMemoryLib/SetMem32Wrapper.c b/MdePkg/Library/PeiMemoryLib/SetMem32Wrapper.c
index 620b69aef4..1ae7acb013 100644
--- a/MdePkg/Library/PeiMemoryLib/SetMem32Wrapper.c
+++ b/MdePkg/Library/PeiMemoryLib/SetMem32Wrapper.c
@@ -52,10 +52,10 @@ SetMem32 (
IN UINT32 Value
)
{
- ASSERT (Buffer != NULL);
+ ASSERT (!(Buffer == NULL && Length > 0));
ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);
- ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);
- ASSERT ((Length & (sizeof (Value) - 1)) != 0);
+ ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);
+ ASSERT ((Length & (sizeof (Value) - 1)) == 0);
if ((Length /= sizeof (Value)) == 0) {
return Buffer;
diff --git a/MdePkg/Library/PeiMemoryLib/SetMem64Wrapper.c b/MdePkg/Library/PeiMemoryLib/SetMem64Wrapper.c
index 73c28af4a1..0128a2d6f1 100644
--- a/MdePkg/Library/PeiMemoryLib/SetMem64Wrapper.c
+++ b/MdePkg/Library/PeiMemoryLib/SetMem64Wrapper.c
@@ -52,10 +52,10 @@ SetMem64 (
IN UINT64 Value
)
{
- ASSERT (Buffer != NULL);
+ ASSERT (!(Buffer == NULL && Length > 0));
ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);
- ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);
- ASSERT ((Length & (sizeof (Value) - 1)) != 0);
+ ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);
+ ASSERT ((Length & (sizeof (Value) - 1)) == 0);
if ((Length /= sizeof (Value)) == 0) {
return Buffer;
diff --git a/MdePkg/Library/UefiMemoryLib/SetMem16Wrapper.c b/MdePkg/Library/UefiMemoryLib/SetMem16Wrapper.c
index 3acbdac436..dea31608fe 100644
--- a/MdePkg/Library/UefiMemoryLib/SetMem16Wrapper.c
+++ b/MdePkg/Library/UefiMemoryLib/SetMem16Wrapper.c
@@ -52,10 +52,10 @@ SetMem16 (
IN UINT16 Value
)
{
- ASSERT (Buffer != NULL);
+ ASSERT (!(Buffer == NULL && Length > 0));
ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);
- ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);
- ASSERT ((Length & (sizeof (Value) - 1)) != 0);
+ ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);
+ ASSERT ((Length & (sizeof (Value) - 1)) == 0);
if ((Length /= sizeof (Value)) == 0) {
return Buffer;
diff --git a/MdePkg/Library/UefiMemoryLib/SetMem32Wrapper.c b/MdePkg/Library/UefiMemoryLib/SetMem32Wrapper.c
index 620b69aef4..1ae7acb013 100644
--- a/MdePkg/Library/UefiMemoryLib/SetMem32Wrapper.c
+++ b/MdePkg/Library/UefiMemoryLib/SetMem32Wrapper.c
@@ -52,10 +52,10 @@ SetMem32 (
IN UINT32 Value
)
{
- ASSERT (Buffer != NULL);
+ ASSERT (!(Buffer == NULL && Length > 0));
ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);
- ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);
- ASSERT ((Length & (sizeof (Value) - 1)) != 0);
+ ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);
+ ASSERT ((Length & (sizeof (Value) - 1)) == 0);
if ((Length /= sizeof (Value)) == 0) {
return Buffer;
diff --git a/MdePkg/Library/UefiMemoryLib/SetMem64Wrapper.c b/MdePkg/Library/UefiMemoryLib/SetMem64Wrapper.c
index 73c28af4a1..0128a2d6f1 100644
--- a/MdePkg/Library/UefiMemoryLib/SetMem64Wrapper.c
+++ b/MdePkg/Library/UefiMemoryLib/SetMem64Wrapper.c
@@ -52,10 +52,10 @@ SetMem64 (
IN UINT64 Value
)
{
- ASSERT (Buffer != NULL);
+ ASSERT (!(Buffer == NULL && Length > 0));
ASSERT (Length <= MAX_ADDRESS - (UINTN)Buffer + 1);
- ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) != 0);
- ASSERT ((Length & (sizeof (Value) - 1)) != 0);
+ ASSERT ((((UINTN)Buffer) & (sizeof (Value) - 1)) == 0);
+ ASSERT ((Length & (sizeof (Value) - 1)) == 0);
if ((Length /= sizeof (Value)) == 0) {
return Buffer;
diff --git a/MdePkg/MdePkg-All-Archs.fpd b/MdePkg/MdePkg-All-Archs.fpd
index 392c239f87..b12e506c8d 100644
--- a/MdePkg/MdePkg-All-Archs.fpd
+++ b/MdePkg/MdePkg-All-Archs.fpd
@@ -85,6 +85,11 @@
+
+
+
+
+
@@ -154,6 +159,10 @@
+
+
+
+
@@ -221,6 +230,10 @@
+
+
+
+
@@ -290,6 +303,10 @@
+
+
+
+
@@ -1060,7 +1077,70 @@
0x07
+
+
+
+
+ PcdPostCodePropertyMask
+ 0x0000000b
+ UINT8
+ false
+ false
+ false
+ false
+ false
+ 0x00
+ 0x00
+ 1
+ 0
+ L""
+ 0
+ 0x00
+
+
+
+
+
+
+ PcdPostCodePropertyMask
+ 0x0000000b
+ UINT8
+ false
+ false
+ false
+ false
+ false
+ 0x00
+ 0x00
+ 1
+ 0
+ L""
+ 0
+ 0x00
+
+
+
+
+
+ PcdPostCodePropertyMask
+ 0x0000000b
+ UINT8
+ false
+ false
+ false
+ false
+ false
+ 0x00
+ 0x00
+ 1
+ 0
+ L""
+ 0
+ 0x00
+
+
+
@@ -1586,7 +1666,70 @@
0x07
+
+
+
+
+ PcdPostCodePropertyMask
+ 0x0000000b
+ UINT8
+ false
+ false
+ false
+ false
+ false
+ 0x00
+ 0x00
+ 1
+ 0
+ L""
+ 0
+ 0x00
+
+
+
+
+
+
+ PcdPostCodePropertyMask
+ 0x0000000b
+ UINT8
+ false
+ false
+ false
+ false
+ false
+ 0x00
+ 0x00
+ 1
+ 0
+ L""
+ 0
+ 0x00
+
+
+
+
+
+ PcdPostCodePropertyMask
+ 0x0000000b
+ UINT8
+ false
+ false
+ false
+ false
+ false
+ 0x00
+ 0x00
+ 1
+ 0
+ L""
+ 0
+ 0x00
+
+
+
@@ -2112,7 +2255,70 @@
0x07
+
+
+
+
+ PcdPostCodePropertyMask
+ 0x0000000b
+ UINT8
+ false
+ false
+ false
+ false
+ false
+ 0x00
+ 0x00
+ 1
+ 0
+ L""
+ 0
+ 0x00
+
+
+
+
+
+
+ PcdPostCodePropertyMask
+ 0x0000000b
+ UINT8
+ false
+ false
+ false
+ false
+ false
+ 0x00
+ 0x00
+ 1
+ 0
+ L""
+ 0
+ 0x00
+
+
+
+
+
+ PcdPostCodePropertyMask
+ 0x0000000b
+ UINT8
+ false
+ false
+ false
+ false
+ false
+ 0x00
+ 0x00
+ 1
+ 0
+ L""
+ 0
+ 0x00
+
+
+
@@ -2639,6 +2845,69 @@
+
+
+
+ PcdPostCodePropertyMask
+ 0x0000000b
+ UINT8
+ false
+ false
+ false
+ false
+ false
+ 0x00
+ 0x00
+ 1
+ 0
+ L""
+ 0
+ 0x00
+
+
+
+
+
+
+ PcdPostCodePropertyMask
+ 0x0000000b
+ UINT8
+ false
+ false
+ false
+ false
+ false
+ 0x00
+ 0x00
+ 1
+ 0
+ L""
+ 0
+ 0x00
+
+
+
+
+
+
+ PcdPostCodePropertyMask
+ 0x0000000b
+ UINT8
+ false
+ false
+ false
+ false
+ false
+ 0x00
+ 0x00
+ 1
+ 0
+ L""
+ 0
+ 0x00
+
+
+
diff --git a/MdePkg/MdePkg.fpd b/MdePkg/MdePkg.fpd
index e514d44159..684662f72a 100644
--- a/MdePkg/MdePkg.fpd
+++ b/MdePkg/MdePkg.fpd
@@ -82,6 +82,10 @@
+
+
+
+
@@ -852,6 +856,69 @@
+
+
+
+ PcdPostCodePropertyMask
+ 0x0000000b
+ UINT8
+ false
+ false
+ false
+ false
+ false
+ 0x00
+ 0x00
+ 1
+ 0
+ L""
+ 0
+ 0x00
+
+
+
+
+
+
+ PcdPostCodePropertyMask
+ 0x0000000b
+ UINT8
+ false
+ false
+ false
+ false
+ false
+ 0x00
+ 0x00
+ 1
+ 0
+ L""
+ 0
+ 0x00
+
+
+
+
+
+
+ PcdPostCodePropertyMask
+ 0x0000000b
+ UINT8
+ false
+ false
+ false
+ false
+ false
+ 0x00
+ 0x00
+ 1
+ 0
+ L""
+ 0
+ 0x00
+
+
+
diff --git a/MdePkg/MdePkg.spd b/MdePkg/MdePkg.spd
index 9fbb8a6ed1..6b432384a1 100644
--- a/MdePkg/MdePkg.spd
+++ b/MdePkg/MdePkg.spd
@@ -138,6 +138,10 @@
ReportStatusCodeLib
Include/Library/ReportStatusCodeLib.h
+
+ PostCodeLib
+ Include/Library/PostCodeLib.h
+
ResourcePublicationLib
Include/Library/ResourcePublicationLib.h
@@ -225,6 +229,15 @@
Library/BaseReportStatusCodeLibNull/BaseReportStatusCodeLibNull.msa
+
+ Library/BasePostCodeLib80/BasePostCodeLib80.msa
+
+
+ Library/BasePostCodeLibDebug/BasePostCodeLibDebug.msa
+
+
+ Library/BasePostCodeLibReportStatusCode/BasePostCodeLibReportStatusCode.msa
+
Library/BaseSmbusLib/BaseSmbusLib.msa
@@ -1227,5 +1240,11 @@
UINT8
0x0
+
+ PcdPostCodePropertyMask
+ 0x0000000b
+ UINT8
+ 0
+