Plan 9 from Bell Labs’s /usr/web/sources/extra/9hist/alphapc/dat.h

Copyright © 2021 Plan 9 Foundation.
Distributed under the MIT License.
Download the Plan 9 distribution.


## diffname alphapc/dat.h 1999/0415
## diff -e /dev/null /n/emeliedump/1999/0415/sys/src/brazil/alphapc/dat.h
0a
typedef struct Conf	Conf;
typedef struct FPsave	FPsave;
typedef struct Irq	Irq;
typedef struct Irqctl	Irqctl;
typedef struct ISAConf	ISAConf;
typedef struct Label	Label;
typedef struct Lock	Lock;
typedef struct Mach	Mach;
typedef struct Notsave	Notsave;
typedef struct Page	Page;
typedef struct PCArch	PCArch;
typedef struct PCB	PCB;
typedef struct Pcidev	Pcidev;
typedef struct PMMU	PMMU;
typedef struct Sys	Sys;
typedef struct Ureg	Ureg;
typedef struct Proc	Proc;

/*
 *  parameters for sysproc.c
 */
#define AOUT_MAGIC	L_MAGIC

/*
 *  machine dependent definitions used by ../port/dat.h
 */

struct Lock
{
	ulong	key;			/* semaphore (non-zero = locked) */
	ulong	sr;
	ulong	pc;
	Proc	*p;
	ulong	pid;
	ushort	isilock;
};

struct Label
{
	ulong	sp;
	ulong	pc;
};

/*
 * FPsave.fpstatus
 */
enum
{
	FPinit,
	FPactive,
	FPinactive,
};

struct	FPsave
{
	long	fpreg[2*32];
	long	dummy;		/* lower bits of FPCR, useless */
	long	fpstatus;
};

struct Conf
{
	ulong	nmach;		/* processors */
	ulong	nproc;		/* processes */
	ulong	npage0;		/* total physical pages of memory */
	ulong	npage1;		/* total physical pages of memory */
	ulong	npage;		/* total physical pages of memory */
	ulong	base0;		/* base of bank 0 */
	ulong	base1;		/* base of bank 1 */
	ulong	upages;		/* user page pool */
	ulong	nimage;		/* number of page cache image headers */
	ulong	nswap;		/* number of swap pages */
	int	nswppo;		/* max # of pageouts per segment pass */
	ulong	copymode;	/* 0 is copy on write, 1 is copy on reference */
	ulong	ptebase;
	ulong	mbytes;
	int	monitor;		/* has display? */
	ulong	ialloc;		/* bytes available for interrupt time allocation */
	ulong	pipeqsize;	/* size in bytes of pipe queues */
};

/*
 *  mmu goo in the Proc structure
 */
struct PMMU
{
	Page	*mmutop;	/* 1st level table */
	Page	*mmulvl2;	/* 2nd level table */
	Page	*mmufree;	/* unused page table pages */
	Page	*mmuused;	/* used page table pages, except for mmustk */
};

/*
 *  things saved in the Proc structure during a notify
 */
struct Notsave
{
	ulong	UNUSED;
};

#include "../port/portdat.h"

/*
 *  machine dependent definitions not used by ../port/dat.h
 */
/*
 * Fake kmap
 */
typedef	void		KMap;
#define	VA(k)		((ulong)(k))
#define	kmap(p)		(KMap*)((p)->pa|KZERO)
#define	kunmap(k)

/*
 *	Process Control Block, used by PALcode
 */
struct PCB {
	uvlong	ksp;
	uvlong	usp;
	uvlong	ptbr;
	ulong	asn;
	ulong	pcc;
	uvlong	unique;
	ulong	fen;
	ulong	dummy;
	uvlong	rsrv1;
	uvlong	rsrv2;
};

struct Mach
{
	/* OFFSETS OF THE FOLLOWING KNOWN BY l.s */
	int	machno;			/* physical id of processor */
	ulong	splpc;			/* pc that called splhi() */
	Proc	*proc;			/* current process on this processor */

	/* ordering from here on irrelevant */
	int	tlbfault;			/* only used by devproc; no access to tlb */
	int	tlbpurge;			/* ... */
	ulong	ticks;			/* of the clock since boot time */
	Label	sched;			/* scheduler wakeup */
	Lock	alarmlock;		/* access to alarm list */
	void	*alarm;			/* alarms bound to this clock */
	Page	*ufreeme;		/* address of upage of exited process */
	int	speed;			/* cpu speed */
	ulong	delayloop;		/* for the delay() routine */
	int	nrdy;
	ulong	fairness;		/* for runproc */

	int	pfault;
	int	cs;
	int	syscall;
	int	load;
	int	intr;
	int	nettime;
	int	flushmmu;		/* make current proc flush it's mmu state */

	PCB;

	/* MUST BE LAST */
	int	stack[1];
};

struct
{
	Lock;
	short	machs;
	short	exiting;
	short	ispanic;
}active;

/*
 *	Implementation-dependant functions (outside of Alpha architecture proper).
 *	Called PCArch because that's what mkdevc calls it (for the PC).
 */
struct PCArch
{
	char*	id;
	int	(*ident)(void);

	void	(*coreinit)(void);		/* set up core logic, PCI mappings etc */
	void	(*corehello)(void);		/* identify core logic to user */
	void	(*coredetach)(void);		/* restore core logic before return to console */
	void	*(*pcicfg)(int, int);		/* map and point to PCI cfg space */
	void	*(*pcimem)(int, int);		/* map and point to PCI memory space */
	void	(*intr)(Ureg*);
	int	(*intrenable)(int, void (*)(Ureg*, void*), void*, int);

	int		(*_inb)(int);
	ushort	(*_ins)(int);
	ulong	(*_inl)(int);
	void		(*_outb)(int, int);
	void		(*_outs)(int, ushort);
	void		(*_outl)(int, ulong);
	void		(*_insb)(int, void*, int);
	void		(*_inss)(int, void*, int);
	void		(*_insl)(int, void*, int);
	void		(*_outsb)(int, void*, int);
	void		(*_outss)(int, void*, int);
	void		(*_outsl)(int, void*, int);
};

/*
 *  a parsed plan9.ini line
 */
#define ISAOPTLEN	16
#define NISAOPT		8

struct ISAConf {
	char	type[NAMELEN];
	ulong	port;
	ulong	irq;
	ulong	dma;
	ulong	mem;
	ulong	size;
	ulong	freq;

	int	nopt;
	char	opt[NISAOPT][ISAOPTLEN];
};

extern PCArch	*arch;

#define	MACHP(n)	((Mach *)((int)&mach0+n*BY2PG))
extern Mach		mach0;

extern register Mach	*m;
extern register Proc	*up;
.
## diffname alphapc/dat.h 1999/0429
## diff -e /n/emeliedump/1999/0415/sys/src/brazil/alphapc/dat.h /n/emeliedump/1999/0429/sys/src/brazil/alphapc/dat.h
155d
149a
	ulong	cpuhz;			/* hwrpb->cfreq */
	ulong	pcclast;
	uvlong	fastclock;

.
145,146d
138,139c
	int	tlbfault;		/* only used by devproc; no access to tlb */
	int	tlbpurge;		/* ... */
.
## diffname alphapc/dat.h 1999/0701
## diff -e /n/emeliedump/1999/0429/sys/src/brazil/alphapc/dat.h /n/emeliedump/1999/0701/sys/src/brazil/alphapc/dat.h
150a
	vlong	intrts;			/* time stamp of last interrupt */
.
## diffname alphapc/dat.h 1999/0810
## diff -e /n/emeliedump/1999/0701/sys/src/brazil/alphapc/dat.h /n/emeliedump/1999/0810/sys/src/brazil/alphapc/dat.h
35a
	ulong	glare;
.
## diffname alphapc/dat.h 1999/0811
## diff -e /n/emeliedump/1999/0810/sys/src/brazil/alphapc/dat.h /n/emeliedump/1999/0811/sys/src/brazil/alphapc/dat.h
36d
## diffname alphapc/dat.h 2000/0401
## diff -e /n/emeliedump/1999/0811/sys/src/brazil/alphapc/dat.h /n/emeliedump/2000/0401/sys/src/9/alphapc/dat.h
188,189c
	int	(*intrenable)(Vctl*);
.
157a
	int	spuriousintr;
.
146a
	int	lastintr;
.
75,76d
17c
typedef struct Vctl	Vctl;
.
14a
typedef struct Proc	Proc;
.
3,4d
## diffname alphapc/dat.h 2001/0727
## diff -e /n/emeliedump/2000/0401/sys/src/9/alphapc/dat.h /n/emeliedump/2001/0727/sys/src/9/alphapc/dat.h
219c
	char	*opt[NISAOPT];
.
210c
	char		*type;
.
206d
158a
	ulong	spuriousintr;
	int	lastintr;

.
156d
150a
	int	tlbfault;		/* only used by devproc; no access to tlb */
	int	tlbpurge;		/* ... */
.
144d
141,142c
	int	inclockintr;

.
135,136c

.
## diffname alphapc/dat.h 2001/0731
## diff -e /n/emeliedump/2001/0727/sys/src/9/alphapc/dat.h /n/emeliedump/2001/0731/sys/src/9/alphapc/dat.h
17a
#define MAXSYSARG	6	/* for mount(fd, mpt, flag, arg, srv) */

.
## diffname alphapc/dat.h 2001/1023
## diff -e /n/emeliedump/2001/0731/sys/src/9/alphapc/dat.h /n/emeliedump/2001/1023/sys/src/9/alphapc/dat.h
231a

/*
 *  hardware info about a device
 */
typedef struct {
	ulong	port;	
	int		size;
} port_t;

struct DevConf
{
	ulong	interrupt;	/* interrupt number */
	char		*type;	/* card type, malloced */
	int		nports;	/* Number of ports */
	port_t	*ports;	/* The ports themselves */
};
.
191a
	int	(*intrvecno)(int);
	int	(*intrdisable)(int);
.
## diffname alphapc/dat.h 2002/0112
## diff -e /n/emeliedump/2001/1023/sys/src/9/alphapc/dat.h /n/emeliedump/2002/0112/sys/src/9/alphapc/dat.h
46c
 * Proc.fpstate
.
## diffname alphapc/dat.h 2002/0222
## diff -e /n/emeliedump/2002/0112/sys/src/9/alphapc/dat.h /n/emeliedump/2002/0222/sys/src/9/alphapc/dat.h
146c
	vlong	cpuhz;			/* hwrpb->cfreq */
.
## diffname alphapc/dat.h 2002/0404
## diff -e /n/emeliedump/2002/0222/sys/src/9/alphapc/dat.h /n/emeliedump/2002/0404/sys/src/9/alphapc/dat.h
248a
};

/*
 * fasttick timer interrupts (Dummy for now)
 */
struct Cycintr
{
	vlong	when;			/* fastticks when f should be called */
	void	(*f)(Ureg*, Cycintr*);
	void	*a;
	Cycintr	*next;
.
1a
typedef struct Cycintr	Cycintr;
.
## diffname alphapc/dat.h 2002/0405
## diff -e /n/emeliedump/2002/0404/sys/src/9/alphapc/dat.h /n/emeliedump/2002/0405/sys/src/9/alphapc/dat.h
260c
	Timer	*next;
.
258c
	void	(*f)(Ureg*, Timer*);
.
255c
struct Timer
.
2c
typedef struct Timer	Timer;
.
## diffname alphapc/dat.h 2002/0410
## diff -e /n/emeliedump/2002/0405/sys/src/9/alphapc/dat.h /n/emeliedump/2002/0410/sys/src/9/alphapc/dat.h
250,260d
2d
## diffname alphapc/dat.h 2002/0420
## diff -e /n/emeliedump/2002/0410/sys/src/9/alphapc/dat.h /n/emeliedump/2002/0420/sys/src/9/alphapc/dat.h
158a
	int		ilockdepth;
.
## diffname alphapc/dat.h 2002/0821
## diff -e /n/emeliedump/2002/0420/sys/src/9/alphapc/dat.h /n/emeliedump/2002/0821/sys/src/9/alphapc/dat.h
149a
	ulong	inidle;			/* fastticks in idlehands() since last slowtick */
	ulong	avginidle;		/* avg fastticks in idlehands() per slowtick */
.
## diffname alphapc/dat.h 2002/0822
## diff -e /n/emeliedump/2002/0821/sys/src/9/alphapc/dat.h /n/emeliedump/2002/0822/sys/src/9/alphapc/dat.h
149,151c
	Perf	perf;			/* performance counters */
.
## diffname alphapc/dat.h 2002/0824
## diff -e /n/emeliedump/2002/0822/sys/src/9/alphapc/dat.h /n/emeliedump/2002/0824/sys/src/9/alphapc/dat.h
246c
	ulong	intnum;	/* interrupt number */
.
52a

	/* bit or'd with the state */
	FPillegal= 0x100,
.
49a
	/* floating point states */
.
## diffname alphapc/dat.h 2003/0301
## diff -e /n/emeliedump/2002/0824/sys/src/9/alphapc/dat.h /n/emeliedump/2003/0301/sys/src/9/alphapc/dat.h
251,252c
	char	*type;	/* card type, malloced */
	int	nports;	/* Number of ports */
.
245c
	int	size;
.
222c
	int	irq;
.
220c
	char	*type;
.
203,211c
	void	(*_outb)(int, int);
	void	(*_outs)(int, ushort);
	void	(*_outl)(int, ulong);
	void	(*_insb)(int, void*, int);
	void	(*_inss)(int, void*, int);
	void	(*_insl)(int, void*, int);
	void	(*_outsb)(int, void*, int);
	void	(*_outss)(int, void*, int);
	void	(*_outsl)(int, void*, int);
.
200c
	int	(*_inb)(int);
.
163c
	int	ilockdepth;
.

Bell Labs OSI certified Powered by Plan 9

(Return to Plan 9 Home Page)

Copyright © 2021 Plan 9 Foundation. All Rights Reserved.
Comments to [email protected].