1 #include "../port/portfns.h" 2 3 void arginit(void); 4 int busprobe(ulong); 5 uintptr cankaddr(uintptr); 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 dcinvalid(void*, ulong); 16 void dumptlb(void); 17 void faultmips(Ureg*, int, int); 18 void* fbinit(void); 19 ulong fcr31(void); 20 void firmware(int); 21 void fpclear(void); 22 void fpsave(FPsave *); 23 void fptrap(Ureg*); 24 void fpwatch(Ureg *); 25 ulong getcause(void); 26 char* getconf(char*); 27 ulong getconfig(void); 28 ulong getpagemask(void); 29 ulong getstatus(void); 30 int gettlbp(u64int, u64int*); 31 u64int gettlbvirt(int); 32 void gettlbx(int, Softtlb*); 33 void gotopc(ulong); 34 void hinv(void); 35 int i8042auxcmd(int); 36 int i8042auxcmds(uchar*, int); 37 void i8042auxenable(void (*)(int, int)); 38 void i8042reset(void); 39 int i8250console(void); 40 int i8259disable(int); 41 int i8259enable(int); 42 void i8259init(void); 43 int i8259intack(void); 44 int i8259isr(int); 45 void icflush(void *, ulong); 46 void idle(void); 47 #define idlehands() /* no wait instruction, do nothing */ 48 #define inb(r) (*(uchar*)(IOBASE+(r))) 49 void insb(int, void*, int); 50 #define ins(r) (*(ushort*)(IOBASE+(r))) 51 void inss(int, void*, int); 52 #define inl(r) (*(ulong*)(IOBASE+(r))) 53 void insl(int, void*, int); 54 void intrenable(int, void(*)(Ureg*, void *), void *, int); 55 void introff(int); 56 void intron(int); 57 void intrshutdown(void); 58 void ioinit(void); 59 int isaconfig(char*, int, ISAConf*); 60 void kbdinit(void); 61 void kfault(Ureg*); 62 KMap* kmap(Page*); 63 void kmapinit(void); 64 void kmapinval(void); 65 void kunmap(KMap*); 66 void launchinit(void); 67 void launch(int); 68 void links(void); 69 ulong machstatus(void); 70 void newstart(void); 71 int newtlbpid(Proc*); 72 void online(void); 73 #define outb(r, v) (*(uchar*)(IOBASE+(r)) = v) 74 void outsb(int, void*, int); 75 #define outs(r, v) (*(ushort*)(IOBASE+(r)) = v) 76 void outss(int, void*, int); 77 #define outl(r, v) (*(ulong*)(IOBASE+(r)) = v) 78 void outsl(int, void*, int); 79 ulong pcibarsize(Pcidev*, int); 80 void pcibussize(Pcidev*, ulong*, ulong*); 81 int pcicfgr8(Pcidev*, int); 82 int pcicfgr16(Pcidev*, int); 83 int pcicfgr32(Pcidev*, int); 84 void pcicfgw8(Pcidev*, int, int); 85 void pcicfgw16(Pcidev*, int, int); 86 void pcicfgw32(Pcidev*, int, int); 87 void pciclrbme(Pcidev*); 88 void pciclrioe(Pcidev*); 89 void pciclrmwi(Pcidev*); 90 int pcigetpms(Pcidev*); 91 void pcihinv(Pcidev*); 92 uchar pciipin(Pcidev*, uchar); 93 Pcidev* pcimatch(Pcidev*, int, int); 94 Pcidev* pcimatchtbdf(int); 95 void pcireset(void); 96 int pciscan(int, Pcidev**); 97 void pcisetbme(Pcidev*); 98 void pcisetioe(Pcidev*); 99 void pcisetmwi(Pcidev*); 100 int pcisetpms(Pcidev*, int); 101 int pcisubirq(int); 102 ulong prid(void); 103 void procrestore(Proc *); 104 void procsave(Proc *); 105 #define procsetup(p) ((p)->fpstate = FPinit) 106 void purgetlb(int); 107 Softtlb* putstlb(u64int, u64int); 108 int puttlb(u64int, u64int, u64int); 109 void puttlbx(int, u64int, u64int, u64int, int); 110 ulong rdcompare(void); 111 ulong rdcount(void); 112 ulong* reg(Ureg*, int); 113 void restfpregs(FPsave*, ulong); 114 void screeninit(void); 115 void setleveldest(int, int, uvlong*); 116 void setpagemask(ulong); 117 void setsp(ulong); 118 void setstatus(ulong); 119 void setwatchhi0(ulong); 120 void setwatchlo0(ulong); 121 void setwired(ulong); 122 ulong stlbhash(ulong); 123 void swcursorinit(void); 124 void syncclock(void); 125 uintptr syscall(Ureg*); 126 void syscallfmt(int syscallno, uintptr pc, va_list list); 127 void sysretfmt(int syscallno, va_list list, uintptr ret, uvlong start, uvlong stop); 128 int tas(ulong*); 129 void tlbinit(void); 130 u64int tlbvirt(void); 131 void touser(uintptr); 132 void unleash(void); 133 #define userureg(ur) ((ur)->status & KUSER) 134 void validalign(uintptr, unsigned); 135 void vecinit(void); 136 void vector0(void); 137 void vector100(void); 138 void vector180(void); 139 void wrcompare(ulong); 140 void wrcount(ulong); 141 ulong wiredpte(vlong); 142 void machwire(void); 143 void _uartputs(char*, int); 144 int _uartprint(char*, ...); 145 146 #define PTR2UINT(p) ((uintptr)(p)) 147 #define UINT2PTR(i) ((void*)(i)) 148 149 #define waserror() (up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1])) 150 151 #define KADDR(a) ((void*)((uintptr)(a)|KSEG0)) 152 #define PADDR(a) ((uintptr)(a)&~KSEGM) 153 154 #define KSEG0ADDR(a) ((void*)(((ulong)(a)&~KSEGM)|KSEG0)) 155 #define KSEG1ADDR(a) ((void*)((ulong)(a)|KSEG1)) 156 157 #define sdmalloc(n) mallocalign(n, CACHELINESZ, 0, 0) 158 #define sdfree(p) free(p) 159 160 int pmonprint(char*, ...); 161