target_syscall.h (1477B)
1#ifndef SPARC_TARGET_SYSCALL_H 2#define SPARC_TARGET_SYSCALL_H 3 4#if defined(TARGET_SPARC64) && !defined(TARGET_ABI32) 5struct target_pt_regs { 6 abi_ulong u_regs[16]; 7 abi_ulong tstate; 8 abi_ulong pc; 9 abi_ulong npc; 10 uint32_t y; 11 uint32_t magic; 12}; 13#else 14struct target_pt_regs { 15 abi_ulong psr; 16 abi_ulong pc; 17 abi_ulong npc; 18 abi_ulong y; 19 abi_ulong u_regs[16]; 20}; 21#endif 22 23#ifdef TARGET_SPARC64 24# define UNAME_MACHINE "sparc64" 25#else 26# define UNAME_MACHINE "sparc" 27#endif 28#define UNAME_MINIMUM_RELEASE "2.6.32" 29 30/* 31 * SPARC kernels don't define this in their Kconfig, but they have the 32 * same ABI as if they did, implemented by sparc-specific code which fishes 33 * directly in the u_regs() struct for half the parameters in sparc_do_fork() 34 * and copy_thread(). 35 */ 36#define TARGET_CLONE_BACKWARDS 37#define TARGET_MINSIGSTKSZ 4096 38#define TARGET_MCL_CURRENT 0x2000 39#define TARGET_MCL_FUTURE 0x4000 40#define TARGET_MCL_ONFAULT 0x8000 41 42/* 43 * For SPARC SHMLBA is determined at runtime in the kernel, and 44 * libc has to runtime-detect it using the hwcaps. 45 * See glibc sysdeps/unix/sysv/linux/sparc/getshmlba. 46 */ 47#define TARGET_FORCE_SHMLBA 48 49static inline abi_ulong target_shmlba(CPUSPARCState *env) 50{ 51#ifdef TARGET_SPARC64 52 return MAX(TARGET_PAGE_SIZE, 16 * 1024); 53#else 54 if (!(env->def.features & CPU_FEATURE_FLUSH)) { 55 return 64 * 1024; 56 } else { 57 return 256 * 1024; 58 } 59#endif 60} 61 62#endif /* SPARC_TARGET_SYSCALL_H */