BIOS32si* bios32open(char*);
void bootargs(void*);
ulong cankaddr(ulong);
+int checksum(void *, int);
void clockintr(Ureg*, void*);
int (*cmpswap)(long*, long, long);
int cmpswap486(long*, long, long);
void cpuidprint(void);
void (*cycles)(uvlong*);
void delay(int);
+void* dmabva(int);
int dmacount(int);
int dmadone(int);
void dmaend(int);
int dmainit(int, int);
+#define DMAWRITE 0
+#define DMAREAD 1
+#define DMALOOP 2
long dmasetup(int, void*, long, int);
+void dumpmcregs(void);
#define evenaddr(x) /* x86 doesn't care */
void fpclear(void);
void fpenv(FPsave*);
void fpinit(void);
void fpoff(void);
-void fprestore(FPsave*);
-void fpsave(FPsave*);
+void (*fprestore)(FPsave*);
+void (*fpsave)(FPsave*);
+void fpsserestore(FPsave*);
+void fpsserestore0(FPsave*);
+void fpssesave(FPsave*);
+void fpssesave0(FPsave*);
ulong fpstatus(void);
+void fpx87restore(FPsave*);
+void fpx87restore0(FPsave*);
+void fpx87save(FPsave*);
+void fpx87save0(FPsave*);
ulong getcr0(void);
ulong getcr2(void);
ulong getcr3(void);
char* getconf(char*);
void guesscpuhz(int);
void halt(void);
+void mwait(void*);
int i8042auxcmd(int);
int i8042auxcmds(uchar*, int);
void i8042auxenable(void (*)(int, int));
void i8042reset(void);
void i8250console(void);
void* i8250alloc(int, int, int);
-void i8250mouse(char*, int (*)(Queue*, int), int);
-void i8250setmouseputc(char*, int (*)(Queue*, int));
void i8253enable(void);
void i8253init(void);
-void i8253link(void);
+void i8253reset(void);
uvlong i8253read(uvlong*);
void i8253timerset(uvlong);
int i8259disable(int);
void kbdenable(void);
void kbdinit(void);
#define kmapinval()
+void ldmxcsr(ulong);
void lgdt(ushort[3]);
+void lldt(ulong);
void lidt(ushort[3]);
void links(void);
void ltr(ulong);
#define mmuflushtlb(pdb) putcr3(pdb)
void mmuinit(void);
ulong* mmuwalk(ulong*, ulong, int, int);
-int mtrr(uvlong, uvlong, char *);
+char* mtrr(uvlong, uvlong, char *);
void mtrrclock(void);
int mtrrprint(char *, long);
+void mtrrsync(void);
uchar nvramread(int);
void nvramwrite(int, uchar);
void outb(int, int);
uchar pciipin(Pcidev*, uchar);
Pcidev* pcimatch(Pcidev*, int, int);
Pcidev* pcimatchtbdf(int);
+int pcicap(Pcidev*, int);
+int pcihtcap(Pcidev*, int);
void pcireset(void);
int pciscan(int, Pcidev**);
void pcisetbme(Pcidev*);
void procrestore(Proc*);
void procsave(Proc*);
void procsetup(Proc*);
+void procfork(Proc*);
void putcr0(ulong);
void putcr3(ulong);
void putcr4(ulong);
void* rampage(void);
-void rdmsr(int, vlong*);
+int rdmsr(int, vlong*);
void realmode(Ureg*);
void screeninit(void);
void (*screenputs)(char*, int);
+void* sigsearch(char*);
void syncclock(void);
-void syscallfmt(int syscallno, ulong pc, va_list list);
-void sysretfmt(int syscallno, va_list list, long ret, uvlong start, uvlong stop);
void* tmpmap(Page*);
void tmpunmap(void*);
void touser(void*);
ulong upaalloc(int, int);
void upafree(ulong, int);
void upareserve(ulong, int);
-#define userureg(ur) (((ur)->cs & 0xFFFF) == UESEL)
void vectortable(void);
void* vmap(ulong, int);
int vmapsync(ulong);
void vunmap(void*, int);
void wbinvd(void);
-void wrmsr(int, vlong);
+int wrmsr(int, vlong);
int xchgw(ushort*, int);
+void rdrandbuf(void*, ulong);
+#define userureg(ur) (((ur)->cs & 3) == 3)
#define waserror() (up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1]))
#define KADDR(a) kaddr(a)
#define PADDR(a) paddr((void*)(a))
-
-#define dcflush(a, b)