]> git.lizzy.rs Git - plan9front.git/blob - sys/src/9/kw/fns.h
usbehci: initial support for usb on zynq, remove uncached.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 int fpuemu(Ureg*);
103
104 /*
105  * Miscellaneous machine dependent stuff.
106  */
107 extern char* getenv(char*, char*, int);
108 char*   getconf(char*);
109 uintptr mmukmap(uintptr, uintptr, usize);
110 uintptr mmukunmap(uintptr, uintptr, usize);
111 extern void* mmuuncache(void*, usize);
112 extern void* ucalloc(usize);
113 extern void* ucallocalign(usize size, int align, usize span);
114 extern Block* ucallocb(int);
115 extern void ucfree(void*);
116 extern void ucfreeb(Block*);
117 extern Block* uciallocb(int);
118
119 /*
120  * Things called from port.
121  */
122 extern void delay(int);                         /* only scheddump() */
123 extern int islo(void);
124 extern void microdelay(int);                    /* only edf.c */
125 extern void evenaddr(uintptr);
126 extern void idlehands(void);
127 extern void setkernur(Ureg*, Proc*);            /* only devproc.c */
128 extern void spldone(void);
129 extern int splfhi(void);
130 extern int splflo(void);
131 extern void sysprocsetup(Proc*);
132 extern int isaconfig(char*, int, ISAConf*);     /* only devusb.c */
133
134 /*
135  * PCI
136  */
137 ulong   pcibarsize(Pcidev*, int);
138 void    pcibussize(Pcidev*, ulong*, ulong*);
139 int     pcicfgr8(Pcidev*, int);
140 int     pcicfgr16(Pcidev*, int);
141 int     pcicfgr32(Pcidev*, int);
142 void    pcicfgw8(Pcidev*, int, int);
143 void    pcicfgw16(Pcidev*, int, int);
144 void    pcicfgw32(Pcidev*, int, int);
145 void    pciclrbme(Pcidev*);
146 void    pciclrioe(Pcidev*);
147 void    pciclrmwi(Pcidev*);
148 int     pcigetpms(Pcidev*);
149 void    pcihinv(Pcidev*);
150 uchar   pciipin(Pcidev*, uchar);
151 Pcidev* pcimatch(Pcidev*, int, int);
152 Pcidev* pcimatchtbdf(int);
153 void    pcireset(void);
154 int     pciscan(int, Pcidev**);
155 void    pcisetbme(Pcidev*);
156 void    pcisetioe(Pcidev*);
157 void    pcisetmwi(Pcidev*);
158 int     pcisetpms(Pcidev*, int);
159 int     cas32(void*, u32int, u32int);
160 int     tas32(void*);
161
162 #define CASU(p, e, n)   cas32((p), (u32int)(e), (u32int)(n))
163 #define CASV(p, e, n)   cas32((p), (u32int)(e), (u32int)(n))
164 #define CASW(addr, exp, new)    cas32((addr), (exp), (new))
165 #define TAS(addr)       tas32(addr)
166
167 extern void forkret(void);
168 extern int userureg(Ureg*);
169 void*   vmap(uintptr, usize);
170 void    vunmap(void*, usize);
171
172 extern void kexit(Ureg*);
173
174 #define getpgcolor(a)   0
175 #define kmapinval()
176
177 #define PTR2UINT(p)     ((uintptr)(p))
178 #define UINT2PTR(i)     ((void*)(i))
179
180 #define waserror()      (up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1]))
181
182 /*
183  * this low-level printing stuff is ugly,
184  * but there appears to be no other way to
185  * print until after #t is populated.
186  */
187 #define wave(c) { \
188         coherence(); \
189         while ((*(ulong *)(PHYSCONS+4*5) & (1<<5)) == 0) /* (x->lsr&LSRthre)==0? */ \
190                 ; \
191         *(ulong *)PHYSCONS = (c); \
192         coherence(); \
193 }
194
195 /*
196  * These are not good enough.
197  */
198 #define KADDR(pa)       UINT2PTR(KZERO|((uintptr)(pa)))
199 #define PADDR(va)       PTR2UINT(((uintptr)(va)) & ~KSEGM)
200
201 #define MASK(v) ((1UL << (v)) - 1)      /* mask `v' bits wide */