]> git.lizzy.rs Git - plan9front.git/blobdiff - sys/src/9/pc64/fns.h
pc64: avoid getcr3() in mmuflushtlb()
[plan9front.git] / sys / src / 9 / pc64 / fns.h
index 2bbd3ffd8a514519eb6c7facd384b338399a28f6..75764f06dff4e1f41ce1030f5950c8f9dddc4f51 100644 (file)
@@ -15,7 +15,8 @@ void  clockintr(Ureg*, void*);
 int    (*cmpswap)(long*, long, long);
 int    cmpswap486(long*, long, long);
 void   (*coherence)(void);
-void   cpuid(int, ulong regs[]);
+void   cpuid(int, int, ulong regs[]);
+void   fpuinit(void);
 int    cpuidentify(void);
 void   cpuidprint(void);
 void   (*cycles)(uvlong*);
@@ -38,19 +39,19 @@ int ecwrite(uchar addr, uchar val);
 void   fpinit(void);
 void   (*fprestore)(FPsave*);
 void   (*fpsave)(FPsave*);
-void   fpsserestore(FPsave*);
-void   fpssesave(FPsave*);
-void   fpx87restore(FPsave*);
-void   fpx87save(FPsave*);
+void   fpuprocsetup(Proc*);
+void   fpuprocfork(Proc*);
+void   fpuprocsave(Proc*);
+void   fpuprocrestore(Proc*);
 int    fpusave(void);
 void   fpurestore(int);
 u64int getcr0(void);
 u64int getcr2(void);
 u64int getcr3(void);
 u64int getcr4(void);
+u64int getxcr0(void);
 u64int getdr6(void);
 char*  getconf(char*);
-void   guesscpuhz(int);
 void   halt(void);
 void   mwait(void*);
 int    i8042auxcmd(int);
@@ -63,13 +64,6 @@ void i8253init(void);
 void   i8253reset(void);
 uvlong i8253read(uvlong*);
 void   i8253timerset(uvlong);
-int    i8259disable(int);
-int    i8259enable(Vctl*);
-void   i8259init(void);
-int    i8259isr(int);
-void   i8259on(void);
-void   i8259off(void);
-int    i8259vecno(int);
 void   idle(void);
 void   idlehands(void);
 int    inb(int);
@@ -83,11 +77,7 @@ void intrenable(int, void (*)(Ureg*, void*), void*, int, char*);
 void   introff(void);
 void   intron(void);
 void   invlpg(uintptr);
-void   iofree(int);
 void   ioinit(void);
-int    iounused(int, int);
-int    ioalloc(int, int, int, char*);
-int    ioreserve(int, int, int, char*);
 int    iprint(char*, ...);
 int    isaconfig(char*, int, ISAConf*);
 void*  kaddr(uintptr);
@@ -106,13 +96,15 @@ void       meminit(void);
 void   meminit0(void);
 void   memreserve(uintptr, uintptr);
 void   mfence(void);
-#define mmuflushtlb() putcr3(getcr3())
+#define mmuflushtlb(pml4) putcr3(pml4)
 void   mmuinit(void);
 uintptr        *mmuwalk(uintptr*, uintptr, int, int);
 char*  mtrr(uvlong, uvlong, char *);
+char*  mtrrattr(uvlong, uvlong *);
 void   mtrrclock(void);
 int    mtrrprint(char *, long);
 void   mtrrsync(void);
+void   nmienable(void);
 void   noteret(void);
 uchar  nvramread(int);
 void   nvramwrite(int, uchar);
@@ -124,32 +116,10 @@ void      outl(int, ulong);
 void   outsl(int, void*, int);
 uintptr        paddr(void*);
 void   patwc(void*, int);
-ulong  pcibarsize(Pcidev*, int);
-void   pcibussize(Pcidev*, uvlong*, ulong*);
-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   pciclrbme(Pcidev*);
-void   pciclrioe(Pcidev*);
-void   pciclrmwi(Pcidev*);
-int    pcigetpms(Pcidev*);
-void   pcihinv(Pcidev*);
-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   pcisetioe(Pcidev*);
-void   pcisetmwi(Pcidev*);
-int    pcisetpms(Pcidev*, int);
-void   pcienable(Pcidev*);
-void   pcidisable(Pcidev*);
+void   pcicfginit(void);
+int    (*pcicfgrw8)(int, int, int, int);
+int    (*pcicfgrw16)(int, int, int, int);
+int    (*pcicfgrw32)(int, int, int, int);
 void   pcmcisread(PCMslot*);
 int    pcmcistuple(int, int, int, void*, int);
 PCMmap*        pcmmap(int, ulong, int, int);
@@ -169,6 +139,7 @@ void        putcr0(u64int);
 void   putcr2(u64int);
 void   putcr3(u64int);
 void   putcr4(u64int);
+void   putxcr0(u64int);
 void   putdr(u64int*);
 void   putdr01236(u64int*);
 void   putdr6(u64int);
@@ -192,6 +163,7 @@ uvlong      tscticks(uvlong*);
 ulong  umballoc(ulong, ulong, ulong);
 void   umbfree(ulong, ulong);
 uvlong upaalloc(uvlong, ulong, ulong);
+uvlong upaallocwin(uvlong, ulong, ulong, ulong);
 void   upafree(uvlong, ulong);
 void   vectortable(void);
 void   vmxprocrestore(Proc *);