From fbaf24c8c4259098ba2b8a5efa3e7aa705c68753 Mon Sep 17 00:00:00 2001
From: Olivier Martin <olivier.martin@arm.com>
Date: Mon, 2 Sep 2013 14:55:52 +0100
Subject: [PATCH] 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 <olivier.martin@arm.com>
---
 .../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

diff --git a/EdkCompatibilityPkg/Foundation/Include/AArch64/EfiBind.h b/EdkCompatibilityPkg/Foundation/Include/AArch64/EfiBind.h
deleted file mode 100644
index f8db906..0000000
--- a/EdkCompatibilityPkg/Foundation/Include/AArch64/EfiBind.h
+++ /dev/null
@@ -1,143 +0,0 @@
-/** @file
-
-  Copyright (c) 2013, ARM Ltd. All rights reserved.<BR>
-
-  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 bb5df54..0000000
--- a/EdkCompatibilityPkg/Foundation/Include/AArch64/EfiPeOptionalHeader.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/** @file
-
-  Copyright (c) 2013, ARM Ltd. All rights reserved.<BR>
-
-  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 f669928..0000000
--- a/EdkCompatibilityPkg/Foundation/Include/AArch64/TianoBind.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/** @file
-
-  Copyright (c) 2013, ARM Ltd. All rights reserved.<BR>
-
-  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 <EfiBind.h>
-
-#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 0000000..f8db906
--- /dev/null
+++ b/EdkCompatibilityPkg/Foundation/Include/Aarch64/EfiBind.h
@@ -0,0 +1,143 @@
+/** @file
+
+  Copyright (c) 2013, ARM Ltd. All rights reserved.<BR>
+
+  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 0000000..bb5df54
--- /dev/null
+++ b/EdkCompatibilityPkg/Foundation/Include/Aarch64/EfiPeOptionalHeader.h
@@ -0,0 +1,39 @@
+/** @file
+
+  Copyright (c) 2013, ARM Ltd. All rights reserved.<BR>
+
+  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 0000000..f669928
--- /dev/null
+++ b/EdkCompatibilityPkg/Foundation/Include/Aarch64/TianoBind.h
@@ -0,0 +1,32 @@
+/** @file
+
+  Copyright (c) 2013, ARM Ltd. All rights reserved.<BR>
+
+  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 <EfiBind.h>
+
+#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 bd9b6cd..0000000
--- a/EdkCompatibilityPkg/Foundation/Library/Dxe/Include/AArch64/ProcDep.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/** @file
-
-  Copyright (c) 2013, ARM Ltd. All rights reserved.<BR>
-
-  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 0000000..bd9b6cd
--- /dev/null
+++ b/EdkCompatibilityPkg/Foundation/Library/Dxe/Include/Aarch64/ProcDep.h
@@ -0,0 +1,26 @@
+/** @file
+
+  Copyright (c) 2013, ARM Ltd. All rights reserved.<BR>
+
+  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 9f82065..0000000
--- a/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/AArch64/PerformancePrimitives.c
+++ /dev/null
@@ -1,48 +0,0 @@
-/** @file
-
-  Copyright (c) 2013, ARM Ltd. All rights reserved.<BR>
-
-  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 0000000..9f82065
--- /dev/null
+++ b/EdkCompatibilityPkg/Foundation/Library/Pei/PeiLib/Aarch64/PerformancePrimitives.c
@@ -0,0 +1,48 @@
+/** @file
+
+  Copyright (c) 2013, ARM Ltd. All rights reserved.<BR>
+
+  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;
+}
-- 
1.7.0.4

