xref: /qemu/linux-user/x86_64/target_syscall.h (revision 41fb4c14ee500125dc0ce6fb573cf84b8db29ed0)
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