hikey: Add UEFI sources for reference

UEFI needs to be built outside Android build system.
Please follow the instructions in README.

The sources correspond to:
https://github.com/96boards/edk2/commit/14eae0c12e71fd33c4c0fc51e4475e8db02566cf
https://github.com/96boards/arm-trusted-firmware/commit/e9b4909dcd75fc4ae7041cfb83d28ab9adb7afdf
https://github.com/96boards/l-loader/commit/6b784ad5c4ab00e2b1c6f53cd5f74054e5d00a78
https://git.linaro.org/uefi/uefi-tools.git/commit/abe618f8ab72034fff1ce46c9c006a2c6bd40a7e

Change-Id: Ieeefdb63e673e0c8e64e0a1f02c7bddc63b2c7fb
Signed-off-by: Vishal Bhoj <vishal.bhoj@linaro.org>
diff --git a/uefi/linaro-edk2/MdeModulePkg/Include/Library/CpuExceptionHandlerLib.h b/uefi/linaro-edk2/MdeModulePkg/Include/Library/CpuExceptionHandlerLib.h
new file mode 100644
index 0000000..b3016ee
--- /dev/null
+++ b/uefi/linaro-edk2/MdeModulePkg/Include/Library/CpuExceptionHandlerLib.h
@@ -0,0 +1,96 @@
+/** @file

+  CPU Exception library provides the default CPU interrupt/exception handler.

+  It also provides capability to register user interrupt/exception handler.

+

+  Copyright (c) 2012 - 2013, Intel Corporation. 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.

+

+**/

+

+#ifndef __CPU_EXCEPTION_HANDLER_LIB_H__

+#define __CPU_EXCEPTION_HANDLER_LIB_H__

+

+#include <Ppi/VectorHandoffInfo.h>

+#include <Protocol/Cpu.h>

+

+/**

+  Initializes all CPU exceptions entries and provides the default exception handlers.

+  

+  Caller should try to get an array of interrupt and/or exception vectors that are in use and need to

+  persist by EFI_VECTOR_HANDOFF_INFO defined in PI 1.3 specification.

+  If caller cannot get reserved vector list or it does not exists, set VectorInfo to NULL. 

+  If VectorInfo is not NULL, the exception vectors will be initialized per vector attribute accordingly.

+

+  @param[in]  VectorInfo    Pointer to reserved vector list.

+  

+  @retval EFI_SUCCESS           CPU Exception Entries have been successfully initialized 

+                                with default exception handlers.

+  @retval EFI_INVALID_PARAMETER VectorInfo includes the invalid content if VectorInfo is not NULL.

+  @retval EFI_UNSUPPORTED       This function is not supported.

+

+**/

+EFI_STATUS

+EFIAPI

+InitializeCpuExceptionHandlers (

+  IN EFI_VECTOR_HANDOFF_INFO       *VectorInfo OPTIONAL

+  );

+

+/**

+  Initializes all CPU interrupt/exceptions entries and provides the default interrupt/exception handlers.

+  

+  Caller should try to get an array of interrupt and/or exception vectors that are in use and need to

+  persist by EFI_VECTOR_HANDOFF_INFO defined in PI 1.3 specification.

+  If caller cannot get reserved vector list or it does not exists, set VectorInfo to NULL. 

+  If VectorInfo is not NULL, the exception vectors will be initialized per vector attribute accordingly.

+

+  @param[in]  VectorInfo    Pointer to reserved vector list.

+  

+  @retval EFI_SUCCESS           All CPU interrupt/exception entries have been successfully initialized 

+                                with default interrupt/exception handlers.

+  @retval EFI_INVALID_PARAMETER VectorInfo includes the invalid content if VectorInfo is not NULL.

+  @retval EFI_UNSUPPORTED       This function is not supported.

+

+**/

+EFI_STATUS

+EFIAPI

+InitializeCpuInterruptHandlers (

+  IN EFI_VECTOR_HANDOFF_INFO       *VectorInfo OPTIONAL

+  );

+

+/**

+  Registers a function to be called from the processor interrupt handler.

+

+  This function registers and enables the handler specified by InterruptHandler for a processor 

+  interrupt or exception type specified by InterruptType. If InterruptHandler is NULL, then the 

+  handler for the processor interrupt or exception type specified by InterruptType is uninstalled. 

+  The installed handler is called once for each processor interrupt or exception.

+  NOTE: This function should be invoked after InitializeCpuExceptionHandlers() or

+  InitializeCpuInterruptHandlers() invoked, otherwise EFI_UNSUPPORTED returned.

+

+  @param[in]  InterruptType     Defines which interrupt or exception to hook.

+  @param[in]  InterruptHandler  A pointer to a function of type EFI_CPU_INTERRUPT_HANDLER that is called

+                                when a processor interrupt occurs. If this parameter is NULL, then the handler

+                                will be uninstalled.

+

+  @retval EFI_SUCCESS           The handler for the processor interrupt was successfully installed or uninstalled.

+  @retval EFI_ALREADY_STARTED   InterruptHandler is not NULL, and a handler for InterruptType was

+                                previously installed.

+  @retval EFI_INVALID_PARAMETER InterruptHandler is NULL, and a handler for InterruptType was not

+                                previously installed.

+  @retval EFI_UNSUPPORTED       The interrupt specified by InterruptType is not supported,

+                                or this function is not supported.

+**/

+EFI_STATUS

+EFIAPI

+RegisterCpuInterruptHandler (

+  IN EFI_EXCEPTION_TYPE            InterruptType,

+  IN EFI_CPU_INTERRUPT_HANDLER     InterruptHandler

+  );

+

+#endif