From f4ec40abd6533850edb914de59b7ef5f1c1c1bb6 Mon Sep 17 00:00:00 2001 From: mdkinney Date: Sun, 7 Dec 2008 23:10:08 +0000 Subject: Add more detailed comments for many of the Base Types Remove all declarations of UINT8_MAX. Use BIT8-1 instead. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@6909 6f19259b-4bc3-4df7-8a09-765794883524 --- MdePkg/Include/X64/ProcessorBind.h | 189 ++++++++++++++++++++++++++++++++++--- 1 file changed, 177 insertions(+), 12 deletions(-) (limited to 'MdePkg/Include/X64') diff --git a/MdePkg/Include/X64/ProcessorBind.h b/MdePkg/Include/X64/ProcessorBind.h index a54cc1b5d0..fefc21a525 100644 --- a/MdePkg/Include/X64/ProcessorBind.h +++ b/MdePkg/Include/X64/ProcessorBind.h @@ -101,101 +101,256 @@ // // use Microsoft C complier dependent integer width types // + + /// + /// 8-byte unsigned value + /// typedef unsigned __int64 UINT64; + /// + /// 8-byte signed value + /// typedef __int64 INT64; + /// + /// 4-byte unsigned value + /// typedef unsigned __int32 UINT32; + /// + /// 4-byte signed value + /// typedef __int32 INT32; + /// + /// 2-byte unsigned value + /// typedef unsigned short UINT16; + /// + /// 2-byte Character. Unless otherwise specified all strings are stored in the + /// UTF-16 encoding format as defined by Unicode 2.1 and ISO/IEC 10646 standards. + /// typedef unsigned short CHAR16; + /// + /// 2-byte signed value + /// typedef short INT16; + /// + /// Logical Boolean. 1-byte value containing 0 for FALSE or a 1 for TRUE. Other + /// values are undefined. + /// typedef unsigned char BOOLEAN; + /// + /// 1-byte unsigned value + /// typedef unsigned char UINT8; + /// + /// 1-byte Character + /// typedef char CHAR8; + /// + /// 1-byte signed value + /// typedef char INT8; #else #ifdef _EFI_P64 // // P64 - pointers being 64-bit and longs and ints are 32-bits. // + + /// + /// 8-byte unsigned value + /// typedef unsigned long long UINT64; + /// + /// 8-byte signed value + /// typedef long long INT64; + /// + /// 4-byte unsigned value + /// typedef unsigned int UINT32; + /// + /// 4-byte signed value + /// typedef int INT32; + /// + /// 2-byte Character. Unless otherwise specified all strings are stored in the + /// UTF-16 encoding format as defined by Unicode 2.1 and ISO/IEC 10646 standards. + /// typedef unsigned short CHAR16; + /// + /// 2-byte unsigned value + /// typedef unsigned short UINT16; + /// + /// 2-byte signed value + /// typedef short INT16; + /// + /// Logical Boolean. 1-byte value containing 0 for FALSE or a 1 for TRUE. Other + /// values are undefined. + /// typedef unsigned char BOOLEAN; + /// + /// 1-byte unsigned value + /// typedef unsigned char UINT8; + /// + /// 1-byte Character + /// typedef char CHAR8; + /// + /// 1-byte signed value + /// typedef char INT8; #else // // Assume LP64 - longs and pointers are 64-bit. Ints are 32-bit. // + + /// + /// 8-byte unsigned value + /// typedef unsigned long UINT64; + /// + /// 8-byte signed value + /// typedef long INT64; + /// + /// 4-byte unsigned value + /// typedef unsigned int UINT32; + /// + /// 4-byte signed value + /// typedef int INT32; + /// + /// 2-byte unsigned value + /// typedef unsigned short UINT16; + /// + /// 2-byte Character. Unless otherwise specified all strings are stored in the + /// UTF-16 encoding format as defined by Unicode 2.1 and ISO/IEC 10646 standards. + /// typedef unsigned short CHAR16; + /// + /// 2-byte signed value + /// typedef short INT16; + /// + /// Logical Boolean. 1-byte value containing 0 for FALSE or a 1 for TRUE. Other + /// values are undefined. + /// typedef unsigned char BOOLEAN; + /// + /// 1-byte unsigned value + /// typedef unsigned char UINT8; + /// + /// 1-byte Character + /// typedef char CHAR8; + /// + /// 1-byte signed value + /// typedef char INT8; #endif #endif - - #define UINT8_MAX 0xff - #else // // Use ANSI C 2000 stdint.h integer width declarations // #include + + /// + /// Logical Boolean. 1-byte value containing 0 for FALSE or a 1 for TRUE. Other + /// values are undefined. + /// typedef uint8_t BOOLEAN; + /// + /// 1-byte signed value + /// typedef int8_t INT8; + /// + /// 1-byte unsigned value + /// typedef uint8_t UINT8; + /// + /// 2-byte signed value + /// typedef int16_t INT16; + /// + /// 2-byte unsigned value + /// typedef uint16_t UINT16; + /// + /// 4-byte signed value + /// typedef int32_t INT32; + /// + /// 4-byte unsigned value + /// typedef uint32_t UINT32; + /// + /// 8-byte signed value + /// typedef int64_t INT64; + /// + /// 8-byte unsigned value + /// typedef uint64_t UINT64; + /// + /// 1-byte Character + /// typedef char CHAR8; + /// + /// 2-byte Character. Unless otherwise specified all strings are stored in the + /// UTF-16 encoding format as defined by Unicode 2.1 and ISO/IEC 10646 standards. + /// typedef uint16_t CHAR16; #endif +/// +/// Unsigned value of native width. (4 bytes on supported 32-bit processor instructions, +/// 8 bytes on supported 64-bit processor instructions) +/// typedef UINT64 UINTN; +/// +/// Signed value of native width. (4 bytes on supported 32-bit processor instructions, +/// 8 bytes on supported 64-bit processor instructions) +/// typedef INT64 INTN; // // Processor specific defines // + +/// +/// A value of native width with the highest bit set. +/// #define MAX_BIT 0x8000000000000000ULL +/// +/// A value of native width with the two highest bits set. +/// #define MAX_2_BITS 0xC000000000000000ULL -// -// Maximum legal x64 address -// +/// +/// Maximum legal x64 address +/// #define MAX_ADDRESS 0xFFFFFFFFFFFFFFFFULL -// -// The stack alignment required for x64 -// +/// +/// The stack alignment required for x64 +/// #define CPU_STACK_ALIGNMENT 16 // // Modifier to ensure that all protocol member functions and EFI intrinsics // use the correct C calling convention. All protocol member functions and -// EFI intrinsics are required to modify thier member functions with EFIAPI. +// EFI intrinsics are required to modify their member functions with EFIAPI. // #if _MSC_EXTENSIONS /// - /// Define the standard calling convention reguardless of optimization level. - /// __cdecl is Microsoft* specific C extension. + /// Microsoft* compiler specific method for EFIAPI calling convension /// #define EFIAPI __cdecl #elif __GNUC__ @@ -222,8 +377,18 @@ typedef INT64 INTN; // a non standard extension // #if _MSC_EXTENSIONS + /// + /// Remove global variable from the linked image if there are no references to + /// it after all compiler and linker optimizations have been performed. + /// + /// #define GLOBAL_REMOVE_IF_UNREFERENCED __declspec(selectany) #else + /// + /// Remove global variable from the linked image if there are no references to + /// it after all compiler and linker optimizations have been performed. + /// + /// #define GLOBAL_REMOVE_IF_UNREFERENCED #endif -- cgit v1.2.3