xref: /plan9-contrib/sys/src/9/vt5/fns.h (revision cce710d3fba6018ef0c8c1b503e500038744d49c)
11c9d674cSDavid du Colombier #define checkmmu(a, b)
21c9d674cSDavid du Colombier #define countpagerefs(a, b)
31c9d674cSDavid du Colombier 
41c9d674cSDavid du Colombier #include "../port/portfns.h"
51c9d674cSDavid du Colombier 
61c9d674cSDavid du Colombier typedef struct Dma Dma;
71c9d674cSDavid du Colombier typedef struct Ether Ether;
81c9d674cSDavid du Colombier #pragma incomplete Dma
91c9d674cSDavid du Colombier 
101c9d674cSDavid du Colombier void	addconf(char*, char*);
11*cce710d3SDavid du Colombier long	adec(long*);
12*cce710d3SDavid du Colombier long	ainc(long*);
131c9d674cSDavid du Colombier void	archetherspeed(int, int);
141c9d674cSDavid du Colombier void	archinit(void);
151c9d674cSDavid du Colombier uint	archmiiport(int);
161c9d674cSDavid du Colombier void	archreboot(void);
171c9d674cSDavid du Colombier void	archreset(void);
181c9d674cSDavid du Colombier ulong	archuartclock(int, int);
191c9d674cSDavid du Colombier void	barriers(void);
201c9d674cSDavid du Colombier uintptr	cankaddr(uintptr pa);
211c9d674cSDavid du Colombier Block*	clallocb(void);
221c9d674cSDavid du Colombier void	clockinit(void);
231c9d674cSDavid du Colombier void	clockintr(Ureg*);
241c9d674cSDavid du Colombier void	clrmchk(void);
251c9d674cSDavid du Colombier int	cmpswap(long*, long, long);
261c9d674cSDavid du Colombier #define coherence()	mbar()
271c9d674cSDavid du Colombier char	*cputype2name(char *, int);
281c9d674cSDavid du Colombier void	cpuidprint(void);
291c9d674cSDavid du Colombier void	critintrvec(void);
301c9d674cSDavid du Colombier #define cycles(ip) *(ip) = lcycles()
311c9d674cSDavid du Colombier void	dcbi(uintptr, usize);
321c9d674cSDavid du Colombier void	dcbst(uintptr, usize);
331c9d674cSDavid du Colombier void	dcflush(uintptr, usize);
341c9d674cSDavid du Colombier void	dcrcompile(void);
351c9d674cSDavid du Colombier long	decref(Ref*);
361c9d674cSDavid du Colombier void	delay(int);
371c9d674cSDavid du Colombier void	dtlbmiss(void);
381c9d674cSDavid du Colombier void	dump(void *, int);
391c9d674cSDavid du Colombier void	dumpmal(void);
401c9d674cSDavid du Colombier void	dumpregs(Ureg*);
411c9d674cSDavid du Colombier void	delayloopinit(void);
421c9d674cSDavid du Colombier Dev*	devtabget(int, int);
431c9d674cSDavid du Colombier void	devtabinit(void);
441c9d674cSDavid du Colombier void	devtabreset(void);
451c9d674cSDavid du Colombier long	devtabread(Chan*, void*, long, vlong);
461c9d674cSDavid du Colombier void	devtabshutdown(void);
471c9d674cSDavid du Colombier void	dump(void *, int);
481c9d674cSDavid du Colombier void	eieio(void);
491c9d674cSDavid du Colombier void	etherclock(void);
501c9d674cSDavid du Colombier void	fifoinit(Ether *);
511c9d674cSDavid du Colombier void	firmware(int);
521c9d674cSDavid du Colombier int	fpipower(Ureg*);
531c9d674cSDavid du Colombier int	fpuavail(Ureg*);
541c9d674cSDavid du Colombier int	fpudevprocio(Proc*, void*, long, uintptr, int);
551c9d674cSDavid du Colombier int	fpuemu(Ureg*);
561c9d674cSDavid du Colombier void	fpuinit(void);
571c9d674cSDavid du Colombier void	fpunoted(void);
581c9d674cSDavid du Colombier void	fpunotify(Ureg*);
591c9d674cSDavid du Colombier void	fpuprocresetore(Proc*);
601c9d674cSDavid du Colombier #define	fpuprocresetore(p) USED(p)
611c9d674cSDavid du Colombier void	fpuprocsave(Proc*);
621c9d674cSDavid du Colombier #define	fpuprocsave(p) USED(p)
631c9d674cSDavid du Colombier void	fpusysprocsetup(Proc*);
641c9d674cSDavid du Colombier void	fpusysrfork(Ureg*);
651c9d674cSDavid du Colombier void	fpusysrforkchild(Proc*, Ureg*, Proc*);
661c9d674cSDavid du Colombier void	fputrap(Ureg*, int);
671c9d674cSDavid du Colombier char*	getconf(char*);
681c9d674cSDavid du Colombier u32int	getccr0(void);
691c9d674cSDavid du Colombier u32int	getdar(void);
701c9d674cSDavid du Colombier u32int	getdcr(int);
711c9d674cSDavid du Colombier u32int	getdear(void);
721c9d674cSDavid du Colombier u32int	getdec(void);
731c9d674cSDavid du Colombier u32int	getesr(void);
741c9d674cSDavid du Colombier u32int	getmcsr(void);
751c9d674cSDavid du Colombier u32int	getmsr(void);
761c9d674cSDavid du Colombier u32int	getpid(void);
771c9d674cSDavid du Colombier u32int	getpir(void);
781c9d674cSDavid du Colombier u32int	getpit(void);
791c9d674cSDavid du Colombier u32int	getpvr(void);
801c9d674cSDavid du Colombier u32int	getstid(void);
811c9d674cSDavid du Colombier u32int	gettbl(void);
821c9d674cSDavid du Colombier u32int	gettsr(void);
831c9d674cSDavid du Colombier void	gotopc(uintptr);
841c9d674cSDavid du Colombier int	gotsecuremem(void);
851c9d674cSDavid du Colombier int	havetimer(void);
861c9d674cSDavid du Colombier void	iccci(void);
871c9d674cSDavid du Colombier void	icflush(uintptr, usize);
881c9d674cSDavid du Colombier void	idlehands(void);
891c9d674cSDavid du Colombier int	inb(int);
901c9d674cSDavid du Colombier long	incref(Ref*);
911c9d674cSDavid du Colombier void	insb(int, void*, int);
921c9d674cSDavid du Colombier ushort	ins(int);
931c9d674cSDavid du Colombier void	inss(int, void*, int);
941c9d674cSDavid du Colombier ulong	inl(int);
951c9d674cSDavid du Colombier void	insl(int, void*, int);
961c9d674cSDavid du Colombier void	intr(Ureg*);
971c9d674cSDavid du Colombier void	intrdisable(int, void (*)(Ureg*, void*), void*, int, char*);
981c9d674cSDavid du Colombier void	intrfmtcounts(char *s, char *se);
991c9d674cSDavid du Colombier void	intrinit(void);
1001c9d674cSDavid du Colombier void	intrshutdown(void);
1011c9d674cSDavid du Colombier int	ioalloc(int, int, int, char*);
1021c9d674cSDavid du Colombier void	iofree(int);
1031c9d674cSDavid du Colombier void	ioinit(void);
1041c9d674cSDavid du Colombier int	iprint(char*, ...);
1051c9d674cSDavid du Colombier void	isync(void);
1061c9d674cSDavid du Colombier void	itlbmiss(void);
1071c9d674cSDavid du Colombier void	kexit(Ureg*);
1081c9d674cSDavid du Colombier void*	kmapphys(uintptr, uintptr, ulong, ulong, ulong);
1091c9d674cSDavid du Colombier uchar	lightbitoff(int);
1101c9d674cSDavid du Colombier uchar	lightbiton(int);
1111c9d674cSDavid du Colombier uchar	lightstate(int);
1121c9d674cSDavid du Colombier void	links(void);
1131c9d674cSDavid du Colombier void	malinit(void);
1141c9d674cSDavid du Colombier void	mbar(void);
1151c9d674cSDavid du Colombier void	meminit(void);
1161c9d674cSDavid du Colombier void	mmuinit(void);
1171c9d674cSDavid du Colombier void*	mmucacheinhib(void*, ulong);
1181c9d674cSDavid du Colombier ulong	mmumapsize(ulong);
1191c9d674cSDavid du Colombier void	mutateproc(void *);
1201c9d674cSDavid du Colombier int	mutatetrigger(void);
1211c9d674cSDavid du Colombier int	newmmupid(void);
1221c9d674cSDavid du Colombier int	notify(Ureg*);
1231c9d674cSDavid du Colombier void	outb(int, int);
1241c9d674cSDavid du Colombier void	outsb(int, void*, int);
1251c9d674cSDavid du Colombier void	outs(int, ushort);
1261c9d674cSDavid du Colombier void	outss(int, void*, int);
1271c9d674cSDavid du Colombier void	outl(int, ulong);
1281c9d674cSDavid du Colombier void	outsl(int, void*, int);
1291c9d674cSDavid du Colombier u32int	pidget(void);
1301c9d674cSDavid du Colombier void	pidput(u32int);
1311c9d674cSDavid du Colombier vlong	pokeaddr(uintptr addr, uint, uint);
1321c9d674cSDavid du Colombier void	ppc405console(void);
1331c9d674cSDavid du Colombier vlong	probeaddr(uintptr addr);
1341c9d674cSDavid du Colombier #define procrestore(p)
1351c9d674cSDavid du Colombier void	procsave(Proc*);
1361c9d674cSDavid du Colombier void	procsetup(Proc*);
1371c9d674cSDavid du Colombier void	putdbsr(ulong);
1381c9d674cSDavid du Colombier void	putdcr(int, u32int);
1391c9d674cSDavid du Colombier void	putdec(ulong);
1401c9d674cSDavid du Colombier void	putesr(ulong);
1411c9d674cSDavid du Colombier void	putevpr(ulong);
1421c9d674cSDavid du Colombier void	putmcsr(u32int);
1431c9d674cSDavid du Colombier void	putmsr(u32int);
1441c9d674cSDavid du Colombier void	putpid(u32int);
1451c9d674cSDavid du Colombier void	putpit(u32int);
1461c9d674cSDavid du Colombier void	putsdr1(u32int);
1471c9d674cSDavid du Colombier void	puttcr(u32int);
1481c9d674cSDavid du Colombier void	puttsr(u32int);
1491c9d674cSDavid du Colombier ulong	qtmborder(void);
1501c9d674cSDavid du Colombier void	qtmclock(void);
1511c9d674cSDavid du Colombier void	qtmerr(void);
1521c9d674cSDavid du Colombier void	qtmerrs(char *);
1531c9d674cSDavid du Colombier void	qtminit(void);
1541c9d674cSDavid du Colombier void	shutdown(int ispanic);
1551c9d674cSDavid du Colombier void	spldone(void);
1561c9d674cSDavid du Colombier int	splhi(void);
1571c9d674cSDavid du Colombier int	spllo(void);
1581c9d674cSDavid du Colombier void	splx(int);
1591c9d674cSDavid du Colombier void	splxpc(int);
1601c9d674cSDavid du Colombier void	startcpu(int);
1611c9d674cSDavid du Colombier u32int	stidget(void);
1621c9d674cSDavid du Colombier u32int	stidput(u32int);
1631c9d674cSDavid du Colombier void	sync(void);
1641c9d674cSDavid du Colombier void	syscall(Ureg*);
1651c9d674cSDavid du Colombier uintptr	sysexecstack(uintptr, int);
1661c9d674cSDavid du Colombier void	sysprocsetup(Proc*);
1671c9d674cSDavid du Colombier #define tas tas32
1681c9d674cSDavid du Colombier void	temactransmit(Ether *);
1691c9d674cSDavid du Colombier void	touser(uintptr);
1701c9d674cSDavid du Colombier void	trapinit(void);
1711c9d674cSDavid du Colombier void	trapcritvec(void);
1721c9d674cSDavid du Colombier void	trapvec(void);
1731c9d674cSDavid du Colombier void	trapmvec(void);
1741c9d674cSDavid du Colombier void	tlbdump(char *s);
1751c9d674cSDavid du Colombier u32int	tlbrehi(int);
1761c9d674cSDavid du Colombier u32int	tlbrelo(int);
1771c9d674cSDavid du Colombier u32int	tlbremd(int);
1781c9d674cSDavid du Colombier int	tlbsxcc(uintptr);
1791c9d674cSDavid du Colombier void	tlbwrx(int, u32int, u32int, u32int);
1801c9d674cSDavid du Colombier void	uartliteconsole(void);
1811c9d674cSDavid du Colombier void	uartlputc(int);
1821c9d674cSDavid du Colombier void	uartlputs(char *s);
1831c9d674cSDavid du Colombier void	uncinit(void);
1841c9d674cSDavid du Colombier void	uncinitwait(void);
1851c9d674cSDavid du Colombier #define	userureg(ur)	(((ur)->status & MSR_PR) != 0)
186f80d550dSDavid du Colombier void	validalign(uintptr, unsigned);
1871c9d674cSDavid du Colombier void	verifyproc(Proc *);
1881c9d674cSDavid du Colombier void	verifymach(Mach *);
1891c9d674cSDavid du Colombier #define	waserror()	(up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1]))
1901c9d674cSDavid du Colombier void	watchreset(void);
1911c9d674cSDavid du Colombier void	whackether(Ether *);
1921c9d674cSDavid du Colombier void	writeconf(void);
1931c9d674cSDavid du Colombier 
1941c9d674cSDavid du Colombier /*
1951c9d674cSDavid du Colombier  * dma.c
1961c9d674cSDavid du Colombier  */
1971c9d674cSDavid du Colombier void	dma0init(void);
1981c9d674cSDavid du Colombier void	dmainit(void);
1991c9d674cSDavid du Colombier int	dmastart(int, void *dest, void *src, ulong len, ulong flags, void (*f)(int));
2001c9d674cSDavid du Colombier void	dmawait(int);
2011c9d674cSDavid du Colombier 
2021c9d674cSDavid du Colombier /*
2031c9d674cSDavid du Colombier  * intr.c
2041c9d674cSDavid du Colombier  */
2051c9d674cSDavid du Colombier void	intrack(ulong);
2061c9d674cSDavid du Colombier void	intrenable(ulong bit, int (*func)(ulong), char *);
2071c9d674cSDavid du Colombier void	intrinit(void);
2081c9d674cSDavid du Colombier 
2091c9d674cSDavid du Colombier int	cas32(void*, u32int, u32int);
2101c9d674cSDavid du Colombier int	tas32(void*);
2111c9d674cSDavid du Colombier 
2121c9d674cSDavid du Colombier #define CASU(p, e, n)	cas32((p), (u32int)(e), (u32int)(n))
2131c9d674cSDavid du Colombier #define CASV(p, e, n)	cas32((p), (u32int)(e), (u32int)(n))
2141c9d674cSDavid du Colombier #define CASW(addr, exp, new)	cas32((addr), (exp), (new))
2151c9d674cSDavid du Colombier #define TAS(addr)	tas32(addr)
2161c9d674cSDavid du Colombier 
2171c9d674cSDavid du Colombier void	forkret(void);
2181c9d674cSDavid du Colombier 
2191c9d674cSDavid du Colombier #define PTR2UINT(p)	((uintptr)(p))
2201c9d674cSDavid du Colombier #define UINT2PTR(i)	((void*)(i))
2211c9d674cSDavid du Colombier 
2221c9d674cSDavid du Colombier #define	isphys(a)	(((ulong)(a)&KSEGM)!=KSEG0 && ((ulong)(a)&KSEGM)!=KSEG1)
2231c9d674cSDavid du Colombier #define KADDR(a)	((void*)((ulong)(a) | KZERO))
2241c9d674cSDavid du Colombier #define PADDR(a)	(isphys(a)? (ulong)(a): ((ulong)(a) & ~KSEGM))
2251c9d674cSDavid du Colombier 
2261c9d674cSDavid du Colombier /*
2271c9d674cSDavid du Colombier  * this low-level printing stuff is ugly,
2281c9d674cSDavid du Colombier  * but there appears to be no other way to
2291c9d674cSDavid du Colombier  * print until after #t is populated.
2301c9d674cSDavid du Colombier  */
2311c9d674cSDavid du Colombier 
2321c9d674cSDavid du Colombier #define wave(c) { \
2331c9d674cSDavid du Colombier 	barriers(); \
2341c9d674cSDavid du Colombier 	*(ulong *)Uartlite = (c); \
2351c9d674cSDavid du Colombier 	barriers(); \
2361c9d674cSDavid du Colombier }
237