13622634bSMarkus Armbruster #ifndef I386_TARGET_SYSCALL_H 23622634bSMarkus Armbruster #define I386_TARGET_SYSCALL_H 3460c579fSLluís Vilanova 42c0262afSbellard /* default linux values for the selectors */ 52c0262afSbellard #define __USER_CS (0x23) 62c0262afSbellard #define __USER_DS (0x2B) 72c0262afSbellard 82c0262afSbellard struct target_pt_regs { 92c0262afSbellard long ebx; 102c0262afSbellard long ecx; 112c0262afSbellard long edx; 122c0262afSbellard long esi; 132c0262afSbellard long edi; 142c0262afSbellard long ebp; 152c0262afSbellard long eax; 162c0262afSbellard int xds; 172c0262afSbellard int xes; 182c0262afSbellard long orig_eax; 192c0262afSbellard long eip; 202c0262afSbellard int xcs; 212c0262afSbellard long eflags; 222c0262afSbellard long esp; 232c0262afSbellard int xss; 242c0262afSbellard }; 252c0262afSbellard 262c0262afSbellard /* ioctls */ 272c0262afSbellard 282c0262afSbellard #define TARGET_LDT_ENTRIES 8192 292c0262afSbellard #define TARGET_LDT_ENTRY_SIZE 8 302c0262afSbellard 318d18e893Sbellard #define TARGET_GDT_ENTRIES 9 322c0262afSbellard #define TARGET_GDT_ENTRY_TLS_ENTRIES 3 332c0262afSbellard #define TARGET_GDT_ENTRY_TLS_MIN 6 342c0262afSbellard #define TARGET_GDT_ENTRY_TLS_MAX (TARGET_GDT_ENTRY_TLS_MIN + TARGET_GDT_ENTRY_TLS_ENTRIES - 1) 352c0262afSbellard 362c0262afSbellard struct target_modify_ldt_ldt_s { 372c0262afSbellard unsigned int entry_number; 38992f48a0Sblueswir1 abi_ulong base_addr; 392c0262afSbellard unsigned int limit; 402c0262afSbellard unsigned int flags; 412c0262afSbellard }; 422c0262afSbellard 432c0262afSbellard /* vm86 defines */ 442c0262afSbellard 452c0262afSbellard #define TARGET_BIOSSEG 0x0f000 462c0262afSbellard 472c0262afSbellard #define TARGET_CPU_086 0 482c0262afSbellard #define TARGET_CPU_186 1 492c0262afSbellard #define TARGET_CPU_286 2 502c0262afSbellard #define TARGET_CPU_386 3 512c0262afSbellard #define TARGET_CPU_486 4 522c0262afSbellard #define TARGET_CPU_586 5 532c0262afSbellard 542c0262afSbellard #define TARGET_VM86_SIGNAL 0 /* return due to signal */ 552c0262afSbellard #define TARGET_VM86_UNKNOWN 1 /* unhandled GP fault - IO-instruction or similar */ 562c0262afSbellard #define TARGET_VM86_INTx 2 /* int3/int x instruction (ARG = x) */ 572c0262afSbellard #define TARGET_VM86_STI 3 /* sti/popf/iret instruction enabled virtual interrupts */ 582c0262afSbellard 592c0262afSbellard /* 602c0262afSbellard * Additional return values when invoking new vm86() 612c0262afSbellard */ 622c0262afSbellard #define TARGET_VM86_PICRETURN 4 /* return due to pending PIC request */ 632c0262afSbellard #define TARGET_VM86_TRAP 6 /* return due to DOS-debugger request */ 642c0262afSbellard 652c0262afSbellard /* 662c0262afSbellard * function codes when invoking new vm86() 672c0262afSbellard */ 682c0262afSbellard #define TARGET_VM86_PLUS_INSTALL_CHECK 0 692c0262afSbellard #define TARGET_VM86_ENTER 1 702c0262afSbellard #define TARGET_VM86_ENTER_NO_BYPASS 2 712c0262afSbellard #define TARGET_VM86_REQUEST_IRQ 3 722c0262afSbellard #define TARGET_VM86_FREE_IRQ 4 732c0262afSbellard #define TARGET_VM86_GET_IRQ_BITS 5 742c0262afSbellard #define TARGET_VM86_GET_AND_RESET_IRQ 6 752c0262afSbellard 762c0262afSbellard /* 772c0262afSbellard * This is the stack-layout seen by the user space program when we have 782c0262afSbellard * done a translation of "SAVE_ALL" from vm86 mode. The real kernel layout 792c0262afSbellard * is 'kernel_vm86_regs' (see below). 802c0262afSbellard */ 812c0262afSbellard 822c0262afSbellard struct target_vm86_regs { 832c0262afSbellard /* 842c0262afSbellard * normal regs, with special meaning for the segment descriptors.. 852c0262afSbellard */ 86992f48a0Sblueswir1 abi_long ebx; 87992f48a0Sblueswir1 abi_long ecx; 88992f48a0Sblueswir1 abi_long edx; 89992f48a0Sblueswir1 abi_long esi; 90992f48a0Sblueswir1 abi_long edi; 91992f48a0Sblueswir1 abi_long ebp; 92992f48a0Sblueswir1 abi_long eax; 93992f48a0Sblueswir1 abi_long __null_ds; 94992f48a0Sblueswir1 abi_long __null_es; 95992f48a0Sblueswir1 abi_long __null_fs; 96992f48a0Sblueswir1 abi_long __null_gs; 97992f48a0Sblueswir1 abi_long orig_eax; 98992f48a0Sblueswir1 abi_long eip; 992c0262afSbellard unsigned short cs, __csh; 100992f48a0Sblueswir1 abi_long eflags; 101992f48a0Sblueswir1 abi_long esp; 1022c0262afSbellard unsigned short ss, __ssh; 1032c0262afSbellard /* 1042c0262afSbellard * these are specific to v86 mode: 1052c0262afSbellard */ 1062c0262afSbellard unsigned short es, __esh; 1072c0262afSbellard unsigned short ds, __dsh; 1082c0262afSbellard unsigned short fs, __fsh; 1092c0262afSbellard unsigned short gs, __gsh; 1102c0262afSbellard }; 1112c0262afSbellard 1122c0262afSbellard struct target_revectored_struct { 113992f48a0Sblueswir1 abi_ulong __map[8]; /* 256 bits */ 1142c0262afSbellard }; 1152c0262afSbellard 1162c0262afSbellard struct target_vm86_struct { 1172c0262afSbellard struct target_vm86_regs regs; 118992f48a0Sblueswir1 abi_ulong flags; 119992f48a0Sblueswir1 abi_ulong screen_bitmap; 120992f48a0Sblueswir1 abi_ulong cpu_type; 1212c0262afSbellard struct target_revectored_struct int_revectored; 1222c0262afSbellard struct target_revectored_struct int21_revectored; 1232c0262afSbellard }; 1242c0262afSbellard 1252c0262afSbellard /* 1262c0262afSbellard * flags masks 1272c0262afSbellard */ 1282c0262afSbellard #define TARGET_VM86_SCREEN_BITMAP 0x0001 1292c0262afSbellard 1302c0262afSbellard struct target_vm86plus_info_struct { 131992f48a0Sblueswir1 abi_ulong flags; 1322c0262afSbellard #define TARGET_force_return_for_pic (1 << 0) 1332c0262afSbellard #define TARGET_vm86dbg_active (1 << 1) /* for debugger */ 1342c0262afSbellard #define TARGET_vm86dbg_TFpendig (1 << 2) /* for debugger */ 1352c0262afSbellard #define TARGET_is_vm86pus (1 << 31) /* for vm86 internal use */ 1362c0262afSbellard unsigned char vm86dbg_intxxtab[32]; /* for debugger */ 1372c0262afSbellard }; 1382c0262afSbellard 1392c0262afSbellard struct target_vm86plus_struct { 1402c0262afSbellard struct target_vm86_regs regs; 141992f48a0Sblueswir1 abi_ulong flags; 142992f48a0Sblueswir1 abi_ulong screen_bitmap; 143992f48a0Sblueswir1 abi_ulong cpu_type; 1442c0262afSbellard struct target_revectored_struct int_revectored; 1452c0262afSbellard struct target_revectored_struct int21_revectored; 1462c0262afSbellard struct target_vm86plus_info_struct vm86plus; 1472c0262afSbellard }; 1482c0262afSbellard 149cf720db3Sbellard #define UNAME_MACHINE "i686" 150cbc14e6fSRiku Voipio #define UNAME_MINIMUM_RELEASE "2.6.32" 1514ce6243dSPeter Maydell 1524ce6243dSPeter Maydell #define TARGET_CLONE_BACKWARDS 153*02e5d7d7SFilip Bozuta #define TARGET_MCL_CURRENT 1 154*02e5d7d7SFilip Bozuta #define TARGET_MCL_FUTURE 2 155*02e5d7d7SFilip Bozuta #define TARGET_MCL_ONFAULT 4 1565457dc9eSLaurent Vivier #define TARGET_WANT_OLD_SYS_SELECT 157460c579fSLluís Vilanova 1583622634bSMarkus Armbruster #endif /* I386_TARGET_SYSCALL_H */ 159