[9] | 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 | };
|
---|