mirror of
				https://git.kernel.org/pub/scm/linux/kernel/git/chenhuacai/linux-loongson
				synced 2025-10-31 14:06:03 +00:00 
			
		
		
		
	 e28cbf2293
			
		
	
	
		e28cbf2293
		
	
	
	
	
		
			
			On an architecture that supports 32-bit compat we need to override the reported machine in uname with the 32-bit value. Instead of doing this separately in every architecture introduce a COMPAT_UTS_MACHINE define in <asm/compat.h> and apply it directly in sys_newuname(). Signed-off-by: Christoph Hellwig <hch@lst.de> Cc: Ralf Baechle <ralf@linux-mips.org> Cc: Benjamin Herrenschmidt <benh@kernel.crashing.org> Cc: Paul Mundt <lethal@linux-sh.org> Cc: Jeff Dike <jdike@addtoit.com> Cc: Hirokazu Takata <takata@linux-m32r.org> Cc: Thomas Gleixner <tglx@linutronix.de> Cc: Ingo Molnar <mingo@elte.hu> Cc: H. Peter Anvin <hpa@zytor.com> Cc: Al Viro <viro@zeniv.linux.org.uk> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Heiko Carstens <heiko.carstens@de.ibm.com> Cc: Martin Schwidefsky <schwidefsky@de.ibm.com> Cc: "Luck, Tony" <tony.luck@intel.com> Cc: James Morris <jmorris@namei.org> Cc: Andreas Schwab <schwab@linux-m68k.org> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
		
			
				
	
	
		
			66 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * System call table for UML/x86-64, copied from arch/x86_64/kernel/syscall.c
 | |
|  * with some changes for UML.
 | |
|  */
 | |
| 
 | |
| #include <linux/linkage.h>
 | |
| #include <linux/sys.h>
 | |
| #include <linux/cache.h>
 | |
| #include <kern_constants.h>
 | |
| 
 | |
| #define __NO_STUBS
 | |
| 
 | |
| /*
 | |
|  * Below you can see, in terms of #define's, the differences between the x86-64
 | |
|  * and the UML syscall table.
 | |
|  */
 | |
| 
 | |
| /* Not going to be implemented by UML, since we have no hardware. */
 | |
| #define stub_iopl sys_ni_syscall
 | |
| #define sys_ioperm sys_ni_syscall
 | |
| 
 | |
| /*
 | |
|  * The UML TLS problem. Note that x86_64 does not implement this, so the below
 | |
|  * is needed only for the ia32 compatibility.
 | |
|  */
 | |
| 
 | |
| /* On UML we call it this way ("old" means it's not mmap2) */
 | |
| #define sys_mmap old_mmap
 | |
| 
 | |
| #define stub_clone sys_clone
 | |
| #define stub_fork sys_fork
 | |
| #define stub_vfork sys_vfork
 | |
| #define stub_execve sys_execve
 | |
| #define stub_rt_sigsuspend sys_rt_sigsuspend
 | |
| #define stub_sigaltstack sys_sigaltstack
 | |
| #define stub_rt_sigreturn sys_rt_sigreturn
 | |
| 
 | |
| #define __SYSCALL(nr, sym) extern asmlinkage void sym(void) ;
 | |
| #undef _ASM_X86_UNISTD_64_H
 | |
| #include "../../x86/include/asm/unistd_64.h"
 | |
| 
 | |
| #undef __SYSCALL
 | |
| #define __SYSCALL(nr, sym) [ nr ] = sym,
 | |
| #undef _ASM_X86_UNISTD_64_H
 | |
| 
 | |
| typedef void (*sys_call_ptr_t)(void);
 | |
| 
 | |
| extern void sys_ni_syscall(void);
 | |
| 
 | |
| /*
 | |
|  * We used to have a trick here which made sure that holes in the
 | |
|  * x86_64 table were filled in with sys_ni_syscall, but a comment in
 | |
|  * unistd_64.h says that holes aren't allowed, so the trick was
 | |
|  * removed.
 | |
|  * The trick looked like this
 | |
|  *	[0 ... UM_NR_syscall_max] = &sys_ni_syscall
 | |
|  * before including unistd_64.h - the later initializations overwrote
 | |
|  * the sys_ni_syscall filler.
 | |
|  */
 | |
| 
 | |
| sys_call_ptr_t sys_call_table[] __cacheline_aligned = {
 | |
| #include "../../x86/include/asm/unistd_64.h"
 | |
| };
 | |
| 
 | |
| int syscall_table_size = sizeof(sys_call_table);
 |