]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Include/Ebc/ProcessorBind.h
MdePkg/BaseSafeIntLib: Add SafeIntLib class and instance
[mirror_edk2.git] / MdePkg / Include / Ebc / ProcessorBind.h
index da8b1a6d802a995420fd833e8cb69c1f0c1af59b..ed41648913284cb8b0befa18b268e82b48d056bb 100644 (file)
@@ -4,7 +4,7 @@
   We currently only have one EBC compiler so there may be some Intel compiler\r
   specific functions in this file.\r
 \r
-Copyright (c) 2006 - 2013, Intel Corporation. All rights reserved.<BR>\r
+Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>\r
 This program and the accompanying materials are licensed and made available under \r
 the terms and conditions of the BSD License that accompanies this distribution.  \r
 The full text of the license may be found at\r
@@ -91,23 +91,28 @@ typedef unsigned long         UINTN;
 /// A value of native width with the highest bit set.\r
 /// Scalable macro to set the most significant bit in a natural number.\r
 ///\r
-#define MAX_BIT     (1ULL << (sizeof (INTN) * 8 - 1)) \r
+#define MAX_BIT     ((UINTN)((1ULL << (sizeof (INTN) * 8 - 1))))\r
 ///\r
 /// A value of native width with the two highest bits set.\r
 /// Scalable macro to set the most 2 significant bits in a natural number.\r
 ///\r
-#define MAX_2_BITS  (3ULL << (sizeof (INTN) * 8 - 2))\r
+#define MAX_2_BITS  ((UINTN)(3ULL << (sizeof (INTN) * 8 - 2)))\r
 \r
 ///\r
 /// Maximum legal EBC address\r
 ///\r
-#define MAX_ADDRESS   ((UINTN) ~0)\r
+#define MAX_ADDRESS   ((UINTN)(~0ULL >> (64 - sizeof (INTN) * 8)))\r
 \r
 ///\r
 /// Maximum legal EBC INTN and UINTN values.\r
 ///\r
-#define MAX_UINTN  ((UINTN) ~0)\r
-#define MAX_INTN   ((INTN)~MAX_BIT)\r
+#define MAX_UINTN  ((UINTN)(~0ULL >> (64 - sizeof (INTN) * 8)))\r
+#define MAX_INTN   ((INTN)(~0ULL >> (65 - sizeof (INTN) * 8)))\r
+\r
+///\r
+/// Minimum legal EBC INTN value.\r
+///\r
+#define MIN_INTN   (((INTN)-MAX_INTN) - 1)\r
 \r
 ///\r
 /// The stack alignment required for EBC\r