plan 9 kernel history: overview | file list | diff list

1990/0905/power/io.h (diff list | history)

power/io.h on 1990/0227
1990/0227    
#define UNCACHED	0xA0000000 
#define	IO2(t,x)	((t *)(UNCACHED|0x17000000|(x))) 
#define VMEA24SUP(t, x)	((t *)(UNCACHED|0x13000000|(x))) 
#define	SYNCBUS(t,x)	((t *)(UNCACHED|0x1E000000|(x))) 
#define	SBSEM		SYNCBUS(ulong, 0) 
#define	SBSEMTOP	SYNCBUS(ulong, 0x400000) 
 
#define	LED		((char*)0xBF200001) 
 
typedef struct SBCC	SBCC; 
typedef struct Timer	Timer; 
typedef struct Duart	Duart; 
 
struct SBCC 
{ 
	ulong	level[14];	/* cpu interrupt level for cpu->cpu ints */ 
	ulong	junk0[2]; 
	ulong	status[14];	/* status from other cpu */ 
	ulong	junk1[2]; 
	ulong	elevel;		/* cpu interrupt level for vme->cpu ints */ 
	ulong	junk2[7]; 
	ulong	flevel;		/* cpu interrupt level for vme->cpu ints */ 
	ulong	junk3[3]; 
	ulong	overrun; 
	ulong	junk4[3]; 
	ulong	id;		/* id of this cpu */ 
	ulong	eintenable; 
	ulong	eintpending; 
	ulong	fintenable; 
	ulong	fintpending; 
	ulong	idintenable; 
	ulong	idintpending; 
	ulong	junk5[8]; 
	ulong	intxmit; 
}; 
 
#define	SBCCREG		SYNCBUS(SBCC, 0x400000) 
 
#define	TIMERREG	SYNCBUS(Timer, 0x1600000) 
#define	CLRTIM0		SYNCBUS(uchar, 0x1100000) 
#define	CLRTIM1		SYNCBUS(uchar, 0x1180000) 
 
#define	DUARTREG	SYNCBUS(Duart, 0x1A00000) 
 
#define LANCERAM	IO2(uchar, 0xE00000) 
#define LANCEEND	IO2(uchar, 0xF00000) 
1990/0905    
#define LANCE3RAM	IO2(uchar, 0xFF4000) 
#define LANCE3END	IO2(uchar, 0xFF8000) 
1990/0227    
#define LANCERDP	IO2(ushort, 0xFC0002) 
#define LANCERAP	IO2(ushort, 0xFC000a) 
#define LANCEID		IO2(ushort, 0xFF0002) 
1990/0905    
 
1990/0825    
#define IOID		IO2(uchar, 0xFFFFF0) 
#define IO2R1		1	/* IO2 revision level 1 */ 
#define IO2R2		2	/* IO2 revision level 2 */ 
#define IO3R1		3	/* IO3 revision level 1 */ 
1990/0227    
 
typedef struct MODE	MODE; 
typedef struct INTVEC	INTVEC; 
 
struct MODE { 
	uchar	masterslave;	/* master/slave addresses for the IO2 */ 
	uchar	resetforce; 
	uchar	checkbits; 
	uchar	promenet; 
}; 
 
#define MODEREG		IO2(MODE, 0xF40000) 
 
#define	MASTER	0x0 
#define	SLAVE	0x4 
 
struct INTVEC { 
	struct { 
		ulong	vec; 
		ulong	fill2; 
	} i[8]; 
}; 
 
#define INTVECREG	IO2(INTVEC, 0xF60000) 
#define INTPENDREG	IO2(uchar, 0xF20000)	/* same as LED */ 
#define IO2CLRMASK	IO2(uchar, 0xFE0000) 
#define IO2SETMASK	IO2(uchar, 0xFE8000) 
#define IO2MASK		IO2(ushort, 0xFE8000) 
#define	MPBERR0		IO2(ulong, 0xF48000) 
#define	MPBERR1		IO2(ulong, 0xF4C000) 
1990/0718    
#define SBEADDR		((ulong *)(UNCACHED|0x1F080000)) 
1990/0825    
 
1990/0905    
extern int ioid;	/* io board type */ 
extern int iolevels;	/* number of io levels */ 
extern int iomask;	/* interrupts to enable */ 
1990/08272    
 
/* 
 *  The IO2/IO3 slave maps.  These maps are used to map 
 *  external addresses to MP bus addresses. 
 */ 
enum { 
1990/0905    
	A24map,		/* VME A24 non-priv address space */ 
	A32map,		/* VME A32 non-priv address space */ 
	Lancemap,	/* Lance chip address space */ 
	Scsi1map,	/* SCSI bus 1 address space */ 
	Scsi0map,	/* SCSI bus 0 address space */ 
	Nomap, 
1990/08272    
}; 
#define	WRITEMAP	IO2(ulong, 0xFA0000); 


source code copyright © 1990-2005 Lucent Technologies; see license
Plan 9 distribution
comments to russ cox (rsc@swtch.com)