mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-09-04 20:19:47 +08:00 
			
		
		
		
	 35b51afd23
			
		
	
	
		35b51afd23
		
	
	
	
	
		
			
			* Support for the Svpbmt extension, which allows memory attributes to be encoded in pages. * Support for the Allwinner D1's implementation of page-based memory attributes. * Support for running rv32 binaries on rv64 systems, via the compat subsystem. * Support for kexec_file(). * Support for the new generic ticket-based spinlocks, which allows us to also move to qrwlock. These should have already gone in through the asm-geneic tree as well. * A handful of cleanups and fixes, include some larger ones around atomics and XIP. -----BEGIN PGP SIGNATURE----- iQJHBAABCAAxFiEEKzw3R0RoQ7JKlDp6LhMZ81+7GIkFAmKWOx8THHBhbG1lckBk YWJiZWx0LmNvbQAKCRAuExnzX7sYieAiEADAUdP7ctoaSQwk5skd/fdA3b4KJuKn 1Zjl+Br32WP0DlbirYBYWRUQZnCCsvABbTiwSJMcG7NBpU5pyQ5XDtB3OA5kJswO Fdp8Nd53//+GK1M5zdEM9OdgvT9fbfTZ3qTu8bKsROOQhGwnYL+Csc9KjFRqEmzN oQii0jlb3n5PM4FL3GsbV4uMn9zzkP9mnVAPQktcock2EKFEK/Fy3uNYMQiO2KPi n8O6bIDaeRdQ6SurzWOuOkt0cro0tEF85ilzT04mynQsOU0el5oGqCxnOhNH3VWg ndqPT6Yafw12hZOtbKJeP+nF8IIR6aJLP3jOtRwEVgcfbXYAw4QwbAV8kQZISefN ipn8JGY7GX9Y9TYU692OUGkcmAb3/dxb6c0WihBdvJ0M6YyLD5X+YKHNuG2onLgK ss43C5Mxsu629rsjdu/PV91B1+pve3rG9siVmF+g4eo0x9rjMq6/JB0Kal/8SLI1 Je5T55d5ujV1a2XxhZLQOSD5owrK7J1M9owb0bloTnr9nVwFTWDrfEQEU82o3kP+ Xm+FfXktnz9ai55NjkMbbEur5D++dKJhBavwCTnBcTrJmMtEH0R45GTK9ZehP+WC rNVrRXjIsS18wsTfJxnkZeFQA38as6VBKTzvwHvOgzTrrZU1/xk3lpkouYtAO6BG gKacHshVilmUuA== =Loi6 -----END PGP SIGNATURE----- Merge tag 'riscv-for-linus-5.19-mw0' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux Pull RISC-V updates from Palmer Dabbelt: - Support for the Svpbmt extension, which allows memory attributes to be encoded in pages - Support for the Allwinner D1's implementation of page-based memory attributes - Support for running rv32 binaries on rv64 systems, via the compat subsystem - Support for kexec_file() - Support for the new generic ticket-based spinlocks, which allows us to also move to qrwlock. These should have already gone in through the asm-geneic tree as well - A handful of cleanups and fixes, include some larger ones around atomics and XIP * tag 'riscv-for-linus-5.19-mw0' of git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux: (51 commits) RISC-V: Prepare dropping week attribute from arch_kexec_apply_relocations[_add] riscv: compat: Using seperated vdso_maps for compat_vdso_info RISC-V: Fix the XIP build RISC-V: Split out the XIP fixups into their own file RISC-V: ignore xipImage RISC-V: Avoid empty create_*_mapping definitions riscv: Don't output a bogus mmu-type on a no MMU kernel riscv: atomic: Add custom conditional atomic operation implementation riscv: atomic: Optimize dec_if_positive functions riscv: atomic: Cleanup unnecessary definition RISC-V: Load purgatory in kexec_file RISC-V: Add purgatory RISC-V: Support for kexec_file on panic RISC-V: Add kexec_file support RISC-V: use memcpy for kexec_file mode kexec_file: Fix kexec_file.c build error for riscv platform riscv: compat: Add COMPAT Kbuild skeletal support riscv: compat: ptrace: Add compat_arch_ptrace implement riscv: compat: signal: Add rt_frame implementation riscv: add memory-type errata for T-Head ...
		
			
				
	
	
		
			115 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0 */
 | |
| #ifndef _ASM_X86_COMPAT_H
 | |
| #define _ASM_X86_COMPAT_H
 | |
| 
 | |
| /*
 | |
|  * Architecture specific compatibility types
 | |
|  */
 | |
| #include <linux/types.h>
 | |
| #include <linux/sched.h>
 | |
| #include <linux/sched/task_stack.h>
 | |
| #include <asm/processor.h>
 | |
| #include <asm/user32.h>
 | |
| #include <asm/unistd.h>
 | |
| 
 | |
| #define compat_mode_t	compat_mode_t
 | |
| typedef u16		compat_mode_t;
 | |
| 
 | |
| #define __compat_uid_t	__compat_uid_t
 | |
| typedef u16		__compat_uid_t;
 | |
| typedef u16		__compat_gid_t;
 | |
| 
 | |
| #define compat_dev_t	compat_dev_t
 | |
| typedef u16		compat_dev_t;
 | |
| 
 | |
| #define compat_ipc_pid_t compat_ipc_pid_t
 | |
| typedef u16		 compat_ipc_pid_t;
 | |
| 
 | |
| #define compat_statfs	compat_statfs
 | |
| 
 | |
| #include <asm-generic/compat.h>
 | |
| 
 | |
| #define COMPAT_UTS_MACHINE	"i686\0\0"
 | |
| 
 | |
| typedef u16		compat_nlink_t;
 | |
| 
 | |
| struct compat_stat {
 | |
| 	u32		st_dev;
 | |
| 	compat_ino_t	st_ino;
 | |
| 	compat_mode_t	st_mode;
 | |
| 	compat_nlink_t	st_nlink;
 | |
| 	__compat_uid_t	st_uid;
 | |
| 	__compat_gid_t	st_gid;
 | |
| 	u32		st_rdev;
 | |
| 	u32		st_size;
 | |
| 	u32		st_blksize;
 | |
| 	u32		st_blocks;
 | |
| 	u32		st_atime;
 | |
| 	u32		st_atime_nsec;
 | |
| 	u32		st_mtime;
 | |
| 	u32		st_mtime_nsec;
 | |
| 	u32		st_ctime;
 | |
| 	u32		st_ctime_nsec;
 | |
| 	u32		__unused4;
 | |
| 	u32		__unused5;
 | |
| };
 | |
| 
 | |
| /*
 | |
|  * IA32 uses 4 byte alignment for 64 bit quantities, so we need to pack the
 | |
|  * compat flock64 structure.
 | |
|  */
 | |
| #define __ARCH_NEED_COMPAT_FLOCK64_PACKED
 | |
| 
 | |
| struct compat_statfs {
 | |
| 	int		f_type;
 | |
| 	int		f_bsize;
 | |
| 	int		f_blocks;
 | |
| 	int		f_bfree;
 | |
| 	int		f_bavail;
 | |
| 	int		f_files;
 | |
| 	int		f_ffree;
 | |
| 	compat_fsid_t	f_fsid;
 | |
| 	int		f_namelen;	/* SunOS ignores this field. */
 | |
| 	int		f_frsize;
 | |
| 	int		f_flags;
 | |
| 	int		f_spare[4];
 | |
| };
 | |
| 
 | |
| #ifdef CONFIG_X86_X32_ABI
 | |
| #define COMPAT_USE_64BIT_TIME \
 | |
| 	(!!(task_pt_regs(current)->orig_ax & __X32_SYSCALL_BIT))
 | |
| #endif
 | |
| 
 | |
| static inline bool in_x32_syscall(void)
 | |
| {
 | |
| #ifdef CONFIG_X86_X32_ABI
 | |
| 	if (task_pt_regs(current)->orig_ax & __X32_SYSCALL_BIT)
 | |
| 		return true;
 | |
| #endif
 | |
| 	return false;
 | |
| }
 | |
| 
 | |
| static inline bool in_32bit_syscall(void)
 | |
| {
 | |
| 	return in_ia32_syscall() || in_x32_syscall();
 | |
| }
 | |
| 
 | |
| #ifdef CONFIG_COMPAT
 | |
| static inline bool in_compat_syscall(void)
 | |
| {
 | |
| 	return in_32bit_syscall();
 | |
| }
 | |
| #define in_compat_syscall in_compat_syscall	/* override the generic impl */
 | |
| #define compat_need_64bit_alignment_fixup in_ia32_syscall
 | |
| #endif
 | |
| 
 | |
| struct compat_siginfo;
 | |
| 
 | |
| #ifdef CONFIG_X86_X32_ABI
 | |
| int copy_siginfo_to_user32(struct compat_siginfo __user *to,
 | |
| 		const kernel_siginfo_t *from);
 | |
| #define copy_siginfo_to_user32 copy_siginfo_to_user32
 | |
| #endif /* CONFIG_X86_X32_ABI */
 | |
| 
 | |
| #endif /* _ASM_X86_COMPAT_H */
 |