19a747e4fSDavid du Colombier #include "../port/portfns.h" 29a747e4fSDavid du Colombier 3c717cbbdSDavid du Colombier ulong cankaddr(ulong); 49a747e4fSDavid du Colombier int cistrcmp(char*, char*); 59a747e4fSDavid du Colombier int cistrncmp(char*, char*, int); 69a747e4fSDavid du Colombier void clockinit(void); 79a747e4fSDavid du Colombier void clockintr(Ureg*); 89a747e4fSDavid du Colombier void clockintrsched(void); 93c2ddefeSDavid du Colombier int cmpswap(long*, long, long); 109a747e4fSDavid du Colombier #define coherence() eieio() 119a747e4fSDavid du Colombier void cpuidprint(void); 123c2ddefeSDavid du Colombier #define cycles(x) do{}while(0) 139a747e4fSDavid du Colombier void dcflush(void*, ulong); 149a747e4fSDavid du Colombier void delay(int); 159a747e4fSDavid du Colombier void dumpregs(Ureg*); 169a747e4fSDavid du Colombier void delayloopinit(void); 179a747e4fSDavid du Colombier void eieio(void); 189a747e4fSDavid du Colombier void faultpower(Ureg*, ulong addr, int read); 199a747e4fSDavid du Colombier void fprestore(FPsave*); 209a747e4fSDavid du Colombier void fpsave(FPsave*); 219a747e4fSDavid du Colombier char* getconf(char*); 229a747e4fSDavid du Colombier ulong getdar(void); 239a747e4fSDavid du Colombier ulong getdec(void); 249a747e4fSDavid du Colombier ulong getdsisr(void); 259a747e4fSDavid du Colombier ulong gethid0(void); 269a747e4fSDavid du Colombier ulong gethid1(void); 279a747e4fSDavid du Colombier ulong getmsr(void); 289a747e4fSDavid du Colombier ulong getpvr(void); 299a747e4fSDavid du Colombier void gotopc(ulong); 309a747e4fSDavid du Colombier int havetimer(void); 319a747e4fSDavid du Colombier void hwintrinit(void); 329a747e4fSDavid du Colombier void i8250console(void); 339a747e4fSDavid du Colombier void i8259init(void); 349a747e4fSDavid du Colombier int i8259intack(void); 359a747e4fSDavid du Colombier int i8259enable(Vctl*); 369a747e4fSDavid du Colombier int i8259vecno(int); 379a747e4fSDavid du Colombier int i8259disable(int); 389a747e4fSDavid du Colombier void icflush(void*, ulong); 399a747e4fSDavid du Colombier #define idlehands() /* nothing to do in the runproc */ 409a747e4fSDavid du Colombier int inb(int); 419a747e4fSDavid du Colombier void insb(int, void*, int); 429a747e4fSDavid du Colombier ushort ins(int); 439a747e4fSDavid du Colombier void inss(int, void*, int); 449a747e4fSDavid du Colombier ulong inl(int); 459a747e4fSDavid du Colombier void insl(int, void*, int); 469a747e4fSDavid du Colombier void intr(Ureg*); 479a747e4fSDavid du Colombier void intrenable(int, void (*)(Ureg*, void*), void*, int, char*); 489a747e4fSDavid du Colombier int ioalloc(int, int, int, char*); 499a747e4fSDavid du Colombier void iofree(int); 509a747e4fSDavid du Colombier void ioinit(void); 519a747e4fSDavid du Colombier int iprint(char*, ...); 529a747e4fSDavid du Colombier int isaconfig(char*, int, ISAConf*); 539a747e4fSDavid du Colombier void kbdinit(void); 54da51d93aSDavid du Colombier #define kexit(a) 559a747e4fSDavid du Colombier #define kmapinval() 569a747e4fSDavid du Colombier void links(void); 579a747e4fSDavid du Colombier void mmuinit(void); 589a747e4fSDavid du Colombier void mmusweep(void*); 599a747e4fSDavid du Colombier void mpicdisable(int); 609a747e4fSDavid du Colombier void mpicenable(int, Vctl*); 619a747e4fSDavid du Colombier int mpiceoi(int); 629a747e4fSDavid du Colombier int mpicintack(void); 639a747e4fSDavid du Colombier int newmmupid(void); 649a747e4fSDavid du Colombier void outb(int, int); 659a747e4fSDavid du Colombier void outsb(int, void*, int); 669a747e4fSDavid du Colombier void outs(int, ushort); 679a747e4fSDavid du Colombier void outss(int, void*, int); 689a747e4fSDavid du Colombier void outl(int, ulong); 699a747e4fSDavid du Colombier void outsl(int, void*, int); 709a747e4fSDavid du Colombier int pciscan(int, Pcidev **); 719a747e4fSDavid du Colombier ulong pcibarsize(Pcidev *, int); 729a747e4fSDavid du Colombier int pcicfgr8(Pcidev*, int); 739a747e4fSDavid du Colombier int pcicfgr16(Pcidev*, int); 749a747e4fSDavid du Colombier int pcicfgr32(Pcidev*, int); 759a747e4fSDavid du Colombier void pcicfgw8(Pcidev*, int, int); 769a747e4fSDavid du Colombier void pcicfgw16(Pcidev*, int, int); 779a747e4fSDavid du Colombier void pcicfgw32(Pcidev*, int, int); 789a747e4fSDavid du Colombier void pciclrbme(Pcidev*); 799a747e4fSDavid du Colombier void pcihinv(Pcidev*); 809a747e4fSDavid du Colombier uchar pciipin(Pcidev *, uchar); 819a747e4fSDavid du Colombier Pcidev* pcimatch(Pcidev*, int, int); 829a747e4fSDavid du Colombier Pcidev* pcimatchtbdf(int); 839a747e4fSDavid du Colombier void pcireset(void); 849a747e4fSDavid du Colombier void pcisetbme(Pcidev*); 859a747e4fSDavid du Colombier #define procrestore(p) 869a747e4fSDavid du Colombier void procsave(Proc*); 879a747e4fSDavid du Colombier void procsetup(Proc*); 889a747e4fSDavid du Colombier void putdec(ulong); 899a747e4fSDavid du Colombier void puthid0(ulong); 909a747e4fSDavid du Colombier void puthid1(ulong); 919a747e4fSDavid du Colombier void putmsr(ulong); 929a747e4fSDavid du Colombier void putsdr1(ulong); 939a747e4fSDavid du Colombier void putsr(int, ulong); 949a747e4fSDavid du Colombier void raveninit(void); 959a747e4fSDavid du Colombier void sync(void); 969a747e4fSDavid du Colombier int tas(void*); 97e288d156SDavid du Colombier void timeradd(Timer *); 98e288d156SDavid du Colombier void timerdel(Timer *); 999a747e4fSDavid du Colombier void touser(void*); 1009a747e4fSDavid du Colombier void trapinit(void); 1019a747e4fSDavid du Colombier void trapvec(void); 1029a747e4fSDavid du Colombier void tlbflush(ulong); 1039a747e4fSDavid du Colombier void tlbflushall(void); 1049a747e4fSDavid du Colombier #define userureg(ur) (((ur)->status & MSR_PR) != 0) 105*fac6300fSDavid du Colombier void validalign(uintptr, unsigned); 1069a747e4fSDavid du Colombier void watchreset(void); 1079a747e4fSDavid du Colombier 1089a747e4fSDavid du Colombier #define waserror() (up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1])) 1099a747e4fSDavid du Colombier #define KADDR(a) ((void*)((ulong)(a)|KZERO)) 1109a747e4fSDavid du Colombier #define PADDR(a) ((ulong)(a)&~KZERO) 111