X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=MdePkg%2FInclude%2FEbc%2FProcessorBind.h;h=da8b1a6d802a995420fd833e8cb69c1f0c1af59b;hp=2e254ffb04ab609101fbffdf4a65c863fe45156b;hb=08855193cafebaa2e071ffb5f083bcb3cb6d4df0;hpb=d484d1206719ccd807ad4bc557c452fac91de3df diff --git a/MdePkg/Include/Ebc/ProcessorBind.h b/MdePkg/Include/Ebc/ProcessorBind.h index 2e254ffb04..da8b1a6d80 100644 --- a/MdePkg/Include/Ebc/ProcessorBind.h +++ b/MdePkg/Include/Ebc/ProcessorBind.h @@ -1,17 +1,17 @@ /** @file Processor or compiler specific defines and types for EBC. - We currently only have one EBC complier so there may be some Intel compiler + We currently only have one EBC compiler so there may be some Intel compiler specific functions in this 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. +Copyright (c) 2006 - 2013, 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 that 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. **/ @@ -26,33 +26,76 @@ // // Native integer types // -typedef char INT8; + +/// +/// 1-byte signed value +/// +typedef signed char INT8; +/// +/// 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; - +/// +/// 2-byte signed value. +/// typedef short INT16; +/// +/// 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; - +/// +/// 4-byte signed value. +/// typedef int INT32; +/// +/// 4-byte unsigned value. +/// typedef unsigned int UINT32; - +/// +/// 8-byte signed value. +/// typedef __int64 INT64; +/// +/// 8-byte unsigned value. +/// typedef unsigned __int64 UINT64; /// +/// Signed value of native width. (4 bytes on supported 32-bit processor instructions, +/// 8 bytes on supported 64-bit processor instructions) /// "long" type scales to the processor native size with EBC compiler /// typedef long INTN; +/// +/// The unsigned value of native width. (4 bytes on supported 32-bit processor instructions; +/// 8 bytes on supported 64-bit processor instructions) +/// "long" type scales to the processor native size with the EBC compiler. +/// typedef unsigned long UINTN; -#define UINT8_MAX 0xff - /// -/// Scalable macro to set the most significant bit in a natural number +/// A value of native width with the highest bit set. +/// Scalable macro to set the most significant bit in a natural number. /// #define MAX_BIT (1ULL << (sizeof (INTN) * 8 - 1)) +/// +/// A value of native width with the two highest bits set. +/// Scalable macro to set the most 2 significant bits in a natural number. +/// #define MAX_2_BITS (3ULL << (sizeof (INTN) * 8 - 2)) /// @@ -60,26 +103,50 @@ typedef unsigned long UINTN; /// #define MAX_ADDRESS ((UINTN) ~0) +/// +/// Maximum legal EBC INTN and UINTN values. +/// +#define MAX_UINTN ((UINTN) ~0) +#define MAX_INTN ((INTN)~MAX_BIT) + /// /// The stack alignment required for EBC /// #define CPU_STACK_ALIGNMENT sizeof(UINTN) +/// +/// Page allocation granularity for EBC +/// +#define DEFAULT_PAGE_ALLOCATION_GRANULARITY (0x1000) +#define RUNTIME_PAGE_ALLOCATION_GRANULARITY (0x1000) + /// /// 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. /// +#ifdef EFIAPI + /// + /// If EFIAPI is already defined, then we use that definition. + /// +#else #define EFIAPI +#endif -/// -/// The Microsoft* C compiler can removed references to unreferenced data items -/// if the /OPT:REF linker option is used. We defined a macro as this is a -/// a non standard extension. Currently not supported by the EBC compiler -/// -#define GLOBAL_REMOVE_IF_UNREFERENCED +/** + Return the pointer to the first instruction of a function given a function pointer. + On EBC architectures, these two pointer values are the same, + so the implementation of this macro is very simple. + + @param FunctionPointer A pointer to a function. + + @return The pointer to the first instruction of a function given a function pointer. +**/ +#define FUNCTION_ENTRY_POINT(FunctionPointer) (VOID *)(UINTN)(FunctionPointer) -#define FUNCTION_ENTRY_POINT(p) (p) +#ifndef __USER_LABEL_PREFIX__ +#define __USER_LABEL_PREFIX__ +#endif #endif