-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathentry.S
304 lines (281 loc) · 16.5 KB
/
entry.S
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
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
# The xv6 kernel starts executing in this file. This file is linked with
# the kernel C code, so it can refer to kernel symbols such as main().
# The boot block (bootasm.S and bootmain.c) jumps to entry below.
#include "asm.h"
#include "memlayout.h"
#include "mmu.h"
#include "param.h"
# By convention, the _start symbol specifies the ELF entry point.
# Since we haven't set up virtual memory yet, our entry point is
# the physical address of 'entry'.
.globl _start
_start = V2P_WO(entry)
# Entering xv6 on boot processor, with paging off.
.globl entry
entry:
# Set up TLB miss handler. This is a physical address, so need
# to mask off virtual address to convert.
# XXX can't use V2P here, because it doesn't work with lea
lea s0, tlb_miss_handler
li s1, 0xffffff
and s0, s0, s1 // Mask off high bits
setcr s0, CR_TLB_MISS_HANDLER
# Set up page directory
lea s0, entrypgdir
# Convert to physical address
li s1, 0xffffff
and s0, s0, s1 // Mask off high bits
setcr s0, CR_PAGE_DIR_BASE
# Turn on paging.
move s0, FLAG_MMU_EN | FLAG_SUPERVISOR_EN
setcr s0, CR_FLAGS
# Branch to flush pipeline and ensure paging is on
b 1f
1:
# Load global pointer
movehi gp, hi(_GLOBAL_OFFSET_TABLE_)
or gp, gp, lo(_GLOBAL_OFFSET_TABLE_)
# All processors start here, determine if I'm the main processor
getcr s0, 0
bnz s0, start_thread_n
# Set up the stack pointer.
lea sp, stack
add_i sp, sp, KSTACKSIZE
# Jump to main(), and switch to executing at
# high addresses. The indirect call is needed because
# the assembler produces a PC-relative instruction
# for a direct jump.
lea s0, main
b s0
start_thread_n:
# Set up the stack pointer. This is set up by startothers, which
# waits until this has started before starting the next.
lea s0, mp_init_stack
load_32 sp, (s0)
lea s0, mpmain
b s0
.data
.globl mp_init_stack
mp_init_stack: .long 0
.comm stack, KSTACKSIZE, 64
# This page table maps the first 4 megabytes of physical memory.
.align 0x1000
entrypgtab:
.long 0x0f, 0x100f, 0x200f, 0x300f, 0x400f, 0x500f, 0x600f
.long 0x700f, 0x800f, 0x900f, 0xa00f, 0xb00f, 0xc00f, 0xd00f
.long 0xe00f, 0xf00f, 0x1000f, 0x1100f, 0x1200f, 0x1300f, 0x1400f
.long 0x1500f, 0x1600f, 0x1700f, 0x1800f, 0x1900f, 0x1a00f, 0x1b00f
.long 0x1c00f, 0x1d00f, 0x1e00f, 0x1f00f, 0x2000f, 0x2100f, 0x2200f
.long 0x2300f, 0x2400f, 0x2500f, 0x2600f, 0x2700f, 0x2800f, 0x2900f
.long 0x2a00f, 0x2b00f, 0x2c00f, 0x2d00f, 0x2e00f, 0x2f00f, 0x3000f
.long 0x3100f, 0x3200f, 0x3300f, 0x3400f, 0x3500f, 0x3600f, 0x3700f
.long 0x3800f, 0x3900f, 0x3a00f, 0x3b00f, 0x3c00f, 0x3d00f, 0x3e00f
.long 0x3f00f, 0x4000f, 0x4100f, 0x4200f, 0x4300f, 0x4400f, 0x4500f
.long 0x4600f, 0x4700f, 0x4800f, 0x4900f, 0x4a00f, 0x4b00f, 0x4c00f
.long 0x4d00f, 0x4e00f, 0x4f00f, 0x5000f, 0x5100f, 0x5200f, 0x5300f
.long 0x5400f, 0x5500f, 0x5600f, 0x5700f, 0x5800f, 0x5900f, 0x5a00f
.long 0x5b00f, 0x5c00f, 0x5d00f, 0x5e00f, 0x5f00f, 0x6000f, 0x6100f
.long 0x6200f, 0x6300f, 0x6400f, 0x6500f, 0x6600f, 0x6700f, 0x6800f
.long 0x6900f, 0x6a00f, 0x6b00f, 0x6c00f, 0x6d00f, 0x6e00f, 0x6f00f
.long 0x7000f, 0x7100f, 0x7200f, 0x7300f, 0x7400f, 0x7500f, 0x7600f
.long 0x7700f, 0x7800f, 0x7900f, 0x7a00f, 0x7b00f, 0x7c00f, 0x7d00f
.long 0x7e00f, 0x7f00f, 0x8000f, 0x8100f, 0x8200f, 0x8300f, 0x8400f
.long 0x8500f, 0x8600f, 0x8700f, 0x8800f, 0x8900f, 0x8a00f, 0x8b00f
.long 0x8c00f, 0x8d00f, 0x8e00f, 0x8f00f, 0x9000f, 0x9100f, 0x9200f
.long 0x9300f, 0x9400f, 0x9500f, 0x9600f, 0x9700f, 0x9800f, 0x9900f
.long 0x9a00f, 0x9b00f, 0x9c00f, 0x9d00f, 0x9e00f, 0x9f00f, 0xa000f
.long 0xa100f, 0xa200f, 0xa300f, 0xa400f, 0xa500f, 0xa600f, 0xa700f
.long 0xa800f, 0xa900f, 0xaa00f, 0xab00f, 0xac00f, 0xad00f, 0xae00f
.long 0xaf00f, 0xb000f, 0xb100f, 0xb200f, 0xb300f, 0xb400f, 0xb500f
.long 0xb600f, 0xb700f, 0xb800f, 0xb900f, 0xba00f, 0xbb00f, 0xbc00f
.long 0xbd00f, 0xbe00f, 0xbf00f, 0xc000f, 0xc100f, 0xc200f, 0xc300f
.long 0xc400f, 0xc500f, 0xc600f, 0xc700f, 0xc800f, 0xc900f, 0xca00f
.long 0xcb00f, 0xcc00f, 0xcd00f, 0xce00f, 0xcf00f, 0xd000f, 0xd100f
.long 0xd200f, 0xd300f, 0xd400f, 0xd500f, 0xd600f, 0xd700f, 0xd800f
.long 0xd900f, 0xda00f, 0xdb00f, 0xdc00f, 0xdd00f, 0xde00f, 0xdf00f
.long 0xe000f, 0xe100f, 0xe200f, 0xe300f, 0xe400f, 0xe500f, 0xe600f
.long 0xe700f, 0xe800f, 0xe900f, 0xea00f, 0xeb00f, 0xec00f, 0xed00f
.long 0xee00f, 0xef00f, 0xf000f, 0xf100f, 0xf200f, 0xf300f, 0xf400f
.long 0xf500f, 0xf600f, 0xf700f, 0xf800f, 0xf900f, 0xfa00f, 0xfb00f
.long 0xfc00f, 0xfd00f, 0xfe00f, 0xff00f, 0x10000f, 0x10100f, 0x10200f
.long 0x10300f, 0x10400f, 0x10500f, 0x10600f, 0x10700f, 0x10800f, 0x10900f
.long 0x10a00f, 0x10b00f, 0x10c00f, 0x10d00f, 0x10e00f, 0x10f00f, 0x11000f
.long 0x11100f, 0x11200f, 0x11300f, 0x11400f, 0x11500f, 0x11600f, 0x11700f
.long 0x11800f, 0x11900f, 0x11a00f, 0x11b00f, 0x11c00f, 0x11d00f, 0x11e00f
.long 0x11f00f, 0x12000f, 0x12100f, 0x12200f, 0x12300f, 0x12400f, 0x12500f
.long 0x12600f, 0x12700f, 0x12800f, 0x12900f, 0x12a00f, 0x12b00f, 0x12c00f
.long 0x12d00f, 0x12e00f, 0x12f00f, 0x13000f, 0x13100f, 0x13200f, 0x13300f
.long 0x13400f, 0x13500f, 0x13600f, 0x13700f, 0x13800f, 0x13900f, 0x13a00f
.long 0x13b00f, 0x13c00f, 0x13d00f, 0x13e00f, 0x13f00f, 0x14000f, 0x14100f
.long 0x14200f, 0x14300f, 0x14400f, 0x14500f, 0x14600f, 0x14700f, 0x14800f
.long 0x14900f, 0x14a00f, 0x14b00f, 0x14c00f, 0x14d00f, 0x14e00f, 0x14f00f
.long 0x15000f, 0x15100f, 0x15200f, 0x15300f, 0x15400f, 0x15500f, 0x15600f
.long 0x15700f, 0x15800f, 0x15900f, 0x15a00f, 0x15b00f, 0x15c00f, 0x15d00f
.long 0x15e00f, 0x15f00f, 0x16000f, 0x16100f, 0x16200f, 0x16300f, 0x16400f
.long 0x16500f, 0x16600f, 0x16700f, 0x16800f, 0x16900f, 0x16a00f, 0x16b00f
.long 0x16c00f, 0x16d00f, 0x16e00f, 0x16f00f, 0x17000f, 0x17100f, 0x17200f
.long 0x17300f, 0x17400f, 0x17500f, 0x17600f, 0x17700f, 0x17800f, 0x17900f
.long 0x17a00f, 0x17b00f, 0x17c00f, 0x17d00f, 0x17e00f, 0x17f00f, 0x18000f
.long 0x18100f, 0x18200f, 0x18300f, 0x18400f, 0x18500f, 0x18600f, 0x18700f
.long 0x18800f, 0x18900f, 0x18a00f, 0x18b00f, 0x18c00f, 0x18d00f, 0x18e00f
.long 0x18f00f, 0x19000f, 0x19100f, 0x19200f, 0x19300f, 0x19400f, 0x19500f
.long 0x19600f, 0x19700f, 0x19800f, 0x19900f, 0x19a00f, 0x19b00f, 0x19c00f
.long 0x19d00f, 0x19e00f, 0x19f00f, 0x1a000f, 0x1a100f, 0x1a200f, 0x1a300f
.long 0x1a400f, 0x1a500f, 0x1a600f, 0x1a700f, 0x1a800f, 0x1a900f, 0x1aa00f
.long 0x1ab00f, 0x1ac00f, 0x1ad00f, 0x1ae00f, 0x1af00f, 0x1b000f, 0x1b100f
.long 0x1b200f, 0x1b300f, 0x1b400f, 0x1b500f, 0x1b600f, 0x1b700f, 0x1b800f
.long 0x1b900f, 0x1ba00f, 0x1bb00f, 0x1bc00f, 0x1bd00f, 0x1be00f, 0x1bf00f
.long 0x1c000f, 0x1c100f, 0x1c200f, 0x1c300f, 0x1c400f, 0x1c500f, 0x1c600f
.long 0x1c700f, 0x1c800f, 0x1c900f, 0x1ca00f, 0x1cb00f, 0x1cc00f, 0x1cd00f
.long 0x1ce00f, 0x1cf00f, 0x1d000f, 0x1d100f, 0x1d200f, 0x1d300f, 0x1d400f
.long 0x1d500f, 0x1d600f, 0x1d700f, 0x1d800f, 0x1d900f, 0x1da00f, 0x1db00f
.long 0x1dc00f, 0x1dd00f, 0x1de00f, 0x1df00f, 0x1e000f, 0x1e100f, 0x1e200f
.long 0x1e300f, 0x1e400f, 0x1e500f, 0x1e600f, 0x1e700f, 0x1e800f, 0x1e900f
.long 0x1ea00f, 0x1eb00f, 0x1ec00f, 0x1ed00f, 0x1ee00f, 0x1ef00f, 0x1f000f
.long 0x1f100f, 0x1f200f, 0x1f300f, 0x1f400f, 0x1f500f, 0x1f600f, 0x1f700f
.long 0x1f800f, 0x1f900f, 0x1fa00f, 0x1fb00f, 0x1fc00f, 0x1fd00f, 0x1fe00f
.long 0x1ff00f, 0x20000f, 0x20100f, 0x20200f, 0x20300f, 0x20400f, 0x20500f
.long 0x20600f, 0x20700f, 0x20800f, 0x20900f, 0x20a00f, 0x20b00f, 0x20c00f
.long 0x20d00f, 0x20e00f, 0x20f00f, 0x21000f, 0x21100f, 0x21200f, 0x21300f
.long 0x21400f, 0x21500f, 0x21600f, 0x21700f, 0x21800f, 0x21900f, 0x21a00f
.long 0x21b00f, 0x21c00f, 0x21d00f, 0x21e00f, 0x21f00f, 0x22000f, 0x22100f
.long 0x22200f, 0x22300f, 0x22400f, 0x22500f, 0x22600f, 0x22700f, 0x22800f
.long 0x22900f, 0x22a00f, 0x22b00f, 0x22c00f, 0x22d00f, 0x22e00f, 0x22f00f
.long 0x23000f, 0x23100f, 0x23200f, 0x23300f, 0x23400f, 0x23500f, 0x23600f
.long 0x23700f, 0x23800f, 0x23900f, 0x23a00f, 0x23b00f, 0x23c00f, 0x23d00f
.long 0x23e00f, 0x23f00f, 0x24000f, 0x24100f, 0x24200f, 0x24300f, 0x24400f
.long 0x24500f, 0x24600f, 0x24700f, 0x24800f, 0x24900f, 0x24a00f, 0x24b00f
.long 0x24c00f, 0x24d00f, 0x24e00f, 0x24f00f, 0x25000f, 0x25100f, 0x25200f
.long 0x25300f, 0x25400f, 0x25500f, 0x25600f, 0x25700f, 0x25800f, 0x25900f
.long 0x25a00f, 0x25b00f, 0x25c00f, 0x25d00f, 0x25e00f, 0x25f00f, 0x26000f
.long 0x26100f, 0x26200f, 0x26300f, 0x26400f, 0x26500f, 0x26600f, 0x26700f
.long 0x26800f, 0x26900f, 0x26a00f, 0x26b00f, 0x26c00f, 0x26d00f, 0x26e00f
.long 0x26f00f, 0x27000f, 0x27100f, 0x27200f, 0x27300f, 0x27400f, 0x27500f
.long 0x27600f, 0x27700f, 0x27800f, 0x27900f, 0x27a00f, 0x27b00f, 0x27c00f
.long 0x27d00f, 0x27e00f, 0x27f00f, 0x28000f, 0x28100f, 0x28200f, 0x28300f
.long 0x28400f, 0x28500f, 0x28600f, 0x28700f, 0x28800f, 0x28900f, 0x28a00f
.long 0x28b00f, 0x28c00f, 0x28d00f, 0x28e00f, 0x28f00f, 0x29000f, 0x29100f
.long 0x29200f, 0x29300f, 0x29400f, 0x29500f, 0x29600f, 0x29700f, 0x29800f
.long 0x29900f, 0x29a00f, 0x29b00f, 0x29c00f, 0x29d00f, 0x29e00f, 0x29f00f
.long 0x2a000f, 0x2a100f, 0x2a200f, 0x2a300f, 0x2a400f, 0x2a500f, 0x2a600f
.long 0x2a700f, 0x2a800f, 0x2a900f, 0x2aa00f, 0x2ab00f, 0x2ac00f, 0x2ad00f
.long 0x2ae00f, 0x2af00f, 0x2b000f, 0x2b100f, 0x2b200f, 0x2b300f, 0x2b400f
.long 0x2b500f, 0x2b600f, 0x2b700f, 0x2b800f, 0x2b900f, 0x2ba00f, 0x2bb00f
.long 0x2bc00f, 0x2bd00f, 0x2be00f, 0x2bf00f, 0x2c000f, 0x2c100f, 0x2c200f
.long 0x2c300f, 0x2c400f, 0x2c500f, 0x2c600f, 0x2c700f, 0x2c800f, 0x2c900f
.long 0x2ca00f, 0x2cb00f, 0x2cc00f, 0x2cd00f, 0x2ce00f, 0x2cf00f, 0x2d000f
.long 0x2d100f, 0x2d200f, 0x2d300f, 0x2d400f, 0x2d500f, 0x2d600f, 0x2d700f
.long 0x2d800f, 0x2d900f, 0x2da00f, 0x2db00f, 0x2dc00f, 0x2dd00f, 0x2de00f
.long 0x2df00f, 0x2e000f, 0x2e100f, 0x2e200f, 0x2e300f, 0x2e400f, 0x2e500f
.long 0x2e600f, 0x2e700f, 0x2e800f, 0x2e900f, 0x2ea00f, 0x2eb00f, 0x2ec00f
.long 0x2ed00f, 0x2ee00f, 0x2ef00f, 0x2f000f, 0x2f100f, 0x2f200f, 0x2f300f
.long 0x2f400f, 0x2f500f, 0x2f600f, 0x2f700f, 0x2f800f, 0x2f900f, 0x2fa00f
.long 0x2fb00f, 0x2fc00f, 0x2fd00f, 0x2fe00f, 0x2ff00f, 0x30000f, 0x30100f
.long 0x30200f, 0x30300f, 0x30400f, 0x30500f, 0x30600f, 0x30700f, 0x30800f
.long 0x30900f, 0x30a00f, 0x30b00f, 0x30c00f, 0x30d00f, 0x30e00f, 0x30f00f
.long 0x31000f, 0x31100f, 0x31200f, 0x31300f, 0x31400f, 0x31500f, 0x31600f
.long 0x31700f, 0x31800f, 0x31900f, 0x31a00f, 0x31b00f, 0x31c00f, 0x31d00f
.long 0x31e00f, 0x31f00f, 0x32000f, 0x32100f, 0x32200f, 0x32300f, 0x32400f
.long 0x32500f, 0x32600f, 0x32700f, 0x32800f, 0x32900f, 0x32a00f, 0x32b00f
.long 0x32c00f, 0x32d00f, 0x32e00f, 0x32f00f, 0x33000f, 0x33100f, 0x33200f
.long 0x33300f, 0x33400f, 0x33500f, 0x33600f, 0x33700f, 0x33800f, 0x33900f
.long 0x33a00f, 0x33b00f, 0x33c00f, 0x33d00f, 0x33e00f, 0x33f00f, 0x34000f
.long 0x34100f, 0x34200f, 0x34300f, 0x34400f, 0x34500f, 0x34600f, 0x34700f
.long 0x34800f, 0x34900f, 0x34a00f, 0x34b00f, 0x34c00f, 0x34d00f, 0x34e00f
.long 0x34f00f, 0x35000f, 0x35100f, 0x35200f, 0x35300f, 0x35400f, 0x35500f
.long 0x35600f, 0x35700f, 0x35800f, 0x35900f, 0x35a00f, 0x35b00f, 0x35c00f
.long 0x35d00f, 0x35e00f, 0x35f00f, 0x36000f, 0x36100f, 0x36200f, 0x36300f
.long 0x36400f, 0x36500f, 0x36600f, 0x36700f, 0x36800f, 0x36900f, 0x36a00f
.long 0x36b00f, 0x36c00f, 0x36d00f, 0x36e00f, 0x36f00f, 0x37000f, 0x37100f
.long 0x37200f, 0x37300f, 0x37400f, 0x37500f, 0x37600f, 0x37700f, 0x37800f
.long 0x37900f, 0x37a00f, 0x37b00f, 0x37c00f, 0x37d00f, 0x37e00f, 0x37f00f
.long 0x38000f, 0x38100f, 0x38200f, 0x38300f, 0x38400f, 0x38500f, 0x38600f
.long 0x38700f, 0x38800f, 0x38900f, 0x38a00f, 0x38b00f, 0x38c00f, 0x38d00f
.long 0x38e00f, 0x38f00f, 0x39000f, 0x39100f, 0x39200f, 0x39300f, 0x39400f
.long 0x39500f, 0x39600f, 0x39700f, 0x39800f, 0x39900f, 0x39a00f, 0x39b00f
.long 0x39c00f, 0x39d00f, 0x39e00f, 0x39f00f, 0x3a000f, 0x3a100f, 0x3a200f
.long 0x3a300f, 0x3a400f, 0x3a500f, 0x3a600f, 0x3a700f, 0x3a800f, 0x3a900f
.long 0x3aa00f, 0x3ab00f, 0x3ac00f, 0x3ad00f, 0x3ae00f, 0x3af00f, 0x3b000f
.long 0x3b100f, 0x3b200f, 0x3b300f, 0x3b400f, 0x3b500f, 0x3b600f, 0x3b700f
.long 0x3b800f, 0x3b900f, 0x3ba00f, 0x3bb00f, 0x3bc00f, 0x3bd00f, 0x3be00f
.long 0x3bf00f, 0x3c000f, 0x3c100f, 0x3c200f, 0x3c300f, 0x3c400f, 0x3c500f
.long 0x3c600f, 0x3c700f, 0x3c800f, 0x3c900f, 0x3ca00f, 0x3cb00f, 0x3cc00f
.long 0x3cd00f, 0x3ce00f, 0x3cf00f, 0x3d000f, 0x3d100f, 0x3d200f, 0x3d300f
.long 0x3d400f, 0x3d500f, 0x3d600f, 0x3d700f, 0x3d800f, 0x3d900f, 0x3da00f
.long 0x3db00f, 0x3dc00f, 0x3dd00f, 0x3de00f, 0x3df00f, 0x3e000f, 0x3e100f
.long 0x3e200f, 0x3e300f, 0x3e400f, 0x3e500f, 0x3e600f, 0x3e700f, 0x3e800f
.long 0x3e900f, 0x3ea00f, 0x3eb00f, 0x3ec00f, 0x3ed00f, 0x3ee00f, 0x3ef00f
.long 0x3f000f, 0x3f100f, 0x3f200f, 0x3f300f, 0x3f400f, 0x3f500f, 0x3f600f
.long 0x3f700f, 0x3f800f, 0x3f900f, 0x3fa00f, 0x3fb00f, 0x3fc00f, 0x3fd00f
.long 0x3fe00f, 0x3ff00f
# The initial page directory has the page table inserted at two addresses:
# 0x0, where everything is before the MMU is enabled and 0x80000000, where
# the kernel will be after the MMU is enabled.
.align 0x1000
entrypgdir:
.long entrypgtab - 0x80000000 + PTE_P
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long entrypgtab - 0x80000000 + PTE_P
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
.long 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0