xref: /plan9-contrib/sys/src/9/pc/fns.h (revision 0336b12d315e4ce24bb920e2a5131c6ddd983e8f)
13e12c5d1SDavid du Colombier #include "../port/portfns.h"
23e12c5d1SDavid du Colombier 
3219b2ee8SDavid du Colombier void	aamloop(int);
423173ec1SDavid du Colombier void	acpiscan(void (*func)(uchar *));
580ee5cbfSDavid du Colombier Dirtab*	addarchfile(char*, int, long(*)(Chan*,void*,long,vlong), long(*)(Chan*,void*,long,vlong));
67dd7cddfSDavid du Colombier void	archinit(void);
7abfa367dSDavid du Colombier void	archrevert(void);
84fafed5dSDavid du Colombier int	bios32call(BIOS32ci*, u16int[3]);
94fafed5dSDavid du Colombier int	bios32ci(BIOS32si*, BIOS32ci*);
104fafed5dSDavid du Colombier void	bios32close(BIOS32si*);
114fafed5dSDavid du Colombier BIOS32si* bios32open(char*);
124de34a7eSDavid du Colombier void	bootargs(void*);
13208510e1SDavid du Colombier ulong	cankaddr(ulong);
141045bea1SDavid du Colombier void	cgapost(int);
157dd7cddfSDavid du Colombier void	clockintr(Ureg*, void*);
163c2ddefeSDavid du Colombier int	(*cmpswap)(long*, long, long);
173c2ddefeSDavid du Colombier int	cmpswap486(long*, long, long);
187dd7cddfSDavid du Colombier void	(*coherence)(void);
1926d1d1dfSDavid du Colombier void	cpuid(int, ulong regs[]);
207dd7cddfSDavid du Colombier int	cpuidentify(void);
217dd7cddfSDavid du Colombier void	cpuidprint(void);
22179dd269SDavid du Colombier void	(*cycles)(uvlong*);
233e12c5d1SDavid du Colombier void	delay(int);
247dd7cddfSDavid du Colombier int	dmacount(int);
257dd7cddfSDavid du Colombier int	dmadone(int);
263e12c5d1SDavid du Colombier void	dmaend(int);
277dd7cddfSDavid du Colombier int	dmainit(int, int);
283e12c5d1SDavid du Colombier long	dmasetup(int, void*, long, int);
299d1c31b1SDavid du Colombier void	fpclear(void);
303e12c5d1SDavid du Colombier void	fpenv(FPsave*);
313e12c5d1SDavid du Colombier void	fpinit(void);
323e12c5d1SDavid du Colombier void	fpoff(void);
33781103c4SDavid du Colombier void	fpon(void);
3491e577b2SDavid du Colombier void	(*fprestore)(FPsave*);
3591e577b2SDavid du Colombier void	(*fpsave)(FPsave*);
364e3613abSDavid du Colombier void	fpsavealloc(void);
3791e577b2SDavid du Colombier void	fpsserestore(FPsave*);
38401314a3SDavid du Colombier void	fpsserestore0(FPsave*);
3991e577b2SDavid du Colombier void	fpssesave(FPsave*);
40401314a3SDavid du Colombier void	fpssesave0(FPsave*);
413e12c5d1SDavid du Colombier ulong	fpstatus(void);
4291e577b2SDavid du Colombier void	fpx87restore(FPsave*);
4391e577b2SDavid du Colombier void	fpx87save(FPsave*);
443e12c5d1SDavid du Colombier ulong	getcr0(void);
453e12c5d1SDavid du Colombier ulong	getcr2(void);
467dd7cddfSDavid du Colombier ulong	getcr3(void);
477dd7cddfSDavid du Colombier ulong	getcr4(void);
48219b2ee8SDavid du Colombier char*	getconf(char*);
499a747e4fSDavid du Colombier void	guesscpuhz(int);
509a747e4fSDavid du Colombier void	halt(void);
517dd7cddfSDavid du Colombier int	i8042auxcmd(int);
523ff48bf5SDavid du Colombier int	i8042auxcmds(uchar*, int);
537dd7cddfSDavid du Colombier void	i8042auxenable(void (*)(int, int));
543e12c5d1SDavid du Colombier void	i8042reset(void);
559a747e4fSDavid du Colombier void	i8250console(void);
563d8d68ddSDavid du Colombier void	i8250config(char *);
579a747e4fSDavid du Colombier void*	i8250alloc(int, int, int);
58b7b24591SDavid du Colombier void	i8250mouse(char*, int (*)(Queue*, int), int);
59aa46331bSDavid du Colombier void	i8250setmouseputc(char*, int (*)(Queue*, int));
607dd7cddfSDavid du Colombier void	i8253enable(void);
613ff48bf5SDavid du Colombier void	i8253init(void);
623ff48bf5SDavid du Colombier void	i8253link(void);
637dd7cddfSDavid du Colombier uvlong	i8253read(uvlong*);
643ff48bf5SDavid du Colombier void	i8253timerset(uvlong);
654de34a7eSDavid du Colombier int	i8259disable(int);
664de34a7eSDavid du Colombier int	i8259enable(Vctl*);
677dd7cddfSDavid du Colombier void	i8259init(void);
689a747e4fSDavid du Colombier int	i8259isr(int);
694de34a7eSDavid du Colombier void	i8259on(void);
704de34a7eSDavid du Colombier void	i8259off(void);
719a747e4fSDavid du Colombier int	i8259vecno(int);
727dd7cddfSDavid du Colombier void	idle(void);
7380ee5cbfSDavid du Colombier void	idlehands(void);
743e12c5d1SDavid du Colombier int	inb(int);
75bd389b36SDavid du Colombier void	insb(int, void*, int);
76bd389b36SDavid du Colombier ushort	ins(int);
773e12c5d1SDavid du Colombier void	inss(int, void*, int);
78219b2ee8SDavid du Colombier ulong	inl(int);
79bd389b36SDavid du Colombier void	insl(int, void*, int);
8007a38badSDavid du Colombier int	intrdisable(int, void (*)(Ureg *, void *), void*, int, char*);
817dd7cddfSDavid du Colombier void	intrenable(int, void (*)(Ureg*, void*), void*, int, char*);
824de34a7eSDavid du Colombier void	introff(void);
834de34a7eSDavid du Colombier void	intron(void);
844de34a7eSDavid du Colombier void	invlpg(ulong);
857dd7cddfSDavid du Colombier void	iofree(int);
867dd7cddfSDavid du Colombier void	ioinit(void);
877dd7cddfSDavid du Colombier int	iounused(int, int);
887dd7cddfSDavid du Colombier int	ioalloc(int, int, int, char*);
899a747e4fSDavid du Colombier int	ioreserve(int, int, int, char*);
907dd7cddfSDavid du Colombier int	iprint(char*, ...);
91219b2ee8SDavid du Colombier int	isaconfig(char*, int, ISAConf*);
924de34a7eSDavid du Colombier void*	kaddr(ulong);
939a747e4fSDavid du Colombier void	kbdenable(void);
943e12c5d1SDavid du Colombier void	kbdinit(void);
959a747e4fSDavid du Colombier #define	kmapinval()
967dd7cddfSDavid du Colombier void	lgdt(ushort[3]);
977dd7cddfSDavid du Colombier void	lidt(ushort[3]);
987dd7cddfSDavid du Colombier void	links(void);
997dd7cddfSDavid du Colombier void	ltr(ulong);
1009a747e4fSDavid du Colombier void	mach0init(void);
1013e12c5d1SDavid du Colombier void	mathinit(void);
102b985bfb9SDavid du Colombier void	mb386(void);
103b985bfb9SDavid du Colombier void	mb586(void);
1049a747e4fSDavid du Colombier void	meminit(void);
1054de34a7eSDavid du Colombier void	memorysummary(void);
106fdc61599SDavid du Colombier void	mfence(void);
1077dd7cddfSDavid du Colombier #define mmuflushtlb(pdb) putcr3(pdb)
1083e12c5d1SDavid du Colombier void	mmuinit(void);
1097dd7cddfSDavid du Colombier ulong*	mmuwalk(ulong*, ulong, int, int);
110e4ac449cSDavid du Colombier int	mtrr(uvlong, uvlong, char *);
11126d1d1dfSDavid du Colombier void	mtrrclock(void);
11226d1d1dfSDavid du Colombier int	mtrrprint(char *, long);
113bd389b36SDavid du Colombier uchar	nvramread(int);
1147dd7cddfSDavid du Colombier void	nvramwrite(int, uchar);
1153e12c5d1SDavid du Colombier void	outb(int, int);
116bd389b36SDavid du Colombier void	outsb(int, void*, int);
117bd389b36SDavid du Colombier void	outs(int, ushort);
1183e12c5d1SDavid du Colombier void	outss(int, void*, int);
119219b2ee8SDavid du Colombier void	outl(int, ulong);
120bd389b36SDavid du Colombier void	outsl(int, void*, int);
1214de34a7eSDavid du Colombier ulong	paddr(void*);
1229a747e4fSDavid du Colombier ulong	pcibarsize(Pcidev*, int);
123c91329d7SDavid du Colombier void	pcibussize(Pcidev*, ulong*, ulong*);
124ee52d9b2SDavid du Colombier int	pcicap(Pcidev*, int);
125*0336b12dSDavid du Colombier int	pcihtcap(Pcidev*, int);
126*0336b12dSDavid du Colombier int	pcienumcaps(Pcidev*, int (*fmatch)(Pcidev*, int, int, int), int);
1277dd7cddfSDavid du Colombier int	pcicfgr8(Pcidev*, int);
1287dd7cddfSDavid du Colombier int	pcicfgr16(Pcidev*, int);
1297dd7cddfSDavid du Colombier int	pcicfgr32(Pcidev*, int);
1307dd7cddfSDavid du Colombier void	pcicfgw8(Pcidev*, int, int);
1317dd7cddfSDavid du Colombier void	pcicfgw16(Pcidev*, int, int);
1327dd7cddfSDavid du Colombier void	pcicfgw32(Pcidev*, int, int);
1339a747e4fSDavid du Colombier void	pciclrbme(Pcidev*);
134220e960cSDavid du Colombier void	pciclrioe(Pcidev*);
135c91329d7SDavid du Colombier void	pciclrmwi(Pcidev*);
136e569ccb5SDavid du Colombier int	pcigetpms(Pcidev*);
1377dd7cddfSDavid du Colombier void	pcihinv(Pcidev*);
1389a747e4fSDavid du Colombier uchar	pciipin(Pcidev*, uchar);
1397dd7cddfSDavid du Colombier Pcidev* pcimatch(Pcidev*, int, int);
1407dd7cddfSDavid du Colombier Pcidev* pcimatchtbdf(int);
1417dd7cddfSDavid du Colombier void	pcireset(void);
1425979f962SDavid du Colombier int	pciscan(int, Pcidev**);
1437dd7cddfSDavid du Colombier void	pcisetbme(Pcidev*);
144220e960cSDavid du Colombier void	pcisetioe(Pcidev*);
145c91329d7SDavid du Colombier void	pcisetmwi(Pcidev*);
146e569ccb5SDavid du Colombier int	pcisetpms(Pcidev*, int);
14780ee5cbfSDavid du Colombier void	pcmcisread(PCMslot*);
14880ee5cbfSDavid du Colombier int	pcmcistuple(int, int, int, void*, int);
149219b2ee8SDavid du Colombier PCMmap*	pcmmap(int, ulong, int, int);
150219b2ee8SDavid du Colombier int	pcmspecial(char*, ISAConf*);
1519a747e4fSDavid du Colombier int	(*_pcmspecial)(char *, ISAConf *);
152219b2ee8SDavid du Colombier void	pcmspecialclose(int);
1539a747e4fSDavid du Colombier void	(*_pcmspecialclose)(int);
154219b2ee8SDavid du Colombier void	pcmunmap(int, PCMmap*);
1554de34a7eSDavid du Colombier int	pdbmap(ulong*, ulong, ulong, int);
156e288d156SDavid du Colombier void	procrestore(Proc*);
1573e12c5d1SDavid du Colombier void	procsave(Proc*);
1583e12c5d1SDavid du Colombier void	procsetup(Proc*);
15926d1d1dfSDavid du Colombier void	putcr0(ulong);
1603e12c5d1SDavid du Colombier void	putcr3(ulong);
1617dd7cddfSDavid du Colombier void	putcr4(ulong);
1624de34a7eSDavid du Colombier void*	rampage(void);
1637dd7cddfSDavid du Colombier void	rdmsr(int, vlong*);
1644de34a7eSDavid du Colombier void	realmode(Ureg*);
1653e12c5d1SDavid du Colombier void	screeninit(void);
1667dd7cddfSDavid du Colombier void	(*screenputs)(char*, int);
16700a4193cSDavid du Colombier void*	sigsearch(char*);
1689a747e4fSDavid du Colombier void	syncclock(void);
169fcbb35d1SDavid du Colombier void	syscallfmt(int syscallno, ulong pc, va_list list);
170fcbb35d1SDavid du Colombier void	sysretfmt(int syscallno, va_list list, long ret, uvlong start, uvlong stop);
1714de34a7eSDavid du Colombier void*	tmpmap(Page*);
1724de34a7eSDavid du Colombier void	tmpunmap(void*);
1733e12c5d1SDavid du Colombier void	touser(void*);
1747dd7cddfSDavid du Colombier void	trapenable(int, void (*)(Ureg*, void*), void*, char*);
1753e12c5d1SDavid du Colombier void	trapinit(void);
1764de34a7eSDavid du Colombier void	trapinit0(void);
1773e12c5d1SDavid du Colombier int	tas(void*);
1789a747e4fSDavid du Colombier uvlong	tscticks(uvlong*);
1797dd7cddfSDavid du Colombier ulong	umbmalloc(ulong, int, int);
1807dd7cddfSDavid du Colombier void	umbfree(ulong, int);
1817dd7cddfSDavid du Colombier ulong	umbrwmalloc(ulong, int, int);
1827dd7cddfSDavid du Colombier void	umbrwfree(ulong, int);
1834de34a7eSDavid du Colombier ulong	upaalloc(int, int);
1847dd7cddfSDavid du Colombier void	upafree(ulong, int);
1854de34a7eSDavid du Colombier void	upareserve(ulong, int);
18680ee5cbfSDavid du Colombier #define	userureg(ur) (((ur)->cs & 0xFFFF) == UESEL)
187fac6300fSDavid du Colombier void	validalign(uintptr, unsigned);
1887dd7cddfSDavid du Colombier void	vectortable(void);
1894de34a7eSDavid du Colombier void*	vmap(ulong, int);
1904de34a7eSDavid du Colombier int	vmapsync(ulong);
1914de34a7eSDavid du Colombier void	vunmap(void*, int);
19226d1d1dfSDavid du Colombier void	wbinvd(void);
1937dd7cddfSDavid du Colombier void	wrmsr(int, vlong);
1947dd7cddfSDavid du Colombier int	xchgw(ushort*, int);
195219b2ee8SDavid du Colombier 
196fac6300fSDavid du Colombier #define PTR2UINT(p)	((uintptr)(p))
197fac6300fSDavid du Colombier #define UINT2PTR(i)	((void*)(i))
198fac6300fSDavid du Colombier 
1997dd7cddfSDavid du Colombier #define	waserror()	(up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1]))
2004de34a7eSDavid du Colombier #define	KADDR(a)	kaddr(a)
2014de34a7eSDavid du Colombier #define PADDR(a)	paddr((void*)(a))
2027dd7cddfSDavid du Colombier 
2037dd7cddfSDavid du Colombier #define	dcflush(a, b)
204e360d427SDavid du Colombier 
205e360d427SDavid du Colombier #define BIOSSEG(a)	KADDR(((uint)(a))<<4)
206e360d427SDavid du Colombier 
207e360d427SDavid du Colombier #define L16GET(p)	(((p)[1]<<8)|(p)[0])
208e360d427SDavid du Colombier #define L32GET(p)	(((u32int)L16GET((p)+2)<<16)|L16GET(p))
209