xref: /plan9-contrib/sys/src/9k/k10/fns.h (revision da317bb81ef206f889122f8664a27371f63545f4)
1 #include "../port/portfns.h"
2 
3 void	aamloop(int);
4 int	acpiinit(void);
5 Dirtab*	addarchfile(char*, int, long(*)(Chan*,void*,long,vlong), long(*)(Chan*,void*,long,vlong));
6 void	archfmtinstall(void);
7 void	archinit(void);
8 int	archmmu(void);
9 void	archreset(void);
10 vlong	archhz(void);
11 int	asmfree(uvlong, uvlong, int);
12 uvlong	asmalloc(uvlong, uvlong, int, int);
13 void	asminit(void);
14 void	asmmapinit(u64int, u64int, int);
15 void	asmmodinit(u32int, u32int, char*);
16 void	cgaconsputs(char*, int);
17 void	cgainit(void);
18 void	cgapost(int);
19 #define	clearmmucache()				/* x86 doesn't have one */
20 void	(*coherence)(void);
21 int	corecolor(int);
22 u32int	cpuid(u32int, u32int, u32int[4]);
23 int	dbgprint(char*, ...);
24 #define decref(r)	adec(&(r)->ref)
25 void	delay(int);
26 #define	evenaddr(x)				/* x86 doesn't care */
27 int	fpudevprocio(Proc*, void*, long, uintptr, int);
28 void	fpuinit(void);
29 void	fpunoted(void);
30 void	fpunotify(Ureg*);
31 void	fpuprocrestore(Proc*);
32 void	fpuprocsave(Proc*);
33 void	fpusysprocsetup(Proc*);
34 void	fpusysrfork(Ureg*);
35 void	fpusysrforkchild(Proc*, Proc*);
36 char*	getconf(char*);
37 void	halt(void);
38 int	i8042auxcmd(int);
39 int	i8042auxcmds(uchar*, int);
40 void	i8042auxenable(void (*)(int, int));
41 void	i8042reset(void);
42 Uart*	i8250console(char*);
43 void*	i8250alloc(int, int, int);
44 void	i8250mouse(char*, int (*)(Queue*, int), int);
45 void	i8250setmouseputc(char*, int (*)(Queue*, int));
46 vlong	i8254hz(u32int[2][4]);
47 void	idlehands(void);
48 void	idthandlers(void);
49 int	inb(int);
50 #define incref(r)	ainc(&(r)->ref)
51 void	insb(int, void*, int);
52 ushort	ins(int);
53 void	inss(int, void*, int);
54 ulong	inl(int);
55 void	insl(int, void*, int);
56 int	intrdisable(void*);
57 void*	intrenable(int, void (*)(Ureg*, void*), void*, int, char*);
58 void	invlpg(uintptr);
59 void	iofree(int);
60 void	ioinit(void);
61 int	iounused(int, int);
62 int	ioalloc(int, int, int, char*);
63 int	ioreserve(int, int, int, char*);
64 int	iprint(char*, ...);
65 int	isaconfig(char*, int, ISAConf*);
66 void	kbdenable(void);
67 void	kbdinit(void);
68 void	kexit(Ureg*);
69 #define	kmapinval()
70 void	lfence(void);
71 void	links(void);
72 void	machinit(void);
73 void	mach0init(void);
74 void	mapraminit(uvlong, uvlong);
75 void	mapupainit(uvlong, ulong);
76 int	memcolor(uintmem, uintmem*);
77 void	meminit(void);
78 void	mfence(void);
79 void	mmucachectl(Page*, uint);
80 void	mmuflushtlb(u64int);
81 void	mmuinit(void);
82 u64int	mmuphysaddr(uintptr);
83 int	mmuwalk(uintptr, int, PTE**, u64int (*)(usize));
84 int	multiboot(u32int, u32int, int);
85 void	ndnr(void);
86 uchar	nvramread(int);
87 void	nvramwrite(int, uchar);
88 void	optionsinit(char*);
89 void	outb(int, int);
90 void	outsb(int, void*, int);
91 void	outs(int, ushort);
92 void	outss(int, void*, int);
93 void	outl(int, ulong);
94 void	outsl(int, void*, int);
95 void	pause(void);
96 int	pciscan(int, Pcidev**);
97 ulong	pcibarsize(Pcidev*, int);
98 int	pcicap(Pcidev*, int);
99 int	pcihtcap(Pcidev*, int);
100 int	pcienumcaps(Pcidev*, int (*fmatch)(Pcidev*, int, int, int), int);
101 int	pcicfgr8(Pcidev*, int);
102 int	pcicfgr16(Pcidev*, int);
103 int	pcicfgr32(Pcidev*, int);
104 void	pcicfgw8(Pcidev*, int, int);
105 void	pcicfgw16(Pcidev*, int, int);
106 void	pcicfgw32(Pcidev*, int, int);
107 void	pciclrbme(Pcidev*);
108 void	pciclrioe(Pcidev*);
109 void	pciclrmwi(Pcidev*);
110 int	pcigetpms(Pcidev*);
111 void	pcihinv(Pcidev*);
112 uchar	pciipin(Pcidev*, uchar);
113 Pcidev*	pcimatch(Pcidev*, int, int);
114 Pcidev*	pcimatchtbdf(int);
115 void	pcireset(void);
116 void	pcisetbme(Pcidev*);
117 void	pcisetioe(Pcidev*);
118 void	pcisetmwi(Pcidev*);
119 int	pcisetpms(Pcidev*, int);
120 void	(*pmcupdate)(void);
121 void	printcpufreq(void);
122 int	screenprint(char*, ...);			/* debugging */
123 void	sfence(void);
124 void	spldone(void);
125 u64int	splhi(void);
126 u64int	spllo(void);
127 void	splx(u64int);
128 void	splxpc(u64int);
129 void	syncclock(void);
130 void*	sysexecregs(uintptr, ulong, ulong);
131 uintptr	sysexecstack(uintptr, int);
132 void	sysprocsetup(Proc*);
133 void	tssrsp0(u64int);
134 void	trapenable(int, void (*)(Ureg*, void*), void*, char*);
135 void	trapinit(void);
136 int	userureg(Ureg*);
137 void	umeminit(void);
138 void*	vmap(uintmem, usize);
139 void	vsvminit(int);
140 void	vunmap(void*, usize);
141 int	(*waitfor)(int*, int);
142 
143 extern Mreg cr0get(void);
144 extern void cr0put(Mreg);
145 extern Mreg cr2get(void);
146 extern Mreg cr3get(void);
147 extern void cr3put(Mreg);
148 extern Mreg cr4get(void);
149 extern void cr4put(Mreg);
150 extern void gdtget(void*);
151 extern void gdtput(int, u64int, u16int);
152 extern void idtput(int, u64int);
153 extern u64int rdmsr(u32int);
154 extern u64int rdtsc(void);
155 extern void trput(u64int);
156 extern void wrmsr(u32int, u64int);
157 
158 extern int islo(void);
159 extern void spldone(void);
160 extern Mreg splhi(void);
161 extern Mreg spllo(void);
162 extern void splx(Mreg);
163 
164 int	cas32(void*, u32int, u32int);
165 int	cas64(void*, u64int, u64int);
166 int	tas32(void*);
167 
168 #define CASU(p, e, n)	cas64((p), (u64int)(e), (u64int)(n))
169 #define CASV(p, e, n)	cas64((p), (u64int)(e), (u64int)(n))
170 #define CASW(p, e, n)	cas32((p), (e), (n))
171 #define TAS(addr)	tas32((addr))
172 
173 void	touser(uintptr);
174 void	syscallentry(void);
175 void	syscallreturn(void);
176 void	sysrforkret(void);
177 
178 #define	waserror()	(up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1]))
179 
180 #define	dcflush(a, b)
181 
182 #define PTR2UINT(p)	((uintptr)(p))
183 #define UINT2PTR(i)	((void*)(i))
184 
185 //#define KADDR(a)	UINT2PTR(kseg0+((uintptr)(a)))
186 void*	KADDR(uintptr);
187 //#define PADDR(a)	PTR2UINT(((uintptr)(a)) - kseg0)
188 uintptr	PADDR(void*);
189 
190 #define BIOSSEG(a)	KADDR(((uint)(a))<<4)
191 
192 /*
193  * apic.c
194  */
195 extern int apiceoi(int);
196 extern void apicinit(int, uintptr, int);
197 extern int apicisr(int);
198 extern int apiconline(void);
199 extern void apicsipi(int, uintptr);
200 extern void apictimerdisable(void);
201 extern void apictimerenable(void);
202 extern void apictimerintr(Ureg*, void*);
203 extern void apictprput(int);
204 
205 extern void ioapicinit(int, uintmem);
206 extern void ioapicintrinit(int, int, int, int, int, u32int);
207 extern void ioapiconline(void);
208 
209 /*
210  * archk10.c
211  */
212 extern void millidelay(int);
213 
214 /*
215  * i8259.c
216  */
217 extern int i8259init(int);
218 extern int i8259irqdisable(int);
219 extern int i8259irqenable(int);
220 extern int i8259isr(int);
221 
222 /*
223  * mp.c
224  */
225 extern void mpsinit(void);
226 
227 /*
228  * mpacpi.c
229  */
230 extern void mpacpi(void);
231 
232 /*
233  * sipi.c
234  */
235 extern void sipi(void);
236