xref: /plan9-contrib/sys/src/9k/k10/fns.h (revision da317bb81ef206f889122f8664a27371f63545f4)
19ef1f84bSDavid du Colombier #include "../port/portfns.h"
29ef1f84bSDavid du Colombier 
39ef1f84bSDavid du Colombier void	aamloop(int);
49ef1f84bSDavid du Colombier int	acpiinit(void);
59ef1f84bSDavid du Colombier Dirtab*	addarchfile(char*, int, long(*)(Chan*,void*,long,vlong), long(*)(Chan*,void*,long,vlong));
69ef1f84bSDavid du Colombier void	archfmtinstall(void);
79ef1f84bSDavid du Colombier void	archinit(void);
89ef1f84bSDavid du Colombier int	archmmu(void);
99ef1f84bSDavid du Colombier void	archreset(void);
109ef1f84bSDavid du Colombier vlong	archhz(void);
119ef1f84bSDavid du Colombier int	asmfree(uvlong, uvlong, int);
129ef1f84bSDavid du Colombier uvlong	asmalloc(uvlong, uvlong, int, int);
139ef1f84bSDavid du Colombier void	asminit(void);
149ef1f84bSDavid du Colombier void	asmmapinit(u64int, u64int, int);
159ef1f84bSDavid du Colombier void	asmmodinit(u32int, u32int, char*);
169ef1f84bSDavid du Colombier void	cgaconsputs(char*, int);
179ef1f84bSDavid du Colombier void	cgainit(void);
189ef1f84bSDavid du Colombier void	cgapost(int);
199ef1f84bSDavid du Colombier #define	clearmmucache()				/* x86 doesn't have one */
209ef1f84bSDavid du Colombier void	(*coherence)(void);
219ef1f84bSDavid du Colombier int	corecolor(int);
229ef1f84bSDavid du Colombier u32int	cpuid(u32int, u32int, u32int[4]);
239ef1f84bSDavid du Colombier int	dbgprint(char*, ...);
249ef1f84bSDavid du Colombier #define decref(r)	adec(&(r)->ref)
259ef1f84bSDavid du Colombier void	delay(int);
269ef1f84bSDavid du Colombier #define	evenaddr(x)				/* x86 doesn't care */
279ef1f84bSDavid du Colombier int	fpudevprocio(Proc*, void*, long, uintptr, int);
289ef1f84bSDavid du Colombier void	fpuinit(void);
299ef1f84bSDavid du Colombier void	fpunoted(void);
309ef1f84bSDavid du Colombier void	fpunotify(Ureg*);
319ef1f84bSDavid du Colombier void	fpuprocrestore(Proc*);
329ef1f84bSDavid du Colombier void	fpuprocsave(Proc*);
339ef1f84bSDavid du Colombier void	fpusysprocsetup(Proc*);
349ef1f84bSDavid du Colombier void	fpusysrfork(Ureg*);
359ef1f84bSDavid du Colombier void	fpusysrforkchild(Proc*, Proc*);
369ef1f84bSDavid du Colombier char*	getconf(char*);
379ef1f84bSDavid du Colombier void	halt(void);
389ef1f84bSDavid du Colombier int	i8042auxcmd(int);
399ef1f84bSDavid du Colombier int	i8042auxcmds(uchar*, int);
409ef1f84bSDavid du Colombier void	i8042auxenable(void (*)(int, int));
419ef1f84bSDavid du Colombier void	i8042reset(void);
429ef1f84bSDavid du Colombier Uart*	i8250console(char*);
439ef1f84bSDavid du Colombier void*	i8250alloc(int, int, int);
4445e6af3bSDavid du Colombier void	i8250mouse(char*, int (*)(Queue*, int), int);
4545e6af3bSDavid du Colombier void	i8250setmouseputc(char*, int (*)(Queue*, int));
469ef1f84bSDavid du Colombier vlong	i8254hz(u32int[2][4]);
479ef1f84bSDavid du Colombier void	idlehands(void);
489ef1f84bSDavid du Colombier void	idthandlers(void);
499ef1f84bSDavid du Colombier int	inb(int);
509ef1f84bSDavid du Colombier #define incref(r)	ainc(&(r)->ref)
519ef1f84bSDavid du Colombier void	insb(int, void*, int);
529ef1f84bSDavid du Colombier ushort	ins(int);
539ef1f84bSDavid du Colombier void	inss(int, void*, int);
549ef1f84bSDavid du Colombier ulong	inl(int);
559ef1f84bSDavid du Colombier void	insl(int, void*, int);
569ef1f84bSDavid du Colombier int	intrdisable(void*);
579ef1f84bSDavid du Colombier void*	intrenable(int, void (*)(Ureg*, void*), void*, int, char*);
589ef1f84bSDavid du Colombier void	invlpg(uintptr);
599ef1f84bSDavid du Colombier void	iofree(int);
609ef1f84bSDavid du Colombier void	ioinit(void);
619ef1f84bSDavid du Colombier int	iounused(int, int);
629ef1f84bSDavid du Colombier int	ioalloc(int, int, int, char*);
639ef1f84bSDavid du Colombier int	ioreserve(int, int, int, char*);
649ef1f84bSDavid du Colombier int	iprint(char*, ...);
659ef1f84bSDavid du Colombier int	isaconfig(char*, int, ISAConf*);
669ef1f84bSDavid du Colombier void	kbdenable(void);
679ef1f84bSDavid du Colombier void	kbdinit(void);
689ef1f84bSDavid du Colombier void	kexit(Ureg*);
699ef1f84bSDavid du Colombier #define	kmapinval()
709ef1f84bSDavid du Colombier void	lfence(void);
719ef1f84bSDavid du Colombier void	links(void);
729ef1f84bSDavid du Colombier void	machinit(void);
739ef1f84bSDavid du Colombier void	mach0init(void);
749ef1f84bSDavid du Colombier void	mapraminit(uvlong, uvlong);
759ef1f84bSDavid du Colombier void	mapupainit(uvlong, ulong);
769ef1f84bSDavid du Colombier int	memcolor(uintmem, uintmem*);
779ef1f84bSDavid du Colombier void	meminit(void);
789ef1f84bSDavid du Colombier void	mfence(void);
790d74731bSDavid du Colombier void	mmucachectl(Page*, uint);
809ef1f84bSDavid du Colombier void	mmuflushtlb(u64int);
819ef1f84bSDavid du Colombier void	mmuinit(void);
829ef1f84bSDavid du Colombier u64int	mmuphysaddr(uintptr);
839ef1f84bSDavid du Colombier int	mmuwalk(uintptr, int, PTE**, u64int (*)(usize));
849ef1f84bSDavid du Colombier int	multiboot(u32int, u32int, int);
859ef1f84bSDavid du Colombier void	ndnr(void);
869ef1f84bSDavid du Colombier uchar	nvramread(int);
879ef1f84bSDavid du Colombier void	nvramwrite(int, uchar);
889ef1f84bSDavid du Colombier void	optionsinit(char*);
899ef1f84bSDavid du Colombier void	outb(int, int);
909ef1f84bSDavid du Colombier void	outsb(int, void*, int);
919ef1f84bSDavid du Colombier void	outs(int, ushort);
929ef1f84bSDavid du Colombier void	outss(int, void*, int);
939ef1f84bSDavid du Colombier void	outl(int, ulong);
949ef1f84bSDavid du Colombier void	outsl(int, void*, int);
956c88371cSDavid du Colombier void	pause(void);
969ef1f84bSDavid du Colombier int	pciscan(int, Pcidev**);
979ef1f84bSDavid du Colombier ulong	pcibarsize(Pcidev*, int);
988547cd99SDavid du Colombier int	pcicap(Pcidev*, int);
99*da317bb8SDavid du Colombier int	pcihtcap(Pcidev*, int);
100*da317bb8SDavid du Colombier int	pcienumcaps(Pcidev*, int (*fmatch)(Pcidev*, int, int, int), int);
1019ef1f84bSDavid du Colombier int	pcicfgr8(Pcidev*, int);
1029ef1f84bSDavid du Colombier int	pcicfgr16(Pcidev*, int);
1039ef1f84bSDavid du Colombier int	pcicfgr32(Pcidev*, int);
1049ef1f84bSDavid du Colombier void	pcicfgw8(Pcidev*, int, int);
1059ef1f84bSDavid du Colombier void	pcicfgw16(Pcidev*, int, int);
1069ef1f84bSDavid du Colombier void	pcicfgw32(Pcidev*, int, int);
1079ef1f84bSDavid du Colombier void	pciclrbme(Pcidev*);
1089ef1f84bSDavid du Colombier void	pciclrioe(Pcidev*);
1099ef1f84bSDavid du Colombier void	pciclrmwi(Pcidev*);
1109ef1f84bSDavid du Colombier int	pcigetpms(Pcidev*);
1119ef1f84bSDavid du Colombier void	pcihinv(Pcidev*);
1129ef1f84bSDavid du Colombier uchar	pciipin(Pcidev*, uchar);
1139ef1f84bSDavid du Colombier Pcidev*	pcimatch(Pcidev*, int, int);
1149ef1f84bSDavid du Colombier Pcidev*	pcimatchtbdf(int);
1159ef1f84bSDavid du Colombier void	pcireset(void);
1169ef1f84bSDavid du Colombier void	pcisetbme(Pcidev*);
1179ef1f84bSDavid du Colombier void	pcisetioe(Pcidev*);
1189ef1f84bSDavid du Colombier void	pcisetmwi(Pcidev*);
1199ef1f84bSDavid du Colombier int	pcisetpms(Pcidev*, int);
1209ef1f84bSDavid du Colombier void	(*pmcupdate)(void);
1219ef1f84bSDavid du Colombier void	printcpufreq(void);
1229ef1f84bSDavid du Colombier int	screenprint(char*, ...);			/* debugging */
1239ef1f84bSDavid du Colombier void	sfence(void);
1249ef1f84bSDavid du Colombier void	spldone(void);
1259ef1f84bSDavid du Colombier u64int	splhi(void);
1269ef1f84bSDavid du Colombier u64int	spllo(void);
1279ef1f84bSDavid du Colombier void	splx(u64int);
1289ef1f84bSDavid du Colombier void	splxpc(u64int);
1299ef1f84bSDavid du Colombier void	syncclock(void);
1309ef1f84bSDavid du Colombier void*	sysexecregs(uintptr, ulong, ulong);
1319ef1f84bSDavid du Colombier uintptr	sysexecstack(uintptr, int);
1329ef1f84bSDavid du Colombier void	sysprocsetup(Proc*);
1339ef1f84bSDavid du Colombier void	tssrsp0(u64int);
1349ef1f84bSDavid du Colombier void	trapenable(int, void (*)(Ureg*, void*), void*, char*);
1359ef1f84bSDavid du Colombier void	trapinit(void);
1369ef1f84bSDavid du Colombier int	userureg(Ureg*);
137094d6818SDavid du Colombier void	umeminit(void);
1389ef1f84bSDavid du Colombier void*	vmap(uintmem, usize);
1399ef1f84bSDavid du Colombier void	vsvminit(int);
1409ef1f84bSDavid du Colombier void	vunmap(void*, usize);
1419ef1f84bSDavid du Colombier int	(*waitfor)(int*, int);
1429ef1f84bSDavid du Colombier 
1439ef1f84bSDavid du Colombier extern Mreg cr0get(void);
1449ef1f84bSDavid du Colombier extern void cr0put(Mreg);
1459ef1f84bSDavid du Colombier extern Mreg cr2get(void);
1469ef1f84bSDavid du Colombier extern Mreg cr3get(void);
1479ef1f84bSDavid du Colombier extern void cr3put(Mreg);
1489ef1f84bSDavid du Colombier extern Mreg cr4get(void);
1499ef1f84bSDavid du Colombier extern void cr4put(Mreg);
1509ef1f84bSDavid du Colombier extern void gdtget(void*);
1519ef1f84bSDavid du Colombier extern void gdtput(int, u64int, u16int);
1529ef1f84bSDavid du Colombier extern void idtput(int, u64int);
1539ef1f84bSDavid du Colombier extern u64int rdmsr(u32int);
1549ef1f84bSDavid du Colombier extern u64int rdtsc(void);
1559ef1f84bSDavid du Colombier extern void trput(u64int);
1569ef1f84bSDavid du Colombier extern void wrmsr(u32int, u64int);
1579ef1f84bSDavid du Colombier 
1589ef1f84bSDavid du Colombier extern int islo(void);
1599ef1f84bSDavid du Colombier extern void spldone(void);
1609ef1f84bSDavid du Colombier extern Mreg splhi(void);
1619ef1f84bSDavid du Colombier extern Mreg spllo(void);
1629ef1f84bSDavid du Colombier extern void splx(Mreg);
1639ef1f84bSDavid du Colombier 
1649ef1f84bSDavid du Colombier int	cas32(void*, u32int, u32int);
1659ef1f84bSDavid du Colombier int	cas64(void*, u64int, u64int);
1669ef1f84bSDavid du Colombier int	tas32(void*);
1679ef1f84bSDavid du Colombier 
1689ef1f84bSDavid du Colombier #define CASU(p, e, n)	cas64((p), (u64int)(e), (u64int)(n))
1699ef1f84bSDavid du Colombier #define CASV(p, e, n)	cas64((p), (u64int)(e), (u64int)(n))
1709ef1f84bSDavid du Colombier #define CASW(p, e, n)	cas32((p), (e), (n))
1719ef1f84bSDavid du Colombier #define TAS(addr)	tas32((addr))
1729ef1f84bSDavid du Colombier 
1739ef1f84bSDavid du Colombier void	touser(uintptr);
1749ef1f84bSDavid du Colombier void	syscallentry(void);
1759ef1f84bSDavid du Colombier void	syscallreturn(void);
1769ef1f84bSDavid du Colombier void	sysrforkret(void);
1779ef1f84bSDavid du Colombier 
1789ef1f84bSDavid du Colombier #define	waserror()	(up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1]))
1799ef1f84bSDavid du Colombier 
1809ef1f84bSDavid du Colombier #define	dcflush(a, b)
1819ef1f84bSDavid du Colombier 
1829ef1f84bSDavid du Colombier #define PTR2UINT(p)	((uintptr)(p))
1839ef1f84bSDavid du Colombier #define UINT2PTR(i)	((void*)(i))
1849ef1f84bSDavid du Colombier 
1859ef1f84bSDavid du Colombier //#define KADDR(a)	UINT2PTR(kseg0+((uintptr)(a)))
1869ef1f84bSDavid du Colombier void*	KADDR(uintptr);
1879ef1f84bSDavid du Colombier //#define PADDR(a)	PTR2UINT(((uintptr)(a)) - kseg0)
1889ef1f84bSDavid du Colombier uintptr	PADDR(void*);
1899ef1f84bSDavid du Colombier 
1909ef1f84bSDavid du Colombier #define BIOSSEG(a)	KADDR(((uint)(a))<<4)
1919ef1f84bSDavid du Colombier 
1929ef1f84bSDavid du Colombier /*
1939ef1f84bSDavid du Colombier  * apic.c
1949ef1f84bSDavid du Colombier  */
1959ef1f84bSDavid du Colombier extern int apiceoi(int);
1969ef1f84bSDavid du Colombier extern void apicinit(int, uintptr, int);
1979ef1f84bSDavid du Colombier extern int apicisr(int);
1989ef1f84bSDavid du Colombier extern int apiconline(void);
1999ef1f84bSDavid du Colombier extern void apicsipi(int, uintptr);
2009ef1f84bSDavid du Colombier extern void apictimerdisable(void);
2019ef1f84bSDavid du Colombier extern void apictimerenable(void);
2029ef1f84bSDavid du Colombier extern void apictimerintr(Ureg*, void*);
2039ef1f84bSDavid du Colombier extern void apictprput(int);
2049ef1f84bSDavid du Colombier 
2059ef1f84bSDavid du Colombier extern void ioapicinit(int, uintmem);
206ffa640cdSDavid du Colombier extern void ioapicintrinit(int, int, int, int, int, u32int);
2079ef1f84bSDavid du Colombier extern void ioapiconline(void);
2089ef1f84bSDavid du Colombier 
2099ef1f84bSDavid du Colombier /*
2109ef1f84bSDavid du Colombier  * archk10.c
2119ef1f84bSDavid du Colombier  */
2129ef1f84bSDavid du Colombier extern void millidelay(int);
2139ef1f84bSDavid du Colombier 
2149ef1f84bSDavid du Colombier /*
2159ef1f84bSDavid du Colombier  * i8259.c
2169ef1f84bSDavid du Colombier  */
2179ef1f84bSDavid du Colombier extern int i8259init(int);
2189ef1f84bSDavid du Colombier extern int i8259irqdisable(int);
2199ef1f84bSDavid du Colombier extern int i8259irqenable(int);
2209ef1f84bSDavid du Colombier extern int i8259isr(int);
2219ef1f84bSDavid du Colombier 
2229ef1f84bSDavid du Colombier /*
2239ef1f84bSDavid du Colombier  * mp.c
2249ef1f84bSDavid du Colombier  */
2259ef1f84bSDavid du Colombier extern void mpsinit(void);
2269ef1f84bSDavid du Colombier 
2279ef1f84bSDavid du Colombier /*
22859461365SDavid du Colombier  * mpacpi.c
22959461365SDavid du Colombier  */
23059461365SDavid du Colombier extern void mpacpi(void);
23159461365SDavid du Colombier 
23259461365SDavid du Colombier /*
2339ef1f84bSDavid du Colombier  * sipi.c
2349ef1f84bSDavid du Colombier  */
2359ef1f84bSDavid du Colombier extern void sipi(void);
236