qemu/linux-user/i386/target_syscall.h
<<
>>
Prefs
   1#ifndef I386_TARGET_SYSCALL_H
   2#define I386_TARGET_SYSCALL_H
   3
   4/* default linux values for the selectors */
   5#define __USER_CS       (0x23)
   6#define __USER_DS       (0x2B)
   7
   8struct target_pt_regs {
   9        long ebx;
  10        long ecx;
  11        long edx;
  12        long esi;
  13        long edi;
  14        long ebp;
  15        long eax;
  16        int  xds;
  17        int  xes;
  18        long orig_eax;
  19        long eip;
  20        int  xcs;
  21        long eflags;
  22        long esp;
  23        int  xss;
  24};
  25
  26/* ioctls */
  27
  28#define TARGET_LDT_ENTRIES      8192
  29#define TARGET_LDT_ENTRY_SIZE   8
  30
  31#define TARGET_GDT_ENTRIES             9
  32#define TARGET_GDT_ENTRY_TLS_ENTRIES   3
  33#define TARGET_GDT_ENTRY_TLS_MIN       6
  34#define TARGET_GDT_ENTRY_TLS_MAX       (TARGET_GDT_ENTRY_TLS_MIN + TARGET_GDT_ENTRY_TLS_ENTRIES - 1)
  35
  36struct target_modify_ldt_ldt_s {
  37    unsigned int  entry_number;
  38    abi_ulong base_addr;
  39    unsigned int limit;
  40    unsigned int flags;
  41};
  42
  43/* vm86 defines */
  44
  45#define TARGET_BIOSSEG          0x0f000
  46
  47#define TARGET_CPU_086          0
  48#define TARGET_CPU_186          1
  49#define TARGET_CPU_286          2
  50#define TARGET_CPU_386          3
  51#define TARGET_CPU_486          4
  52#define TARGET_CPU_586          5
  53
  54#define TARGET_VM86_SIGNAL      0       /* return due to signal */
  55#define TARGET_VM86_UNKNOWN     1       /* unhandled GP fault - IO-instruction or similar */
  56#define TARGET_VM86_INTx        2       /* int3/int x instruction (ARG = x) */
  57#define TARGET_VM86_STI 3       /* sti/popf/iret instruction enabled virtual interrupts */
  58
  59/*
  60 * Additional return values when invoking new vm86()
  61 */
  62#define TARGET_VM86_PICRETURN   4       /* return due to pending PIC request */
  63#define TARGET_VM86_TRAP        6       /* return due to DOS-debugger request */
  64
  65/*
  66 * function codes when invoking new vm86()
  67 */
  68#define TARGET_VM86_PLUS_INSTALL_CHECK  0
  69#define TARGET_VM86_ENTER               1
  70#define TARGET_VM86_ENTER_NO_BYPASS     2
  71#define TARGET_VM86_REQUEST_IRQ 3
  72#define TARGET_VM86_FREE_IRQ            4
  73#define TARGET_VM86_GET_IRQ_BITS        5
  74#define TARGET_VM86_GET_AND_RESET_IRQ   6
  75
  76/*
  77 * This is the stack-layout seen by the user space program when we have
  78 * done a translation of "SAVE_ALL" from vm86 mode. The real kernel layout
  79 * is 'kernel_vm86_regs' (see below).
  80 */
  81
  82struct target_vm86_regs {
  83/*
  84 * normal regs, with special meaning for the segment descriptors..
  85 */
  86        abi_long ebx;
  87        abi_long ecx;
  88        abi_long edx;
  89        abi_long esi;
  90        abi_long edi;
  91        abi_long ebp;
  92        abi_long eax;
  93        abi_long __null_ds;
  94        abi_long __null_es;
  95        abi_long __null_fs;
  96        abi_long __null_gs;
  97        abi_long orig_eax;
  98        abi_long eip;
  99        unsigned short cs, __csh;
 100        abi_long eflags;
 101        abi_long esp;
 102        unsigned short ss, __ssh;
 103/*
 104 * these are specific to v86 mode:
 105 */
 106        unsigned short es, __esh;
 107        unsigned short ds, __dsh;
 108        unsigned short fs, __fsh;
 109        unsigned short gs, __gsh;
 110};
 111
 112struct target_revectored_struct {
 113        abi_ulong __map[8];                     /* 256 bits */
 114};
 115
 116struct target_vm86_struct {
 117        struct target_vm86_regs regs;
 118        abi_ulong flags;
 119        abi_ulong screen_bitmap;
 120        abi_ulong cpu_type;
 121        struct target_revectored_struct int_revectored;
 122        struct target_revectored_struct int21_revectored;
 123};
 124
 125/*
 126 * flags masks
 127 */
 128#define TARGET_VM86_SCREEN_BITMAP       0x0001
 129
 130struct target_vm86plus_info_struct {
 131        abi_ulong flags;
 132#define TARGET_force_return_for_pic (1 << 0)
 133#define TARGET_vm86dbg_active       (1 << 1)  /* for debugger */
 134#define TARGET_vm86dbg_TFpendig     (1 << 2)  /* for debugger */
 135#define TARGET_is_vm86pus           (1 << 31) /* for vm86 internal use */
 136        unsigned char vm86dbg_intxxtab[32];   /* for debugger */
 137};
 138
 139struct target_vm86plus_struct {
 140        struct target_vm86_regs regs;
 141        abi_ulong flags;
 142        abi_ulong screen_bitmap;
 143        abi_ulong cpu_type;
 144        struct target_revectored_struct int_revectored;
 145        struct target_revectored_struct int21_revectored;
 146        struct target_vm86plus_info_struct vm86plus;
 147};
 148
 149#define UNAME_MACHINE "i686"
 150#define UNAME_MINIMUM_RELEASE "2.6.32"
 151
 152#define TARGET_CLONE_BACKWARDS
 153#define TARGET_MINSIGSTKSZ 2048
 154#define TARGET_MCL_CURRENT 1
 155#define TARGET_MCL_FUTURE  2
 156#define TARGET_MCL_ONFAULT 4
 157#define TARGET_WANT_OLD_SYS_SELECT
 158
 159#endif /* I386_TARGET_SYSCALL_H */
 160