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. */
 | 
						|
};
 |