#include "../port/portfns.h"
void archinit(void);
int brgalloc(void);
void brgfree(int);
ulong baudgen(int, int);
int cistrcmp(char*, char*);
int cistrncmp(char*, char*, int);
void clockcheck(void);
void clockinit(void);
void clockintr(Ureg*);
void clrfptrap(void);
#define coherence()
void cpminit(void);
int cpuidentify(void);
void cpuidprint(void);
void dcflush(void*, ulong);
void delay(int);
ulong draminit(ulong*);
void dtlbmiss(void);
void dtlberror(void);
void dumpregs(Ureg*);
void delayloopinit(void);
void eieio(void);
//#define eieio()
void evenaddr(ulong);
void faultpower(Ureg*, ulong addr, int read);
void firmware(int);
void fpinit(void);
int fpipower(Ureg*);
void fpoff(void);
ulong fpstatus(void);
char* getconf(char*);
ulong getdar(void);
ulong getdec(void);
ulong getdepn(void);
ulong getdsisr(void);
ulong getimmr(void);
ulong getmsr(void);
ulong getpvr(void);
ulong gettbl(void);
ulong gettbu(void);
void gotopc(ulong);
void icflush(void*, ulong);
void idle(void);
#define idlehands() /* nothing to do in the runproc */
int inb(int);
void insb(int, void*, int);
ushort ins(int);
void inss(int, void*, int);
ulong inl(int);
void insl(int, void*, int);
void intr(Ureg*);
void intrenable(int, void (*)(Ureg*, void*), void*, int);
int intrstats(char*, int);
void intrvec(void);
int iprint(char*, ...);
void itlbmiss(void);
int isaconfig(char*, int, ISAConf*);
void kbdinit(void);
void kbdreset(void);
void kernelmmu(void);
void links(void);
void mapfree(RMap*, ulong, int);
void mapinit(RMap*, Map*, int);
void mathinit(void);
void mmuinit(void);
ulong* mmuwalk(ulong*, ulong, 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);
PCMmap* pcmmap(int, ulong, int, int);
void pcmunmap(int, PCMmap*);
int pcmspecial(char*, ISAConf*);
void pcmspecialclose(int);
#define procrestore(p)
void powerdownled(void);
void powerupled(void);
void procsave(Proc*);
void procsetup(Proc*);
void putdec(ulong);
void putmsr(ulong);
void putcasid(ulong);
ulong rmapalloc(RMap*, ulong, int, int);
void screeninit(void);
void setpanic(void);
int screenprint(char*, ...); /* debugging */
#define screenputs(x, y)
ulong sdraminit(ulong*);
int segflush(void*, ulong);
void spireset(void);
long spioutin(void*, long, void*);
int tas(void*);
uchar* tarlookup(uchar *addr, char *file, int *dlen);
void touser(void*);
void trapinit(void);
void trapvec(void);
void tlbflush(ulong);
void tlbflushall(void);
void uartinstall(void);
void uartwait(void); /* debugging */
int unsac(uchar *dst, uchar *src, int n, int nsrc);
#define userureg(ur) ((ur)->status & KUSER)
void wbflush(void);
#define waserror() (up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1]))
#define KADDR(a) ((void*)((ulong)(a)|KZERO))
#define PADDR(a) ((ulong)(a)&~KZERO)
/* IBM bit field order */
#define IBIT(b) ((ulong)1<<(31-(b)))
#define SIBIT(n) ((ushort)1<<(15-(n)))
/* compatibility with inf2.1 */
#define bpenumenv(n) ((char*)0)
#define IOREGS(x, T) ((T*)((char*)m->iomem+(x)))