#include "../port/portfns.h" #define P_oper(sel, inst) (P_qlock(sel), inst, P_qunlock(sel)) #define P_qlock(sel) (sel >= 0 ? (qlock(&portpage), PORTSELECT = portpage.select = sel) : -1) #define P_qunlock(sel) (sel >= 0 ? (qunlock(&portpage),0) : -1) #define P_read(sel, addr, val, type) P_oper(sel, val = *(type *)(PORT+addr)) #define P_write(sel, addr, val, type) P_oper(sel, *(type *)(PORT+addr) = val) void addportintr(int (*)(void)); void clearmmucache(void); void duartclock(void); void duartinit(void); void duartstarttimer(void); void duartstoptimer(void); #define evenaddr(x) /* 68020 doesn't care */ void fault68020(Ureg*, FFrame*); #define flushapage(x) void flushcpucache(void); #define flushpage(x) if(x) int fpcr(int); void fpregrestore(char*); void fpregsave(char*); void fprestore(FPsave*); void fpsave(FPsave*); #define icflush(a, b) void incontoggle(void); KMap* kmap(Page*); void kmapinit(void); void kunmap(KMap*); void mmuinit(void); void mousebuttons(int); void mouseclock(void); int portprobe(char*, int, int, int, long); void procrestore(Proc*); void procsave(Proc*); void procsetup(Proc*); void putkmmu(ulong, ulong); void restartprint(Alarm*); void restfpregs(FPsave*); void screeninit(void); void screenputc(int); void screenputs(char*, int); Scsibuf *scsialloc(ulong); int scsibread(int, Scsibuf*, long, long, long); int scsibwrite(int, Scsibuf*, long, long, long); Scsibuf *scsibuf(void); int scsicap(int, void*); void scsifree(Scsibuf*); int scsiready(int); int scsisense(int, void *); int scsicap(int, uchar *); void scsictrlintr(void); void scsidmaintr(void); uchar* scsirecv(uchar *); void scsirun(void); uchar* scsixmit(uchar *); int spl1(void); void spldone(void); int splduart(void); int tas(char*); void touser(void); #define waserror() (u->nerrlab++, setlabel(&u->errlab[u->nerrlab-1])) #define kmapperm(x) kmap(x) #define getcallerpc(x) (*(ulong*)(x))