THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, \r
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. \r
\r
- Module Name: ProcessorBind.h\r
-\r
**/\r
\r
#ifndef __PROCESSOR_BIND_H__\r
//\r
// Make sure we are useing the correct packing rules per EFI specification\r
//\r
+#ifndef __GNUC__\r
#pragma pack()\r
+#endif\r
+\r
+\r
+#if __INTEL_COMPILER\r
+//\r
+// Disable ICC's remark #1418: external function definition with no prior declaration.\r
+// This is legal ANSI C code so we disable the remark that is turned on with /W4\r
+//\r
+#pragma warning ( disable : 1418 )\r
+\r
+\r
+//\r
+// Disable ICC's remark #1419: external declaration in primary source file\r
+// This is legal ANSI C code so we disable the remark that is turned on with /W4\r
+//\r
+#pragma warning ( disable : 1419 )\r
+\r
+#endif\r
\r
\r
#if _MSC_EXTENSIONS \r
#endif\r
\r
\r
-#if (__STDC_VERSION__ < 199901L)\r
+#if !defined(__GNUC__) && (__STDC_VERSION__ < 199901L)\r
//\r
// No ANSI C 2000 stdint.h integer width declarations, so define equivalents\r
//\r
//\r
// Processor specific defines\r
//\r
-#define MAX_BIT 0x8000000000000000\r
-#define MAX_2_BITS 0xC000000000000000\r
+#define MAX_BIT 0x8000000000000000ULL\r
+#define MAX_2_BITS 0xC000000000000000ULL\r
+\r
+//\r
+// Maximum legal X64 address\r
+//\r
+#define MAX_ADDRESS 0xFFFFFFFFFFFFFFFFULL\r
\r
//\r
-// Maximum legal Itanium-based address\r
+// The stack alignment required for X64\r
//\r
-#define MAX_ADDRESS 0xFFFFFFFFFFFFFFFF\r
+#define CPU_STACK_ALIGNMENT 16\r
\r
//\r
// Modifier to ensure that all protocol member functions and EFI intrinsics\r
#define GLOBAL_REMOVE_IF_UNREFERENCED\r
#endif\r
\r
+//\r
+// For symbol name in GNU assembly code, an extra "_" is necessary\r
+//\r
+#if __GNUC__\r
+ #define ASM_PFX(name) _##name \r
+#endif\r
+\r
+#define FUNCTION_ENTRY_POINT(p) (p)\r
+\r
#endif\r
\r