qemu/bsd-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/* FreeBSD sysarch(2) */
  97#define TARGET_FREEBSD_I386_GET_LDT     0
  98#define TARGET_FREEBSD_I386_SET_LDT     1
  99                                /* I386_IOPL */
 100#define TARGET_FREEBSD_I386_GET_IOPERM  3
 101#define TARGET_FREEBSD_I386_SET_IOPERM  4
 102                                /* xxxxx */
 103#define TARGET_FREEBSD_I386_GET_FSBASE  7
 104#define TARGET_FREEBSD_I386_SET_FSBASE  8
 105#define TARGET_FREEBSD_I386_GET_GSBASE  9
 106#define TARGET_FREEBSD_I386_SET_GSBASE  10
 107
 108#define TARGET_FREEBSD_AMD64_GET_FSBASE 128
 109#define TARGET_FREEBSD_AMD64_SET_FSBASE 129
 110#define TARGET_FREEBSD_AMD64_GET_GSBASE 130
 111#define TARGET_FREEBSD_AMD64_SET_GSBASE 131
 112
 113
 114#define UNAME_MACHINE "x86_64"
 115
 116#define TARGET_ARCH_SET_GS 0x1001
 117#define TARGET_ARCH_SET_FS 0x1002
 118#define TARGET_ARCH_GET_FS 0x1003
 119#define TARGET_ARCH_GET_GS 0x1004
 120
 121#endif  /* TARGET_SYSCALL_H */
 122