From 4fb254d4b7477f1fb8266cb98e30d8204fde80c4 Mon Sep 17 00:00:00 2001 From: Olivier Martin Date: Tue, 3 Sep 2013 08:52:49 +0000 Subject: EdkCompatibilityPkg: Fixed build for AArch64 The architecture specific folders must be capitalized (first letter as a capital letter and the remaining letters in lower case) (INF spec - 2.2.4 Naming Conventions). The BaseTools only support this requirement for INF revision prior to 0x00010005 (mainly used by EdkCompatibilityPkg, EdkShellPkg, UEFI SCT). Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Olivier Martin Reviewed-by: Liming Gao git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@14620 6f19259b-4bc3-4df7-8a09-765794883524 --- .../Foundation/Include/AArch64/EfiBind.h | 143 --------------------- .../Include/AArch64/EfiPeOptionalHeader.h | 39 ------ .../Foundation/Include/AArch64/TianoBind.h | 32 ----- .../Foundation/Include/Aarch64/EfiBind.h | 143 +++++++++++++++++++++ .../Include/Aarch64/EfiPeOptionalHeader.h | 39 ++++++ .../Foundation/Include/Aarch64/TianoBind.h | 32 +++++ .../Library/Dxe/Include/AArch64/ProcDep.h | 26 ---- .../Library/Dxe/Include/Aarch64/ProcDep.h | 26 ++++ .../Pei/PeiLib/AArch64/PerformancePrimitives.c | 48 ------- .../Pei/PeiLib/Aarch64/PerformancePrimitives.c | 48 +++++++ 10 files changed, 288 insertions(+), 288 deletions(-) delete mode 100644 EdkCompatibilityPkg/Foundation/Include/AArch64/EfiBind.h delete mode 100644 EdkCompatibilityPkg/Foundation/Include/AArch64/EfiPeOptionalHeader.h delete mode 100644 EdkCompatibilityPkg/Foundation/Include/AArch64/TianoBind.h create mode 100644 EdkCompatibilityPkg/Foundation/Include/Aarch64/EfiBind.h create mode 100644 EdkCompatibilityPkg/Foundation/Include/Aarch64/EfiPeOptionalHeader.h create mode 100644 EdkCompatibilityPkg/Foundation/Include/Aarch64/TianoBind.h delete mode 100644 EdkCompatibilityPkg/Foundation/Library/Dxe/Include/AArch64/ProcDep.h create mode 100644 EdkCompatibilityPkg/Foundation/Library/Dxe/Include/Aarch64/ProcDep.h delete mode 100644 EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/AArch64/PerformancePrimitives.c create mode 100644 EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Aarch64/PerformancePrimitives.c (limited to 'EdkCompatibilityPkg') diff --git a/EdkCompatibilityPkg/Foundation/Include/AArch64/EfiBind.h b/EdkCompatibilityPkg/Foundation/Include/AArch64/EfiBind.h deleted file mode 100644 index f8db9069d2..0000000000 --- a/EdkCompatibilityPkg/Foundation/Include/AArch64/EfiBind.h +++ /dev/null @@ -1,143 +0,0 @@ -/** @file - - Copyright (c) 2013, ARM Ltd. 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 AArch64. - We are using the ANSI C 2000 _t type definitions for basic types. - This it technically a violation of the coding standard, but they - are used to make EfiTypes.h portable. Code other than EfiTypes.h - should never use any ANSI C 2000 _t integer types. - -**/ - - -#ifndef _EFI_BIND_H_ -#define _EFI_BIND_H_ - - -#define EFI_DRIVER_ENTRY_POINT(InitFunction) -#define EFI_APPLICATION_ENTRY_POINT EFI_DRIVER_ENTRY_POINT - - -// -// Make sure we are using the correct packing rules per EFI specification. -// -#ifndef __GNUC__ -#pragma pack() -#endif - - -// -// Assume standard AArch64 alignment. -// BugBug: Need to check portability of long long -// -typedef unsigned long long uint64_t; -typedef long long int64_t; -typedef unsigned int uint32_t; -typedef int int32_t; -typedef unsigned short uint16_t; -typedef short int16_t; -typedef unsigned char uint8_t; -typedef signed char int8_t; - -// -// Native integer size in stdint.h -// -typedef uint64_t uintn_t; -typedef int64_t intn_t; - -// -// Processor specific defines -// -#define EFI_MAX_BIT 0x8000000000000000 -#define MAX_2_BITS 0xC000000000000000 - -// -// Maximum legal AArch64 address -// -#define EFI_MAX_ADDRESS 0xFFFFFFFFFFFFFFFF - -// -// 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 0xAFAFAFAFAFAFAFAF -#define EFI_BAD_POINTER_AS_BYTE 0xAF - -#define EFI_DEADLOOP() { volatile UINTN __iii; __iii = 1; while (__iii); } - -// -// For real hardware, just put in a halt loop. Don't do a while(1) because the -// compiler will optimize away the rest of the function following, so that you run out in -// the weeds if you skip over it with a debugger. -// -#define EFI_BREAKPOINT EFI_DEADLOOP() - - -// -// 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 - - -// -// Some C compilers optimize the calling conventions to increase performance. -// _EFIAPI is used to make all public APIs follow the standard C calling -// convention. -// -#define _EFIAPI - - - -// -// For symbol name in GNU assembly code, an extra "_" is necessary -// -#if defined(__GNUC__) - /// - /// Private worker functions for ASM_PFX() - /// - #define _CONCATENATE(a, b) __CONCATENATE(a, b) - #define __CONCATENATE(a, b) a ## b - - /// - /// The __USER_LABEL_PREFIX__ macro predefined by GNUC represents the prefix - /// on symbols in assembly language. - /// - #define ASM_PFX(name) _CONCATENATE (__USER_LABEL_PREFIX__, name) - -#endif - -#endif - diff --git a/EdkCompatibilityPkg/Foundation/Include/AArch64/EfiPeOptionalHeader.h b/EdkCompatibilityPkg/Foundation/Include/AArch64/EfiPeOptionalHeader.h deleted file mode 100644 index bb5df545a0..0000000000 --- a/EdkCompatibilityPkg/Foundation/Include/AArch64/EfiPeOptionalHeader.h +++ /dev/null @@ -1,39 +0,0 @@ -/** @file - - Copyright (c) 2013, ARM Ltd. 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: - - EfiPeOptionalHeader.h - -Abstract: - Defines the optional header in the PE image per the PE specification. This - file must be included only from within EfiImage.h since - EFI_IMAGE_DATA_DIRECTORY and EFI_IMAGE_NUMBER_OF_DIRECTORY_ENTRIES are defined - there. - ---*/ - -#ifndef _EFI_PE_OPTIONAL_HEADER_H_ -#define _EFI_PE_OPTIONAL_HEADER_H_ - -#define EFI_IMAGE_MACHINE_TYPE (EFI_IMAGE_MACHINE_AARCH64) - -#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \ - (((Machine) == EFI_IMAGE_MACHINE_AARCH64) || ((Machine) == EFI_IMAGE_MACHINE_EBC)) - -#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) (FALSE) - -#define EFI_IMAGE_NT_OPTIONAL_HDR_MAGIC EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC -typedef EFI_IMAGE_OPTIONAL_HEADER64 EFI_IMAGE_OPTIONAL_HEADER; -typedef EFI_IMAGE_NT_HEADERS64 EFI_IMAGE_NT_HEADERS; - -#endif diff --git a/EdkCompatibilityPkg/Foundation/Include/AArch64/TianoBind.h b/EdkCompatibilityPkg/Foundation/Include/AArch64/TianoBind.h deleted file mode 100644 index f669928312..0000000000 --- a/EdkCompatibilityPkg/Foundation/Include/AArch64/TianoBind.h +++ /dev/null @@ -1,32 +0,0 @@ -/** @file - - Copyright (c) 2013, ARM Ltd. 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: - - TianoBind.h - -Abstract: - - Tiano's Processor or Compiler specific defines and types for AArch64 - besides EfiBind.h. - ---*/ - -#ifndef _TIANO_BIND_H_ -#define _TIANO_BIND_H_ - -#include - -#define EFI_DXE_ENTRY_POINT(InitFunction) -#define EFI_SMI_HANDLER_ENTRY_POINT(InitFunction) - -#endif diff --git a/EdkCompatibilityPkg/Foundation/Include/Aarch64/EfiBind.h b/EdkCompatibilityPkg/Foundation/Include/Aarch64/EfiBind.h new file mode 100644 index 0000000000..f8db9069d2 --- /dev/null +++ b/EdkCompatibilityPkg/Foundation/Include/Aarch64/EfiBind.h @@ -0,0 +1,143 @@ +/** @file + + Copyright (c) 2013, ARM Ltd. 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 AArch64. + We are using the ANSI C 2000 _t type definitions for basic types. + This it technically a violation of the coding standard, but they + are used to make EfiTypes.h portable. Code other than EfiTypes.h + should never use any ANSI C 2000 _t integer types. + +**/ + + +#ifndef _EFI_BIND_H_ +#define _EFI_BIND_H_ + + +#define EFI_DRIVER_ENTRY_POINT(InitFunction) +#define EFI_APPLICATION_ENTRY_POINT EFI_DRIVER_ENTRY_POINT + + +// +// Make sure we are using the correct packing rules per EFI specification. +// +#ifndef __GNUC__ +#pragma pack() +#endif + + +// +// Assume standard AArch64 alignment. +// BugBug: Need to check portability of long long +// +typedef unsigned long long uint64_t; +typedef long long int64_t; +typedef unsigned int uint32_t; +typedef int int32_t; +typedef unsigned short uint16_t; +typedef short int16_t; +typedef unsigned char uint8_t; +typedef signed char int8_t; + +// +// Native integer size in stdint.h +// +typedef uint64_t uintn_t; +typedef int64_t intn_t; + +// +// Processor specific defines +// +#define EFI_MAX_BIT 0x8000000000000000 +#define MAX_2_BITS 0xC000000000000000 + +// +// Maximum legal AArch64 address +// +#define EFI_MAX_ADDRESS 0xFFFFFFFFFFFFFFFF + +// +// 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 0xAFAFAFAFAFAFAFAF +#define EFI_BAD_POINTER_AS_BYTE 0xAF + +#define EFI_DEADLOOP() { volatile UINTN __iii; __iii = 1; while (__iii); } + +// +// For real hardware, just put in a halt loop. Don't do a while(1) because the +// compiler will optimize away the rest of the function following, so that you run out in +// the weeds if you skip over it with a debugger. +// +#define EFI_BREAKPOINT EFI_DEADLOOP() + + +// +// 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 + + +// +// Some C compilers optimize the calling conventions to increase performance. +// _EFIAPI is used to make all public APIs follow the standard C calling +// convention. +// +#define _EFIAPI + + + +// +// For symbol name in GNU assembly code, an extra "_" is necessary +// +#if defined(__GNUC__) + /// + /// Private worker functions for ASM_PFX() + /// + #define _CONCATENATE(a, b) __CONCATENATE(a, b) + #define __CONCATENATE(a, b) a ## b + + /// + /// The __USER_LABEL_PREFIX__ macro predefined by GNUC represents the prefix + /// on symbols in assembly language. + /// + #define ASM_PFX(name) _CONCATENATE (__USER_LABEL_PREFIX__, name) + +#endif + +#endif + diff --git a/EdkCompatibilityPkg/Foundation/Include/Aarch64/EfiPeOptionalHeader.h b/EdkCompatibilityPkg/Foundation/Include/Aarch64/EfiPeOptionalHeader.h new file mode 100644 index 0000000000..bb5df545a0 --- /dev/null +++ b/EdkCompatibilityPkg/Foundation/Include/Aarch64/EfiPeOptionalHeader.h @@ -0,0 +1,39 @@ +/** @file + + Copyright (c) 2013, ARM Ltd. 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: + + EfiPeOptionalHeader.h + +Abstract: + Defines the optional header in the PE image per the PE specification. This + file must be included only from within EfiImage.h since + EFI_IMAGE_DATA_DIRECTORY and EFI_IMAGE_NUMBER_OF_DIRECTORY_ENTRIES are defined + there. + +--*/ + +#ifndef _EFI_PE_OPTIONAL_HEADER_H_ +#define _EFI_PE_OPTIONAL_HEADER_H_ + +#define EFI_IMAGE_MACHINE_TYPE (EFI_IMAGE_MACHINE_AARCH64) + +#define EFI_IMAGE_MACHINE_TYPE_SUPPORTED(Machine) \ + (((Machine) == EFI_IMAGE_MACHINE_AARCH64) || ((Machine) == EFI_IMAGE_MACHINE_EBC)) + +#define EFI_IMAGE_MACHINE_CROSS_TYPE_SUPPORTED(Machine) (FALSE) + +#define EFI_IMAGE_NT_OPTIONAL_HDR_MAGIC EFI_IMAGE_NT_OPTIONAL_HDR64_MAGIC +typedef EFI_IMAGE_OPTIONAL_HEADER64 EFI_IMAGE_OPTIONAL_HEADER; +typedef EFI_IMAGE_NT_HEADERS64 EFI_IMAGE_NT_HEADERS; + +#endif diff --git a/EdkCompatibilityPkg/Foundation/Include/Aarch64/TianoBind.h b/EdkCompatibilityPkg/Foundation/Include/Aarch64/TianoBind.h new file mode 100644 index 0000000000..f669928312 --- /dev/null +++ b/EdkCompatibilityPkg/Foundation/Include/Aarch64/TianoBind.h @@ -0,0 +1,32 @@ +/** @file + + Copyright (c) 2013, ARM Ltd. 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: + + TianoBind.h + +Abstract: + + Tiano's Processor or Compiler specific defines and types for AArch64 + besides EfiBind.h. + +--*/ + +#ifndef _TIANO_BIND_H_ +#define _TIANO_BIND_H_ + +#include + +#define EFI_DXE_ENTRY_POINT(InitFunction) +#define EFI_SMI_HANDLER_ENTRY_POINT(InitFunction) + +#endif diff --git a/EdkCompatibilityPkg/Foundation/Library/Dxe/Include/AArch64/ProcDep.h b/EdkCompatibilityPkg/Foundation/Library/Dxe/Include/AArch64/ProcDep.h deleted file mode 100644 index bd9b6cde1c..0000000000 --- a/EdkCompatibilityPkg/Foundation/Library/Dxe/Include/AArch64/ProcDep.h +++ /dev/null @@ -1,26 +0,0 @@ -/** @file - - Copyright (c) 2013, ARM Ltd. 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: - - ProcDep.h - -Abstract: - - AArch64 specific Runtime Lib code. At this time there is none. - ---*/ - -#ifndef _PROC_DEP_H_ -#define _PROC_DEP_H_ - -#endif diff --git a/EdkCompatibilityPkg/Foundation/Library/Dxe/Include/Aarch64/ProcDep.h b/EdkCompatibilityPkg/Foundation/Library/Dxe/Include/Aarch64/ProcDep.h new file mode 100644 index 0000000000..bd9b6cde1c --- /dev/null +++ b/EdkCompatibilityPkg/Foundation/Library/Dxe/Include/Aarch64/ProcDep.h @@ -0,0 +1,26 @@ +/** @file + + Copyright (c) 2013, ARM Ltd. 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: + + ProcDep.h + +Abstract: + + AArch64 specific Runtime Lib code. At this time there is none. + +--*/ + +#ifndef _PROC_DEP_H_ +#define _PROC_DEP_H_ + +#endif diff --git a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/AArch64/PerformancePrimitives.c b/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/AArch64/PerformancePrimitives.c deleted file mode 100644 index 9f820650bb..0000000000 --- a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/AArch64/PerformancePrimitives.c +++ /dev/null @@ -1,48 +0,0 @@ -/** @file - - Copyright (c) 2013, ARM Ltd. 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: - - PerformancePrimitives.c - -Abstract: - - Support for Performance library - ---*/ - -#include "TianoCommon.h" - -EFI_STATUS -GetTimerValue ( - OUT UINT64 *TimerValue - ) -/*++ - -Routine Description: - - Get timer value. - -Arguments: - - TimerValue - Pointer to the returned timer value - -Returns: - - EFI_SUCCESS - Successfully got timer value - ---*/ -{ - // CPU does not have a timer for AArch64 ... - ASSERT (FALSE); - return EFI_SUCCESS; -} diff --git a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Aarch64/PerformancePrimitives.c b/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Aarch64/PerformancePrimitives.c new file mode 100644 index 0000000000..9f820650bb --- /dev/null +++ b/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Aarch64/PerformancePrimitives.c @@ -0,0 +1,48 @@ +/** @file + + Copyright (c) 2013, ARM Ltd. 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: + + PerformancePrimitives.c + +Abstract: + + Support for Performance library + +--*/ + +#include "TianoCommon.h" + +EFI_STATUS +GetTimerValue ( + OUT UINT64 *TimerValue + ) +/*++ + +Routine Description: + + Get timer value. + +Arguments: + + TimerValue - Pointer to the returned timer value + +Returns: + + EFI_SUCCESS - Successfully got timer value + +--*/ +{ + // CPU does not have a timer for AArch64 ... + ASSERT (FALSE); + return EFI_SUCCESS; +} -- cgit v1.2.3