13622634bSMarkus Armbruster #ifndef X86_64_TARGET_SYSCALL_H 23622634bSMarkus Armbruster #define X86_64_TARGET_SYSCALL_H 3460c579fSLluís Vilanova 474aa0429Sj_mayer #define __USER_CS (0x33) 574aa0429Sj_mayer #define __USER_DS (0x2B) 674aa0429Sj_mayer 774aa0429Sj_mayer struct target_pt_regs { 8992f48a0Sblueswir1 abi_ulong r15; 9992f48a0Sblueswir1 abi_ulong r14; 10992f48a0Sblueswir1 abi_ulong r13; 11992f48a0Sblueswir1 abi_ulong r12; 12992f48a0Sblueswir1 abi_ulong rbp; 13992f48a0Sblueswir1 abi_ulong rbx; 1474aa0429Sj_mayer /* arguments: non interrupts/non tracing syscalls only save up to here */ 15992f48a0Sblueswir1 abi_ulong r11; 16992f48a0Sblueswir1 abi_ulong r10; 17992f48a0Sblueswir1 abi_ulong r9; 18992f48a0Sblueswir1 abi_ulong r8; 19992f48a0Sblueswir1 abi_ulong rax; 20992f48a0Sblueswir1 abi_ulong rcx; 21992f48a0Sblueswir1 abi_ulong rdx; 22992f48a0Sblueswir1 abi_ulong rsi; 23992f48a0Sblueswir1 abi_ulong rdi; 24992f48a0Sblueswir1 abi_ulong orig_rax; 2574aa0429Sj_mayer /* end of arguments */ 2674aa0429Sj_mayer /* cpu exception frame or undefined */ 27992f48a0Sblueswir1 abi_ulong rip; 28992f48a0Sblueswir1 abi_ulong cs; 29992f48a0Sblueswir1 abi_ulong eflags; 30992f48a0Sblueswir1 abi_ulong rsp; 31992f48a0Sblueswir1 abi_ulong ss; 3274aa0429Sj_mayer /* top of stack page */ 3374aa0429Sj_mayer }; 3474aa0429Sj_mayer 3574aa0429Sj_mayer /* Maximum number of LDT entries supported. */ 3674aa0429Sj_mayer #define TARGET_LDT_ENTRIES 8192 3774aa0429Sj_mayer /* The size of each LDT entry. */ 3874aa0429Sj_mayer #define TARGET_LDT_ENTRY_SIZE 8 3974aa0429Sj_mayer 408d18e893Sbellard #define TARGET_GDT_ENTRIES 16 4174aa0429Sj_mayer #define TARGET_GDT_ENTRY_TLS_ENTRIES 3 4274aa0429Sj_mayer #define TARGET_GDT_ENTRY_TLS_MIN 12 4374aa0429Sj_mayer #define TARGET_GDT_ENTRY_TLS_MAX 14 4474aa0429Sj_mayer 4574aa0429Sj_mayer #if 0 // Redefine this 4674aa0429Sj_mayer struct target_modify_ldt_ldt_s { 4774aa0429Sj_mayer unsigned int entry_number; 48992f48a0Sblueswir1 abi_ulong base_addr; 4974aa0429Sj_mayer unsigned int limit; 5074aa0429Sj_mayer unsigned int seg_32bit:1; 5174aa0429Sj_mayer unsigned int contents:2; 5274aa0429Sj_mayer unsigned int read_exec_only:1; 5374aa0429Sj_mayer unsigned int limit_in_pages:1; 5474aa0429Sj_mayer unsigned int seg_not_present:1; 5574aa0429Sj_mayer unsigned int useable:1; 5674aa0429Sj_mayer unsigned int lm:1; 5774aa0429Sj_mayer }; 5874aa0429Sj_mayer #else 5974aa0429Sj_mayer struct target_modify_ldt_ldt_s { 6074aa0429Sj_mayer unsigned int entry_number; 61992f48a0Sblueswir1 abi_ulong base_addr; 6274aa0429Sj_mayer unsigned int limit; 6374aa0429Sj_mayer unsigned int flags; 6474aa0429Sj_mayer }; 6574aa0429Sj_mayer #endif 6674aa0429Sj_mayer 6774aa0429Sj_mayer struct target_ipc64_perm 6874aa0429Sj_mayer { 6974aa0429Sj_mayer int key; 7074aa0429Sj_mayer uint32_t uid; 7174aa0429Sj_mayer uint32_t gid; 7274aa0429Sj_mayer uint32_t cuid; 7374aa0429Sj_mayer uint32_t cgid; 7474aa0429Sj_mayer unsigned short mode; 7574aa0429Sj_mayer unsigned short __pad1; 7674aa0429Sj_mayer unsigned short seq; 7774aa0429Sj_mayer unsigned short __pad2; 78992f48a0Sblueswir1 abi_ulong __unused1; 79992f48a0Sblueswir1 abi_ulong __unused2; 8074aa0429Sj_mayer }; 8174aa0429Sj_mayer 8274aa0429Sj_mayer struct target_msqid64_ds { 8374aa0429Sj_mayer struct target_ipc64_perm msg_perm; 8474aa0429Sj_mayer unsigned int msg_stime; /* last msgsnd time */ 8574aa0429Sj_mayer unsigned int msg_rtime; /* last msgrcv time */ 8674aa0429Sj_mayer unsigned int msg_ctime; /* last change time */ 87992f48a0Sblueswir1 abi_ulong msg_cbytes; /* current number of bytes on queue */ 88992f48a0Sblueswir1 abi_ulong msg_qnum; /* number of messages in queue */ 89992f48a0Sblueswir1 abi_ulong msg_qbytes; /* max number of bytes on queue */ 9074aa0429Sj_mayer unsigned int msg_lspid; /* pid of last msgsnd */ 9174aa0429Sj_mayer unsigned int msg_lrpid; /* last receive pid */ 92992f48a0Sblueswir1 abi_ulong __unused4; 93992f48a0Sblueswir1 abi_ulong __unused5; 9474aa0429Sj_mayer }; 9574aa0429Sj_mayer 9674aa0429Sj_mayer #define UNAME_MACHINE "x86_64" 97cbc14e6fSRiku Voipio #define UNAME_MINIMUM_RELEASE "2.6.32" 98d2fd1af7Sbellard 99d2fd1af7Sbellard #define TARGET_ARCH_SET_GS 0x1001 100d2fd1af7Sbellard #define TARGET_ARCH_SET_FS 0x1002 101d2fd1af7Sbellard #define TARGET_ARCH_GET_FS 0x1003 102d2fd1af7Sbellard #define TARGET_ARCH_GET_GS 0x1004 103*02e5d7d7SFilip Bozuta #define TARGET_MCL_CURRENT 1 104*02e5d7d7SFilip Bozuta #define TARGET_MCL_FUTURE 2 105*02e5d7d7SFilip Bozuta #define TARGET_MCL_ONFAULT 4 106460c579fSLluís Vilanova 1073622634bSMarkus Armbruster #endif /* X86_64_TARGET_SYSCALL_H */ 108