1 #include "../port/portfns.h" 2 3 void aamloop(int); 4 void acpiscan(void (*func)(uchar *)); 5 Dirtab* addarchfile(char*, int, long(*)(Chan*,void*,long,vlong), long(*)(Chan*,void*,long,vlong)); 6 void archinit(void); 7 void archrevert(void); 8 int bios32call(BIOS32ci*, u16int[3]); 9 int bios32ci(BIOS32si*, BIOS32ci*); 10 void bios32close(BIOS32si*); 11 BIOS32si* bios32open(char*); 12 void bootargs(void*); 13 ulong cankaddr(ulong); 14 void cgapost(int); 15 void clockintr(Ureg*, void*); 16 int (*cmpswap)(long*, long, long); 17 int cmpswap486(long*, long, long); 18 void (*coherence)(void); 19 void cpuid(int, ulong regs[]); 20 int cpuidentify(void); 21 void cpuidprint(void); 22 void (*cycles)(uvlong*); 23 void delay(int); 24 int dmacount(int); 25 int dmadone(int); 26 void dmaend(int); 27 int dmainit(int, int); 28 long dmasetup(int, void*, long, int); 29 void fpclear(void); 30 void fpenv(FPsave*); 31 void fpinit(void); 32 void fpoff(void); 33 void fpon(void); 34 void (*fprestore)(FPsave*); 35 void (*fpsave)(FPsave*); 36 void fpsavealloc(void); 37 void fpsserestore(FPsave*); 38 void fpsserestore0(FPsave*); 39 void fpssesave(FPsave*); 40 void fpssesave0(FPsave*); 41 ulong fpstatus(void); 42 void fpx87restore(FPsave*); 43 void fpx87save(FPsave*); 44 ulong getcr0(void); 45 ulong getcr2(void); 46 ulong getcr3(void); 47 ulong getcr4(void); 48 char* getconf(char*); 49 void guesscpuhz(int); 50 void halt(void); 51 int i8042auxcmd(int); 52 int i8042auxcmds(uchar*, int); 53 void i8042auxenable(void (*)(int, int)); 54 void i8042reset(void); 55 void i8250console(void); 56 void i8250config(char *); 57 void* i8250alloc(int, int, int); 58 void i8250mouse(char*, int (*)(Queue*, int), int); 59 void i8250setmouseputc(char*, int (*)(Queue*, int)); 60 void i8253enable(void); 61 void i8253init(void); 62 void i8253link(void); 63 uvlong i8253read(uvlong*); 64 void i8253timerset(uvlong); 65 int i8259disable(int); 66 int i8259enable(Vctl*); 67 void i8259init(void); 68 int i8259isr(int); 69 void i8259on(void); 70 void i8259off(void); 71 int i8259vecno(int); 72 void idle(void); 73 void idlehands(void); 74 int inb(int); 75 void insb(int, void*, int); 76 ushort ins(int); 77 void inss(int, void*, int); 78 ulong inl(int); 79 void insl(int, void*, int); 80 int intrdisable(int, void (*)(Ureg *, void *), void*, int, char*); 81 void intrenable(int, void (*)(Ureg*, void*), void*, int, char*); 82 void introff(void); 83 void intron(void); 84 void invlpg(ulong); 85 void iofree(int); 86 void ioinit(void); 87 int iounused(int, int); 88 int ioalloc(int, int, int, char*); 89 int ioreserve(int, int, int, char*); 90 int iprint(char*, ...); 91 int isaconfig(char*, int, ISAConf*); 92 void* kaddr(ulong); 93 void kbdenable(void); 94 void kbdinit(void); 95 #define kmapinval() 96 void lgdt(ushort[3]); 97 void lidt(ushort[3]); 98 void links(void); 99 void ltr(ulong); 100 void mach0init(void); 101 void mathinit(void); 102 void mb386(void); 103 void mb586(void); 104 void meminit(void); 105 void memorysummary(void); 106 void mfence(void); 107 #define mmuflushtlb(pdb) putcr3(pdb) 108 void mmuinit(void); 109 ulong* mmuwalk(ulong*, ulong, int, int); 110 int mtrr(uvlong, uvlong, char *); 111 void mtrrclock(void); 112 int mtrrprint(char *, long); 113 uchar nvramread(int); 114 void nvramwrite(int, uchar); 115 void outb(int, int); 116 void outsb(int, void*, int); 117 void outs(int, ushort); 118 void outss(int, void*, int); 119 void outl(int, ulong); 120 void outsl(int, void*, int); 121 ulong paddr(void*); 122 ulong pcibarsize(Pcidev*, int); 123 void pcibussize(Pcidev*, ulong*, ulong*); 124 int pcicap(Pcidev*, int); 125 int pcihtcap(Pcidev*, int); 126 int pcienumcaps(Pcidev*, int (*fmatch)(Pcidev*, int, int, int), int); 127 int pcicfgr8(Pcidev*, int); 128 int pcicfgr16(Pcidev*, int); 129 int pcicfgr32(Pcidev*, int); 130 void pcicfgw8(Pcidev*, int, int); 131 void pcicfgw16(Pcidev*, int, int); 132 void pcicfgw32(Pcidev*, int, int); 133 void pciclrbme(Pcidev*); 134 void pciclrioe(Pcidev*); 135 void pciclrmwi(Pcidev*); 136 int pcigetpms(Pcidev*); 137 void pcihinv(Pcidev*); 138 uchar pciipin(Pcidev*, uchar); 139 Pcidev* pcimatch(Pcidev*, int, int); 140 Pcidev* pcimatchtbdf(int); 141 void pcireset(void); 142 int pciscan(int, Pcidev**); 143 void pcisetbme(Pcidev*); 144 void pcisetioe(Pcidev*); 145 void pcisetmwi(Pcidev*); 146 int pcisetpms(Pcidev*, int); 147 void pcmcisread(PCMslot*); 148 int pcmcistuple(int, int, int, void*, int); 149 PCMmap* pcmmap(int, ulong, int, int); 150 int pcmspecial(char*, ISAConf*); 151 int (*_pcmspecial)(char *, ISAConf *); 152 void pcmspecialclose(int); 153 void (*_pcmspecialclose)(int); 154 void pcmunmap(int, PCMmap*); 155 int pdbmap(ulong*, ulong, ulong, int); 156 void procrestore(Proc*); 157 void procsave(Proc*); 158 void procsetup(Proc*); 159 void putcr0(ulong); 160 void putcr3(ulong); 161 void putcr4(ulong); 162 void* rampage(void); 163 void rdmsr(int, vlong*); 164 void realmode(Ureg*); 165 void screeninit(void); 166 void (*screenputs)(char*, int); 167 void* sigsearch(char*); 168 void syncclock(void); 169 void syscallfmt(int syscallno, ulong pc, va_list list); 170 void sysretfmt(int syscallno, va_list list, long ret, uvlong start, uvlong stop); 171 void* tmpmap(Page*); 172 void tmpunmap(void*); 173 void touser(void*); 174 void trapenable(int, void (*)(Ureg*, void*), void*, char*); 175 void trapinit(void); 176 void trapinit0(void); 177 int tas(void*); 178 uvlong tscticks(uvlong*); 179 ulong umbmalloc(ulong, int, int); 180 void umbfree(ulong, int); 181 ulong umbrwmalloc(ulong, int, int); 182 void umbrwfree(ulong, int); 183 ulong upaalloc(int, int); 184 void upafree(ulong, int); 185 void upareserve(ulong, int); 186 #define userureg(ur) (((ur)->cs & 0xFFFF) == UESEL) 187 void validalign(uintptr, unsigned); 188 void vectortable(void); 189 void* vmap(ulong, int); 190 int vmapsync(ulong); 191 void vunmap(void*, int); 192 void wbinvd(void); 193 void wrmsr(int, vlong); 194 int xchgw(ushort*, int); 195 196 #define PTR2UINT(p) ((uintptr)(p)) 197 #define UINT2PTR(i) ((void*)(i)) 198 199 #define waserror() (up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1])) 200 #define KADDR(a) kaddr(a) 201 #define PADDR(a) paddr((void*)(a)) 202 203 #define dcflush(a, b) 204 205 #define BIOSSEG(a) KADDR(((uint)(a))<<4) 206 207 #define L16GET(p) (((p)[1]<<8)|(p)[0]) 208 #define L32GET(p) (((u32int)L16GET((p)+2)<<16)|L16GET(p)) 209