1 /** @file
2 *  Main file supporting the SEC Phase on ARM PLatforms
3 *
4 *  Copyright (c) 2011-2013, ARM Limited. All rights reserved.
5 *
6 *  This program and the accompanying materials
7 *  are licensed and made available under the terms and conditions of the BSD License
8 *  which accompanies this distribution.  The full text of the license may be found at
9 *  http://opensource.org/licenses/bsd-license.php
10 *
11 *  THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
12 *  WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
13 *
14 **/
15 
16 #ifndef __SEC_H__
17 #define __SEC_H__
18 
19 #include <Base.h>
20 #include <Library/ArmLib.h>
21 #include <Library/ArmCpuLib.h>
22 #include <Library/ArmPlatformLib.h>
23 #include <Library/ArmPlatformSecLib.h>
24 #include <Library/BaseLib.h>
25 #include <Library/DebugLib.h>
26 #include <Library/PcdLib.h>
27 
28 #define IS_ALIGNED(Address, Align) (((UINTN)Address & (Align-1)) == 0)
29 
30 VOID
31 TrustedWorldInitialization (
32   IN  UINTN                     MpId,
33   IN  UINTN                     SecBootMode
34   );
35 
36 VOID
37 NonTrustedWorldTransition (
38   IN  UINTN                     MpId,
39   IN  UINTN                     JumpAddress
40   );
41 
42 VOID
43 ArmSetupGicNonSecure (
44   IN  INTN                  GicDistributorBase,
45   IN  INTN                  GicInterruptInterfaceBase
46 );
47 
48 VOID
49 enter_monitor_mode (
50   IN UINTN                  MonitorEntryPoint,
51   IN UINTN                  MpId,
52   IN UINTN                  SecBootMode,
53   IN VOID*                  MonitorStackBase
54   );
55 
56 VOID
57 return_from_exception (
58   IN UINTN                  NonSecureBase
59   );
60 
61 VOID
62 copy_cpsr_into_spsr (
63   VOID
64   );
65 
66 VOID
67 set_non_secure_mode (
68   IN ARM_PROCESSOR_MODE     Mode
69   );
70 
71 VOID
72 SecCommonExceptionEntry (
73   IN UINT32 Entry,
74   IN UINTN  LR
75   );
76 
77 VOID
78 EFIAPI
79 ArmSecArchTrustzoneInit (
80   VOID
81   );
82 
83 #endif
84