Annotation of qemu/linux-user/i386/syscall.h, revision 1.1.1.2

1.1       root        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: 
1.1.1.2 ! root       28: #define TARGET_GDT_ENTRIES             9
1.1       root       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;
1.1.1.2 ! root       35:     abi_ulong base_addr;
1.1       root       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:  */
1.1.1.2 ! root       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;
1.1       root       96:        unsigned short cs, __csh;
1.1.1.2 ! root       97:        abi_long eflags;
        !            98:        abi_long esp;
1.1       root       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 {
1.1.1.2 ! root      110:        abi_ulong __map[8];                     /* 256 bits */
1.1       root      111: };
                    112: 
                    113: struct target_vm86_struct {
                    114:        struct target_vm86_regs regs;
1.1.1.2 ! root      115:        abi_ulong flags;
        !           116:        abi_ulong screen_bitmap;
        !           117:        abi_ulong cpu_type;
1.1       root      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 {
1.1.1.2 ! root      128:         abi_ulong flags;
1.1       root      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;
1.1.1.2 ! root      138:        abi_ulong flags;
        !           139:        abi_ulong screen_bitmap;
        !           140:        abi_ulong cpu_type;
1.1       root      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"

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.