https://bugzilla.tianocore.org/show_bug.cgi?id=1373 Replace BSD 2-Clause License with BSD+Patent License. This change is based on the following emails: https://lists.01.org/pipermail/edk2-devel/2019-February/036260.html https://lists.01.org/pipermail/edk2-devel/2018-October/030385.html RFCs with detailed process for the license change: V3: https://lists.01.org/pipermail/edk2-devel/2019-March/038116.html V2: https://lists.01.org/pipermail/edk2-devel/2019-March/037669.html V1: https://lists.01.org/pipermail/edk2-devel/2019-March/037500.html Contributed-under: TianoCore Contribution Agreement 1.1 Signed-off-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Leif Lindholm <leif.lindholm@linaro.org>
		
			
				
	
	
		
			43 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| #========================================================================================
 | |
| #  Copyright (c) 2011-2017, ARM Limited. All rights reserved.
 | |
| #
 | |
| #  SPDX-License-Identifier: BSD-2-Clause-Patent
 | |
| #
 | |
| #=======================================================================================
 | |
| 
 | |
| #include <AsmMacroIoLibV8.h>
 | |
| #include <Chipset/AArch64.h>
 | |
| 
 | |
| // Setup EL1 while in EL1
 | |
| ASM_FUNC(SetupExceptionLevel1)
 | |
|    mov  x5, x30                   // Save LR
 | |
| 
 | |
|    mov  x0, #CPACR_CP_FULL_ACCESS
 | |
|    bl   ASM_PFX(ArmWriteCpacr)    // Disable copro traps to EL1
 | |
| 
 | |
|    ret  x5
 | |
| 
 | |
| // Setup EL2 while in EL2
 | |
| ASM_FUNC(SetupExceptionLevel2)
 | |
|    msr     sctlr_el2, xzr
 | |
|    mrs     x0, hcr_el2            // Read EL2 Hypervisor configuration Register
 | |
| 
 | |
|    // Send all interrupts to their respective Exception levels for EL2
 | |
|    orr     x0, x0, #(1 << 3)      // Enable EL2 FIQ
 | |
|    orr     x0, x0, #(1 << 4)      // Enable EL2 IRQ
 | |
|    orr     x0, x0, #(1 << 5)      // Enable EL2 SError and Abort
 | |
|    msr     hcr_el2, x0            // Write back our settings
 | |
| 
 | |
|    msr     cptr_el2, xzr          // Disable copro traps to EL2
 | |
| 
 | |
|    // Enable Timer access for non-secure EL1 and EL0
 | |
|    // The cnthctl_el2 register bits are architecturally
 | |
|    // UNKNOWN on reset.
 | |
|    // Disable event stream as it is not in use at this stage
 | |
|    mov     x0, #(CNTHCTL_EL2_EL1PCTEN | CNTHCTL_EL2_EL1PCEN)
 | |
|    msr     cnthctl_el2, x0
 | |
| 
 | |
|    ret
 | |
| 
 | |
| ASM_FUNCTION_REMOVE_IF_UNREFERENCED
 |