linux-user/sparc: Merge sparc64 target_syscall.h
There are only a few differences in sparc32 vs sparc64. This fixes target_shmlba for sparc32plus, which is v9. Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <20210426025334.1168495-8-richard.henderson@linaro.org> Signed-off-by: Laurent Vivier <laurent@vivier.eu>
This commit is contained in:
		
							parent
							
								
									089a2256ee
								
							
						
					
					
						commit
						2f23eec6bd
					
				| @ -3,18 +3,34 @@ | ||||
| 
 | ||||
| #include "target_errno.h" | ||||
| 
 | ||||
| #if defined(TARGET_SPARC64) && !defined(TARGET_ABI32) | ||||
| struct target_pt_regs { | ||||
| 	abi_ulong psr; | ||||
| 	abi_ulong pc; | ||||
| 	abi_ulong npc; | ||||
| 	abi_ulong y; | ||||
| 	abi_ulong u_regs[16]; | ||||
|     abi_ulong u_regs[16]; | ||||
|     abi_ulong tstate; | ||||
|     abi_ulong pc; | ||||
|     abi_ulong npc; | ||||
|     uint32_t y; | ||||
|     uint32_t magic; | ||||
| }; | ||||
| #else | ||||
| struct target_pt_regs { | ||||
|     abi_ulong psr; | ||||
|     abi_ulong pc; | ||||
|     abi_ulong npc; | ||||
|     abi_ulong y; | ||||
|     abi_ulong u_regs[16]; | ||||
| }; | ||||
| #endif | ||||
| 
 | ||||
| #define UNAME_MACHINE "sparc" | ||||
| #ifdef TARGET_SPARC64 | ||||
| # define UNAME_MACHINE "sparc64" | ||||
| #else | ||||
| # define UNAME_MACHINE "sparc" | ||||
| #endif | ||||
| #define UNAME_MINIMUM_RELEASE "2.6.32" | ||||
| 
 | ||||
| /* SPARC kernels don't define this in their Kconfig, but they have the
 | ||||
| /*
 | ||||
|  * SPARC kernels don't define this in their Kconfig, but they have the | ||||
|  * same ABI as if they did, implemented by sparc-specific code which fishes | ||||
|  * directly in the u_regs() struct for half the parameters in sparc_do_fork() | ||||
|  * and copy_thread(). | ||||
| @ -25,20 +41,24 @@ struct target_pt_regs { | ||||
| #define TARGET_MCL_FUTURE  0x4000 | ||||
| #define TARGET_MCL_ONFAULT 0x8000 | ||||
| 
 | ||||
| /* For SPARC SHMLBA is determined at runtime in the kernel, and
 | ||||
|  * libc has to runtime-detect it using the hwcaps (see glibc | ||||
|  * sysdeps/unix/sysv/linux/sparc/getshmlba; we follow the same | ||||
|  * logic here, though we know we're not the sparc v9 64-bit case). | ||||
| /*
 | ||||
|  * For SPARC SHMLBA is determined at runtime in the kernel, and | ||||
|  * libc has to runtime-detect it using the hwcaps. | ||||
|  * See glibc sysdeps/unix/sysv/linux/sparc/getshmlba. | ||||
|  */ | ||||
| #define TARGET_FORCE_SHMLBA | ||||
| 
 | ||||
| static inline abi_ulong target_shmlba(CPUSPARCState *env) | ||||
| { | ||||
| #ifdef TARGET_SPARC64 | ||||
|     return MAX(TARGET_PAGE_SIZE, 16 * 1024); | ||||
| #else | ||||
|     if (!(env->def.features & CPU_FEATURE_FLUSH)) { | ||||
|         return 64 * 1024; | ||||
|     } else { | ||||
|         return 256 * 1024; | ||||
|     } | ||||
| #endif | ||||
| } | ||||
| 
 | ||||
| #endif /* SPARC_TARGET_SYSCALL_H */ | ||||
|  | ||||
| @ -1,35 +1 @@ | ||||
| #ifndef SPARC64_TARGET_SYSCALL_H | ||||
| #define SPARC64_TARGET_SYSCALL_H | ||||
| 
 | ||||
| #include "../sparc/target_errno.h" | ||||
| 
 | ||||
| struct target_pt_regs { | ||||
| 	abi_ulong u_regs[16]; | ||||
| 	abi_ulong tstate; | ||||
| 	abi_ulong pc; | ||||
| 	abi_ulong npc; | ||||
| 	abi_ulong y; | ||||
| 	abi_ulong fprs; | ||||
| }; | ||||
| 
 | ||||
| #define UNAME_MACHINE "sparc64" | ||||
| #define UNAME_MINIMUM_RELEASE "2.6.32" | ||||
| 
 | ||||
| /* SPARC kernels don't define this in their Kconfig, but they have the
 | ||||
|  * same ABI as if they did, implemented by sparc-specific code which fishes | ||||
|  * directly in the u_regs() struct for half the parameters in sparc_do_fork() | ||||
|  * and copy_thread(). | ||||
|  */ | ||||
| #define TARGET_CLONE_BACKWARDS | ||||
| #define TARGET_MINSIGSTKSZ      4096 | ||||
| #define TARGET_MCL_CURRENT 0x2000 | ||||
| #define TARGET_MCL_FUTURE  0x4000 | ||||
| #define TARGET_MCL_ONFAULT 0x8000 | ||||
| 
 | ||||
| #define TARGET_FORCE_SHMLBA | ||||
| 
 | ||||
| static inline abi_ulong target_shmlba(CPUSPARCState *env) | ||||
| { | ||||
|     return MAX(TARGET_PAGE_SIZE, 16 * 1024); | ||||
| } | ||||
| #endif /* SPARC64_TARGET_SYSCALL_H */ | ||||
| #include "../sparc/target_syscall.h" | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Richard Henderson
						Richard Henderson