summaryrefslogtreecommitdiff
path: root/EDK/Foundation/Include/Ebc/EfiBind.h
diff options
context:
space:
mode:
Diffstat (limited to 'EDK/Foundation/Include/Ebc/EfiBind.h')
-rw-r--r--EDK/Foundation/Include/Ebc/EfiBind.h129
1 files changed, 129 insertions, 0 deletions
diff --git a/EDK/Foundation/Include/Ebc/EfiBind.h b/EDK/Foundation/Include/Ebc/EfiBind.h
new file mode 100644
index 0000000..68ec8ae
--- /dev/null
+++ b/EDK/Foundation/Include/Ebc/EfiBind.h
@@ -0,0 +1,129 @@
+/*++
+
+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.
+
+Module Name:
+
+ EfiBind.h
+
+Abstract:
+
+ Processor or compiler specific defines and types for EBC.
+
+--*/
+
+#ifndef _EFI_BIND_H_
+#define _EFI_BIND_H_
+
+#define EFI_DRIVER_ENTRY_POINT(InitFunction)
+#define EFI_APPLICATION_ENTRY_POINT EFI_DRIVER_ENTRY_POINT
+
+//
+// Disable warning that make it impossible to compile at /W3
+// This only works for Intel EBC Compiler tools
+//
+
+//
+// Disabling argument of type "TYPE **" is incompatible with parameter of type "void **"
+//
+#pragma warning ( disable : 167 )
+
+//
+// Disabling pointless comparison of unsigned integer with zero
+//
+#pragma warning ( disable : 186 )
+
+//
+// Disabling enumerated type mixed with another type
+//
+#pragma warning ( disable : 188 )
+
+//
+// Native integer types
+//
+typedef char int8_t;
+typedef unsigned char uint8_t;
+
+typedef short int16_t;
+typedef unsigned short uint16_t;
+
+typedef int int32_t;
+typedef unsigned int uint32_t;
+
+typedef __int64 int64_t;
+typedef unsigned __int64 uint64_t;
+
+//
+// "long" type scales to the processor native size with EBC compiler
+//
+typedef long intn_t;
+typedef unsigned long uintn_t;
+
+//
+// Scalable macro to set the most significant bit in a natural number
+//
+#define EFI_MAX_BIT ((UINTN)0x01 << ((sizeof (char *) * 8) - 1))
+#define MAX_2_BITS (EFI_MAX_BIT | (EFI_MAX_BIT >> 1))
+
+//
+// Maximum legal EBC address
+//
+#define EFI_MAX_ADDRESS (UINTN)~0
+
+//
+// Bad pointer value to use in check builds.
+// if you see this value you are using uninitialized or free'ed data
+//
+#define EFI_BAD_POINTER (UINTN)0xAFAFAFAFAFAFAFAF
+#define EFI_BAD_POINTER_AS_BYTE (UINTN)0xAF
+
+//
+// _break() is an EBC compiler intrinsic function
+//
+extern
+uint64_t
+_break (
+ unsigned char BreakCode
+ );
+
+//
+// Macro to inject a break point in the code to assist debugging.
+//
+#define EFI_BREAKPOINT() _break ( 3 )
+#define EFI_DEADLOOP() while (TRUE)
+
+//
+// Memory Fence forces serialization, and is needed to support out of order
+// memory transactions. The Memory Fence is mainly used to make sure IO
+// transactions complete in a deterministic sequence, and to syncronize locks
+// an other MP code. Currently no memory fencing is required.
+//
+#define MEMORY_FENCE()
+
+//
+// Some compilers don't support the forward reference construct:
+// typedef struct XXXXX. The forward reference is required for
+// ANSI compatibility.
+//
+// The following macro provide a workaround for such cases.
+//
+
+
+#ifdef EFI_NO_INTERFACE_DECL
+ #define EFI_FORWARD_DECLARATION(x)
+#else
+ #define EFI_FORWARD_DECLARATION(x) typedef struct _##x x
+#endif
+
+
+#define _EFIAPI
+
+#endif // ifndef _EFI_BIND_H_
+