62 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			C
		
	
	
		
			Executable File
		
	
	
	
	
| /*	int86.h - 8086 interrupt types			Author: Kees J. Bot
 | |
|  *								3 May 2000
 | |
|  */
 | |
| 
 | |
| /* Registers used in an PC real mode call for BIOS or DOS services.  A
 | |
|  * driver is called through the vector if the interrupt number is zero.
 | |
|  */
 | |
| union reg86 {
 | |
|     struct l {
 | |
| 	u32_t	ef;			/* 32 bit flags (output only) */
 | |
| 	u32_t	vec;			/* Driver vector (input only) */
 | |
| 	u32_t	_ds_es[1];
 | |
| 	u32_t	eax;			/* 32 bit general registers */
 | |
| 	u32_t	ebx;
 | |
| 	u32_t	ecx;
 | |
| 	u32_t	edx;
 | |
| 	u32_t	esi;
 | |
| 	u32_t	edi;
 | |
| 	u32_t	ebp;
 | |
|     } l;
 | |
|     struct w {
 | |
| 	u16_t	f, _ef[1];		/* 16 bit flags (output only) */
 | |
| 	u16_t	off, seg;		/* Driver vector (input only) */
 | |
| 	u16_t	ds, es;			/* DS and ES real mode segment regs */
 | |
| 	u16_t	ax, _eax[1];		/* 16 bit general registers */
 | |
| 	u16_t	bx, _ebx[1];
 | |
| 	u16_t	cx, _ecx[1];
 | |
| 	u16_t	dx, _edx[1];
 | |
| 	u16_t	si, _esi[1];
 | |
| 	u16_t	di, _edi[1];
 | |
| 	u16_t	bp, _ebp[1];
 | |
|     } w;
 | |
|     struct b {
 | |
| 	u8_t	intno, _intno[3];	/* Interrupt number (input only) */
 | |
| 	u8_t	_vec[4];
 | |
| 	u8_t	_ds_es[4];
 | |
| 	u8_t	al, ah, _eax[2];	/* 8 bit general registers */
 | |
| 	u8_t	bl, bh, _ebx[2];
 | |
| 	u8_t	cl, ch, _ecx[2];
 | |
| 	u8_t	dl, dh, _edx[2];
 | |
| 	u8_t	_esi[4];
 | |
| 	u8_t	_edi[4];
 | |
| 	u8_t	_ebp[4];
 | |
|     } b;
 | |
| };
 | |
| 
 | |
| struct reg86u { union reg86 u; };	/* Better for forward declarations */
 | |
| 
 | |
| /* Parameters passed on ioctls to the memory task. */
 | |
| 
 | |
| struct mio_int86 {		/* MIOCINT86 */
 | |
| 	union reg86 reg86;		/* x86 registers as above */
 | |
| 	u16_t	off, seg;		/* Address of kernel buffer */
 | |
| 	void	*buf;			/* User data buffer */
 | |
| 	size_t	len;			/* Size of user buffer */
 | |
| };
 | |
| 
 | |
| struct mio_ldt86 {		/* MIOCGLDT86, MIOCSLDT86 */
 | |
| 	size_t	idx;			/* Index in process' LDT */
 | |
| 	u16_t	entry[4];		/* One LDT entry to get or set. */
 | |
| };
 | 
