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

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: 
                     28: #define TARGET_GDT_ENTRY_TLS_ENTRIES   3
                     29: #define TARGET_GDT_ENTRY_TLS_MIN       6
                     30: #define TARGET_GDT_ENTRY_TLS_MAX       (TARGET_GDT_ENTRY_TLS_MIN + TARGET_GDT_ENTRY_TLS_ENTRIES - 1)
                     31: 
                     32: struct target_modify_ldt_ldt_s {
                     33:     unsigned int  entry_number;
                     34:     target_ulong base_addr;
                     35:     unsigned int limit;
                     36:     unsigned int flags;
                     37: };
                     38: 
                     39: /* vm86 defines */
                     40: 
                     41: #define TARGET_BIOSSEG         0x0f000
                     42: 
                     43: #define TARGET_CPU_086         0
                     44: #define TARGET_CPU_186         1
                     45: #define TARGET_CPU_286         2
                     46: #define TARGET_CPU_386         3
                     47: #define TARGET_CPU_486         4
                     48: #define TARGET_CPU_586         5
                     49: 
                     50: #define TARGET_VM86_SIGNAL     0       /* return due to signal */
                     51: #define TARGET_VM86_UNKNOWN    1       /* unhandled GP fault - IO-instruction or similar */
                     52: #define TARGET_VM86_INTx       2       /* int3/int x instruction (ARG = x) */
                     53: #define TARGET_VM86_STI        3       /* sti/popf/iret instruction enabled virtual interrupts */
                     54: 
                     55: /*
                     56:  * Additional return values when invoking new vm86()
                     57:  */
                     58: #define TARGET_VM86_PICRETURN  4       /* return due to pending PIC request */
                     59: #define TARGET_VM86_TRAP       6       /* return due to DOS-debugger request */
                     60: 
                     61: /*
                     62:  * function codes when invoking new vm86()
                     63:  */
                     64: #define TARGET_VM86_PLUS_INSTALL_CHECK 0
                     65: #define TARGET_VM86_ENTER              1
                     66: #define TARGET_VM86_ENTER_NO_BYPASS    2
                     67: #define        TARGET_VM86_REQUEST_IRQ 3
                     68: #define TARGET_VM86_FREE_IRQ           4
                     69: #define TARGET_VM86_GET_IRQ_BITS       5
                     70: #define TARGET_VM86_GET_AND_RESET_IRQ  6
                     71: 
                     72: /*
                     73:  * This is the stack-layout seen by the user space program when we have
                     74:  * done a translation of "SAVE_ALL" from vm86 mode. The real kernel layout
                     75:  * is 'kernel_vm86_regs' (see below).
                     76:  */
                     77: 
                     78: struct target_vm86_regs {
                     79: /*
                     80:  * normal regs, with special meaning for the segment descriptors..
                     81:  */
                     82:        target_long ebx;
                     83:        target_long ecx;
                     84:        target_long edx;
                     85:        target_long esi;
                     86:        target_long edi;
                     87:        target_long ebp;
                     88:        target_long eax;
                     89:        target_long __null_ds;
                     90:        target_long __null_es;
                     91:        target_long __null_fs;
                     92:        target_long __null_gs;
                     93:        target_long orig_eax;
                     94:        target_long eip;
                     95:        unsigned short cs, __csh;
                     96:        target_long eflags;
                     97:        target_long esp;
                     98:        unsigned short ss, __ssh;
                     99: /*
                    100:  * these are specific to v86 mode:
                    101:  */
                    102:        unsigned short es, __esh;
                    103:        unsigned short ds, __dsh;
                    104:        unsigned short fs, __fsh;
                    105:        unsigned short gs, __gsh;
                    106: };
                    107: 
                    108: struct target_revectored_struct {
                    109:        target_ulong __map[8];                  /* 256 bits */
                    110: };
                    111: 
                    112: struct target_vm86_struct {
                    113:        struct target_vm86_regs regs;
                    114:        target_ulong flags;
                    115:        target_ulong screen_bitmap;
                    116:        target_ulong cpu_type;
                    117:        struct target_revectored_struct int_revectored;
                    118:        struct target_revectored_struct int21_revectored;
                    119: };
                    120: 
                    121: /*
                    122:  * flags masks
                    123:  */
                    124: #define TARGET_VM86_SCREEN_BITMAP      0x0001
                    125: 
                    126: struct target_vm86plus_info_struct {
                    127:         target_ulong flags;
                    128: #define TARGET_force_return_for_pic (1 << 0)
                    129: #define TARGET_vm86dbg_active       (1 << 1)  /* for debugger */
                    130: #define TARGET_vm86dbg_TFpendig     (1 << 2)  /* for debugger */
                    131: #define TARGET_is_vm86pus           (1 << 31) /* for vm86 internal use */
                    132:        unsigned char vm86dbg_intxxtab[32];   /* for debugger */
                    133: };
                    134: 
                    135: struct target_vm86plus_struct {
                    136:        struct target_vm86_regs regs;
                    137:        target_ulong flags;
                    138:        target_ulong screen_bitmap;
                    139:        target_ulong cpu_type;
                    140:        struct target_revectored_struct int_revectored;
                    141:        struct target_revectored_struct int21_revectored;
                    142:        struct target_vm86plus_info_struct vm86plus;
                    143: };
                    144: 
                    145: /* ipcs */
                    146: 
                    147: #define TARGET_SEMOP           1
                    148: #define TARGET_SEMGET          2
                    149: #define TARGET_SEMCTL          3 
                    150: #define TARGET_MSGSND          11 
                    151: #define TARGET_MSGRCV          12
                    152: #define TARGET_MSGGET          13
                    153: #define TARGET_MSGCTL          14
                    154: #define TARGET_SHMAT           21
                    155: #define TARGET_SHMDT           22
                    156: #define TARGET_SHMGET          23
                    157: #define TARGET_SHMCTL          24
                    158: 
                    159: struct target_msgbuf {
                    160:        int mtype;
                    161:        char mtext[1];
                    162: };
                    163: 
                    164: struct target_ipc_kludge {
                    165:        unsigned int    msgp;   /* Really (struct msgbuf *) */
                    166:        int msgtyp;
                    167: };     
                    168: 
                    169: struct target_ipc_perm {
                    170:        int     key;
                    171:        unsigned short  uid;
                    172:        unsigned short  gid;
                    173:        unsigned short  cuid;
                    174:        unsigned short  cgid;
                    175:        unsigned short  mode;
                    176:        unsigned short  seq;
                    177: };
                    178: 
                    179: struct target_msqid_ds {
                    180:        struct target_ipc_perm  msg_perm;
                    181:        unsigned int            msg_first;      /* really struct target_msg* */
                    182:        unsigned int            msg_last;       /* really struct target_msg* */
                    183:        unsigned int            msg_stime;      /* really target_time_t */
                    184:        unsigned int            msg_rtime;      /* really target_time_t */
                    185:        unsigned int            msg_ctime;      /* really target_time_t */
                    186:        unsigned int            wwait;          /* really struct wait_queue* */
                    187:        unsigned int            rwait;          /* really struct wait_queue* */
                    188:        unsigned short          msg_cbytes;
                    189:        unsigned short          msg_qnum;
                    190:        unsigned short          msg_qbytes;
                    191:        unsigned short          msg_lspid;
                    192:        unsigned short          msg_lrpid;
                    193: };
                    194: 
                    195: struct target_shmid_ds {
                    196:        struct target_ipc_perm  shm_perm;
                    197:        int                     shm_segsz;
                    198:        unsigned int            shm_atime;      /* really target_time_t */
                    199:        unsigned int            shm_dtime;      /* really target_time_t */
                    200:        unsigned int            shm_ctime;      /* really target_time_t */
                    201:        unsigned short          shm_cpid;
                    202:        unsigned short          shm_lpid;
                    203:        short                   shm_nattch;
                    204:        unsigned short          shm_npages;
                    205:        unsigned long           *shm_pages;
                    206:        void                    *attaches;      /* really struct shm_desc * */
                    207: };
                    208: 
                    209: #define TARGET_IPC_RMID        0
                    210: #define TARGET_IPC_SET 1
                    211: #define TARGET_IPC_STAT        2
                    212: 
                    213: union target_semun {
                    214:     int val;
                    215:     unsigned int buf;  /* really struct semid_ds * */
                    216:     unsigned int array; /* really unsigned short * */
                    217:     unsigned int __buf;        /* really struct seminfo * */
                    218:     unsigned int __pad;        /* really void* */
                    219: };
                    220: 
                    221: #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.