mirror of https://github.com/acidanthera/audk.git
MdePkg: Disable some Level 4 warnings for VS2017/ARM
We disable the exact same warnings as IA32 and X64. Also create a dummy macro for PRESERVE8, as this is not supported by the Microsoft ARM assembler. Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Pete Batard <pete@akeo.ie> Reviewed-by: Liming Gao <liming.gao@intel.com>
This commit is contained in:
parent
4344a788c4
commit
987363c9ce
|
@ -1,15 +1,15 @@
|
||||||
/** @file
|
/** @file
|
||||||
Processor or Compiler specific defines and types for ARM.
|
Processor or Compiler specific defines and types for ARM.
|
||||||
|
|
||||||
Copyright (c) 2006 - 2017, Intel Corporation. All rights reserved.<BR>
|
Copyright (c) 2006 - 2018, Intel Corporation. All rights reserved.<BR>
|
||||||
Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
|
Portions copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
|
||||||
This program and the accompanying materials
|
This program and the accompanying materials
|
||||||
are licensed and made available under the terms and conditions of the BSD License
|
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
|
which accompanies this distribution. The full text of the license may be found at
|
||||||
http://opensource.org/licenses/bsd-license.php
|
http://opensource.org/licenses/bsd-license.php
|
||||||
|
|
||||||
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
|
||||||
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
|
||||||
|
|
||||||
**/
|
**/
|
||||||
|
|
||||||
|
@ -28,14 +28,63 @@
|
||||||
#pragma pack()
|
#pragma pack()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if defined(_MSC_EXTENSIONS)
|
||||||
|
|
||||||
//
|
//
|
||||||
// RVCT does not support the __builtin_unreachable() macro
|
// Disable some level 4 compilation warnings (same as IA32 and X64)
|
||||||
//
|
//
|
||||||
#ifdef __ARMCC_VERSION
|
|
||||||
|
//
|
||||||
|
// Disabling bitfield type checking warnings.
|
||||||
|
//
|
||||||
|
#pragma warning ( disable : 4214 )
|
||||||
|
|
||||||
|
//
|
||||||
|
// Disabling the unreferenced formal parameter warnings.
|
||||||
|
//
|
||||||
|
#pragma warning ( disable : 4100 )
|
||||||
|
|
||||||
|
//
|
||||||
|
// Disable slightly different base types warning as CHAR8 * can not be set
|
||||||
|
// to a constant string.
|
||||||
|
//
|
||||||
|
#pragma warning ( disable : 4057 )
|
||||||
|
|
||||||
|
//
|
||||||
|
// ASSERT(FALSE) or while (TRUE) are legal constructs so suppress this warning
|
||||||
|
//
|
||||||
|
#pragma warning ( disable : 4127 )
|
||||||
|
|
||||||
|
//
|
||||||
|
// This warning is caused by functions defined but not used. For precompiled header only.
|
||||||
|
//
|
||||||
|
#pragma warning ( disable : 4505 )
|
||||||
|
|
||||||
|
//
|
||||||
|
// This warning is caused by empty (after preprocessing) source file. For precompiled header only.
|
||||||
|
//
|
||||||
|
#pragma warning ( disable : 4206 )
|
||||||
|
|
||||||
|
//
|
||||||
|
// Disable 'potentially uninitialized local variable X used' warnings
|
||||||
|
//
|
||||||
|
#pragma warning ( disable : 4701 )
|
||||||
|
|
||||||
|
//
|
||||||
|
// Disable 'potentially uninitialized local pointer variable X used' warnings
|
||||||
|
//
|
||||||
|
#pragma warning ( disable : 4703 )
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// RVCT and MSFT don't support the __builtin_unreachable() macro
|
||||||
|
//
|
||||||
|
#if defined(__ARMCC_VERSION) || defined(_MSC_EXTENSIONS)
|
||||||
#define UNREACHABLE()
|
#define UNREACHABLE()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if _MSC_EXTENSIONS
|
#if defined(_MSC_EXTENSIONS)
|
||||||
//
|
//
|
||||||
// use Microsoft* C compiler dependent integer width types
|
// use Microsoft* C compiler dependent integer width types
|
||||||
//
|
//
|
||||||
|
@ -52,7 +101,7 @@
|
||||||
typedef signed char INT8;
|
typedef signed char INT8;
|
||||||
#else
|
#else
|
||||||
//
|
//
|
||||||
// Assume standard ARM alignment.
|
// Assume standard ARM alignment.
|
||||||
// Need to check portability of long long
|
// Need to check portability of long long
|
||||||
//
|
//
|
||||||
typedef unsigned long long UINT64;
|
typedef unsigned long long UINT64;
|
||||||
|
@ -126,7 +175,7 @@ typedef INT32 INTN;
|
||||||
// use the correct C calling convention. All protocol member functions and
|
// use the correct C calling convention. All protocol member functions and
|
||||||
// EFI intrinsics are required to modify their member functions with EFIAPI.
|
// EFI intrinsics are required to modify their member functions with EFIAPI.
|
||||||
//
|
//
|
||||||
#define EFIAPI
|
#define EFIAPI
|
||||||
|
|
||||||
// When compiling with Clang, we still use GNU as for the assembler, so we still
|
// When compiling with Clang, we still use GNU as for the assembler, so we still
|
||||||
// need to define the GCC_ASM* macros.
|
// need to define the GCC_ASM* macros.
|
||||||
|
@ -147,34 +196,39 @@ typedef INT32 INTN;
|
||||||
|
|
||||||
#define GCC_ASM_EXPORT(func__) \
|
#define GCC_ASM_EXPORT(func__) \
|
||||||
.global _CONCATENATE (__USER_LABEL_PREFIX__, func__) ;\
|
.global _CONCATENATE (__USER_LABEL_PREFIX__, func__) ;\
|
||||||
.type ASM_PFX(func__), %function
|
.type ASM_PFX(func__), %function
|
||||||
|
|
||||||
#define GCC_ASM_IMPORT(func__) \
|
#define GCC_ASM_IMPORT(func__) \
|
||||||
.extern _CONCATENATE (__USER_LABEL_PREFIX__, func__)
|
.extern _CONCATENATE (__USER_LABEL_PREFIX__, func__)
|
||||||
|
|
||||||
#else
|
#else
|
||||||
//
|
//
|
||||||
// .type not supported by Apple Xcode tools
|
// .type not supported by Apple Xcode tools
|
||||||
//
|
//
|
||||||
#define INTERWORK_FUNC(func__)
|
#define INTERWORK_FUNC(func__)
|
||||||
|
|
||||||
#define GCC_ASM_EXPORT(func__) \
|
#define GCC_ASM_EXPORT(func__) \
|
||||||
.globl _CONCATENATE (__USER_LABEL_PREFIX__, func__) \
|
.globl _CONCATENATE (__USER_LABEL_PREFIX__, func__) \
|
||||||
|
|
||||||
#define GCC_ASM_IMPORT(name)
|
#define GCC_ASM_IMPORT(name)
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
#elif defined(_MSC_EXTENSIONS)
|
||||||
|
//
|
||||||
|
// PRESERVE8 is not supported by the MSFT assembler.
|
||||||
|
//
|
||||||
|
#define PRESERVE8
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Return the pointer to the first instruction of a function given a function pointer.
|
Return the pointer to the first instruction of a function given a function pointer.
|
||||||
On ARM CPU architectures, these two pointer values are the same,
|
On ARM CPU architectures, these two pointer values are the same,
|
||||||
so the implementation of this macro is very simple.
|
so the implementation of this macro is very simple.
|
||||||
|
|
||||||
@param FunctionPointer A pointer to a function.
|
@param FunctionPointer A pointer to a function.
|
||||||
|
|
||||||
@return The pointer to the first instruction of a function given a function pointer.
|
@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(FunctionPointer) (VOID *)(UINTN)(FunctionPointer)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue