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