1 | /* int86.h - 8086 interrupt types Author: Kees J. Bot
|
---|
2 | * 3 May 2000
|
---|
3 | */
|
---|
4 |
|
---|
5 | /* Registers used in an PC real mode call for BIOS or DOS services. A
|
---|
6 | * driver is called through the vector if the interrupt number is zero.
|
---|
7 | */
|
---|
8 | union reg86 {
|
---|
9 | struct l {
|
---|
10 | u32_t ef; /* 32 bit flags (output only) */
|
---|
11 | u32_t vec; /* Driver vector (input only) */
|
---|
12 | u32_t _ds_es[1];
|
---|
13 | u32_t eax; /* 32 bit general registers */
|
---|
14 | u32_t ebx;
|
---|
15 | u32_t ecx;
|
---|
16 | u32_t edx;
|
---|
17 | u32_t esi;
|
---|
18 | u32_t edi;
|
---|
19 | u32_t ebp;
|
---|
20 | } l;
|
---|
21 | struct w {
|
---|
22 | u16_t f, _ef[1]; /* 16 bit flags (output only) */
|
---|
23 | u16_t off, seg; /* Driver vector (input only) */
|
---|
24 | u16_t ds, es; /* DS and ES real mode segment regs */
|
---|
25 | u16_t ax, _eax[1]; /* 16 bit general registers */
|
---|
26 | u16_t bx, _ebx[1];
|
---|
27 | u16_t cx, _ecx[1];
|
---|
28 | u16_t dx, _edx[1];
|
---|
29 | u16_t si, _esi[1];
|
---|
30 | u16_t di, _edi[1];
|
---|
31 | u16_t bp, _ebp[1];
|
---|
32 | } w;
|
---|
33 | struct b {
|
---|
34 | u8_t intno, _intno[3]; /* Interrupt number (input only) */
|
---|
35 | u8_t _vec[4];
|
---|
36 | u8_t _ds_es[4];
|
---|
37 | u8_t al, ah, _eax[2]; /* 8 bit general registers */
|
---|
38 | u8_t bl, bh, _ebx[2];
|
---|
39 | u8_t cl, ch, _ecx[2];
|
---|
40 | u8_t dl, dh, _edx[2];
|
---|
41 | u8_t _esi[4];
|
---|
42 | u8_t _edi[4];
|
---|
43 | u8_t _ebp[4];
|
---|
44 | } b;
|
---|
45 | };
|
---|
46 |
|
---|
47 | struct reg86u { union reg86 u; }; /* Better for forward declarations */
|
---|
48 |
|
---|
49 | /* Parameters passed on ioctls to the memory task. */
|
---|
50 |
|
---|
51 | struct mio_int86 { /* MIOCINT86 */
|
---|
52 | union reg86 reg86; /* x86 registers as above */
|
---|
53 | u16_t off, seg; /* Address of kernel buffer */
|
---|
54 | void *buf; /* User data buffer */
|
---|
55 | size_t len; /* Size of user buffer */
|
---|
56 | };
|
---|
57 |
|
---|
58 | struct mio_ldt86 { /* MIOCGLDT86, MIOCSLDT86 */
|
---|
59 | size_t idx; /* Index in process' LDT */
|
---|
60 | u16_t entry[4]; /* One LDT entry to get or set. */
|
---|
61 | };
|
---|