#include "../port/portfns.h"
void addclock0link(void (*)(void));
void archinit(void);
void arginit(void);
void arith(void);
void clearmmucache(void);
void clock(Ureg*);
void clockinit(void);
#define coherence mb
int cistrcmp(char*, char*);
int cistrncmp(char*, char*, int);
void cpuidprint(void);
void cserve(ulong, ulong);
int dmacount(int);
int dmadone(int);
void dmaend(int);
int dmainit(int, int);
long dmasetup(int, void*, long, int);
void evenaddr(ulong);
void fataltrap(Ureg *, char *);
void fault0(void);
void faultalpha(Ureg*);
ulong fcr31(void);
void firmware(void);
#define flushpage(s) icflush()
void fpenab(int);
void fptrap(Ureg*);
int getcfields(char*, char**, int, char*);
char *getconf(char*);
ulong getfcr(void);
ulong getstatus(void);
void gotopc(ulong);
int i8042auxcmd(int);
void i8042auxenable(void (*)(int, int));
void i8042reset(void);
void i8259init(void);
int i8259enable(int, int, Vctl*);
#define idlehands() /* nothing to do in the runproc */
void icflush(void);
void illegal0(void);
void intr0(void);
void intrenable(int, void (*)(Ureg*, void*), void*, int, char*);
int ioalloc(int, int, int, char*);
void iofree(int);
void ioinit(void);
int iounused(int, int);
int iprint(char*, ...);
int irqallocread(char*, long, vlong);
int isaconfig(char*, int, ISAConf*);
void kbdinit(void);
void *kmapv(uvlong, int);
int kprint(char*, ...);
void launchinit(void);
void launch(int);
void links(void);
void mb(void);
void memholes(void);
ulong meminit(void);
void mmuinit(void);
#define mmunewpage(x)
void mntdump(void);
void ns16552install(void);
void ns16552special(int, int, Queue**, Queue**, int (*)(Queue*, int));
ulong pcibarsize(Pcidev*, int);
int pcicfgr8(Pcidev*, int);
int pcicfgr16(Pcidev*, int);
int pcicfgr32(Pcidev*, int);
void pcicfgw8(Pcidev*, int, int);
void pcicfgw16(Pcidev*, int, int);
void pcicfgw32(Pcidev*, int, int);
void pcihinv(Pcidev*);
Pcidev* pcimatch(Pcidev*, int, int);
void pcireset(void);
void pcisetbme(Pcidev*);
void prflush(void);
void printinit(void);
#define procrestore(p)
void procsave(Proc*);
void procsetup(Proc*);
void restfpregs(FPsave*);
uvlong rpcc(uvlong*);
void screeninit(void);
void (*screenputs)(char*, int);
void setpcb(PCB *);
PCB *swpctx(PCB *);
void syscall0(void);
int tas(ulong*);
void tlbflush(int, ulong);
void touser(void*);
void trapinit(void);
void unaligned(void);
ulong upamalloc(ulong, int, int);
void upafree(ulong, int);
#define userureg(ur) ((ur)->status & UMODE)
void wrent(int, void*);
void wrvptptr(uvlong);
#define waserror() (up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1]))
#define kmapperm(x) kmap(x)
#define KADDR(a) ((void*)((ulong)(a)|KZERO))
#define PADDR(a) ((ulong)(a)&~KZERO)
#define inb(p) (arch->_inb)(p)
#define ins(p) (arch->_ins)(p)
#define inl(p) (arch->_inl)(p)
#define outb(p, x) (arch->_outb)((p), (x))
#define outs(p, x) (arch->_outs)((p), (x))
#define outl(p, x) (arch->_outl)((p), (x))
#define insb(p, buf, len) (arch->_insb)((p), (buf), (len))
#define inss(p, buf, len) (arch->_inss)((p), (buf), (len))
#define insl(p, buf, len) (arch->_insl)((p), (buf), (len))
#define outsb(p, buf, len) (arch->_outsb)((p), (buf), (len))
#define outss(p, buf, len) (arch->_outss)((p), (buf), (len))
#define outsl(p, buf, len) (arch->_outsl)((p), (buf), (len))