]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Base.h
Updating processor bindings to not use stdint.h. Also added code to verify at compil...
[mirror_edk2.git] / MdePkg / Include / Base.h
index 850050cce40c57017ae691b786ec0ac9e5d7eecc..98fdca36a6dbe577dd162c4edb24b7b94424a6da 100644 (file)
@@ -6,8 +6,8 @@
   environment. There are a set of base libraries in the Mde Package that can\r
   be used to implement base modules.\r
 \r
-Copyright (c) 2006 - 2008, Intel Corporation<BR>\r
-Portions Copyright (c) 2008-2009 Apple Inc.<BR>\r
+Copyright (c) 2006 - 2009, Intel Corporation<BR>\r
+Portions copyright (c) 2008-2009 Apple Inc. All rights reserved.<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
@@ -27,12 +27,31 @@ WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
 //\r
 #include <ProcessorBind.h>\r
 \r
+//\r
+// Verify that ProcessorBind.h produced UEFI Data Types that are compliant with \r
+// Section 2.3.1 of the UEFI 2.3 Specification.  Generates a divide by zero \r
+// error or a zero size array declaration in the preprocessor if the size is \r
+// incorrect.  These are declared as "extern" so the space for these arrays will \r
+// not be in the modules.\r
+//\r
+extern UINT8 _VerifySizeOfBoolean [(sizeof(BOOLEAN) == 1) / (sizeof(BOOLEAN) == 1)];\r
+extern UINT8 _VerifySizeOfInt8    [(sizeof(INT8)    == 1) / (sizeof(INT8)    == 1)];\r
+extern UINT8 _VerifySizeOfUint8   [(sizeof(UINT8)   == 1) / (sizeof(UINT8)   == 1)];\r
+extern UINT8 _VerifySizeOfInt16   [(sizeof(INT16)   == 2) / (sizeof(INT16)   == 2)];\r
+extern UINT8 _VerifySizeOfUint16  [(sizeof(UINT16)  == 2) / (sizeof(UINT16)  == 2)];\r
+extern UINT8 _VerifySizeOfInt32   [(sizeof(INT32)   == 4) / (sizeof(INT32)   == 4)];\r
+extern UINT8 _VerifySizeOfUint32  [(sizeof(UINT32)  == 4) / (sizeof(UINT32)  == 4)];\r
+extern UINT8 _VerifySizeOfInt64   [(sizeof(INT64)   == 8) / (sizeof(INT64)   == 8)];\r
+extern UINT8 _VerifySizeOfUint64  [(sizeof(UINT64)  == 8) / (sizeof(UINT64)  == 8)];\r
+extern UINT8 _VerifySizeOfChar8   [(sizeof(CHAR8)   == 1) / (sizeof(CHAR8)   == 1)];\r
+extern UINT8 _VerifySizeOfChar16  [(sizeof(CHAR16)  == 2) / (sizeof(CHAR16)  == 2)];\r
+\r
 //\r
 // The Microsoft* C compiler can removed references to unreferenced data items\r
 //  if the /OPT:REF linker option is used. We defined a macro as this is a \r
 //  a non standard extension\r
 //\r
-#if defined(_MSC_EXTENSIONS)\r
+#if defined(_MSC_EXTENSIONS) && !defined (MDE_CPU_EBC)\r
   ///\r
   /// Remove global variable from the linked image if there are no references to \r
   /// it after all compiler and linker optimizations have been performed.\r
@@ -643,7 +662,7 @@ typedef UINTN  *BASE_LIST;
 //\r
 // Status codes common to all execution phases\r
 //\r
-typedef INTN RETURN_STATUS;\r
+typedef UINTN RETURN_STATUS;\r
 \r
 /**\r
   Produces a RETURN_STATUS code with the highest bit set. \r
@@ -678,7 +697,7 @@ typedef INTN RETURN_STATUS;
   @retval FALSE         The high bit of StatusCode is clear.\r
 \r
 **/\r
-#define RETURN_ERROR(StatusCode)     (((RETURN_STATUS)(StatusCode)) < 0)\r
+#define RETURN_ERROR(StatusCode)     (((INTN)(RETURN_STATUS)(StatusCode)) < 0)\r
 \r
 ///\r
 /// The operation completed successfully.\r
@@ -844,7 +863,7 @@ typedef INTN RETURN_STATUS;
 \r
 \r
 ///\r
-/// The Unicode string contained one or more characters that\r
+/// The string contained one or more characters that\r
 /// the device could not render and were skipped.\r
 ///\r
 #define RETURN_WARN_UNKNOWN_GLYPH    ENCODE_WARNING (1)\r