xref: /plan9-contrib/sys/src/9/loongson/fns.h (revision a81c3ea0c7f009a3088ab7fe55ea9013d9d77a74)
1*a81c3ea0SDavid du Colombier #include "../port/portfns.h"
2*a81c3ea0SDavid du Colombier 
3*a81c3ea0SDavid du Colombier void	arginit(void);
4*a81c3ea0SDavid du Colombier int	busprobe(ulong);
5*a81c3ea0SDavid du Colombier ulong	cankaddr(ulong);
6*a81c3ea0SDavid du Colombier void	cleancache(void);
7*a81c3ea0SDavid du Colombier void	clearmmucache(void);
8*a81c3ea0SDavid du Colombier void	clock(Ureg*);
9*a81c3ea0SDavid du Colombier void	clockinit(void);
10*a81c3ea0SDavid du Colombier void	clockshutdown(void);
11*a81c3ea0SDavid du Colombier int	cmpswap(long*, long, long);
12*a81c3ea0SDavid du Colombier void	coherence(void);
13*a81c3ea0SDavid du Colombier void	cycles(uvlong *);
14*a81c3ea0SDavid du Colombier void	dcflush(void*, ulong);
15*a81c3ea0SDavid du Colombier void	dcinvalid(void*, ulong);
16*a81c3ea0SDavid du Colombier void	dumptlb(void);
17*a81c3ea0SDavid du Colombier void	faultmips(Ureg*, int, int);
18*a81c3ea0SDavid du Colombier void*	fbinit(void);
19*a81c3ea0SDavid du Colombier ulong	fcr31(void);
20*a81c3ea0SDavid du Colombier void	firmware(int);
21*a81c3ea0SDavid du Colombier void	fpclear(void);
22*a81c3ea0SDavid du Colombier void	fpsave(FPsave *);
23*a81c3ea0SDavid du Colombier void	fptrap(Ureg*);
24*a81c3ea0SDavid du Colombier void	fpwatch(Ureg *);
25*a81c3ea0SDavid du Colombier ulong	getcause(void);
26*a81c3ea0SDavid du Colombier char*	getconf(char*);
27*a81c3ea0SDavid du Colombier ulong	getconfig(void);
28*a81c3ea0SDavid du Colombier ulong	getpagemask(void);
29*a81c3ea0SDavid du Colombier ulong	getstatus(void);
30*a81c3ea0SDavid du Colombier int	gettlbp(ulong, ulong*);
31*a81c3ea0SDavid du Colombier ulong	gettlbvirt(int);
32*a81c3ea0SDavid du Colombier void	gettlbx(int, Softtlb*);
33*a81c3ea0SDavid du Colombier void	gotopc(ulong);
34*a81c3ea0SDavid du Colombier void	hinv(void);
35*a81c3ea0SDavid du Colombier int	i8042auxcmd(int);
36*a81c3ea0SDavid du Colombier int	i8042auxcmds(uchar*, int);
37*a81c3ea0SDavid du Colombier void	i8042auxenable(void (*)(int, int));
38*a81c3ea0SDavid du Colombier void	i8042reset(void);
39*a81c3ea0SDavid du Colombier int	i8250console(void);
40*a81c3ea0SDavid du Colombier int	i8259disable(int);
41*a81c3ea0SDavid du Colombier int	i8259enable(int);
42*a81c3ea0SDavid du Colombier void	i8259init(void);
43*a81c3ea0SDavid du Colombier int	i8259intack(void);
44*a81c3ea0SDavid du Colombier int	i8259isr(int);
45*a81c3ea0SDavid du Colombier void	icflush(void *, ulong);
46*a81c3ea0SDavid du Colombier void	idle(void);
47*a81c3ea0SDavid du Colombier #define	idlehands()		/* no wait instruction, do nothing */
48*a81c3ea0SDavid du Colombier #define	inb(r)		(*(uchar*)(IOBASE+(r)))
49*a81c3ea0SDavid du Colombier void	insb(int, void*, int);
50*a81c3ea0SDavid du Colombier #define	ins(r)		(*(ushort*)(IOBASE+(r)))
51*a81c3ea0SDavid du Colombier void	inss(int, void*, int);
52*a81c3ea0SDavid du Colombier #define	inl(r)		(*(ulong*)(IOBASE+(r)))
53*a81c3ea0SDavid du Colombier void	insl(int, void*, int);
54*a81c3ea0SDavid du Colombier void	intrenable(int, void(*)(Ureg*, void *), void *, int);
55*a81c3ea0SDavid du Colombier void	introff(int);
56*a81c3ea0SDavid du Colombier void	intron(int);
57*a81c3ea0SDavid du Colombier void	intrshutdown(void);
58*a81c3ea0SDavid du Colombier void	ioinit(void);
59*a81c3ea0SDavid du Colombier int	isaconfig(char*, int, ISAConf*);
60*a81c3ea0SDavid du Colombier void	kbdinit(void);
61*a81c3ea0SDavid du Colombier void	kfault(Ureg*);
62*a81c3ea0SDavid du Colombier KMap*	kmap(Page*);
63*a81c3ea0SDavid du Colombier void	kmapinit(void);
64*a81c3ea0SDavid du Colombier void	kmapinval(void);
65*a81c3ea0SDavid du Colombier void	kunmap(KMap*);
66*a81c3ea0SDavid du Colombier void	launchinit(void);
67*a81c3ea0SDavid du Colombier void	launch(int);
68*a81c3ea0SDavid du Colombier void	links(void);
69*a81c3ea0SDavid du Colombier ulong	machstatus(void);
70*a81c3ea0SDavid du Colombier void	newstart(void);
71*a81c3ea0SDavid du Colombier int	newtlbpid(Proc*);
72*a81c3ea0SDavid du Colombier void	online(void);
73*a81c3ea0SDavid du Colombier #define	outb(r, v)	(*(uchar*)(IOBASE+(r)) = v)
74*a81c3ea0SDavid du Colombier void	outsb(int, void*, int);
75*a81c3ea0SDavid du Colombier #define	outs(r, v)	(*(ushort*)(IOBASE+(r)) = v)
76*a81c3ea0SDavid du Colombier void	outss(int, void*, int);
77*a81c3ea0SDavid du Colombier #define	outl(r, v)	(*(ulong*)(IOBASE+(r)) = v)
78*a81c3ea0SDavid du Colombier void	outsl(int, void*, int);
79*a81c3ea0SDavid du Colombier ulong	pcibarsize(Pcidev*, int);
80*a81c3ea0SDavid du Colombier void	pcibussize(Pcidev*, ulong*, ulong*);
81*a81c3ea0SDavid du Colombier int	pcicfgr8(Pcidev*, int);
82*a81c3ea0SDavid du Colombier int	pcicfgr16(Pcidev*, int);
83*a81c3ea0SDavid du Colombier int	pcicfgr32(Pcidev*, int);
84*a81c3ea0SDavid du Colombier void	pcicfgw8(Pcidev*, int, int);
85*a81c3ea0SDavid du Colombier void	pcicfgw16(Pcidev*, int, int);
86*a81c3ea0SDavid du Colombier void	pcicfgw32(Pcidev*, int, int);
87*a81c3ea0SDavid du Colombier void	pciclrbme(Pcidev*);
88*a81c3ea0SDavid du Colombier void	pciclrioe(Pcidev*);
89*a81c3ea0SDavid du Colombier void	pciclrmwi(Pcidev*);
90*a81c3ea0SDavid du Colombier int	pcigetpms(Pcidev*);
91*a81c3ea0SDavid du Colombier void	pcihinv(Pcidev*);
92*a81c3ea0SDavid du Colombier uchar	pciipin(Pcidev*, uchar);
93*a81c3ea0SDavid du Colombier Pcidev* pcimatch(Pcidev*, int, int);
94*a81c3ea0SDavid du Colombier Pcidev* pcimatchtbdf(int);
95*a81c3ea0SDavid du Colombier void	pcireset(void);
96*a81c3ea0SDavid du Colombier int	pciscan(int, Pcidev**);
97*a81c3ea0SDavid du Colombier void	pcisetbme(Pcidev*);
98*a81c3ea0SDavid du Colombier void	pcisetioe(Pcidev*);
99*a81c3ea0SDavid du Colombier void	pcisetmwi(Pcidev*);
100*a81c3ea0SDavid du Colombier int	pcisetpms(Pcidev*, int);
101*a81c3ea0SDavid du Colombier int	pcisubirq(int);
102*a81c3ea0SDavid du Colombier ulong	prid(void);
103*a81c3ea0SDavid du Colombier void	procrestore(Proc *);
104*a81c3ea0SDavid du Colombier void	procsave(Proc *);
105*a81c3ea0SDavid du Colombier #define	procsetup(p)	((p)->fpstate = FPinit)
106*a81c3ea0SDavid du Colombier void	purgetlb(int);
107*a81c3ea0SDavid du Colombier Softtlb*	putstlb(ulong, ulong);
108*a81c3ea0SDavid du Colombier int	puttlb(ulong, ulong, ulong);
109*a81c3ea0SDavid du Colombier void	puttlbx(int, ulong, ulong, ulong, int);
110*a81c3ea0SDavid du Colombier ulong	rdcompare(void);
111*a81c3ea0SDavid du Colombier ulong	rdcount(void);
112*a81c3ea0SDavid du Colombier ulong*	reg(Ureg*, int);
113*a81c3ea0SDavid du Colombier void	restfpregs(FPsave*, ulong);
114*a81c3ea0SDavid du Colombier void	screeninit(void);
115*a81c3ea0SDavid du Colombier void	setleveldest(int, int, uvlong*);
116*a81c3ea0SDavid du Colombier void	setpagemask(ulong);
117*a81c3ea0SDavid du Colombier void	setsp(ulong);
118*a81c3ea0SDavid du Colombier void	setstatus(ulong);
119*a81c3ea0SDavid du Colombier void	setwatchhi0(ulong);
120*a81c3ea0SDavid du Colombier void	setwatchlo0(ulong);
121*a81c3ea0SDavid du Colombier void	setwired(ulong);
122*a81c3ea0SDavid du Colombier ulong	stlbhash(ulong);
123*a81c3ea0SDavid du Colombier void	swcursorinit(void);
124*a81c3ea0SDavid du Colombier void	syncclock(void);
125*a81c3ea0SDavid du Colombier long	syscall(Ureg*);
126*a81c3ea0SDavid du Colombier void	syscallfmt(int syscallno, ulong pc, va_list list);
127*a81c3ea0SDavid du Colombier void	sysretfmt(int syscallno, va_list list, long ret, uvlong start, uvlong stop);
128*a81c3ea0SDavid du Colombier int	tas(ulong*);
129*a81c3ea0SDavid du Colombier void	tlbinit(void);
130*a81c3ea0SDavid du Colombier ulong	tlbvirt(void);
131*a81c3ea0SDavid du Colombier void	touser(uintptr);
132*a81c3ea0SDavid du Colombier void	unleash(void);
133*a81c3ea0SDavid du Colombier #define	userureg(ur) ((ur)->status & KUSER)
134*a81c3ea0SDavid du Colombier void	validalign(uintptr, unsigned);
135*a81c3ea0SDavid du Colombier void	vecinit(void);
136*a81c3ea0SDavid du Colombier void	vector0(void);
137*a81c3ea0SDavid du Colombier void	vector100(void);
138*a81c3ea0SDavid du Colombier void	vector180(void);
139*a81c3ea0SDavid du Colombier void	wrcompare(ulong);
140*a81c3ea0SDavid du Colombier void	wrcount(ulong);
141*a81c3ea0SDavid du Colombier ulong	wiredpte(vlong);
142*a81c3ea0SDavid du Colombier void	machwire(void);
143*a81c3ea0SDavid du Colombier void	_uartputs(char*, int);
144*a81c3ea0SDavid du Colombier int	_uartprint(char*, ...);
145*a81c3ea0SDavid du Colombier 
146*a81c3ea0SDavid du Colombier #define PTR2UINT(p)	((uintptr)(p))
147*a81c3ea0SDavid du Colombier #define UINT2PTR(i)	((void*)(i))
148*a81c3ea0SDavid du Colombier 
149*a81c3ea0SDavid du Colombier #define	waserror()	(up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1]))
150*a81c3ea0SDavid du Colombier 
151*a81c3ea0SDavid du Colombier #define KADDR(a)	((void*)((ulong)(a)|KSEG0))
152*a81c3ea0SDavid du Colombier #define PADDR(a)	((ulong)(a)&~KSEGM)
153*a81c3ea0SDavid du Colombier 
154*a81c3ea0SDavid du Colombier #define KSEG0ADDR(a)	((void*)(((ulong)(a)&~KSEGM)|KSEG0))
155*a81c3ea0SDavid du Colombier #define KSEG1ADDR(a)	((void*)((ulong)(a)|KSEG1))
156*a81c3ea0SDavid du Colombier 
157*a81c3ea0SDavid du Colombier #define sdmalloc(n)		mallocalign(n, CACHELINESZ, 0, 0)
158*a81c3ea0SDavid du Colombier #define sdfree(p)		free(p)
159*a81c3ea0SDavid du Colombier 
160*a81c3ea0SDavid du Colombier int pmonprint(char*, ...);
161