xref: /plan9/sys/src/9/bcm/fns.h (revision fac6300f1f1b25611e114fc0bdda9cf428c13da4)
15d9de2d3SDavid du Colombier #include "../port/portfns.h"
25d9de2d3SDavid du Colombier 
35d9de2d3SDavid du Colombier Dirtab*	addarchfile(char*, int, long(*)(Chan*, void*, long, vlong),
45d9de2d3SDavid du Colombier 	long(*)(Chan*, void*, long, vlong));
55d9de2d3SDavid du Colombier extern void archreboot(void);
65d9de2d3SDavid du Colombier extern void archreset(void);
75d9de2d3SDavid du Colombier extern void armtimerset(int);
85d9de2d3SDavid du Colombier extern void cachedwbinv(void);
95d9de2d3SDavid du Colombier extern void cachedwbse(void*, int);
105d9de2d3SDavid du Colombier extern void cachedwbinvse(void*, int);
115d9de2d3SDavid du Colombier extern void cacheiinv(void);
125d9de2d3SDavid du Colombier extern void cacheuwbinv(void);
135d9de2d3SDavid du Colombier extern uintptr cankaddr(uintptr pa);
145d9de2d3SDavid du Colombier extern int cas32(void*, u32int, u32int);
155d9de2d3SDavid du Colombier extern void checkmmu(uintptr, uintptr);
165d9de2d3SDavid du Colombier extern void clockinit(void);
175d9de2d3SDavid du Colombier extern void clockshutdown(void);
185d9de2d3SDavid du Colombier extern int cmpswap(long*, long, long);
195d9de2d3SDavid du Colombier extern void coherence(void);
205d9de2d3SDavid du Colombier extern ulong cprd(int cp, int op1, int crn, int crm, int op2);
215d9de2d3SDavid du Colombier extern ulong cprdsc(int op1, int crn, int crm, int op2);
225d9de2d3SDavid du Colombier extern void cpuidprint(void);
235d9de2d3SDavid du Colombier extern void cpwr(int cp, int op1, int crn, int crm, int op2, ulong val);
245d9de2d3SDavid du Colombier extern void cpwrsc(int op1, int crn, int crm, int op2, ulong val);
255d9de2d3SDavid du Colombier #define cycles(ip) *(ip) = lcycles()
265d9de2d3SDavid du Colombier extern void dmastart(int, int, int, void*, void*, int);
275d9de2d3SDavid du Colombier extern int dmawait(int);
285d9de2d3SDavid du Colombier extern int fbblank(int);
295d9de2d3SDavid du Colombier extern void* fbinit(int, int*, int*, int*);
305d9de2d3SDavid du Colombier extern u32int farget(void);
315d9de2d3SDavid du Colombier extern void fpon(void);
325d9de2d3SDavid du Colombier extern ulong fprd(int fpreg);
335d9de2d3SDavid du Colombier extern void fprestreg(int fpreg, uvlong val);
345d9de2d3SDavid du Colombier extern void fpsave(FPsave *);
355d9de2d3SDavid du Colombier extern ulong fpsavereg(int fpreg, uvlong *fpp);
365d9de2d3SDavid du Colombier extern void fpwr(int fpreg, ulong val);
375d9de2d3SDavid du Colombier extern u32int fsrget(void);
385d9de2d3SDavid du Colombier extern ulong getclkrate(int);
395d9de2d3SDavid du Colombier extern char* getconf(char*);
405d9de2d3SDavid du Colombier extern char *getethermac(void);
415d9de2d3SDavid du Colombier extern uint getfirmware(void);
425d9de2d3SDavid du Colombier extern int getpower(int);
435d9de2d3SDavid du Colombier extern void getramsize(Confmem*);
445d9de2d3SDavid du Colombier extern u32int ifsrget(void);
455d9de2d3SDavid du Colombier extern void irqenable(int, void (*)(Ureg*, void*), void*);
465d9de2d3SDavid du Colombier #define intrenable(i, f, a, b, n) irqenable((i), (f), (a))
475d9de2d3SDavid du Colombier extern void intrsoff(void);
485d9de2d3SDavid du Colombier extern int isaconfig(char*, int, ISAConf*);
495d9de2d3SDavid du Colombier extern void links(void);
505d9de2d3SDavid du Colombier extern void mmuinit(void);
515d9de2d3SDavid du Colombier extern void mmuinit1(void);
525d9de2d3SDavid du Colombier extern void mmuinvalidate(void);
535d9de2d3SDavid du Colombier extern void mmuinvalidateaddr(u32int);
545d9de2d3SDavid du Colombier extern uintptr mmukmap(uintptr, uintptr, usize);
555d9de2d3SDavid du Colombier extern void okay(int);
565d9de2d3SDavid du Colombier extern void procrestore(Proc *);
575d9de2d3SDavid du Colombier extern void procsave(Proc*);
585d9de2d3SDavid du Colombier extern void procsetup(Proc*);
595d9de2d3SDavid du Colombier extern void screeninit(void);
605d9de2d3SDavid du Colombier #define sdfree(p) free(p)
615d9de2d3SDavid du Colombier #define sdmalloc(n)	mallocalign(n, CACHELINESZ, 0, 0)
625d9de2d3SDavid du Colombier extern void setpower(int, int);
635d9de2d3SDavid du Colombier extern void setr13(int, u32int*);
645d9de2d3SDavid du Colombier extern int splfhi(void);
655d9de2d3SDavid du Colombier extern int splflo(void);
665d9de2d3SDavid du Colombier extern void swcursorinit(void);
675d9de2d3SDavid du Colombier extern void syscallfmt(int syscallno, ulong pc, va_list list);
685d9de2d3SDavid du Colombier extern void sysretfmt(int syscallno, va_list list, long ret, uvlong start, uvlong stop);
695d9de2d3SDavid du Colombier extern int tas(void *);
705d9de2d3SDavid du Colombier extern void touser(uintptr);
715d9de2d3SDavid du Colombier extern void trapinit(void);
725d9de2d3SDavid du Colombier extern void uartconsinit(void);
735d9de2d3SDavid du Colombier extern int userureg(Ureg*);
745d9de2d3SDavid du Colombier extern void vectors(void);
755d9de2d3SDavid du Colombier extern void vtable(void);
76da091934SDavid du Colombier extern void wdogoff(void);
775d9de2d3SDavid du Colombier 
785d9de2d3SDavid du Colombier /*
795d9de2d3SDavid du Colombier  * floating point emulation
805d9de2d3SDavid du Colombier  */
815d9de2d3SDavid du Colombier extern int fpiarm(Ureg*);
825d9de2d3SDavid du Colombier extern int fpudevprocio(Proc*, void*, long, uintptr, int);
835d9de2d3SDavid du Colombier extern void fpuinit(void);
845d9de2d3SDavid du Colombier extern void fpunoted(void);
855d9de2d3SDavid du Colombier extern void fpunotify(Ureg*);
865d9de2d3SDavid du Colombier extern void fpuprocrestore(Proc*);
875d9de2d3SDavid du Colombier extern void fpuprocsave(Proc*);
885d9de2d3SDavid du Colombier extern void fpusysprocsetup(Proc*);
895d9de2d3SDavid du Colombier extern void fpusysrfork(Ureg*);
905d9de2d3SDavid du Colombier extern void fpusysrforkchild(Proc*, Ureg*, Proc*);
915d9de2d3SDavid du Colombier extern int fpuemu(Ureg*);
925d9de2d3SDavid du Colombier /*
935d9de2d3SDavid du Colombier  * Things called from port.
945d9de2d3SDavid du Colombier  */
955d9de2d3SDavid du Colombier extern void delay(int);				/* only scheddump() */
965d9de2d3SDavid du Colombier extern int islo(void);
975d9de2d3SDavid du Colombier extern void microdelay(int);			/* only edf.c */
985d9de2d3SDavid du Colombier extern void idlehands(void);
995d9de2d3SDavid du Colombier extern void setkernur(Ureg*, Proc*);		/* only devproc.c */
1005d9de2d3SDavid du Colombier extern void* sysexecregs(uintptr, ulong, int);
1015d9de2d3SDavid du Colombier extern void sysprocsetup(Proc*);
102*fac6300fSDavid du Colombier extern void validalign(uintptr, unsigned);
1035d9de2d3SDavid du Colombier 
1045d9de2d3SDavid du Colombier extern void kexit(Ureg*);
1055d9de2d3SDavid du Colombier 
1065d9de2d3SDavid du Colombier #define	getpgcolor(a)	0
1075d9de2d3SDavid du Colombier #define	kmapinval()
1085d9de2d3SDavid du Colombier #define countpagerefs(a, b)
1095d9de2d3SDavid du Colombier 
1105d9de2d3SDavid du Colombier #define PTR2UINT(p)	((uintptr)(p))
1115d9de2d3SDavid du Colombier #define UINT2PTR(i)	((void*)(i))
1125d9de2d3SDavid du Colombier 
1135d9de2d3SDavid du Colombier #define	waserror()	(up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1]))
1145d9de2d3SDavid du Colombier 
1155d9de2d3SDavid du Colombier #define KADDR(pa)	UINT2PTR(KZERO    | ((uintptr)(pa) & ~KSEGM))
1165d9de2d3SDavid du Colombier #define PADDR(va)	PTR2UINT(PHYSDRAM | ((uintptr)(va) & ~KSEGM))
1175d9de2d3SDavid du Colombier #define DMAADDR(va)	PTR2UINT(BUSDRAM  | ((uintptr)(va) & ~KSEGM))
1185d9de2d3SDavid du Colombier #define DMAIO(va)	PTR2UINT(BUSIO    | ((uintptr)(va) & ~VIRTIO))
1195d9de2d3SDavid du Colombier 
1205d9de2d3SDavid du Colombier #define MASK(v)	((1UL << (v)) - 1)	/* mask `v' bits wide */
121