To make it possible to disable kuser helpers in aarch32 we need to divide the kuser and the sigreturn functionalities. Split the current version of kuser32 in kuser32 (for kuser helpers) and sigreturn32 (for sigreturn helpers). Cc: Catalin Marinas <catalin.marinas@arm.com> Cc: Will Deacon <will.deacon@arm.com> Signed-off-by: Vincenzo Frascino <vincenzo.frascino@arm.com> Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> Signed-off-by: Will Deacon <will.deacon@arm.com>
		
			
				
	
	
		
			47 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			47 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0 */
 | |
| /*
 | |
|  * AArch32 sigreturn code.
 | |
|  * Based on the kuser helpers in arch/arm/kernel/entry-armv.S.
 | |
|  *
 | |
|  * Copyright (C) 2005-2011 Nicolas Pitre <nico@fluxnic.net>
 | |
|  * Copyright (C) 2012-2018 ARM Ltd.
 | |
|  *
 | |
|  * For ARM syscalls, the syscall number has to be loaded into r7.
 | |
|  * We do not support an OABI userspace.
 | |
|  *
 | |
|  * For Thumb syscalls, we also pass the syscall number via r7. We therefore
 | |
|  * need two 16-bit instructions.
 | |
|  */
 | |
| 
 | |
| #include <asm/unistd.h>
 | |
| 
 | |
| 	.globl __aarch32_sigret_code_start
 | |
| __aarch32_sigret_code_start:
 | |
| 
 | |
| 	/*
 | |
| 	 * ARM Code
 | |
| 	 */
 | |
| 	.byte	__NR_compat_sigreturn, 0x70, 0xa0, 0xe3		// mov	r7, #__NR_compat_sigreturn
 | |
| 	.byte	__NR_compat_sigreturn, 0x00, 0x00, 0xef		// svc	#__NR_compat_sigreturn
 | |
| 
 | |
| 	/*
 | |
| 	 * Thumb code
 | |
| 	 */
 | |
| 	.byte	__NR_compat_sigreturn, 0x27			// svc	#__NR_compat_sigreturn
 | |
| 	.byte	__NR_compat_sigreturn, 0xdf			// mov	r7, #__NR_compat_sigreturn
 | |
| 
 | |
| 	/*
 | |
| 	 * ARM code
 | |
| 	 */
 | |
| 	.byte	__NR_compat_rt_sigreturn, 0x70, 0xa0, 0xe3	// mov	r7, #__NR_compat_rt_sigreturn
 | |
| 	.byte	__NR_compat_rt_sigreturn, 0x00, 0x00, 0xef	// svc	#__NR_compat_rt_sigreturn
 | |
| 
 | |
| 	/*
 | |
| 	 * Thumb code
 | |
| 	 */
 | |
| 	.byte	__NR_compat_rt_sigreturn, 0x27			// svc	#__NR_compat_rt_sigreturn
 | |
| 	.byte	__NR_compat_rt_sigreturn, 0xdf			// mov	r7, #__NR_compat_rt_sigreturn
 | |
| 
 | |
|         .globl __aarch32_sigret_code_end
 | |
| __aarch32_sigret_code_end:
 |