int86.h

Go to the documentation of this file.
00001 /*      int86.h - 8086 interrupt types                  Author: Kees J. Bot
00002  *                                                              3 May 2000
00003  */
00004 
00005 /* Registers used in an PC real mode call for BIOS or DOS services.  A
00006  * driver is called through the vector if the interrupt number is zero.
00007  */
00008 union reg86 {
00009     struct l {
00010         u32_t   ef;                     /* 32 bit flags (output only) */
00011         u32_t   vec;                    /* Driver vector (input only) */
00012         u32_t   _ds_es[1];
00013         u32_t   eax;                    /* 32 bit general registers */
00014         u32_t   ebx;
00015         u32_t   ecx;
00016         u32_t   edx;
00017         u32_t   esi;
00018         u32_t   edi;
00019         u32_t   ebp;
00020     } l;
00021     struct w {
00022         u16_t   f, _ef[1];              /* 16 bit flags (output only) */
00023         u16_t   off, seg;               /* Driver vector (input only) */
00024         u16_t   ds, es;                 /* DS and ES real mode segment regs */
00025         u16_t   ax, _eax[1];            /* 16 bit general registers */
00026         u16_t   bx, _ebx[1];
00027         u16_t   cx, _ecx[1];
00028         u16_t   dx, _edx[1];
00029         u16_t   si, _esi[1];
00030         u16_t   di, _edi[1];
00031         u16_t   bp, _ebp[1];
00032     } w;
00033     struct b {
00034         u8_t    intno, _intno[3];       /* Interrupt number (input only) */
00035         u8_t    _vec[4];
00036         u8_t    _ds_es[4];
00037         u8_t    al, ah, _eax[2];        /* 8 bit general registers */
00038         u8_t    bl, bh, _ebx[2];
00039         u8_t    cl, ch, _ecx[2];
00040         u8_t    dl, dh, _edx[2];
00041         u8_t    _esi[4];
00042         u8_t    _edi[4];
00043         u8_t    _ebp[4];
00044     } b;
00045 };
00046 
00047 struct reg86u { union reg86 u; };       /* Better for forward declarations */
00048 
00049 /* Parameters passed on ioctls to the memory task. */
00050 
00051 struct mio_int86 {              /* MIOCINT86 */
00052         union reg86 reg86;              /* x86 registers as above */
00053         u16_t   off, seg;               /* Address of kernel buffer */
00054         void    *buf;                   /* User data buffer */
00055         size_t  len;                    /* Size of user buffer */
00056 };
00057 
00058 struct mio_ldt86 {              /* MIOCGLDT86, MIOCSLDT86 */
00059         size_t  idx;                    /* Index in process' LDT */
00060         u16_t   entry[4];               /* One LDT entry to get or set. */
00061 };

Generated on Fri Apr 14 22:57:19 2006 for minix by  doxygen 1.4.6