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_MCL_CURRENT 0x2000 38#define TARGET_MCL_FUTURE 0x4000 39#define TARGET_MCL_ONFAULT 0x8000 40 41/* 42 * For SPARC SHMLBA is determined at runtime in the kernel, and 43 * libc has to runtime-detect it using the hwcaps. 44 * See glibc sysdeps/unix/sysv/linux/sparc/getshmlba. 45 */ 46#define TARGET_FORCE_SHMLBA 47 48static inline abi_ulong target_shmlba(CPUSPARCState *env) 49{ 50#ifdef TARGET_SPARC64 51 return MAX(TARGET_PAGE_SIZE, 16 * 1024); 52#else 53 if (!(env->def.features & CPU_FEATURE_FLUSH)) { 54 return 64 * 1024; 55 } else { 56 return 256 * 1024; 57 } 58#endif 59} 60 61#endif /* SPARC_TARGET_SYSCALL_H */ 62