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 cachedwbinv(void); 9 extern void cachedwbse(void*, int); 10 extern void cachedwbinvse(void*, int); 11 extern void cacheiinv(void); 12 extern void cacheuwbinv(void); 13 extern uintptr cankaddr(uintptr pa); 14 extern int cas32(void*, u32int, u32int); 15 extern void checkmmu(uintptr, uintptr); 16 extern void clockinit(void); 17 extern void clockshutdown(void); 18 extern int cmpswap(long*, long, long); 19 extern void coherence(void); 20 extern ulong cprd(int cp, int op1, int crn, int crm, int op2); 21 extern ulong cprdsc(int op1, int crn, int crm, int op2); 22 extern void cpuidprint(void); 23 extern void cpwr(int cp, int op1, int crn, int crm, int op2, ulong val); 24 extern void cpwrsc(int op1, int crn, int crm, int op2, ulong val); 25 #define cycles(ip) *(ip) = lcycles() 26 extern void dmastart(int, int, int, void*, void*, int); 27 extern int dmawait(int); 28 extern int fbblank(int); 29 extern void* fbinit(int, int*, int*, int*); 30 extern u32int farget(void); 31 extern void fpon(void); 32 extern ulong fprd(int fpreg); 33 extern void fprestreg(int fpreg, uvlong val); 34 extern void fpsave(FPsave *); 35 extern ulong fpsavereg(int fpreg, uvlong *fpp); 36 extern void fpwr(int fpreg, ulong val); 37 extern u32int fsrget(void); 38 extern ulong getclkrate(int); 39 extern char* getconf(char*); 40 extern char *getethermac(void); 41 extern uint getfirmware(void); 42 extern int getpower(int); 43 extern void getramsize(Confmem*); 44 extern u32int ifsrget(void); 45 extern void irqenable(int, void (*)(Ureg*, void*), void*); 46 #define intrenable(i, f, a, b, n) irqenable((i), (f), (a)) 47 extern void intrsoff(void); 48 extern int isaconfig(char*, int, ISAConf*); 49 extern void links(void); 50 extern void mmuinit(void); 51 extern void mmuinit1(void); 52 extern void mmuinvalidate(void); 53 extern void mmuinvalidateaddr(u32int); 54 extern uintptr mmukmap(uintptr, uintptr, usize); 55 extern void okay(int); 56 extern void procrestore(Proc *); 57 extern void procsave(Proc*); 58 extern void procsetup(Proc*); 59 extern void screeninit(void); 60 #define sdfree(p) free(p) 61 #define sdmalloc(n) mallocalign(n, CACHELINESZ, 0, 0) 62 extern void setpower(int, int); 63 extern void setr13(int, u32int*); 64 extern int splfhi(void); 65 extern int splflo(void); 66 extern void swcursorinit(void); 67 extern void syscallfmt(int syscallno, ulong pc, va_list list); 68 extern void sysretfmt(int syscallno, va_list list, long ret, uvlong start, uvlong stop); 69 extern int tas(void *); 70 extern void touser(uintptr); 71 extern void trapinit(void); 72 extern void uartconsinit(void); 73 extern int userureg(Ureg*); 74 extern void vectors(void); 75 extern void vtable(void); 76 extern void wdogoff(void); 77 78 /* 79 * floating point emulation 80 */ 81 extern int fpiarm(Ureg*); 82 extern int fpudevprocio(Proc*, void*, long, uintptr, int); 83 extern void fpuinit(void); 84 extern void fpunoted(void); 85 extern void fpunotify(Ureg*); 86 extern void fpuprocrestore(Proc*); 87 extern void fpuprocsave(Proc*); 88 extern void fpusysprocsetup(Proc*); 89 extern void fpusysrfork(Ureg*); 90 extern void fpusysrforkchild(Proc*, Ureg*, Proc*); 91 extern int fpuemu(Ureg*); 92 /* 93 * Things called from port. 94 */ 95 extern void delay(int); /* only scheddump() */ 96 extern int islo(void); 97 extern void microdelay(int); /* only edf.c */ 98 extern void idlehands(void); 99 extern void setkernur(Ureg*, Proc*); /* only devproc.c */ 100 extern void* sysexecregs(uintptr, ulong, int); 101 extern void sysprocsetup(Proc*); 102 extern void validalign(uintptr, unsigned); 103 104 extern void kexit(Ureg*); 105 106 #define getpgcolor(a) 0 107 #define kmapinval() 108 #define countpagerefs(a, b) 109 110 #define PTR2UINT(p) ((uintptr)(p)) 111 #define UINT2PTR(i) ((void*)(i)) 112 113 #define waserror() (up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1])) 114 115 #define KADDR(pa) UINT2PTR(KZERO | ((uintptr)(pa) & ~KSEGM)) 116 #define PADDR(va) PTR2UINT(PHYSDRAM | ((uintptr)(va) & ~KSEGM)) 117 #define DMAADDR(va) PTR2UINT(BUSDRAM | ((uintptr)(va) & ~KSEGM)) 118 #define DMAIO(va) PTR2UINT(BUSIO | ((uintptr)(va) & ~VIRTIO)) 119 120 #define MASK(v) ((1UL << (v)) - 1) /* mask `v' bits wide */ 121