|  | /* default linux values for the selectors */ | 
|  | #define __USER_CS	(0x23) | 
|  | #define __USER_DS	(0x2B) | 
|  |  | 
|  | struct target_pt_regs { | 
|  | long ebx; | 
|  | long ecx; | 
|  | long edx; | 
|  | long esi; | 
|  | long edi; | 
|  | long ebp; | 
|  | long eax; | 
|  | int  xds; | 
|  | int  xes; | 
|  | long orig_eax; | 
|  | long eip; | 
|  | int  xcs; | 
|  | long eflags; | 
|  | long esp; | 
|  | int  xss; | 
|  | }; | 
|  |  | 
|  | /* ioctls */ | 
|  |  | 
|  | #define TARGET_LDT_ENTRIES      8192 | 
|  | #define TARGET_LDT_ENTRY_SIZE	8 | 
|  |  | 
|  | #define TARGET_GDT_ENTRIES             9 | 
|  | #define TARGET_GDT_ENTRY_TLS_ENTRIES   3 | 
|  | #define TARGET_GDT_ENTRY_TLS_MIN       6 | 
|  | #define TARGET_GDT_ENTRY_TLS_MAX       (TARGET_GDT_ENTRY_TLS_MIN + TARGET_GDT_ENTRY_TLS_ENTRIES - 1) | 
|  |  | 
|  | struct target_modify_ldt_ldt_s { | 
|  | unsigned int  entry_number; | 
|  | abi_ulong base_addr; | 
|  | unsigned int limit; | 
|  | unsigned int flags; | 
|  | }; | 
|  |  | 
|  | /* vm86 defines */ | 
|  |  | 
|  | #define TARGET_BIOSSEG		0x0f000 | 
|  |  | 
|  | #define TARGET_CPU_086		0 | 
|  | #define TARGET_CPU_186		1 | 
|  | #define TARGET_CPU_286		2 | 
|  | #define TARGET_CPU_386		3 | 
|  | #define TARGET_CPU_486		4 | 
|  | #define TARGET_CPU_586		5 | 
|  |  | 
|  | #define TARGET_VM86_SIGNAL	0	/* return due to signal */ | 
|  | #define TARGET_VM86_UNKNOWN	1	/* unhandled GP fault - IO-instruction or similar */ | 
|  | #define TARGET_VM86_INTx	2	/* int3/int x instruction (ARG = x) */ | 
|  | #define TARGET_VM86_STI	3	/* sti/popf/iret instruction enabled virtual interrupts */ | 
|  |  | 
|  | /* | 
|  | * Additional return values when invoking new vm86() | 
|  | */ | 
|  | #define TARGET_VM86_PICRETURN	4	/* return due to pending PIC request */ | 
|  | #define TARGET_VM86_TRAP	6	/* return due to DOS-debugger request */ | 
|  |  | 
|  | /* | 
|  | * function codes when invoking new vm86() | 
|  | */ | 
|  | #define TARGET_VM86_PLUS_INSTALL_CHECK	0 | 
|  | #define TARGET_VM86_ENTER		1 | 
|  | #define TARGET_VM86_ENTER_NO_BYPASS	2 | 
|  | #define	TARGET_VM86_REQUEST_IRQ	3 | 
|  | #define TARGET_VM86_FREE_IRQ		4 | 
|  | #define TARGET_VM86_GET_IRQ_BITS	5 | 
|  | #define TARGET_VM86_GET_AND_RESET_IRQ	6 | 
|  |  | 
|  | /* | 
|  | * This is the stack-layout seen by the user space program when we have | 
|  | * done a translation of "SAVE_ALL" from vm86 mode. The real kernel layout | 
|  | * is 'kernel_vm86_regs' (see below). | 
|  | */ | 
|  |  | 
|  | struct target_vm86_regs { | 
|  | /* | 
|  | * normal regs, with special meaning for the segment descriptors.. | 
|  | */ | 
|  | abi_long ebx; | 
|  | abi_long ecx; | 
|  | abi_long edx; | 
|  | abi_long esi; | 
|  | abi_long edi; | 
|  | abi_long ebp; | 
|  | abi_long eax; | 
|  | abi_long __null_ds; | 
|  | abi_long __null_es; | 
|  | abi_long __null_fs; | 
|  | abi_long __null_gs; | 
|  | abi_long orig_eax; | 
|  | abi_long eip; | 
|  | unsigned short cs, __csh; | 
|  | abi_long eflags; | 
|  | abi_long esp; | 
|  | unsigned short ss, __ssh; | 
|  | /* | 
|  | * these are specific to v86 mode: | 
|  | */ | 
|  | unsigned short es, __esh; | 
|  | unsigned short ds, __dsh; | 
|  | unsigned short fs, __fsh; | 
|  | unsigned short gs, __gsh; | 
|  | }; | 
|  |  | 
|  | struct target_revectored_struct { | 
|  | abi_ulong __map[8];			/* 256 bits */ | 
|  | }; | 
|  |  | 
|  | struct target_vm86_struct { | 
|  | struct target_vm86_regs regs; | 
|  | abi_ulong flags; | 
|  | abi_ulong screen_bitmap; | 
|  | abi_ulong cpu_type; | 
|  | struct target_revectored_struct int_revectored; | 
|  | struct target_revectored_struct int21_revectored; | 
|  | }; | 
|  |  | 
|  | /* | 
|  | * flags masks | 
|  | */ | 
|  | #define TARGET_VM86_SCREEN_BITMAP	0x0001 | 
|  |  | 
|  | struct target_vm86plus_info_struct { | 
|  | abi_ulong flags; | 
|  | #define TARGET_force_return_for_pic (1 << 0) | 
|  | #define TARGET_vm86dbg_active       (1 << 1)  /* for debugger */ | 
|  | #define TARGET_vm86dbg_TFpendig     (1 << 2)  /* for debugger */ | 
|  | #define TARGET_is_vm86pus           (1 << 31) /* for vm86 internal use */ | 
|  | unsigned char vm86dbg_intxxtab[32];   /* for debugger */ | 
|  | }; | 
|  |  | 
|  | struct target_vm86plus_struct { | 
|  | struct target_vm86_regs regs; | 
|  | abi_ulong flags; | 
|  | abi_ulong screen_bitmap; | 
|  | abi_ulong cpu_type; | 
|  | struct target_revectored_struct int_revectored; | 
|  | struct target_revectored_struct int21_revectored; | 
|  | struct target_vm86plus_info_struct vm86plus; | 
|  | }; | 
|  |  | 
|  | /* FreeBSD sysarch(2) */ | 
|  | #define TARGET_FREEBSD_I386_GET_LDT	0 | 
|  | #define TARGET_FREEBSD_I386_SET_LDT	1 | 
|  | /* I386_IOPL */ | 
|  | #define TARGET_FREEBSD_I386_GET_IOPERM	3 | 
|  | #define TARGET_FREEBSD_I386_SET_IOPERM	4 | 
|  | /* xxxxx */ | 
|  | #define TARGET_FREEBSD_I386_VM86	6 | 
|  | #define TARGET_FREEBSD_I386_GET_FSBASE	7 | 
|  | #define TARGET_FREEBSD_I386_SET_FSBASE	8 | 
|  | #define TARGET_FREEBSD_I386_GET_GSBASE	9 | 
|  | #define TARGET_FREEBSD_I386_SET_GSBASE	10 | 
|  |  | 
|  |  | 
|  | #define UNAME_MACHINE "i386" | 
|  |  |