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