qemu/linux-user/x86_64/target_syscall.h
<<
>>
Prefs
   1#ifndef TARGET_SYSCALL_H
   2#define TARGET_SYSCALL_H
   3
   4#define __USER_CS       (0x33)
   5#define __USER_DS       (0x2B)
   6
   7struct 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
  46struct 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
  59struct 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
  67struct 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
  82struct 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_MINSIGSTKSZ 2048
 104#define TARGET_MLOCKALL_MCL_CURRENT 1
 105#define TARGET_MLOCKALL_MCL_FUTURE  2
 106
 107#endif  /* TARGET_SYSCALL_H */
 108