1 /** @file
2 *
3 *  Copyright (c) 2011-2013, ARM Limited. All rights reserved.
4 *
5 *  This program and the accompanying materials
6 *  are licensed and made available under the terms and conditions of the BSD License
7 *  which accompanies this distribution.  The full text of the license may be found at
8 *  http://opensource.org/licenses/bsd-license.php
9 *
10 *  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11 *  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12 *
13 **/
14 
15 #include "PrePi.h"
16 
17 #include <Chipset/AArch64.h>
18 
19 VOID
ArchInitialize(VOID)20 ArchInitialize (
21   VOID
22   )
23 {
24   // Enable Floating Point
25   if (FixedPcdGet32 (PcdVFPEnabled)) {
26     ArmEnableVFP ();
27   }
28 
29   if (ArmReadCurrentEL () == AARCH64_EL2) {
30     // Trap General Exceptions. All exceptions that would be routed to EL1 are routed to EL2
31     ArmWriteHcr (ARM_HCR_TGE);
32   }
33 }
34