## 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;
.
|