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
#pragma warning ( disable : 4057 )\r
\r
+//\r
+// Disable warning on conversion from function pointer to a data pointer\r
+//\r
+#pragma warning ( disable : 4054 )\r
+\r
//\r
// ASSERT(FALSE) or while (TRUE) are legal constructes so supress this warning\r
//\r
//\r
#pragma warning ( disable : 4514 )\r
\r
+//\r
+// This warning is caused by functions defined but not used. For precompiled header only.\r
+//\r
+#pragma warning ( disable : 4505 )\r
+\r
+//\r
+// This warning is caused by empty (after preprocessing) souce file. For precompiled header only.\r
+//\r
+#pragma warning ( disable : 4206 )\r
\r
#endif\r
\r
//\r
#define MAX_ADDRESS 0xFFFFFFFFFFFFFFFFULL\r
\r
+//\r
+// Per the Itanium Software Conventions and Runtime Architecture Guide,\r
+// section 3.3.4, IPF stack must always be 16-byte aligned.\r
+//\r
+#define CPU_STACK_ALIGNMENT 16\r
+\r
//\r
// Modifier to ensure that all protocol member functions and EFI intrinsics\r
// use the correct C calling convention. All protocol member functions and\r
// if the /OPT:REF linker option is used. We defined a macro as this is a \r
// a non standard extension\r
//\r
-#define GLOBAL_REMOVE_IF_UNREFERENCED\r
+#if _MSC_EXTENSIONS\r
+ #define GLOBAL_REMOVE_IF_UNREFERENCED __declspec(selectany)\r
+#else\r
+ #define GLOBAL_REMOVE_IF_UNREFERENCED\r
+#endif\r
\r
//\r
// A pointer to a function in IPF points to a plabel.\r
} EFI_PLABEL;\r
\r
typedef struct {\r
- UINTN BootPhase; // entry r20 value\r
- UINTN UniqueId; // PAL arbitration ID\r
- UINTN HealthStat; // Health Status\r
- UINTN PALRetAddress; // return address to PAL\r
-} IPF_HANDOFF_STATUS;\r
+ UINT64 Status;\r
+ UINT64 r9;\r
+ UINT64 r10;\r
+ UINT64 r11;\r
+} PAL_CALL_RETURN;\r
\r
#endif\r
\r