|  | /* | 
|  | * This struct defines the way the registers are stored on the | 
|  | *  stack during a system call. | 
|  | * | 
|  | * Reference: linux/arch/riscv/include/uapi/asm/ptrace.h | 
|  | */ | 
|  |  | 
|  | #ifndef LINUX_USER_RISCV_TARGET_SYSCALL_H | 
|  | #define LINUX_USER_RISCV_TARGET_SYSCALL_H | 
|  |  | 
|  | struct target_pt_regs { | 
|  | abi_long sepc; | 
|  | abi_long ra; | 
|  | abi_long sp; | 
|  | abi_long gp; | 
|  | abi_long tp; | 
|  | abi_long t0; | 
|  | abi_long t1; | 
|  | abi_long t2; | 
|  | abi_long s0; | 
|  | abi_long s1; | 
|  | abi_long a0; | 
|  | abi_long a1; | 
|  | abi_long a2; | 
|  | abi_long a3; | 
|  | abi_long a4; | 
|  | abi_long a5; | 
|  | abi_long a6; | 
|  | abi_long a7; | 
|  | abi_long s2; | 
|  | abi_long s3; | 
|  | abi_long s4; | 
|  | abi_long s5; | 
|  | abi_long s6; | 
|  | abi_long s7; | 
|  | abi_long s8; | 
|  | abi_long s9; | 
|  | abi_long s10; | 
|  | abi_long s11; | 
|  | abi_long t3; | 
|  | abi_long t4; | 
|  | abi_long t5; | 
|  | abi_long t6; | 
|  | }; | 
|  |  | 
|  | #ifdef TARGET_RISCV32 | 
|  | #define UNAME_MACHINE "riscv32" | 
|  | #define UNAME_MINIMUM_RELEASE "5.4.0" | 
|  | #else | 
|  | #define UNAME_MACHINE "riscv64" | 
|  | #define UNAME_MINIMUM_RELEASE "4.15.0" | 
|  | #endif | 
|  |  | 
|  | #define TARGET_MCL_CURRENT 1 | 
|  | #define TARGET_MCL_FUTURE  2 | 
|  | #define TARGET_MCL_ONFAULT 4 | 
|  |  | 
|  | /* clone(flags, newsp, ptidptr, tls, ctidptr) for RISC-V */ | 
|  | /* This comes from linux/kernel/fork.c, CONFIG_CLONE_BACKWARDS */ | 
|  | #define TARGET_CLONE_BACKWARDS | 
|  |  | 
|  | #endif |