AMD only supports "syscall" from 32-bit compat usermode. Intel and Centaur(?) only support "sysenter" from 32-bit compat usermode. Set the X86 feature bits accordingly, and set up the vdso in accordance with those bits. On the offchance we run on in a 64-bit environment which supports neither syscall nor sysenter from 32-bit mode, then fall back to the int $0x80 vdso. Signed-off-by: Jeremy Fitzhardinge <jeremy.fitzhardinge@citrix.com> Signed-off-by: H. Peter Anvin <hpa@zytor.com>
		
			
				
	
	
		
			22 lines
		
	
	
	
		
			473 B
			
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			22 lines
		
	
	
	
		
			473 B
			
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
#include <linux/init.h>
 | 
						|
 | 
						|
__INITDATA
 | 
						|
 | 
						|
	.globl vdso32_int80_start, vdso32_int80_end
 | 
						|
vdso32_int80_start:
 | 
						|
	.incbin "arch/x86/vdso/vdso32-int80.so"
 | 
						|
vdso32_int80_end:
 | 
						|
 | 
						|
	.globl vdso32_syscall_start, vdso32_syscall_end
 | 
						|
vdso32_syscall_start:
 | 
						|
#ifdef CONFIG_COMPAT
 | 
						|
	.incbin "arch/x86/vdso/vdso32-syscall.so"
 | 
						|
#endif
 | 
						|
vdso32_syscall_end:
 | 
						|
 | 
						|
	.globl vdso32_sysenter_start, vdso32_sysenter_end
 | 
						|
vdso32_sysenter_start:
 | 
						|
	.incbin "arch/x86/vdso/vdso32-sysenter.so"
 | 
						|
vdso32_sysenter_end:
 | 
						|
 | 
						|
__FINIT
 |