1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
#include "../port/portfns.h"
void addpower(Power*);
void archbacklight(int);
void archconfinit(void);
int archconfval(char**, char**, int);
void archdisableuart(int);
void archdisableusb(void);
void archdisablevideo(void);
void archenableuart(int, int);
void archenableusb(int, int);
void archenablevideo(void);
void archkbdinit(void);
void archresetvideo(void);
void archinit(void);
int archoptionsw(void);
void archreboot(void);
ulong archuartclock(int, int);
void archuartdma(int, int);
void clockcheck(void);
void clockinit(void);
void clockintr(Ureg*);
void clrfptrap(void);
#define coherence() /* nothing needed for uniprocessor */
void compiledcr(void);
void cpuidprint(void);
void* dcflush(void*, ulong);
void dcinval(void*, ulong);
void delay(int);
void dtlbmiss(void);
void dumplongs(char*, ulong*, int);
void dumpregs(Ureg*);
void eieio(void);
void firmware(int);
void fpinit(void);
int fpipower(Ureg*);
void fpoff(void);
void fprestore(FPU*);
void fpsave(FPU*);
ulong fpstatus(void);
char* getconf(char*);
ulong getccr0(void);
ulong getdar(void);
ulong getdcr(int);
ulong getdear(void);
ulong getdepn(void);
ulong getdsisr(void);
ulong getesr(void);
ulong getimmr(void);
ulong getmsr(void);
ulong getpit(void);
ulong getpvr(void);
ulong gettbl(void);
ulong gettbu(void);
ulong gettsr(void);
void gotopc(ulong);
void icflush(void*, ulong);
void idle(void);
void idlehands(void);
int inb(int);
ulong inl(int);
int ins(int);
void insb(int, void*, int);
void insl(int, void*, int);
void inss(int, void*, int);
void intr(Ureg*);
void intrenable(int, void (*)(Ureg*, void*), void*, int, char*);
void intrdisable(int, void (*)(Ureg*, void*), void*, int, char*);
int intrstats(char*, int);
void intrvec(void);
void intrcvec(void);
void ioinit(void);
void ioreset(void);
int isaconfig(char*, int, ISAConf*);
int isvalid_va(void*);
void itlbmiss(void);
void kbdinit(void);
void kbdreset(void);
void* kmapphys(void*, ulong, ulong, ulong, ulong);
void lcdpanel(int);
void links(void);
void mapfree(RMap*, ulong, int);
void mapinit(RMap*, Map*, int);
void mathinit(void);
void mmuinit(void);
void* mmucacheinhib(void*, ulong);
ulong mmumapsize(ulong);
void pcimapinit(void);
int pciscan(int, Pcidev **);
ulong pcibarsize(Pcidev *, int);
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 pcihinv(Pcidev*);
uchar pciipin(Pcidev *, uchar);
Pcidev* pcimatch(Pcidev*, int, int);
Pcidev* pcimatchtbdf(int);
void pcireset(void);
void pcisetbme(Pcidev*);
void procsave(Proc*);
void procsetup(Proc*);
void putdcr(int, ulong);
void putesr(ulong);
void putevpr(ulong);
void putmsr(ulong);
void putpit(ulong);
void puttcr(ulong);
void puttsr(ulong);
void puttwb(ulong);
ulong rmapalloc(RMap*, ulong, int, int);
long rtctime(void);
void screeninit(void);
int screenprint(char*, ...); /* debugging */
void (*screenputs)(char*, int);
int segflush(void*, ulong);
void toggleled(int);
void setpanic(void);
ulong _tas(ulong*);
ulong tlbrehi(int);
ulong tlbrelo(int);
int tlbsxcc(void*);
void tlbwehi(int, ulong);
void tlbwelo(int, ulong);
void trapinit(void);
void trapvec(void);
void trapcvec(void);
void uartinstall(void);
void uartspecial(int, int, Queue**, Queue**, int (*)(Queue*, int));
void uartwait(void); /* debugging */
void wbflush(void);
#define waserror() (up->nerrlab++, setlabel(&up->errlab[up->nerrlab-1]))
ulong getcallerpc(void*);
#define isphys(a) (((ulong)(a)&KSEGM)!=KSEG0 && ((ulong)(a)&KSEGM)!=KSEG1)
#define KADDR(a) ((void*)((ulong)(a)|KZERO))
#define PADDR(a) (isphys(a)?(ulong)(a):((ulong)(a)&~KSEGM))
/* IBM bit field order */
#define IBIT(b) (((ulong)(1<<31))>>(b))
#define SIBIT(n) ((ushort)1<<(15-(n)))
#define CIBIT(n) ((uchar)1<<(7-(n)))
|