xref: /plan9-contrib/sys/src/9/teg2/fns.h (revision 22402af72e824b13a03306b380e882c0b67c2e73)
13de6a9c0SDavid du Colombier #define checkmmu(a, b)
23de6a9c0SDavid du Colombier #define countpagerefs(a, b)
33de6a9c0SDavid du Colombier 
43de6a9c0SDavid du Colombier #include "../port/portfns.h"
53de6a9c0SDavid du Colombier 
63de6a9c0SDavid du Colombier typedef struct Ether Ether;
73de6a9c0SDavid du Colombier struct Ether;
83de6a9c0SDavid du Colombier 
93de6a9c0SDavid du Colombier extern int led(int, int);
103de6a9c0SDavid du Colombier extern void ledexit(int);
113de6a9c0SDavid du Colombier extern void delay(int);
123de6a9c0SDavid du Colombier extern void _uartputs(char*, int);
133de6a9c0SDavid du Colombier extern int _uartprint(char*, ...);
143de6a9c0SDavid du Colombier 
153de6a9c0SDavid du Colombier #pragma	varargck argpos	_uartprint 1
163de6a9c0SDavid du Colombier 
173de6a9c0SDavid du Colombier extern long ainc(long *);
183de6a9c0SDavid du Colombier extern long adec(long *);
193de6a9c0SDavid du Colombier extern void allcacheinfo(Memcache *);
203de6a9c0SDavid du Colombier extern void allcacheson(void);
213de6a9c0SDavid du Colombier extern int archether(unsigned, Ether *);
223de6a9c0SDavid du Colombier extern void archreboot(void);
233de6a9c0SDavid du Colombier extern void archreset(void);
243de6a9c0SDavid du Colombier extern void cachedinv(void);
253de6a9c0SDavid du Colombier extern void cachedinvse(void*, int);
263de6a9c0SDavid du Colombier extern void cachedwb(void);
273de6a9c0SDavid du Colombier extern void cachedwbinv(void);
283de6a9c0SDavid du Colombier extern void cachedwbinvse(void*, int);
293de6a9c0SDavid du Colombier extern void cachedwbse(void*, int);
303de6a9c0SDavid du Colombier extern void cacheiinv(void);
313de6a9c0SDavid du Colombier extern void cacheuwbinv(void);
323de6a9c0SDavid du Colombier extern uintptr cankaddr(uintptr pa);
333de6a9c0SDavid du Colombier extern void chkmissing(void);
343de6a9c0SDavid du Colombier extern void clockprod(Ureg *);
353de6a9c0SDavid du Colombier extern void clockshutdown(void);
363de6a9c0SDavid du Colombier extern int cmpswap(long*, long, long);
373de6a9c0SDavid du Colombier extern void coherence(void);
383de6a9c0SDavid du Colombier extern void configscreengpio(void);
393de6a9c0SDavid du Colombier extern u32int controlget(void);
403de6a9c0SDavid du Colombier extern void cortexa9cachecfg(void);
413de6a9c0SDavid du Colombier extern u32int cpctget(void);
423de6a9c0SDavid du Colombier extern u32int cpidget(void);
433de6a9c0SDavid du Colombier extern ulong cprd(int cp, int op1, int crn, int crm, int op2);
443de6a9c0SDavid du Colombier extern ulong cprdsc(int op1, int crn, int crm, int op2);
453de6a9c0SDavid du Colombier extern void cpuidprint(void);
463de6a9c0SDavid du Colombier extern char *cputype2name(char *buf, int size);
473de6a9c0SDavid du Colombier extern void cpwr(int cp, int op1, int crn, int crm, int op2, ulong val);
483de6a9c0SDavid du Colombier extern void cpwrsc(int op1, int crn, int crm, int op2, ulong val);
493de6a9c0SDavid du Colombier #define cycles(vlp) *(vlp) = (ulong)lcycles()
503de6a9c0SDavid du Colombier extern u32int dacget(void);
513de6a9c0SDavid du Colombier extern void dacput(u32int);
523de6a9c0SDavid du Colombier extern void dmainit(void);
533de6a9c0SDavid du Colombier extern int dmastart(void *, int, void *, int, uint, Rendez *, int *);
543de6a9c0SDavid du Colombier extern void dmatest(void);
553de6a9c0SDavid du Colombier extern void dump(void *vaddr, int words);
563de6a9c0SDavid du Colombier extern u32int farget(void);
573de6a9c0SDavid du Colombier extern void fpclear(void);
583de6a9c0SDavid du Colombier extern void fpoff(void);
593de6a9c0SDavid du Colombier extern void fpon(void);
603de6a9c0SDavid du Colombier extern ulong fprd(int fpreg);
613de6a9c0SDavid du Colombier extern void fprestreg(int fpreg, uvlong val);
623de6a9c0SDavid du Colombier extern void fpsave(FPsave *);
633de6a9c0SDavid du Colombier extern ulong fpsavereg(int fpreg, uvlong *fpp);
643de6a9c0SDavid du Colombier extern void fpwr(int fpreg, ulong val);
653de6a9c0SDavid du Colombier extern u32int fsrget(void);
663de6a9c0SDavid du Colombier extern ulong getauxctl(void);
673de6a9c0SDavid du Colombier extern ulong getclvlid(void);
683de6a9c0SDavid du Colombier extern ulong getcyc(void);
693de6a9c0SDavid du Colombier extern int getncpus(void);
703de6a9c0SDavid du Colombier extern u32int getpsr(void);
713de6a9c0SDavid du Colombier extern u32int getscr(void);
723de6a9c0SDavid du Colombier extern ulong getwayssets(void);
733de6a9c0SDavid du Colombier extern void intcmask(uint);
743de6a9c0SDavid du Colombier extern void intcunmask(uint);
753de6a9c0SDavid du Colombier extern void intrcpu(int);
763de6a9c0SDavid du Colombier extern void intrcpushutdown(void);
773de6a9c0SDavid du Colombier extern void intrshutdown(void);
783de6a9c0SDavid du Colombier extern void intrsoff(void);
793de6a9c0SDavid du Colombier extern int isaconfig(char*, int, ISAConf*);
803de6a9c0SDavid du Colombier extern int isdmadone(int);
813de6a9c0SDavid du Colombier extern void kbdenable(void);
823de6a9c0SDavid du Colombier extern void l1diag(void);
833de6a9c0SDavid du Colombier extern void l2pl310init(void);
843de6a9c0SDavid du Colombier extern void machoff(uint cpu);
853de6a9c0SDavid du Colombier extern void machon(uint cpu);
863de6a9c0SDavid du Colombier extern void memdiag(ulong *);
873de6a9c0SDavid du Colombier extern void mmuidmap(uintptr phys, int mbs);
883de6a9c0SDavid du Colombier extern void mmuinvalidate(void);		/* 'mmu' or 'tlb'? */
893de6a9c0SDavid du Colombier extern void mmuinvalidateaddr(u32int);		/* 'mmu' or 'tlb'? */
903de6a9c0SDavid du Colombier extern void mousectl(Cmdbuf *cb);
913de6a9c0SDavid du Colombier extern ulong pcibarsize(Pcidev*, int);
923de6a9c0SDavid du Colombier extern void pcibussize(Pcidev*, ulong*, ulong*);
933de6a9c0SDavid du Colombier extern int pcicfgr8(Pcidev*, int);
943de6a9c0SDavid du Colombier extern int pcicfgr16(Pcidev*, int);
953de6a9c0SDavid du Colombier extern int pcicfgr32(Pcidev*, int);
963de6a9c0SDavid du Colombier extern void pcicfgw8(Pcidev*, int, int);
973de6a9c0SDavid du Colombier extern void pcicfgw16(Pcidev*, int, int);
983de6a9c0SDavid du Colombier extern void pcicfgw32(Pcidev*, int, int);
993de6a9c0SDavid du Colombier extern void pciclrbme(Pcidev*);
1003de6a9c0SDavid du Colombier extern void pciclrioe(Pcidev*);
1013de6a9c0SDavid du Colombier extern void pciclrmwi(Pcidev*);
1023de6a9c0SDavid du Colombier extern void pcieintrdone(void);
1033de6a9c0SDavid du Colombier extern int pcigetpms(Pcidev*);
1043de6a9c0SDavid du Colombier extern void pcihinv(Pcidev*);
1053de6a9c0SDavid du Colombier extern uchar pciipin(Pcidev*, uchar);
1063de6a9c0SDavid du Colombier extern Pcidev* pcimatch(Pcidev*, int, int);
1073de6a9c0SDavid du Colombier extern Pcidev* pcimatchtbdf(int);
1083de6a9c0SDavid du Colombier extern void pcireset(void);
1093de6a9c0SDavid du Colombier extern void pcisetbme(Pcidev*);
1103de6a9c0SDavid du Colombier extern void pcisetioe(Pcidev*);
1113de6a9c0SDavid du Colombier extern void pcisetmwi(Pcidev*);
1123de6a9c0SDavid du Colombier extern int pcisetpms(Pcidev*, int);
1133de6a9c0SDavid du Colombier extern u32int pidget(void);
1143de6a9c0SDavid du Colombier extern void pidput(u32int);
1153de6a9c0SDavid du Colombier extern void prcachecfg(void);
1163de6a9c0SDavid du Colombier extern vlong probeaddr(uintptr);
1173de6a9c0SDavid du Colombier extern void procrestore(Proc *);
1183de6a9c0SDavid du Colombier extern void procsave(Proc*);
1193de6a9c0SDavid du Colombier extern void procsetup(Proc*);
1203de6a9c0SDavid du Colombier extern void putauxctl(ulong);
1213de6a9c0SDavid du Colombier extern void _reset(void);
1223de6a9c0SDavid du Colombier extern void screenclockson(void);
1233de6a9c0SDavid du Colombier extern void screeninit(void);
1243de6a9c0SDavid du Colombier extern void serialputc(int c);
1253de6a9c0SDavid du Colombier extern void serialputs(char* s, int n);
1263de6a9c0SDavid du Colombier extern void setcachelvl(int);
1273de6a9c0SDavid du Colombier extern void setsp(uintptr);
1283de6a9c0SDavid du Colombier extern void setr13(int, u32int*);
1293de6a9c0SDavid du Colombier extern ulong smpon(void);
1303de6a9c0SDavid du Colombier extern int startcpu(uint);
1313de6a9c0SDavid du Colombier extern void stopcpu(uint);
1323de6a9c0SDavid du Colombier extern int tas(void *);
1333de6a9c0SDavid du Colombier extern void tegclock0init(void);
1343de6a9c0SDavid du Colombier extern void tegclockinit(void);
1353de6a9c0SDavid du Colombier extern void tegclockintr(void);
1363de6a9c0SDavid du Colombier extern void tegclockshutdown(void);
1373de6a9c0SDavid du Colombier extern void tegwdogintr(Ureg *, void *);
1383de6a9c0SDavid du Colombier extern u32int ttbget(void);
1393de6a9c0SDavid du Colombier extern void ttbput(u32int);
1403de6a9c0SDavid du Colombier extern void _vrst(void);
1413de6a9c0SDavid du Colombier extern void wakewfi(void);
1423de6a9c0SDavid du Colombier extern void watchdoginit(void);
1433de6a9c0SDavid du Colombier extern void wfi(void);
1443de6a9c0SDavid du Colombier 
1453de6a9c0SDavid du Colombier extern int irqenable(uint, void (*)(Ureg*, void*), void*, char*);
1463de6a9c0SDavid du Colombier extern int irqdisable(uint, void (*)(Ureg*, void*), void*, char*);
1473de6a9c0SDavid du Colombier #define intrenable(i, f, a, b, n)	irqenable((i), (f), (a), (n))
1483de6a9c0SDavid du Colombier #define intrdisable(i, f, a, b, n)	irqdisable((i), (f), (a), (n))
1493de6a9c0SDavid du Colombier extern void vectors(void);
1503de6a9c0SDavid du Colombier extern void vtable(void);
1513de6a9c0SDavid du Colombier 
1523de6a9c0SDavid du Colombier /*
1533de6a9c0SDavid du Colombier  * Things called in main.
1543de6a9c0SDavid du Colombier  */
1553de6a9c0SDavid du Colombier extern void archconfinit(void);
1563de6a9c0SDavid du Colombier extern void clockinit(void);
1573de6a9c0SDavid du Colombier extern int i8250console(void);
1583de6a9c0SDavid du Colombier extern void links(void);
1593de6a9c0SDavid du Colombier extern void mmuinit(void);
1603de6a9c0SDavid du Colombier extern void touser(uintptr);
1613de6a9c0SDavid du Colombier extern void trapinit(void);
1623de6a9c0SDavid du Colombier 
1633de6a9c0SDavid du Colombier 
1643de6a9c0SDavid du Colombier extern int fpiarm(Ureg*);
1653de6a9c0SDavid du Colombier extern int fpudevprocio(Proc*, void*, long, uintptr, int);
1663de6a9c0SDavid du Colombier extern void fpuinit(void);
1673de6a9c0SDavid du Colombier extern void fpunoted(void);
1683de6a9c0SDavid du Colombier extern void fpunotify(Ureg*);
1693de6a9c0SDavid du Colombier extern void fpuprocrestore(Proc*);
1703de6a9c0SDavid du Colombier extern void fpuprocsave(Proc*);
1713de6a9c0SDavid du Colombier extern void fpusysprocsetup(Proc*);
1723de6a9c0SDavid du Colombier extern void fpusysrfork(Ureg*);
1733de6a9c0SDavid du Colombier extern void fpusysrforkchild(Proc*, Ureg*, Proc*);
1743de6a9c0SDavid du Colombier extern int fpuemu(Ureg*);
1753de6a9c0SDavid du Colombier 
1763de6a9c0SDavid du Colombier /*
1773de6a9c0SDavid du Colombier  * Miscellaneous machine dependent stuff.
1783de6a9c0SDavid du Colombier  */
1793de6a9c0SDavid du Colombier extern int cas(int *, int, int);
1803de6a9c0SDavid du Colombier extern char* getenv(char*, char*, int);
1813de6a9c0SDavid du Colombier char*	getconf(char*);
1823de6a9c0SDavid du Colombier uintptr mmukmap(uintptr, uintptr, usize);
1833de6a9c0SDavid du Colombier uintptr mmukunmap(uintptr, uintptr, usize);
1843de6a9c0SDavid du Colombier extern void* mmuuncache(void*, usize);
1853de6a9c0SDavid du Colombier extern void* ucalloc(usize);
1863de6a9c0SDavid du Colombier extern Block* ucallocb(int);
1873de6a9c0SDavid du Colombier extern void* ucallocalign(usize size, int align, int span);
1883de6a9c0SDavid du Colombier extern void ucfree(void*);
1893de6a9c0SDavid du Colombier extern void ucfreeb(Block*);
1903de6a9c0SDavid du Colombier 
1913de6a9c0SDavid du Colombier /*
1923de6a9c0SDavid du Colombier  * Things called from port.
1933de6a9c0SDavid du Colombier  */
1943de6a9c0SDavid du Colombier extern void delay(int);				/* only scheddump() */
1953de6a9c0SDavid du Colombier extern int islo(void);
1963de6a9c0SDavid du Colombier extern void microdelay(int);			/* only edf.c */
1973de6a9c0SDavid du Colombier extern void idlehands(void);
1983de6a9c0SDavid du Colombier extern void setkernur(Ureg*, Proc*);		/* only devproc.c */
1993de6a9c0SDavid du Colombier extern void syscallfmt(int syscallno, ulong pc, va_list list);
2003de6a9c0SDavid du Colombier extern void sysretfmt(int syscallno, va_list list, long ret, uvlong start, uvlong stop);
2013de6a9c0SDavid du Colombier extern void* sysexecregs(uintptr, ulong, int);
2023de6a9c0SDavid du Colombier extern void sysprocsetup(Proc*);
203*fac6300fSDavid du Colombier extern void validalign(uintptr, unsigned);
2043de6a9c0SDavid du Colombier 
2053de6a9c0SDavid du Colombier /* libc */
2063de6a9c0SDavid du Colombier long labs(long);
2073de6a9c0SDavid du Colombier 
2083de6a9c0SDavid du Colombier /*
2093de6a9c0SDavid du Colombier  * PCI stuff.
2103de6a9c0SDavid du Colombier  */
2113de6a9c0SDavid du Colombier 
2123de6a9c0SDavid du Colombier extern void forkret(void);
2133de6a9c0SDavid du Colombier extern int userureg(Ureg*);
2143de6a9c0SDavid du Colombier void*	vmap(uintptr, usize);
2153de6a9c0SDavid du Colombier void vunmap(void*, usize);
2163de6a9c0SDavid du Colombier 
2173de6a9c0SDavid du Colombier extern void kexit(Ureg*);
2183de6a9c0SDavid du Colombier 
2193de6a9c0SDavid du Colombier #define	getpgcolor(a)	0
2203de6a9c0SDavid du Colombier #define	kmapinval()
2213de6a9c0SDavid du Colombier 
2223de6a9c0SDavid du Colombier #define PTR2UINT(p)	((uintptr)(p))
2233de6a9c0SDavid du Colombier #define UINT2PTR(i)	((void*)(i))
2243de6a9c0SDavid du Colombier 
2253de6a9c0SDavid du Colombier #define	waserror()	(up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1]))
2263de6a9c0SDavid du Colombier 
2273de6a9c0SDavid du Colombier #define KADDR(pa)	UINT2PTR(KZERO    | ((uintptr)(pa) & ~KSEGM))
2283de6a9c0SDavid du Colombier #define PADDR(va)	PTR2UINT(PHYSDRAM | ((uintptr)(va) & ~KSEGM))
2293de6a9c0SDavid du Colombier 
2303de6a9c0SDavid du Colombier #define MASK(v)	((1UL << (v)) - 1)	/* mask `v' bits wide */
231