xref: /plan9-contrib/sys/src/9/vt4/fns.h (revision cce710d3fba6018ef0c8c1b503e500038744d49c)
1d6dfd9efSDavid du Colombier #define checkmmu(a, b)
2d6dfd9efSDavid du Colombier #define countpagerefs(a, b)
3d6dfd9efSDavid du Colombier 
4d6dfd9efSDavid du Colombier #include "../port/portfns.h"
5d6dfd9efSDavid du Colombier 
6d6dfd9efSDavid du Colombier typedef struct Dma Dma;
7d6dfd9efSDavid du Colombier typedef struct Ether Ether;
8d6dfd9efSDavid du Colombier #pragma incomplete Dma
9d6dfd9efSDavid du Colombier 
10d6dfd9efSDavid du Colombier void	addconf(char*, char*);
11*cce710d3SDavid du Colombier long	adec(long*);
12*cce710d3SDavid du Colombier long	ainc(long*);
13d6dfd9efSDavid du Colombier void	archetherspeed(int, int);
14d6dfd9efSDavid du Colombier void	archinit(void);
15d6dfd9efSDavid du Colombier uint	archmiiport(int);
16d6dfd9efSDavid du Colombier void	archreboot(void);
17d6dfd9efSDavid du Colombier void	archreset(void);
18d6dfd9efSDavid du Colombier ulong	archuartclock(int, int);
19d6dfd9efSDavid du Colombier void	barriers(void);
20d6dfd9efSDavid du Colombier uintptr	cankaddr(uintptr pa);
21d6dfd9efSDavid du Colombier Block*	clallocb(void);
22d6dfd9efSDavid du Colombier void	clockinit(void);
23d6dfd9efSDavid du Colombier void	clockintr(Ureg*);
24d6dfd9efSDavid du Colombier void	clrmchk(void);
25d6dfd9efSDavid du Colombier int	cmpswap(long*, long, long);
26d6dfd9efSDavid du Colombier // #define coherence()	eieio()
27d6dfd9efSDavid du Colombier #define coherence()			/* uniprocessor */
28d6dfd9efSDavid du Colombier char	*cputype2name(char *, int);
29d6dfd9efSDavid du Colombier void	cpuidprint(void);
30d6dfd9efSDavid du Colombier #define cycles(ip) *(ip) = lcycles()
31d6dfd9efSDavid du Colombier void	dcflush(uintptr, usize);
32d6dfd9efSDavid du Colombier void	dcrcompile(void);
33d6dfd9efSDavid du Colombier long	decref(Ref*);
34d6dfd9efSDavid du Colombier void	delay(int);
35d6dfd9efSDavid du Colombier void	dtlbmiss(void);
36d6dfd9efSDavid du Colombier void	dumpmal(void);
37d6dfd9efSDavid du Colombier void	dumpregs(Ureg*);
38d6dfd9efSDavid du Colombier void	delayloopinit(void);
39d6dfd9efSDavid du Colombier Dev*	devtabget(int, int);
40d6dfd9efSDavid du Colombier void	devtabinit(void);
41d6dfd9efSDavid du Colombier void	devtabreset(void);
42d6dfd9efSDavid du Colombier long	devtabread(Chan*, void*, long, vlong);
43d6dfd9efSDavid du Colombier void	devtabshutdown(void);
44d6dfd9efSDavid du Colombier void	dump(void *, int);
45d6dfd9efSDavid du Colombier void	eieio(void);
46d6dfd9efSDavid du Colombier void	etherclock(void);
47d6dfd9efSDavid du Colombier void	fifoinit(Ether *);
48d6dfd9efSDavid du Colombier void	firmware(int);
49d6dfd9efSDavid du Colombier int	fpipower(Ureg*);
50d6dfd9efSDavid du Colombier int	fpuavail(Ureg*);
51d6dfd9efSDavid du Colombier int	fpudevprocio(Proc*, void*, long, uintptr, int);
52d6dfd9efSDavid du Colombier int	fpuemu(Ureg*);
53d6dfd9efSDavid du Colombier void	fpuinit(void);
54d6dfd9efSDavid du Colombier void	fpunoted(void);
55d6dfd9efSDavid du Colombier void	fpunotify(Ureg*);
56d6dfd9efSDavid du Colombier void	fpuprocresetore(Proc*);
57d6dfd9efSDavid du Colombier #define	fpuprocresetore(p) USED(p)
58d6dfd9efSDavid du Colombier void	fpuprocsave(Proc*);
59d6dfd9efSDavid du Colombier #define	fpuprocsave(p) USED(p)
60d6dfd9efSDavid du Colombier void	fpusysprocsetup(Proc*);
61d6dfd9efSDavid du Colombier void	fpusysrfork(Ureg*);
62d6dfd9efSDavid du Colombier void	fpusysrforkchild(Proc*, Ureg*, Proc*);
63d6dfd9efSDavid du Colombier void	fputrap(Ureg*, int);
64d6dfd9efSDavid du Colombier char*	getconf(char*);
65d6dfd9efSDavid du Colombier u32int	getccr0(void);
66d6dfd9efSDavid du Colombier u32int	getdar(void);
67d6dfd9efSDavid du Colombier u32int	getdcr(int);
68d6dfd9efSDavid du Colombier u32int	getdear(void);
69d6dfd9efSDavid du Colombier u32int	getdec(void);
70d6dfd9efSDavid du Colombier u32int	getesr(void);
71d6dfd9efSDavid du Colombier u32int	getmsr(void);
72d6dfd9efSDavid du Colombier u32int	getpid(void);
73d6dfd9efSDavid du Colombier u32int	getpir(void);
74d6dfd9efSDavid du Colombier u32int	getpit(void);
75d6dfd9efSDavid du Colombier u32int	getpvr(void);
76d6dfd9efSDavid du Colombier u32int	gettbl(void);
77d6dfd9efSDavid du Colombier u32int	gettsr(void);
78d6dfd9efSDavid du Colombier void	gotopc(uintptr);
79d6dfd9efSDavid du Colombier int	gotsecuremem(void);
80d6dfd9efSDavid du Colombier int	havetimer(void);
81d6dfd9efSDavid du Colombier void	icflush(uintptr, usize);
82d6dfd9efSDavid du Colombier void	idlehands(void);
83d6dfd9efSDavid du Colombier int	inb(int);
84d6dfd9efSDavid du Colombier long	incref(Ref*);
85d6dfd9efSDavid du Colombier void	insb(int, void*, int);
86d6dfd9efSDavid du Colombier ushort	ins(int);
87d6dfd9efSDavid du Colombier void	inss(int, void*, int);
88d6dfd9efSDavid du Colombier ulong	inl(int);
89d6dfd9efSDavid du Colombier void	insl(int, void*, int);
90d6dfd9efSDavid du Colombier void	intr(Ureg*);
91d6dfd9efSDavid du Colombier void	intrdisable(int, void (*)(Ureg*, void*), void*, int, char*);
92d6dfd9efSDavid du Colombier void	intrfmtcounts(char *s, char *se);
93d6dfd9efSDavid du Colombier void	intrinit(void);
94d6dfd9efSDavid du Colombier void	intrshutdown(void);
95d6dfd9efSDavid du Colombier int	ioalloc(int, int, int, char*);
96d6dfd9efSDavid du Colombier void	iofree(int);
97d6dfd9efSDavid du Colombier void	ioinit(void);
98d6dfd9efSDavid du Colombier int	iprint(char*, ...);
99d6dfd9efSDavid du Colombier void	isync(void);
100d6dfd9efSDavid du Colombier void	itlbmiss(void);
101d6dfd9efSDavid du Colombier void	kexit(Ureg*);
102d6dfd9efSDavid du Colombier void*	kmapphys(uintptr, uintptr, ulong, ulong, ulong);
103d6dfd9efSDavid du Colombier uchar	lightbitoff(int);
104d6dfd9efSDavid du Colombier uchar	lightbiton(int);
105d6dfd9efSDavid du Colombier uchar	lightstate(int);
106d6dfd9efSDavid du Colombier void	links(void);
107d6dfd9efSDavid du Colombier void	malinit(void);
108d6dfd9efSDavid du Colombier void	meminit(void);
109d6dfd9efSDavid du Colombier void	mmuinit(void);
110d6dfd9efSDavid du Colombier void*	mmucacheinhib(void*, ulong);
111d6dfd9efSDavid du Colombier ulong	mmumapsize(ulong);
112d6dfd9efSDavid du Colombier void	mutateproc(void *);
113d6dfd9efSDavid du Colombier int	mutatetrigger(void);
114d6dfd9efSDavid du Colombier int	newmmupid(void);
115d6dfd9efSDavid du Colombier int	notify(Ureg*);
116d6dfd9efSDavid du Colombier void	outb(int, int);
117d6dfd9efSDavid du Colombier void	outsb(int, void*, int);
118d6dfd9efSDavid du Colombier void	outs(int, ushort);
119d6dfd9efSDavid du Colombier void	outss(int, void*, int);
120d6dfd9efSDavid du Colombier void	outl(int, ulong);
121d6dfd9efSDavid du Colombier void	outsl(int, void*, int);
122d6dfd9efSDavid du Colombier #define pokeaddr(a, v, w)	probeaddr(a)
123d6dfd9efSDavid du Colombier void	ppc405console(void);
124d6dfd9efSDavid du Colombier vlong	probeaddr(uintptr addr);
125d6dfd9efSDavid du Colombier #define procrestore(p)
126d6dfd9efSDavid du Colombier void	procsave(Proc*);
127d6dfd9efSDavid du Colombier void	procsetup(Proc*);
128d6dfd9efSDavid du Colombier void	putdcr(int, u32int);
129d6dfd9efSDavid du Colombier void	putdec(ulong);
130d6dfd9efSDavid du Colombier void	putesr(ulong);
131d6dfd9efSDavid du Colombier void	putevpr(ulong);
132d6dfd9efSDavid du Colombier void	putmsr(u32int);
133d6dfd9efSDavid du Colombier void	putpid(u32int);
134d6dfd9efSDavid du Colombier void	putpit(u32int);
135d6dfd9efSDavid du Colombier void	putsdr1(u32int);
136d6dfd9efSDavid du Colombier void	puttcr(u32int);
137d6dfd9efSDavid du Colombier void	puttsr(u32int);
138d6dfd9efSDavid du Colombier ulong	qtmborder(void);
139d6dfd9efSDavid du Colombier void	qtmclock(void);
140d6dfd9efSDavid du Colombier void	qtmerr(void);
141d6dfd9efSDavid du Colombier void	qtmerrs(char *);
142d6dfd9efSDavid du Colombier void	qtminit(void);
143d6dfd9efSDavid du Colombier void	shutdown(int ispanic);
144d6dfd9efSDavid du Colombier void	spldone(void);
145d6dfd9efSDavid du Colombier int	splhi(void);
146d6dfd9efSDavid du Colombier int	spllo(void);
147d6dfd9efSDavid du Colombier void	splx(int);
148d6dfd9efSDavid du Colombier void	splxpc(int);
149d6dfd9efSDavid du Colombier void	startcpu(int);
150d6dfd9efSDavid du Colombier void	sync(void);
151d6dfd9efSDavid du Colombier void	syscall(Ureg*);
152d6dfd9efSDavid du Colombier uintptr	sysexecstack(uintptr, int);
153d6dfd9efSDavid du Colombier void	sysprocsetup(Proc*);
154d6dfd9efSDavid du Colombier #define tas tas32
155d6dfd9efSDavid du Colombier void	temactransmit(Ether *);
156d6dfd9efSDavid du Colombier void	touser(uintptr);
157d6dfd9efSDavid du Colombier void	trapinit(void);
158d6dfd9efSDavid du Colombier void	trapcritvec(void);
159d6dfd9efSDavid du Colombier void	trapvec(void);
160d6dfd9efSDavid du Colombier void	tlbdump(char *s);
161d6dfd9efSDavid du Colombier u32int	tlbrehi(int);
162d6dfd9efSDavid du Colombier u32int	tlbrelo(int);
163d6dfd9efSDavid du Colombier int	tlbsxcc(uintptr);
164d6dfd9efSDavid du Colombier void	tlbwrx(int, u32int, u32int);
165d6dfd9efSDavid du Colombier void	uartliteconsole(void);
166d6dfd9efSDavid du Colombier void	uartlputc(int);
167d6dfd9efSDavid du Colombier void	uartlputs(char *s);
168d6dfd9efSDavid du Colombier void	uncinit(void);
169d6dfd9efSDavid du Colombier void	uncinitwait(void);
170d6dfd9efSDavid du Colombier #define	userureg(ur)	(((ur)->status & MSR_PR) != 0)
171f80d550dSDavid du Colombier void	validalign(uintptr, unsigned);
172d6dfd9efSDavid du Colombier void	verifyproc(Proc *);
173d6dfd9efSDavid du Colombier void	verifymach(Mach *);
174d6dfd9efSDavid du Colombier #define	waserror()	(up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1]))
175d6dfd9efSDavid du Colombier void	watchreset(void);
176d6dfd9efSDavid du Colombier void	whackether(Ether *);
177d6dfd9efSDavid du Colombier void	writeconf(void);
178d6dfd9efSDavid du Colombier 
179d6dfd9efSDavid du Colombier /*
180d6dfd9efSDavid du Colombier  * dma.c
181d6dfd9efSDavid du Colombier  */
182d6dfd9efSDavid du Colombier void	dma0init(void);
183d6dfd9efSDavid du Colombier void	dmainit(void);
184d6dfd9efSDavid du Colombier int	dmastart(int, void *dest, void *src, ulong len, ulong flags, void (*f)(int));
185d6dfd9efSDavid du Colombier void	dmawait(int);
186d6dfd9efSDavid du Colombier 
187d6dfd9efSDavid du Colombier /*
188d6dfd9efSDavid du Colombier  * intr.c
189d6dfd9efSDavid du Colombier  */
190d6dfd9efSDavid du Colombier void	intrack(ulong);
191d6dfd9efSDavid du Colombier void	intrenable(ulong bit, int (*func)(ulong), char *);
192d6dfd9efSDavid du Colombier void	intrinit(void);
193d6dfd9efSDavid du Colombier 
194d6dfd9efSDavid du Colombier int	cas32(void*, u32int, u32int);
195d6dfd9efSDavid du Colombier int	tas32(void*);
196d6dfd9efSDavid du Colombier 
197d6dfd9efSDavid du Colombier #define CASU(p, e, n)	cas32((p), (u32int)(e), (u32int)(n))
198d6dfd9efSDavid du Colombier #define CASV(p, e, n)	cas32((p), (u32int)(e), (u32int)(n))
199d6dfd9efSDavid du Colombier #define CASW(addr, exp, new)	cas32((addr), (exp), (new))
200d6dfd9efSDavid du Colombier #define TAS(addr)	tas32(addr)
201d6dfd9efSDavid du Colombier 
202d6dfd9efSDavid du Colombier void	forkret(void);
203d6dfd9efSDavid du Colombier 
204d6dfd9efSDavid du Colombier #define PTR2UINT(p)	((uintptr)(p))
205d6dfd9efSDavid du Colombier #define UINT2PTR(i)	((void*)(i))
206d6dfd9efSDavid du Colombier 
207d6dfd9efSDavid du Colombier #define	isphys(a)	(((ulong)(a)&KSEGM)!=KSEG0 && ((ulong)(a)&KSEGM)!=KSEG1)
208d6dfd9efSDavid du Colombier #define KADDR(a)	((void*)((ulong)(a) | KZERO))
209d6dfd9efSDavid du Colombier #define PADDR(a)	(isphys(a)? (ulong)(a): ((ulong)(a) & ~KSEGM))
210d6dfd9efSDavid du Colombier 
211d6dfd9efSDavid du Colombier /*
212d6dfd9efSDavid du Colombier  * this low-level printing stuff is ugly,
213d6dfd9efSDavid du Colombier  * but there appears to be no other way to
214d6dfd9efSDavid du Colombier  * print until after #t is populated.
215d6dfd9efSDavid du Colombier  */
216d6dfd9efSDavid du Colombier 
217d6dfd9efSDavid du Colombier #define wave(c) { \
218d6dfd9efSDavid du Colombier 	barriers(); \
219d6dfd9efSDavid du Colombier 	*(ulong *)Uartlite = (c); \
220d6dfd9efSDavid du Colombier 	barriers(); \
221d6dfd9efSDavid du Colombier }
222