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 #include <linux/init.h>
29 #include <asm/processor.h>
30 #include <asm/page.h>
31 #include <asm/mmu.h>
32 #include <asm/pgtable.h>
33 #include <asm/cputable.h>
34 #include <asm/thread_info.h>
35 #include <asm/ppc_asm.h>
36 #include <asm/asm-offsets.h>
37 #include <asm/ptrace.h>
38 #include <asm/export.h>
39 #include <asm/asm-405.h>
40
41 #include "head_32.h"
42
43
44
45
46
47
48
49
50
51
52
53
54
55 __HEAD
56 _ENTRY(_stext);
57 _ENTRY(_start);
58
59 mr r31,r3
60
61
62
63
64 bl initial_mmu
65
66
67
68
69 turn_on_mmu:
70 lis r0,MSR_KERNEL@h
71 ori r0,r0,MSR_KERNEL@l
72 mtspr SPRN_SRR1,r0
73 lis r0,start_here@h
74 ori r0,r0,start_here@l
75 mtspr SPRN_SRR0,r0
76 SYNC
77 rfi
78 b .
79
80
81
82
83
84 . = 0xc0
85 crit_save:
86 _ENTRY(crit_r10)
87 .space 4
88 _ENTRY(crit_r11)
89 .space 4
90 _ENTRY(crit_srr0)
91 .space 4
92 _ENTRY(crit_srr1)
93 .space 4
94 _ENTRY(saved_ksp_limit)
95 .space 4
96
97
98
99
100
101
102
103
104
105 #define CRITICAL_EXCEPTION_PROLOG \
106 stw r10,crit_r10@l(0); \
107 stw r11,crit_r11@l(0); \
108 mfcr r10; \
109 mfspr r11,SPRN_SRR3; \
110 andi. r11,r11,MSR_PR; \
111 lis r11,critirq_ctx@ha; \
112 tophys(r11,r11); \
113 lwz r11,critirq_ctx@l(r11); \
114 beq 1f; \
115 \
116 mfspr r11,SPRN_SPRG_THREAD; \
117 lwz r11,TASK_STACK-THREAD(r11); \
118 1: addi r11,r11,THREAD_SIZE-INT_FRAME_SIZE; \
119 tophys(r11,r11); \
120 stw r10,_CCR(r11); \
121 stw r12,GPR12(r11); \
122 stw r9,GPR9(r11); \
123 mflr r10; \
124 stw r10,_LINK(r11); \
125 mfspr r12,SPRN_DEAR; \
126 stw r12,_DEAR(r11); \
127 mfspr r9,SPRN_ESR; \
128 stw r9,_ESR(r11); \
129 mfspr r12,SPRN_SRR2; \
130 stw r1,GPR1(r11); \
131 mfspr r9,SPRN_SRR3; \
132 stw r1,0(r11); \
133 tovirt(r1,r11); \
134 rlwinm r9,r9,0,14,12; \
135 stw r0,GPR0(r11); \
136 lis r10, STACK_FRAME_REGS_MARKER@ha; \
137 addi r10, r10, STACK_FRAME_REGS_MARKER@l; \
138 stw r10, 8(r11); \
139 SAVE_4GPRS(3, r11); \
140 SAVE_2GPRS(7, r11)
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158 #define CRITICAL_EXCEPTION(n, label, hdlr) \
159 START_EXCEPTION(n, label); \
160 CRITICAL_EXCEPTION_PROLOG; \
161 addi r3,r1,STACK_FRAME_OVERHEAD; \
162 EXC_XFER_TEMPLATE(hdlr, n+2, (MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE)), \
163 crit_transfer_to_handler, ret_from_crit_exc)
164
165
166
167
168 CRITICAL_EXCEPTION(0x0100, CriticalInterrupt, unknown_exception)
169
170
171
172
173 CRITICAL_EXCEPTION(0x0200, MachineCheck, machine_check_exception)
174
175
176
177
178
179
180
181
182 START_EXCEPTION(0x0300, DataStorage)
183 mtspr SPRN_SPRG_SCRATCH0, r10
184 mtspr SPRN_SPRG_SCRATCH1, r11
185 #ifdef CONFIG_403GCX
186 stw r12, 0(r0)
187 stw r9, 4(r0)
188 mfcr r11
189 mfspr r12, SPRN_PID
190 stw r11, 8(r0)
191 stw r12, 12(r0)
192 #else
193 mtspr SPRN_SPRG_SCRATCH3, r12
194 mtspr SPRN_SPRG_SCRATCH4, r9
195 mfcr r11
196 mfspr r12, SPRN_PID
197 mtspr SPRN_SPRG_SCRATCH6, r11
198 mtspr SPRN_SPRG_SCRATCH5, r12
199 #endif
200
201
202
203
204
205 mfspr r10, SPRN_ESR
206 andis. r10, r10, ESR_DIZ@h
207 bne 2f
208
209 mfspr r10, SPRN_DEAR
210
211
212
213
214 lis r11, PAGE_OFFSET@h
215 cmplw r10, r11
216 blt+ 3f
217 lis r11, swapper_pg_dir@h
218 ori r11, r11, swapper_pg_dir@l
219 li r9, 0
220 mtspr SPRN_PID, r9
221 b 4f
222
223
224
225 3:
226 mfspr r11,SPRN_SPRG_THREAD
227 lwz r11,PGDIR(r11)
228 4:
229 tophys(r11, r11)
230 rlwimi r11, r10, 12, 20, 29
231 lwz r11, 0(r11)
232 rlwinm. r12, r11, 0, 0, 19
233 beq 2f
234
235 rlwimi r12, r10, 22, 20, 29
236 lwz r11, 0(r12)
237
238 andi. r9, r11, _PAGE_RW
239 beq 2f
240
241
242
243 ori r11, r11, _PAGE_DIRTY|_PAGE_ACCESSED|_PAGE_HWWRITE
244 stw r11, 0(r12)
245
246
247
248
249
250
251
252
253
254 li r12, 0x0ce2
255 andc r11, r11, r12
256
257
258
259 tlbsx r9, 0, r10
260
261 tlbwe r11, r9, TLB_DATA
262
263
264
265 #ifdef CONFIG_403GCX
266 lwz r12, 12(r0)
267 lwz r11, 8(r0)
268 mtspr SPRN_PID, r12
269 mtcr r11
270 lwz r9, 4(r0)
271 lwz r12, 0(r0)
272 #else
273 mfspr r12, SPRN_SPRG_SCRATCH5
274 mfspr r11, SPRN_SPRG_SCRATCH6
275 mtspr SPRN_PID, r12
276 mtcr r11
277 mfspr r9, SPRN_SPRG_SCRATCH4
278 mfspr r12, SPRN_SPRG_SCRATCH3
279 #endif
280 mfspr r11, SPRN_SPRG_SCRATCH1
281 mfspr r10, SPRN_SPRG_SCRATCH0
282 PPC405_ERR77_SYNC
283 rfi
284 b .
285
286 2:
287
288
289
290 #ifdef CONFIG_403GCX
291 lwz r12, 12(r0)
292 lwz r11, 8(r0)
293 mtspr SPRN_PID, r12
294 mtcr r11
295 lwz r9, 4(r0)
296 lwz r12, 0(r0)
297 #else
298 mfspr r12, SPRN_SPRG_SCRATCH5
299 mfspr r11, SPRN_SPRG_SCRATCH6
300 mtspr SPRN_PID, r12
301 mtcr r11
302 mfspr r9, SPRN_SPRG_SCRATCH4
303 mfspr r12, SPRN_SPRG_SCRATCH3
304 #endif
305 mfspr r11, SPRN_SPRG_SCRATCH1
306 mfspr r10, SPRN_SPRG_SCRATCH0
307 b DataAccess
308
309
310
311
312
313 START_EXCEPTION(0x0400, InstructionAccess)
314 EXCEPTION_PROLOG
315 mr r4,r12
316 li r5,0
317 EXC_XFER_LITE(0x400, handle_page_fault)
318
319
320 EXCEPTION(0x0500, HardwareInterrupt, do_IRQ, EXC_XFER_LITE)
321
322
323 START_EXCEPTION(0x0600, Alignment)
324 EXCEPTION_PROLOG
325 mfspr r4,SPRN_DEAR
326 stw r4,_DEAR(r11)
327 addi r3,r1,STACK_FRAME_OVERHEAD
328 EXC_XFER_STD(0x600, alignment_exception)
329
330
331 START_EXCEPTION(0x0700, ProgramCheck)
332 EXCEPTION_PROLOG
333 mfspr r4,SPRN_ESR
334 stw r4,_ESR(r11)
335 addi r3,r1,STACK_FRAME_OVERHEAD
336 EXC_XFER_STD(0x700, program_check_exception)
337
338 EXCEPTION(0x0800, Trap_08, unknown_exception, EXC_XFER_STD)
339 EXCEPTION(0x0900, Trap_09, unknown_exception, EXC_XFER_STD)
340 EXCEPTION(0x0A00, Trap_0A, unknown_exception, EXC_XFER_STD)
341 EXCEPTION(0x0B00, Trap_0B, unknown_exception, EXC_XFER_STD)
342
343
344 START_EXCEPTION(0x0C00, SystemCall)
345 SYSCALL_ENTRY 0xc00
346
347 EXCEPTION(0x0D00, Trap_0D, unknown_exception, EXC_XFER_STD)
348 EXCEPTION(0x0E00, Trap_0E, unknown_exception, EXC_XFER_STD)
349 EXCEPTION(0x0F00, Trap_0F, unknown_exception, EXC_XFER_STD)
350
351
352 . = 0x1000
353 b Decrementer
354
355
356
357 . = 0x1010
358 b FITException
359
360
361
362 . = 0x1020
363 b WDTException
364
365
366
367
368
369
370 START_EXCEPTION(0x1100, DTLBMiss)
371 mtspr SPRN_SPRG_SCRATCH0, r10
372 mtspr SPRN_SPRG_SCRATCH1, r11
373 #ifdef CONFIG_403GCX
374 stw r12, 0(r0)
375 stw r9, 4(r0)
376 mfcr r11
377 mfspr r12, SPRN_PID
378 stw r11, 8(r0)
379 stw r12, 12(r0)
380 #else
381 mtspr SPRN_SPRG_SCRATCH3, r12
382 mtspr SPRN_SPRG_SCRATCH4, r9
383 mfcr r11
384 mfspr r12, SPRN_PID
385 mtspr SPRN_SPRG_SCRATCH6, r11
386 mtspr SPRN_SPRG_SCRATCH5, r12
387 #endif
388 mfspr r10, SPRN_DEAR
389
390
391
392
393 lis r11, PAGE_OFFSET@h
394 cmplw r10, r11
395 blt+ 3f
396 lis r11, swapper_pg_dir@h
397 ori r11, r11, swapper_pg_dir@l
398 li r9, 0
399 mtspr SPRN_PID, r9
400 b 4f
401
402
403
404 3:
405 mfspr r11,SPRN_SPRG_THREAD
406 lwz r11,PGDIR(r11)
407 4:
408 tophys(r11, r11)
409 rlwimi r11, r10, 12, 20, 29
410 lwz r12, 0(r11)
411 andi. r9, r12, _PMD_PRESENT
412 beq 2f
413
414 rlwimi r12, r10, 22, 20, 29
415 lwz r11, 0(r12)
416 andi. r9, r11, _PAGE_PRESENT
417 beq 5f
418
419 ori r11, r11, _PAGE_ACCESSED
420 stw r11, 0(r12)
421
422
423
424
425 li r12, 0x00c0
426 rlwimi r10, r12, 0, 20, 31
427
428 b finish_tlb_load
429
430 2:
431 rlwinm. r9, r12, 2, 22, 24
432 beq 5f
433
434
435
436
437 ori r9, r9, 0x40
438 rlwimi r10, r9, 0, 20, 31
439 mr r11, r12
440
441 b finish_tlb_load
442
443 5:
444
445
446
447 #ifdef CONFIG_403GCX
448 lwz r12, 12(r0)
449 lwz r11, 8(r0)
450 mtspr SPRN_PID, r12
451 mtcr r11
452 lwz r9, 4(r0)
453 lwz r12, 0(r0)
454 #else
455 mfspr r12, SPRN_SPRG_SCRATCH5
456 mfspr r11, SPRN_SPRG_SCRATCH6
457 mtspr SPRN_PID, r12
458 mtcr r11
459 mfspr r9, SPRN_SPRG_SCRATCH4
460 mfspr r12, SPRN_SPRG_SCRATCH3
461 #endif
462 mfspr r11, SPRN_SPRG_SCRATCH1
463 mfspr r10, SPRN_SPRG_SCRATCH0
464 b DataAccess
465
466
467
468
469
470 START_EXCEPTION(0x1200, ITLBMiss)
471 mtspr SPRN_SPRG_SCRATCH0, r10
472 mtspr SPRN_SPRG_SCRATCH1, r11
473 #ifdef CONFIG_403GCX
474 stw r12, 0(r0)
475 stw r9, 4(r0)
476 mfcr r11
477 mfspr r12, SPRN_PID
478 stw r11, 8(r0)
479 stw r12, 12(r0)
480 #else
481 mtspr SPRN_SPRG_SCRATCH3, r12
482 mtspr SPRN_SPRG_SCRATCH4, r9
483 mfcr r11
484 mfspr r12, SPRN_PID
485 mtspr SPRN_SPRG_SCRATCH6, r11
486 mtspr SPRN_SPRG_SCRATCH5, r12
487 #endif
488 mfspr r10, SPRN_SRR0
489
490
491
492
493 lis r11, PAGE_OFFSET@h
494 cmplw r10, r11
495 blt+ 3f
496 lis r11, swapper_pg_dir@h
497 ori r11, r11, swapper_pg_dir@l
498 li r9, 0
499 mtspr SPRN_PID, r9
500 b 4f
501
502
503
504 3:
505 mfspr r11,SPRN_SPRG_THREAD
506 lwz r11,PGDIR(r11)
507 4:
508 tophys(r11, r11)
509 rlwimi r11, r10, 12, 20, 29
510 lwz r12, 0(r11)
511 andi. r9, r12, _PMD_PRESENT
512 beq 2f
513
514 rlwimi r12, r10, 22, 20, 29
515 lwz r11, 0(r12)
516 andi. r9, r11, _PAGE_PRESENT
517 beq 5f
518
519 ori r11, r11, _PAGE_ACCESSED
520 stw r11, 0(r12)
521
522
523
524
525 li r12, 0x00c0
526 rlwimi r10, r12, 0, 20, 31
527
528 b finish_tlb_load
529
530 2:
531 rlwinm. r9, r12, 2, 22, 24
532 beq 5f
533
534
535
536
537 ori r9, r9, 0x40
538 rlwimi r10, r9, 0, 20, 31
539 mr r11, r12
540
541 b finish_tlb_load
542
543 5:
544
545
546
547 #ifdef CONFIG_403GCX
548 lwz r12, 12(r0)
549 lwz r11, 8(r0)
550 mtspr SPRN_PID, r12
551 mtcr r11
552 lwz r9, 4(r0)
553 lwz r12, 0(r0)
554 #else
555 mfspr r12, SPRN_SPRG_SCRATCH5
556 mfspr r11, SPRN_SPRG_SCRATCH6
557 mtspr SPRN_PID, r12
558 mtcr r11
559 mfspr r9, SPRN_SPRG_SCRATCH4
560 mfspr r12, SPRN_SPRG_SCRATCH3
561 #endif
562 mfspr r11, SPRN_SPRG_SCRATCH1
563 mfspr r10, SPRN_SPRG_SCRATCH0
564 b InstructionAccess
565
566 EXCEPTION(0x1300, Trap_13, unknown_exception, EXC_XFER_STD)
567 EXCEPTION(0x1400, Trap_14, unknown_exception, EXC_XFER_STD)
568 EXCEPTION(0x1500, Trap_15, unknown_exception, EXC_XFER_STD)
569 EXCEPTION(0x1600, Trap_16, unknown_exception, EXC_XFER_STD)
570 #ifdef CONFIG_IBM405_ERR51
571
572 START_EXCEPTION(0x1700, Trap_17)
573 b DTLBMiss
574 #else
575 EXCEPTION(0x1700, Trap_17, unknown_exception, EXC_XFER_STD)
576 #endif
577 EXCEPTION(0x1800, Trap_18, unknown_exception, EXC_XFER_STD)
578 EXCEPTION(0x1900, Trap_19, unknown_exception, EXC_XFER_STD)
579 EXCEPTION(0x1A00, Trap_1A, unknown_exception, EXC_XFER_STD)
580 EXCEPTION(0x1B00, Trap_1B, unknown_exception, EXC_XFER_STD)
581 EXCEPTION(0x1C00, Trap_1C, unknown_exception, EXC_XFER_STD)
582 EXCEPTION(0x1D00, Trap_1D, unknown_exception, EXC_XFER_STD)
583 EXCEPTION(0x1E00, Trap_1E, unknown_exception, EXC_XFER_STD)
584 EXCEPTION(0x1F00, Trap_1F, unknown_exception, EXC_XFER_STD)
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600 START_EXCEPTION(0x2000, DebugTrap)
601 CRITICAL_EXCEPTION_PROLOG
602
603
604
605
606
607
608
609
610
611 mfspr r10,SPRN_DBSR
612 andis. r10,r10,DBSR_IC@h
613 beq+ 2f
614
615 andi. r10,r9,MSR_IR|MSR_PR
616 beq 1f
617
618 mfspr r10,SPRN_SRR2
619 cmplwi r10,0x2100
620 bgt+ 2f
621
622
623 1: rlwinm r9,r9,0,~MSR_DE
624 lis r10,DBSR_IC@h
625 mtspr SPRN_DBSR,r10
626
627 lwz r10,_CCR(r11)
628 lwz r0,GPR0(r11)
629 lwz r1,GPR1(r11)
630 mtcrf 0x80,r10
631 mtspr SPRN_SRR2,r12
632 mtspr SPRN_SRR3,r9
633 lwz r9,GPR9(r11)
634 lwz r12,GPR12(r11)
635 lwz r10,crit_r10@l(0)
636 lwz r11,crit_r11@l(0)
637 PPC405_ERR77_SYNC
638 rfci
639 b .
640
641
642 2: mfspr r4,SPRN_DBSR
643 addi r3,r1,STACK_FRAME_OVERHEAD
644 EXC_XFER_TEMPLATE(DebugException, 0x2002, \
645 (MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE)), \
646 crit_transfer_to_handler, ret_from_crit_exc)
647
648
649 Decrementer:
650 EXCEPTION_PROLOG
651 lis r0,TSR_PIS@h
652 mtspr SPRN_TSR,r0
653 addi r3,r1,STACK_FRAME_OVERHEAD
654 EXC_XFER_LITE(0x1000, timer_interrupt)
655
656
657 FITException:
658 EXCEPTION_PROLOG
659 addi r3,r1,STACK_FRAME_OVERHEAD;
660 EXC_XFER_STD(0x1010, unknown_exception)
661
662
663 WDTException:
664 CRITICAL_EXCEPTION_PROLOG;
665 addi r3,r1,STACK_FRAME_OVERHEAD;
666 EXC_XFER_TEMPLATE(WatchdogException, 0x1020+2,
667 (MSR_KERNEL & ~(MSR_ME|MSR_DE|MSR_CE)),
668 crit_transfer_to_handler, ret_from_crit_exc)
669
670
671
672
673
674 DataAccess:
675 EXCEPTION_PROLOG
676 mfspr r5,SPRN_ESR
677 stw r5,_ESR(r11)
678 mfspr r4,SPRN_DEAR
679 EXC_XFER_LITE(0x300, handle_page_fault)
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698 tlb_4xx_index:
699 .long 0
700 finish_tlb_load:
701
702
703 lwz r9, tlb_4xx_index@l(0)
704 addi r9, r9, 1
705 andi. r9, r9, (PPC40X_TLB_SIZE-1)
706 stw r9, tlb_4xx_index@l(0)
707
708 6:
709
710
711
712
713
714 li r12, 0x0ce2
715 andc r11, r11, r12
716
717 tlbwe r11, r9, TLB_DATA
718 tlbwe r10, r9, TLB_TAG
719
720
721
722 #ifdef CONFIG_403GCX
723 lwz r12, 12(r0)
724 lwz r11, 8(r0)
725 mtspr SPRN_PID, r12
726 mtcr r11
727 lwz r9, 4(r0)
728 lwz r12, 0(r0)
729 #else
730 mfspr r12, SPRN_SPRG_SCRATCH5
731 mfspr r11, SPRN_SPRG_SCRATCH6
732 mtspr SPRN_PID, r12
733 mtcr r11
734 mfspr r9, SPRN_SPRG_SCRATCH4
735 mfspr r12, SPRN_SPRG_SCRATCH3
736 #endif
737 mfspr r11, SPRN_SPRG_SCRATCH1
738 mfspr r10, SPRN_SPRG_SCRATCH0
739 PPC405_ERR77_SYNC
740 rfi
741 b .
742
743
744
745 start_here:
746
747
748 lis r2,init_task@h
749 ori r2,r2,init_task@l
750
751
752 tophys(r4,r2)
753 addi r4,r4,THREAD
754 mtspr SPRN_SPRG_THREAD,r4
755
756
757 lis r1,init_thread_union@ha
758 addi r1,r1,init_thread_union@l
759 li r0,0
760 stwu r0,THREAD_SIZE-STACK_FRAME_OVERHEAD(r1)
761
762 bl early_init
763
764
765
766
767 #ifdef CONFIG_KASAN
768 bl kasan_early_init
769 #endif
770 li r3,0
771 mr r4,r31
772 bl machine_init
773 bl MMU_init
774
775
776
777
778
779
780 lis r4,2f@h
781 ori r4,r4,2f@l
782 tophys(r4,r4)
783 lis r3,(MSR_KERNEL & ~(MSR_IR|MSR_DR))@h
784 ori r3,r3,(MSR_KERNEL & ~(MSR_IR|MSR_DR))@l
785 mtspr SPRN_SRR0,r4
786 mtspr SPRN_SRR1,r3
787 rfi
788 b .
789
790
791 2:
792 sync
793 tlbia
794 isync
795
796
797
798 lis r6, swapper_pg_dir@h
799 ori r6, r6, swapper_pg_dir@l
800 lis r5, abatron_pteptrs@h
801 ori r5, r5, abatron_pteptrs@l
802 stw r5, 0xf0(r0)
803 tophys(r5,r5)
804 stw r6, 0(r5)
805
806
807 lis r4,MSR_KERNEL@h
808 ori r4,r4,MSR_KERNEL@l
809 lis r3,start_kernel@h
810 ori r3,r3,start_kernel@l
811 mtspr SPRN_SRR0,r3
812 mtspr SPRN_SRR1,r4
813 rfi
814 b .
815
816
817
818
819
820 initial_mmu:
821 tlbia
822 isync
823
824
825
826
827
828
829
830 lis r3,KERNELBASE@h
831 ori r3,r3,KERNELBASE@l
832 tophys(r4,r3)
833
834 iccci r0,r3
835
836
837
838 li r0,0
839 mtspr SPRN_PID,r0
840 sync
841
842
843 clrrwi r4,r4,10
844 ori r4,r4,(TLB_WR | TLB_EX)
845
846 clrrwi r3,r3,10
847 ori r3,r3,(TLB_VALID | TLB_PAGESZ(PAGESZ_16M))
848
849 li r0,63
850
851 tlbwe r4,r0,TLB_DATA
852 tlbwe r3,r0,TLB_TAG
853
854 isync
855
856
857
858 lis r4,KERNELBASE@h
859 tophys(r0,r4)
860 mtspr SPRN_EVPR,r0
861
862 blr
863
864 _GLOBAL(abort)
865 mfspr r13,SPRN_DBCR0
866 oris r13,r13,DBCR0_RST_SYSTEM@h
867 mtspr SPRN_DBCR0,r13
868
869 _GLOBAL(set_context)
870
871 #ifdef CONFIG_BDI_SWITCH
872
873
874
875 lis r5, abatron_pteptrs@ha
876 stw r4, abatron_pteptrs@l + 0x4(r5)
877 #endif
878 sync
879 mtspr SPRN_PID,r3
880 isync
881
882 blr
883
884
885
886
887 .data
888 .align 12
889 .globl sdata
890 sdata:
891 .globl empty_zero_page
892 empty_zero_page:
893 .space 4096
894 EXPORT_SYMBOL(empty_zero_page)
895 .globl swapper_pg_dir
896 swapper_pg_dir:
897 .space PGD_TABLE_SIZE
898
899
900
901
902 abatron_pteptrs:
903 .space 8