]> git.lizzy.rs Git - plan9front.git/blob - sys/src/9/kw/fns.h
kw: syscallfmt() declaration moved to port/portfns.h
[plan9front.git] / sys / src / 9 / kw / fns.h
1 #define checkmmu(a, b)
2 #define countpagerefs(a, b)
3
4 #include "../port/portfns.h"
5
6 extern int led(int, int);
7 extern void ledexit(int);
8 extern void delay(int);
9 extern void _uartputs(char*, int);
10 extern int _uartprint(char*, ...);
11 extern void uartkirkwoodconsole(void);
12 extern void serialputs(char *, int);
13 extern void serialputc(int c);
14
15 #pragma varargck argpos _uartprint 1
16
17 extern void archreboot(void);
18 extern void archconfinit(void);
19 extern void archreset(void);
20 extern void barriers(void);
21 extern void cachedinv(void);
22 extern void cachedinvse(void*, int);
23 extern void cachedwb(void);
24 extern void cachedwbinv(void);
25 extern void cachedwbinvse(void*, int);
26 extern void cachedwbse(void*, int);
27 extern void cacheiinv(void);
28 extern void cacheuwbinv(void);
29 extern uintptr cankaddr(uintptr pa);
30 extern void clockshutdown(void);
31 extern int clz(ulong);
32 int     cmpswap(long*, long, long);
33
34 #define coherence barriers
35
36 extern u32int controlget(void);
37 extern u32int cpctget(void);
38 extern u32int cpidget(void);
39 extern char *cputype2name(char *, int);
40 extern ulong cprd(int cp, int op1, int crn, int crm, int op2);
41 extern ulong cprdsc(int op1, int crn, int crm, int op2);
42 extern void cpuidprint(void);
43 extern void cpwr(int cp, int op1, int crn, int crm, int op2, ulong val);
44 extern void cpwrsc(int op1, int crn, int crm, int op2, ulong val);
45 #define cycles(ip) *(ip) = lcycles()
46 extern u32int dacget(void);
47 extern void dacput(u32int);
48 extern u32int farget(void);
49 extern u32int fsrget(void);
50 extern int ispow2(uvlong);
51 extern void l1cachesoff(void);
52 extern void l1cacheson(void);
53 extern void l2cachecfgoff(void);
54 extern void l2cachecfgon(void);
55 extern void l2cacheon(void);
56 extern void l2cacheuinv(void);
57 extern void l2cacheuinvse(void*, int);
58 extern void l2cacheuwb(void);
59 extern void l2cacheuwbinv(void);
60 extern void l2cacheuwbinvse(void*, int);
61 extern void l2cacheuwbse(void*, int);
62 extern void lastresortprint(char *buf, long bp);
63 extern int log2(ulong);
64 extern void mmuinvalidate(void);                /* 'mmu' or 'tlb'? */
65 extern void mmuinvalidateaddr(u32int);          /* 'mmu' or 'tlb'? */
66 extern u32int pidget(void);
67 extern void pidput(u32int);
68 void    procrestore(Proc *);
69 void    procsave(Proc*);
70 void    procsetup(Proc*);
71 void    procfork(Proc*);
72 extern void _reset(void);
73 extern void setr13(int, u32int*);
74 extern int tas(void *);
75 extern u32int ttbget(void);
76 extern void ttbput(u32int);
77
78 extern void intrclear(int sort, int v);
79 extern void intrenable(int sort, int v, void (*f)(Ureg*, void*), void *a, char *name);
80 extern void intrdisable(int sort, int v, void (*f)(Ureg*, void*), void* a, char *name);
81 extern void vectors(void);
82 extern void vtable(void);
83
84 /*
85  * Things called in main.
86  */
87 extern void clockinit(void);
88 extern void i8250console(void);
89 extern void links(void);
90 extern void mmuinit(void);
91 extern void touser(uintptr);
92 extern void trapinit(void);
93
94 extern int fpiarm(Ureg*);
95 extern int fpudevprocio(Proc*, void*, long, uintptr, int);
96 extern void fpuinit(void);
97 extern void fpunoted(void);
98 extern void fpunotify(Ureg*);
99 extern void fpuprocrestore(Proc*);
100 extern void fpuprocsave(Proc*);
101 extern void fpusysprocsetup(Proc*);
102 extern void fpusysrfork(Ureg*);
103 extern void fpusysrforkchild(Proc*, Ureg *, Proc*);
104 extern int fpuemu(Ureg*);
105
106 /*
107  * Miscellaneous machine dependent stuff.
108  */
109 extern char* getenv(char*, char*, int);
110 char*   getconf(char*);
111 uintptr mmukmap(uintptr, uintptr, usize);
112 uintptr mmukunmap(uintptr, uintptr, usize);
113 extern void* mmuuncache(void*, usize);
114 extern void* ucalloc(usize);
115 extern void* ucallocalign(usize size, int align, int span);
116 extern Block* ucallocb(int);
117 extern void ucfree(void*);
118 extern void ucfreeb(Block*);
119 extern Block* uciallocb(int);
120
121 /*
122  * Things called from port.
123  */
124 extern void delay(int);                         /* only scheddump() */
125 extern int islo(void);
126 extern void microdelay(int);                    /* only edf.c */
127 extern void evenaddr(uintptr);
128 extern void idlehands(void);
129 extern void setkernur(Ureg*, Proc*);            /* only devproc.c */
130 extern void spldone(void);
131 extern int splfhi(void);
132 extern int splflo(void);
133 extern void sysprocsetup(Proc*);
134
135 /*
136  * PCI
137  */
138 ulong   pcibarsize(Pcidev*, int);
139 void    pcibussize(Pcidev*, ulong*, ulong*);
140 int     pcicfgr8(Pcidev*, int);
141 int     pcicfgr16(Pcidev*, int);
142 int     pcicfgr32(Pcidev*, int);
143 void    pcicfgw8(Pcidev*, int, int);
144 void    pcicfgw16(Pcidev*, int, int);
145 void    pcicfgw32(Pcidev*, int, int);
146 void    pciclrbme(Pcidev*);
147 void    pciclrioe(Pcidev*);
148 void    pciclrmwi(Pcidev*);
149 int     pcigetpms(Pcidev*);
150 void    pcihinv(Pcidev*);
151 uchar   pciipin(Pcidev*, uchar);
152 Pcidev* pcimatch(Pcidev*, int, int);
153 Pcidev* pcimatchtbdf(int);
154 void    pcireset(void);
155 int     pciscan(int, Pcidev**);
156 void    pcisetbme(Pcidev*);
157 void    pcisetioe(Pcidev*);
158 void    pcisetmwi(Pcidev*);
159 int     pcisetpms(Pcidev*, int);
160 int     cas32(void*, u32int, u32int);
161 int     tas32(void*);
162
163 #define CASU(p, e, n)   cas32((p), (u32int)(e), (u32int)(n))
164 #define CASV(p, e, n)   cas32((p), (u32int)(e), (u32int)(n))
165 #define CASW(addr, exp, new)    cas32((addr), (exp), (new))
166 #define TAS(addr)       tas32(addr)
167
168 extern void forkret(void);
169 extern int userureg(Ureg*);
170 void*   vmap(uintptr, usize);
171 void    vunmap(void*, usize);
172
173 extern void kexit(Ureg*);
174
175 #define getpgcolor(a)   0
176 #define kmapinval()
177
178 #define PTR2UINT(p)     ((uintptr)(p))
179 #define UINT2PTR(i)     ((void*)(i))
180
181 #define waserror()      (up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1]))
182
183 /*
184  * this low-level printing stuff is ugly,
185  * but there appears to be no other way to
186  * print until after #t is populated.
187  */
188 #define wave(c) { \
189         coherence(); \
190         while ((*(ulong *)(PHYSCONS+4*5) & (1<<5)) == 0) /* (x->lsr&LSRthre)==0? */ \
191                 ; \
192         *(ulong *)PHYSCONS = (c); \
193         coherence(); \
194 }
195
196 /*
197  * These are not good enough.
198  */
199 #define KADDR(pa)       UINT2PTR(KZERO|((uintptr)(pa)))
200 #define PADDR(va)       PTR2UINT(((uintptr)(va)) & ~KSEGM)
201
202 #define MASK(v) ((1UL << (v)) - 1)      /* mask `v' bits wide */