mirror of
				https://source.denx.de/u-boot/u-boot.git
				synced 2025-10-31 08:21:36 +01:00 
			
		
		
		
	Adjust ARM SMC Calling Convention code for U-Boot: - Replace the license block with SPDX - Change path to asm-offsets.h - Define UNWIND() as no-op - Add Kconfig entry - Add asm-offsets Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
		
			
				
	
	
		
			45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| /*
 | |
|  * Copyright (c) 2015, Linaro Limited
 | |
|  *
 | |
|  * SPDX-License-Identifier:	GPL-2.0
 | |
|  */
 | |
| #include <linux/linkage.h>
 | |
| #include <linux/arm-smccc.h>
 | |
| #include <generated/asm-offsets.h>
 | |
| 
 | |
| 	.macro SMCCC instr
 | |
| 	.cfi_startproc
 | |
| 	\instr	#0
 | |
| 	ldr	x4, [sp]
 | |
| 	stp	x0, x1, [x4, #ARM_SMCCC_RES_X0_OFFS]
 | |
| 	stp	x2, x3, [x4, #ARM_SMCCC_RES_X2_OFFS]
 | |
| 	ldr	x4, [sp, #8]
 | |
| 	cbz	x4, 1f /* no quirk structure */
 | |
| 	ldr	x9, [x4, #ARM_SMCCC_QUIRK_ID_OFFS]
 | |
| 	cmp	x9, #ARM_SMCCC_QUIRK_QCOM_A6
 | |
| 	b.ne	1f
 | |
| 	str	x6, [x4, ARM_SMCCC_QUIRK_STATE_OFFS]
 | |
| 1:	ret
 | |
| 	.cfi_endproc
 | |
| 	.endm
 | |
| 
 | |
| /*
 | |
|  * void arm_smccc_smc(unsigned long a0, unsigned long a1, unsigned long a2,
 | |
|  *		  unsigned long a3, unsigned long a4, unsigned long a5,
 | |
|  *		  unsigned long a6, unsigned long a7, struct arm_smccc_res *res,
 | |
|  *		  struct arm_smccc_quirk *quirk)
 | |
|  */
 | |
| ENTRY(__arm_smccc_smc)
 | |
| 	SMCCC	smc
 | |
| ENDPROC(__arm_smccc_smc)
 | |
| 
 | |
| /*
 | |
|  * void arm_smccc_hvc(unsigned long a0, unsigned long a1, unsigned long a2,
 | |
|  *		  unsigned long a3, unsigned long a4, unsigned long a5,
 | |
|  *		  unsigned long a6, unsigned long a7, struct arm_smccc_res *res,
 | |
|  *		  struct arm_smccc_quirk *quirk)
 | |
|  */
 | |
| ENTRY(__arm_smccc_hvc)
 | |
| 	SMCCC	hvc
 | |
| ENDPROC(__arm_smccc_hvc)
 |