~ubuntu-branches/ubuntu/wily/qemu-kvm-spice/wily

« back to all changes in this revision

Viewing changes to bsd-user/i386/syscall.h

  • Committer: Bazaar Package Importer
  • Author(s): Serge Hallyn
  • Date: 2011-10-19 10:44:56 UTC
  • Revision ID: james.westby@ubuntu.com-20111019104456-xgvskumk3sxi97f4
Tags: upstream-0.15.0+noroms
ImportĀ upstreamĀ versionĀ 0.15.0+noroms

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
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
/* FreeBSD sysarch(2) */
 
147
#define TARGET_FREEBSD_I386_GET_LDT     0
 
148
#define TARGET_FREEBSD_I386_SET_LDT     1
 
149
                                /* I386_IOPL */
 
150
#define TARGET_FREEBSD_I386_GET_IOPERM  3
 
151
#define TARGET_FREEBSD_I386_SET_IOPERM  4
 
152
                                /* xxxxx */
 
153
#define TARGET_FREEBSD_I386_VM86        6
 
154
#define TARGET_FREEBSD_I386_GET_FSBASE  7
 
155
#define TARGET_FREEBSD_I386_SET_FSBASE  8
 
156
#define TARGET_FREEBSD_I386_GET_GSBASE  9
 
157
#define TARGET_FREEBSD_I386_SET_GSBASE  10
 
158
 
 
159
 
 
160
#define UNAME_MACHINE "i386"
 
161