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