mirror of
				https://source.denx.de/u-boot/u-boot.git
				synced 2025-10-31 00:11:51 +01:00 
			
		
		
		
	Changes the el2_to_aarch32 SMC ID from 0xc000ff04 to 0xc200ff17, it is applicable to both TFA and non-TFA boot. Signed-off-by: Rajesh Bhagat <rajesh.bhagat@nxp.com> Reviewed-by: York Sun <york.sun@nxp.com>
		
			
				
	
	
		
			76 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			76 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0+ */
 | |
| /*
 | |
|  * Copyright 2016 NXP Semiconductor, Inc.
 | |
|  */
 | |
| 
 | |
| #include <config.h>
 | |
| #include <linux/linkage.h>
 | |
| #include <asm/system.h>
 | |
| #include <asm/macro.h>
 | |
| 
 | |
| WEAK(_sec_firmware_entry)
 | |
| 	/*
 | |
| 	 * x0: Secure Firmware entry point
 | |
| 	 * x1: Exception return address Low
 | |
| 	 * x2: Exception return address High
 | |
| 	 */
 | |
| 
 | |
| 	/* Save stack pointer for EL2 */
 | |
| 	mov	x3, sp
 | |
| 	msr	sp_el2, x3
 | |
| 
 | |
| 	/* Set exception return address hold pointer */
 | |
|         adr	x4, 1f
 | |
|         mov	x3, x4
 | |
| #ifdef CONFIG_ARMV8_SEC_FIRMWARE_ERET_ADDR_REVERT
 | |
|         rev	w3, w3
 | |
| #endif
 | |
|         str	w3, [x1]
 | |
|         lsr	x3, x4, #32
 | |
| #ifdef CONFIG_ARMV8_SEC_FIRMWARE_ERET_ADDR_REVERT
 | |
|         rev	w3, w3
 | |
| #endif
 | |
|         str	w3, [x2]
 | |
| 
 | |
| 	/* Call SEC monitor */
 | |
|         br	x0
 | |
| 
 | |
| 1:
 | |
|         mov	x0, #0
 | |
|         ret
 | |
| ENDPROC(_sec_firmware_entry)
 | |
| 
 | |
| #ifdef CONFIG_SEC_FIRMWARE_ARMV8_PSCI
 | |
| ENTRY(_sec_firmware_support_psci_version)
 | |
| 	mov	x0, 0x84000000
 | |
| 	mov	x1, 0x0
 | |
| 	mov	x2, 0x0
 | |
| 	mov	x3, 0x0
 | |
| 	smc	#0
 | |
| 	ret
 | |
| ENDPROC(_sec_firmware_support_psci_version)
 | |
| 
 | |
| /*
 | |
|  * Switch from AArch64 EL2 to AArch32 EL2
 | |
|  * @param inputs:
 | |
|  * x0: argument, zero
 | |
|  * x1: machine nr
 | |
|  * x2: fdt address
 | |
|  * x3: input argument
 | |
|  * x4: kernel entry point
 | |
|  * @param outputs for secure firmware:
 | |
|  * x0: function id
 | |
|  * x1: kernel entry point
 | |
|  * x2: machine nr
 | |
|  * x3: fdt address
 | |
| */
 | |
| ENTRY(armv8_el2_to_aarch32)
 | |
| 	mov	x3, x2
 | |
| 	mov	x2, x1
 | |
| 	mov	x1, x4
 | |
| 	ldr	x0, =0xc200ff17
 | |
| 	smc	#0
 | |
| 	ret
 | |
| ENDPROC(armv8_el2_to_aarch32)
 | |
| #endif
 |