xref: /plan9-contrib/sys/src/9/bcm/fns.h (revision 5c47fe09a0cc86dfb02c0ea4a2b6aec7eda2361f)
1 #include "../port/portfns.h"
2 
3 Dirtab*	addarchfile(char*, int, long(*)(Chan*, void*, long, vlong),
4 	long(*)(Chan*, void*, long, vlong));
5 extern void archreboot(void);
6 extern void archreset(void);
7 extern void armtimerset(int);
8 extern void cachedwb(void);
9 extern void cachedwbinv(void);
10 extern void cachedinvse(void*, int);
11 extern void cachedwbse(void*, int);
12 extern void cachedwbinvse(void*, int);
13 extern void cachedwbtlb(void*, int);
14 extern void cacheiinv(void);
15 extern void cacheiinvse(void*, int);
16 extern void cacheuwbinv(void);
17 extern uintptr cankaddr(uintptr pa);
18 extern int cas32(void*, u32int, u32int);
19 extern int cas(ulong*, ulong, ulong);
20 extern void checkmmu(uintptr, uintptr);
21 extern void clockinit(void);
22 extern void clockshutdown(void);
23 extern int cmpswap(long*, long, long);
24 extern void coherence(void);
25 extern u32int cpidget(void);
26 extern u32int cprdcpaccess(void);
27 extern u32int cprdfeat1(void);
28 extern void cpuidprint(void);
29 extern char *cputype2name(char *buf, int size);
30 extern void cpwrcpaccess(u32int);
31 extern void cpwrtimerphysctl(u32int);
32 extern void cpwrtimerphysval(u32int);
33 #define cycles(ip) *(ip) = lcycles()
34 extern uintptr dmaaddr(void *va);
35 extern void dmastart(int, int, int, void*, void*, int);
36 extern int dmawait(int);
37 extern int fbblank(int);
38 extern void* fbinit(int, int*, int*, int*);
39 extern u32int farget(void);
40 extern void fpon(void);
41 extern ulong fprdexc(void);
42 extern ulong fprdscr(void);
43 extern ulong fprdsid(void);
44 extern void fpwrexc(ulong);
45 extern void fpwrscr(ulong);
46 extern void fprestreg(int fpreg, uvlong val);
47 extern void fprestregs(uvlong*, int);
48 extern void fpsave(FPsave *);
49 extern ulong fpsavereg(int fpreg, uvlong *fpp);
50 extern void fpsaveregs(uvlong*, int);
51 extern u32int fsrget(void);
52 extern uint getboardrev(void);
53 extern ulong getclkrate(int);
54 extern char* getconf(char*);
55 extern uint getcputemp(void);
56 extern char *getethermac(void);
57 extern uint getfirmware(void);
58 extern int getncpus(void);
59 extern int getpower(int);
60 extern void getramsize(Confmem*);
61 extern void gpiosel(uint, int);
62 extern void gpiopullup(uint);
63 extern void gpiopulloff(uint);
64 extern void gpiopulldown(uint);
65 extern void gpioout(uint, int);
66 extern int gpioin(uint);
67 extern void i2csetup(int);
68 extern long i2crecv(I2Cdev*, void*, long, ulong);
69 extern long i2csend(I2Cdev*, void*, long, ulong);
70 extern u32int ifsrget(void);
71 extern void irqenable(int, void (*)(Ureg*, void*), void*);
72 #define intrenable(i, f, a, b, n) irqenable((i), (f), (a))
73 extern void intrcpushutdown(void);
74 extern void intrshutdown(void);
75 extern void intrsoff(void);
76 extern int isaconfig(char*, int, ISAConf*);
77 extern int l2ap(int);
78 extern void l2cacheuwbinv(void);
79 extern void links(void);
80 extern void mmuinit(void*);
81 extern void mmuinit1(void);
82 extern void mmuinvalidate(void);
83 extern void mmuinvalidateaddr(u32int);
84 extern void okay(int);
85 extern void procrestore(Proc *);
86 extern void procsave(Proc*);
87 extern void procsetup(Proc*);
88 extern void screeninit(void);
89 #define sdfree(p) free(p)
90 #define sdmalloc(n)	mallocalign(n, BLOCKALIGN, 0, 0)
91 extern void setclkrate(int, ulong);
92 extern void setpower(int, int);
93 extern void setr13(int, u32int*);
94 extern void sev(void);
95 extern void spiclock(uint);
96 extern void spimode(int);
97 extern void spirw(uint, void*, int);
98 extern int splfhi(void);
99 extern int splflo(void);
100 extern void swcursorinit(void);
101 extern void syscallfmt(int syscallno, ulong pc, va_list list);
102 extern void sysretfmt(int syscallno, va_list list, long ret, uvlong start, uvlong stop);
103 extern int startcpus(uint);
104 extern void stopcpu(uint);
105 extern int tas(void *);
106 extern void touser(uintptr);
107 extern void trapinit(void);
108 extern void uartconsinit(void);
109 extern int userureg(Ureg*);
110 extern void vectors(void);
111 extern void vgpinit(void);
112 extern void vgpset(uint, int);
113 extern void vtable(void);
114 extern void wdogoff(void);
115 extern void wdogfeed(void);
116 extern int xhcireset(int devaddr);
117 
118 /*
119  * floating point emulation
120  */
121 extern int fpiarm(Ureg*);
122 extern int fpudevprocio(Proc*, void*, long, uintptr, int);
123 extern void fpuinit(void);
124 extern void fpunoted(void);
125 extern void fpunotify(Ureg*);
126 extern void fpuprocrestore(Proc*);
127 extern void fpuprocsave(Proc*);
128 extern void fpusysprocsetup(Proc*);
129 extern void fpusysrfork(Ureg*);
130 extern void fpusysrforkchild(Proc*, Ureg*, Proc*);
131 extern int fpuemu(Ureg*);
132 /*
133  * Miscellaneous machine dependent stuff.
134  */
135 extern char* getenv(char*, char*, int);
136 uintptr mmukmap(uintptr, uintptr, usize);
137 uintptr mmukmapx(uintptr, uvlong, usize);
138 uintptr mmukunmap(uintptr, uintptr, usize);
139 extern void* mmuuncache(void*, usize);
140 extern void* ucalloc(usize);
141 extern Block* ucallocb(int);
142 extern void* ucallocalign(usize size, int align, int span);
143 extern void ucfree(void*);
144 extern void ucfreeb(Block*);
145 /*
146  * Things called from port.
147  */
148 extern void delay(int);				/* only scheddump() */
149 extern int islo(void);
150 extern void microdelay(int);			/* only edf.c */
151 extern void idlehands(void);
152 extern void setkernur(Ureg*, Proc*);		/* only devproc.c */
153 extern void* sysexecregs(uintptr, ulong, int);
154 extern void sysprocsetup(Proc*);
155 extern void validalign(uintptr, unsigned);
156 
157 extern void kexit(Ureg*);
158 
159 #define	getpgcolor(a)	0
160 #define	kmapinval()
161 #define countpagerefs(a, b)
162 
163 #define PTR2UINT(p)	((uintptr)(p))
164 #define UINT2PTR(i)	((void*)(i))
165 
166 #define	waserror()	(up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1]))
167 
168 #define KADDR(pa)	UINT2PTR(KZERO    | ((uintptr)(pa) & ~KSEGM))
169 #define PADDR(va)	PTR2UINT(PHYSDRAM | ((uintptr)(va) & ~KSEGM))
170 
171 #define MASK(v)	((1UL << (v)) - 1)	/* mask `v' bits wide */
172