]> git.proxmox.com Git - mirror_qemu.git/blame - linux-user/i386/target_syscall.h
docs/interop/bitmaps: Clean up a reference to qemu-qmp-ref
[mirror_qemu.git] / linux-user / i386 / target_syscall.h
CommitLineData
3622634b
MA
1#ifndef I386_TARGET_SYSCALL_H
2#define I386_TARGET_SYSCALL_H
460c579f 3
2c0262af
FB
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
8d18e893 31#define TARGET_GDT_ENTRIES 9
2c0262af
FB
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;
992f48a0 38 abi_ulong base_addr;
2c0262af
FB
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 */
992f48a0
BS
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;
2c0262af 99 unsigned short cs, __csh;
992f48a0
BS
100 abi_long eflags;
101 abi_long esp;
2c0262af
FB
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 {
992f48a0 113 abi_ulong __map[8]; /* 256 bits */
2c0262af
FB
114};
115
116struct target_vm86_struct {
117 struct target_vm86_regs regs;
992f48a0
BS
118 abi_ulong flags;
119 abi_ulong screen_bitmap;
120 abi_ulong cpu_type;
2c0262af
FB
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 {
992f48a0 131 abi_ulong flags;
2c0262af
FB
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;
992f48a0
BS
141 abi_ulong flags;
142 abi_ulong screen_bitmap;
143 abi_ulong cpu_type;
2c0262af
FB
144 struct target_revectored_struct int_revectored;
145 struct target_revectored_struct int21_revectored;
146 struct target_vm86plus_info_struct vm86plus;
147};
148
cf720db3 149#define UNAME_MACHINE "i686"
cbc14e6f 150#define UNAME_MINIMUM_RELEASE "2.6.32"
4ce6243d
PM
151
152#define TARGET_CLONE_BACKWARDS
02e5d7d7
FB
153#define TARGET_MCL_CURRENT 1
154#define TARGET_MCL_FUTURE 2
155#define TARGET_MCL_ONFAULT 4
5457dc9e 156#define TARGET_WANT_OLD_SYS_SELECT
460c579f 157
3622634b 158#endif /* I386_TARGET_SYSCALL_H */