1 #include "../port/portfns.h" 2 3 void arginit(void); 4 int busprobe(ulong); 5 ulong cankaddr(ulong); 6 void cleancache(void); 7 void clearmmucache(void); 8 void clock(Ureg*); 9 void clockinit(void); 10 void clockshutdown(void); 11 int cmpswap(long*, long, long); 12 void coherence(void); 13 void cycles(uvlong *); 14 void dcflush(void*, ulong); 15 void faultmips(Ureg*, int, int); 16 ulong fcr31(void); 17 void firmware(int); 18 void fpclear(void); 19 void fpsave(FPsave *); 20 void fptrap(Ureg*); 21 int fpuemu(Ureg *); 22 void fpwatch(Ureg *); 23 ulong getcause(void); 24 char* getconf(char*); 25 ulong getconfig(void); 26 ulong getconfig1(void); 27 ulong getconfig2(void); 28 ulong getconfig3(void); 29 ulong getconfig7(void); 30 ulong gethwreg3(void); 31 ulong getpagemask(void); 32 ulong getstatus(void); 33 int gettlbp(ulong, ulong*); 34 ulong gettlbvirt(int); 35 void gotopc(ulong); 36 void hinv(void); 37 int i8250console(void); 38 void icflush(void *, ulong); 39 void idle(void); 40 void idlehands(void); 41 int inb(int); 42 void insb(int, void*, int); 43 ushort ins(int); 44 void inss(int, void*, int); 45 ulong inl(int); 46 void insl(int, void*, int); 47 void ioinit(void); 48 void introff(int); 49 void intron(int); 50 void intrshutdown(void); 51 void kfault(Ureg*); 52 KMap* kmap(Page*); 53 void kmapinit(void); 54 void kmapinval(void); 55 void kunmap(KMap*); 56 void launchinit(void); 57 void launch(int); 58 void links(void); 59 ulong machstatus(void); 60 void newstart(void); 61 int newtlbpid(Proc*); 62 void online(void); 63 void outb(int, int); 64 void outsb(int, void*, int); 65 void outs(int, ushort); 66 void outss(int, void*, int); 67 void outl(int, ulong); 68 void outsl(int, void*, int); 69 ulong pcibarsize(Pcidev*, int); 70 void pcibussize(Pcidev*, ulong*, ulong*); 71 int pcicfgr8(Pcidev*, int); 72 int pcicfgr16(Pcidev*, int); 73 int pcicfgr32(Pcidev*, int); 74 void pcicfgw8(Pcidev*, int, int); 75 void pcicfgw16(Pcidev*, int, int); 76 void pcicfgw32(Pcidev*, int, int); 77 void pciclrbme(Pcidev*); 78 void pciclrioe(Pcidev*); 79 void pciclrmwi(Pcidev*); 80 int pcigetpms(Pcidev*); 81 void pcihinv(Pcidev*); 82 uchar pciipin(Pcidev*, uchar); 83 Pcidev* pcimatch(Pcidev*, int, int); 84 Pcidev* pcimatchtbdf(int); 85 void pcireset(void); 86 int pciscan(int, Pcidev**); 87 void pcisetbme(Pcidev*); 88 void pcisetioe(Pcidev*); 89 void pcisetmwi(Pcidev*); 90 int pcisetpms(Pcidev*, int); 91 ulong prid(void); 92 void procrestore(Proc *); 93 void procsave(Proc *); 94 #define procsetup(p) ((p)->fpstate = FPinit) 95 void purgetlb(int); 96 Softtlb* putstlb(ulong, ulong); 97 int puttlb(ulong, ulong, ulong); 98 void puttlbx(int, ulong, ulong, ulong, int); 99 ulong rdcompare(void); 100 ulong rdcount(void); 101 ulong* reg(Ureg*, int); 102 void restfpregs(FPsave*, ulong); 103 void intrenable(int, void(*)(void *), void *); 104 void setleveldest(int, int, uvlong*); 105 void setpagemask(ulong); 106 void setsp(ulong); 107 void setstatus(ulong); 108 void setwatchhi0(ulong); 109 void setwatchlo0(ulong); 110 void setwired(ulong); 111 void sicwdog(void); 112 void silencewdog(void); 113 ulong stlbhash(ulong); 114 void stopwdog(void); 115 void syncclock(void); 116 long syscall(Ureg*); 117 void syscallfmt(int syscallno, ulong pc, va_list list); 118 void sysretfmt(int syscallno, va_list list, long ret, uvlong start, uvlong stop); 119 int tas(ulong*); 120 void tlbinit(void); 121 ulong tlbvirt(void); 122 void touser(uintptr); 123 void unleash(void); 124 #define userureg(ur) ((ur)->status & KUSER) 125 void validalign(uintptr, unsigned); 126 void vecinit(void); 127 void vector0(void); 128 void vector100(void); 129 void vector180(void); 130 void wdogreset(void); 131 void wrcompare(ulong); 132 void wrcount(ulong); 133 ulong wiredpte(vlong); 134 void machwire(void); 135 void _uartputs(char*, int); 136 int _uartprint(char*, ...); 137 138 #define PTR2UINT(p) ((uintptr)(p)) 139 #define UINT2PTR(i) ((void*)(i)) 140 141 #define waserror() (up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1])) 142 143 #define KADDR(a) ((void*)((ulong)(a)|KSEG0)) 144 #define PADDR(a) ((ulong)(a)&~KSEGM) 145 146 #define KSEG1ADDR(a) ((void*)((ulong)(a)|KSEG1)) 147