qemu

FORK: QEMU emulator
git clone https://git.neptards.moe/neptards/qemu.git
Log | Files | Refs | Submodules | LICENSE

target_syscall.h (2549B)


      1 #ifndef X86_64_TARGET_SYSCALL_H
      2 #define X86_64_TARGET_SYSCALL_H
      3 
      4 #define __USER_CS	(0x33)
      5 #define __USER_DS	(0x2B)
      6 
      7 struct target_pt_regs {
      8 	abi_ulong r15;
      9 	abi_ulong r14;
     10 	abi_ulong r13;
     11 	abi_ulong r12;
     12 	abi_ulong rbp;
     13 	abi_ulong rbx;
     14 /* arguments: non interrupts/non tracing syscalls only save up to here */
     15 	abi_ulong r11;
     16 	abi_ulong r10;
     17 	abi_ulong r9;
     18 	abi_ulong r8;
     19 	abi_ulong rax;
     20 	abi_ulong rcx;
     21 	abi_ulong rdx;
     22 	abi_ulong rsi;
     23 	abi_ulong rdi;
     24 	abi_ulong orig_rax;
     25 /* end of arguments */
     26 /* cpu exception frame or undefined */
     27 	abi_ulong rip;
     28 	abi_ulong cs;
     29 	abi_ulong eflags;
     30 	abi_ulong rsp;
     31 	abi_ulong ss;
     32 /* top of stack page */
     33 };
     34 
     35 /* Maximum number of LDT entries supported. */
     36 #define TARGET_LDT_ENTRIES	8192
     37 /* The size of each LDT entry. */
     38 #define TARGET_LDT_ENTRY_SIZE	8
     39 
     40 #define TARGET_GDT_ENTRIES 16
     41 #define TARGET_GDT_ENTRY_TLS_ENTRIES 3
     42 #define TARGET_GDT_ENTRY_TLS_MIN 12
     43 #define TARGET_GDT_ENTRY_TLS_MAX 14
     44 
     45 #if 0 // Redefine this
     46 struct target_modify_ldt_ldt_s {
     47 	unsigned int  entry_number;
     48         abi_ulong     base_addr;
     49 	unsigned int  limit;
     50 	unsigned int  seg_32bit:1;
     51 	unsigned int  contents:2;
     52 	unsigned int  read_exec_only:1;
     53 	unsigned int  limit_in_pages:1;
     54 	unsigned int  seg_not_present:1;
     55 	unsigned int  useable:1;
     56 	unsigned int  lm:1;
     57 };
     58 #else
     59 struct target_modify_ldt_ldt_s {
     60 	unsigned int  entry_number;
     61         abi_ulong     base_addr;
     62 	unsigned int  limit;
     63         unsigned int flags;
     64 };
     65 #endif
     66 
     67 struct target_ipc64_perm
     68 {
     69 	int		key;
     70 	uint32_t	uid;
     71 	uint32_t	gid;
     72 	uint32_t	cuid;
     73 	uint32_t	cgid;
     74 	unsigned short		mode;
     75 	unsigned short		__pad1;
     76 	unsigned short		seq;
     77 	unsigned short		__pad2;
     78 	abi_ulong		__unused1;
     79 	abi_ulong		__unused2;
     80 };
     81 
     82 struct target_msqid64_ds {
     83 	struct target_ipc64_perm msg_perm;
     84 	unsigned int msg_stime;	/* last msgsnd time */
     85 	unsigned int msg_rtime;	/* last msgrcv time */
     86 	unsigned int msg_ctime;	/* last change time */
     87 	abi_ulong  msg_cbytes;	/* current number of bytes on queue */
     88 	abi_ulong  msg_qnum;	/* number of messages in queue */
     89 	abi_ulong  msg_qbytes;	/* max number of bytes on queue */
     90 	unsigned int msg_lspid;	/* pid of last msgsnd */
     91 	unsigned int msg_lrpid;	/* last receive pid */
     92 	abi_ulong  __unused4;
     93 	abi_ulong  __unused5;
     94 };
     95 
     96 #define UNAME_MACHINE "x86_64"
     97 #define UNAME_MINIMUM_RELEASE "2.6.32"
     98 
     99 #define TARGET_ARCH_SET_GS 0x1001
    100 #define TARGET_ARCH_SET_FS 0x1002
    101 #define TARGET_ARCH_GET_FS 0x1003
    102 #define TARGET_ARCH_GET_GS 0x1004
    103 #define TARGET_MCL_CURRENT 1
    104 #define TARGET_MCL_FUTURE  2
    105 #define TARGET_MCL_ONFAULT 4
    106 
    107 #endif /* X86_64_TARGET_SYSCALL_H */