#include "../port/portfns.h"
void aamloop(int);
void addconf(char*, char*);
void addscsilink(char*, Scsiio (*)(int, ISAConf*));
void bbinit(void);
void bigcursor(void);
void bootargs(ulong);
int cistrcmp(char*, char*);
#define clearmmucache() /* 386 doesn't have one */
void clockinit(void);
void config(int);
int cpuspeed(int);
void delay(int);
int dmadone(int);
void dmaend(int);
void dmainit(void);
long dmasetup(int, void*, long, int);
#define evenaddr(x) /* 386 doesn't care */
void faultinit(void);
void fclock(Ureg*);
void fclockinit(void);
void fpenv(FPsave*);
void fpinit(void);
void fpoff(void);
void fprestore(FPsave*);
void fpsave(FPsave*);
ulong fpstatus(void);
ulong getcr0(void);
ulong getcr2(void);
ulong getcr3(void);
char* getconf(char*);
ulong getstatus(void);
void hardclock(void);
void i8042a20(void);
void i8042reset(void);
void ident(void);
void idle(void);
int inb(int);
void insb(int, void*, int);
ushort ins(int);
void inss(int, void*, int);
ulong inl(int);
void insl(int, void*, int);
int iprint(char*, ...);
int isaconfig(char*, int, ISAConf*);
ulong getisa(ulong, int, int);
void putisa(ulong, int);
ulong getspace(int, int);
void kbdinit(void);
long* mapaddr(ulong);
void mathinit(void);
void meminit(void);
void mmuinit(void);
#define mmunewpage(x)
int modem(int);
void mousectl(char*);
uchar nvramread(int);
void outb(int, int);
void outsb(int, void*, int);
void outs(int, ushort);
void outss(int, void*, int);
void outl(int, ulong);
void outsl(int, void*, int);
void pcicfgr(uchar, uchar, uchar, uchar, void*, int);
int pcimatch(uchar, uchar, PCIcfg*);
PCMmap* pcmmap(int, ulong, int, int);
int pcmspecial(char*, ISAConf*);
void pcmspecialclose(int);
void pcmunmap(int, PCMmap*);
void prflush(void);
void prhex(ulong);
void printcpufreq(void);
void procrestore(Proc*);
void procsave(Proc*);
void procsetup(Proc*);
void ps2poll(void);
void putgdt(Segdesc*, int);
void putidt(Segdesc*, int);
void putcr3(ulong);
void puttr(ulong);
void screeninit(void);
void screenputs(char*, int);
int serial(int);
void setvec(int, void (*)(Ureg*, void*), void*);
void syscall(Ureg*, void*);
void systrap(void);
void toscreen(void*);
void touser(void*);
void trapinit(void);
int tas(void*);
void uartclock(void);
void uartpoll(void);
void vgainit(void);
void vgasavecrash(uchar*, int);
void vgarestorecrash(uchar*, int);
int x86cpuid(int*, int*);
int xchgw(ushort*, int);
#define waserror() (up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1]))
#define kmapperm(x) kmap(x)
#define getcallerpc(x) (((ulong*)(&x))[-1])
#define KADDR(a) ((void*)((ulong)(a)|KZERO))
#define PADDR(a) ((ulong)(a)&~KZERO)
void ns16552install(void);
void ns16552special(int, int, Queue**, Queue**, int (*)(Queue*, int));
void hnputl(void*, ulong v);
void hnputs(void*, ushort v);
ulong nhgetl(void*);
ushort nhgets(void*);
void ifwrite(void*, Block*, int);
void* ifinit(int);
ulong ifaddr(void*);
void filiput(Block*);
void fiberint(Ureg*, void*);
ulong fwblock(ulong, void*, ulong);
ulong frblock(ulong, void*, ulong);
void freset(void*);
void ifree(void*);
void ifflush(void*);
Block* iallocb(int);
void* ifroute(ulong);
int ifgetsr(void);
ulong ifunroute(ulong);
void parseip(char*, char*);
#define dcflush(a, b)
int scsibtissue(int, int, uchar*, int, uchar*, int);
Scsiio scsibt24(int, int, ISAConf*);
Scsiio scsibt32(int, int, ISAConf*);