-
Notifications
You must be signed in to change notification settings - Fork 1
/
kernel.asm
executable file
·4352 lines (4239 loc) · 134 KB
/
kernel.asm
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
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
user/mytest.b: file format elf32-tradbigmips
Disassembly of section .text:
00400000 <_start>:
400000: 8fa40000 lw a0,0(sp)
400004: 8fa50004 lw a1,4(sp)
400008: 0c1002f8 jal 400be0 <libmain>
40000c: 00000000 nop
400010: 00000000 nop
00400014 <__asm_pgfault_handler>:
400014: 00000000 nop
400018: 8fa4008c lw a0,140(sp)
40001c: 3c090040 lui t1,0x40
400020: 8d296010 lw t1,24592(t1)
400024: 0120f809 jalr t1
400028: 00000000 nop
40002c: 8fa30088 lw v1,136(sp)
400030: 00600013 mtlo v1
400034: 8fa20084 lw v0,132(sp)
400038: 8fa30094 lw v1,148(sp)
40003c: 00400011 mthi v0
400040: 40837000 mtc0 v1,$14
400044: 8fbf007c lw ra,124(sp)
400048: 8fbe0078 lw s8,120(sp)
40004c: 8fbc0070 lw gp,112(sp)
400050: 8fb90064 lw t9,100(sp)
400054: 8fb80060 lw t8,96(sp)
400058: 8fb7005c lw s7,92(sp)
40005c: 8fb60058 lw s6,88(sp)
400060: 8fb50054 lw s5,84(sp)
400064: 8fb40050 lw s4,80(sp)
400068: 8fb3004c lw s3,76(sp)
40006c: 8fb20048 lw s2,72(sp)
400070: 8fb10044 lw s1,68(sp)
400074: 8fb00040 lw s0,64(sp)
400078: 8faf003c lw t7,60(sp)
40007c: 8fae0038 lw t6,56(sp)
400080: 8fad0034 lw t5,52(sp)
400084: 8fac0030 lw t4,48(sp)
400088: 8fab002c lw t3,44(sp)
40008c: 8faa0028 lw t2,40(sp)
400090: 8fa90024 lw t1,36(sp)
400094: 8fa80020 lw t0,32(sp)
400098: 8fa7001c lw a3,28(sp)
40009c: 8fa60018 lw a2,24(sp)
4000a0: 8fa50014 lw a1,20(sp)
4000a4: 8fa40010 lw a0,16(sp)
4000a8: 8fa3000c lw v1,12(sp)
4000ac: 8fa20008 lw v0,8(sp)
4000b0: 8fa10004 lw at,4(sp)
4000b4: 8fba0094 lw k0,148(sp)
4000b8: 03400008 jr k0
4000bc: 8fbd0074 lw sp,116(sp)
004000c0 <msyscall>:
4000c0: 0000000c syscall
4000c4: 03e00008 jr ra
4000c8: 00000000 nop
4000cc: 00000000 nop
004000d0 <get_sp>:
4000d0: 03e00008 jr ra
4000d4: 03a01021 move v0,sp
...
004000e0 <umain>:
4000e0: 27bdffe8 addiu sp,sp,-24
4000e4: afbf0010 sw ra,16(sp)
4000e8: 0c1003ea jal 400fa8 <fork>
4000ec: 00000000 nop
4000f0: 14400017 bnez v0,400150 <umain+0x70>
4000f4: 3c020041 lui v0,0x41
4000f8: 0c100484 jal 401210 <tfork>
4000fc: 00000000 nop
400100: 1440000a bnez v0,40012c <umain+0x4c>
400104: 3c020041 lui v0,0x41
400108: 8c458000 lw a1,-32768(v0)
40010c: 00000000 nop
400110: 24a50003 addiu a1,a1,3
400114: ac458000 sw a1,-32768(v0)
400118: 3c040040 lui a0,0x40
40011c: 0c100086 jal 400218 <writef>
400120: 24847210 addiu a0,a0,29200
400124: 1000ffff b 400124 <umain+0x44>
400128: 00000000 nop
40012c: 8c458000 lw a1,-32768(v0)
400130: 00000000 nop
400134: 24a50002 addiu a1,a1,2
400138: ac458000 sw a1,-32768(v0)
40013c: 3c040040 lui a0,0x40
400140: 0c100086 jal 400218 <writef>
400144: 24847228 addiu a0,a0,29224
400148: 1000ffff b 400148 <umain+0x68>
40014c: 00000000 nop
400150: 8c458000 lw a1,-32768(v0)
400154: 00000000 nop
400158: 24a50001 addiu a1,a1,1
40015c: ac458000 sw a1,-32768(v0)
400160: 3c040040 lui a0,0x40
400164: 0c100086 jal 400218 <writef>
400168: 24847240 addiu a0,a0,29248
40016c: 1000ffff b 40016c <umain+0x8c>
400170: 00000000 nop
...
00400180 <user_myoutput>:
400180: 27bdffe0 addiu sp,sp,-32
400184: afbf001c sw ra,28(sp)
400188: afb20018 sw s2,24(sp)
40018c: afb10014 sw s1,20(sp)
400190: afb00010 sw s0,16(sp)
400194: 24020001 li v0,1
400198: 14c20015 bne a2,v0,4001f0 <user_myoutput+0x70>
40019c: 00c09021 move s2,a2
4001a0: 80a20000 lb v0,0(a1)
4001a4: 00000000 nop
4001a8: 14400013 bnez v0,4001f8 <user_myoutput+0x78>
4001ac: 00a08021 move s0,a1
4001b0: 10000013 b 400200 <user_myoutput+0x80>
4001b4: 00000000 nop
4001b8: 82040000 lb a0,0(s0)
4001bc: 0c10052c jal 4014b0 <syscall_putchar>
4001c0: 00000000 nop
4001c4: 82030000 lb v1,0(s0)
4001c8: 2402000a li v0,10
4001cc: 14620003 bne v1,v0,4001dc <user_myoutput+0x5c>
4001d0: 00000000 nop
4001d4: 0c10052c jal 4014b0 <syscall_putchar>
4001d8: 2404000a li a0,10
4001dc: 26310001 addiu s1,s1,1
4001e0: 12510007 beq s2,s1,400200 <user_myoutput+0x80>
4001e4: 26100001 addiu s0,s0,1
4001e8: 1000fff3 b 4001b8 <user_myoutput+0x38>
4001ec: 00000000 nop
4001f0: 18c00003 blez a2,400200 <user_myoutput+0x80>
4001f4: 00a08021 move s0,a1
4001f8: 1000ffef b 4001b8 <user_myoutput+0x38>
4001fc: 00008821 move s1,zero
400200: 8fbf001c lw ra,28(sp)
400204: 8fb20018 lw s2,24(sp)
400208: 8fb10014 lw s1,20(sp)
40020c: 8fb00010 lw s0,16(sp)
400210: 03e00008 jr ra
400214: 27bd0020 addiu sp,sp,32
00400218 <writef>:
400218: 27bdffe0 addiu sp,sp,-32
40021c: afbf0018 sw ra,24(sp)
400220: afa50024 sw a1,36(sp)
400224: afa60028 sw a2,40(sp)
400228: afa7002c sw a3,44(sp)
40022c: 00803021 move a2,a0
400230: 27a70024 addiu a3,sp,36
400234: afa70010 sw a3,16(sp)
400238: 3c040040 lui a0,0x40
40023c: 24840180 addiu a0,a0,384
400240: 0c1000b0 jal 4002c0 <user_lp_Print>
400244: 00002821 move a1,zero
400248: 8fbf0018 lw ra,24(sp)
40024c: 00000000 nop
400250: 03e00008 jr ra
400254: 27bd0020 addiu sp,sp,32
00400258 <_user_panic>:
400258: 27bdffe0 addiu sp,sp,-32
40025c: afbf001c sw ra,28(sp)
400260: afb00018 sw s0,24(sp)
400264: 00801821 move v1,a0
400268: 00a04021 move t0,a1
40026c: afa7002c sw a3,44(sp)
400270: 00c08021 move s0,a2
400274: 27a2002c addiu v0,sp,44
400278: afa20010 sw v0,16(sp)
40027c: 3c040040 lui a0,0x40
400280: 24847258 addiu a0,a0,29272
400284: 00602821 move a1,v1
400288: 0c100086 jal 400218 <writef>
40028c: 01003021 move a2,t0
400290: 3c040040 lui a0,0x40
400294: 24840180 addiu a0,a0,384
400298: 00002821 move a1,zero
40029c: 8fa70010 lw a3,16(sp)
4002a0: 0c1000b0 jal 4002c0 <user_lp_Print>
4002a4: 02003021 move a2,s0
4002a8: 3c040040 lui a0,0x40
4002ac: 0c100086 jal 400218 <writef>
4002b0: 2484752c addiu a0,a0,29996
4002b4: 1000ffff b 4002b4 <_user_panic+0x5c>
4002b8: 00000000 nop
4002bc: 00000000 nop
004002c0 <user_lp_Print>:
4002c0: 27bdfbd8 addiu sp,sp,-1064
4002c4: afbf0420 sw ra,1056(sp)
4002c8: afb5041c sw s5,1052(sp)
4002cc: afb40418 sw s4,1048(sp)
4002d0: afb30414 sw s3,1044(sp)
4002d4: afb20410 sw s2,1040(sp)
4002d8: afb1040c sw s1,1036(sp)
4002dc: afb00408 sw s0,1032(sp)
4002e0: 0080a821 move s5,a0
4002e4: 00a09021 move s2,a1
4002e8: 00c02821 move a1,a2
4002ec: 00e09821 move s3,a3
4002f0: 80a30000 lb v1,0(a1)
4002f4: 00000000 nop
4002f8: 1060000d beqz v1,400330 <user_lp_Print+0x70>
4002fc: 00a08021 move s0,a1
400300: 1000015e b 40087c <user_lp_Print+0x5bc>
400304: 24020025 li v0,37
400308: 00a08021 move s0,a1
40030c: 26100001 addiu s0,s0,1
400310: 82020000 lb v0,0(s0)
400314: 00000000 nop
400318: 10400006 beqz v0,400334 <user_lp_Print+0x74>
40031c: 02058823 subu s1,s0,a1
400320: 10430005 beq v0,v1,400338 <user_lp_Print+0x78>
400324: 2e2203e9 sltiu v0,s1,1001
400328: 1000fff9 b 400310 <user_lp_Print+0x50>
40032c: 26100001 addiu s0,s0,1
400330: 02058823 subu s1,s0,a1
400334: 2e2203e9 sltiu v0,s1,1001
400338: 14400008 bnez v0,40035c <user_lp_Print+0x9c>
40033c: 02203021 move a2,s1
400340: 02402021 move a0,s2
400344: 3c050040 lui a1,0x40
400348: 24a57000 addiu a1,a1,28672
40034c: 02a0f809 jalr s5
400350: 2406001d li a2,29
400354: 1000ffff b 400354 <user_lp_Print+0x94>
400358: 00000000 nop
40035c: 02a0f809 jalr s5
400360: 02402021 move a0,s2
400364: 82020000 lb v0,0(s0)
400368: 00000000 nop
40036c: 10400135 beqz v0,400844 <user_lp_Print+0x584>
400370: 02519021 addu s2,s2,s1
400374: 82030001 lb v1,1(s0)
400378: 2402006c li v0,108
40037c: 10620003 beq v1,v0,40038c <user_lp_Print+0xcc>
400380: 26110001 addiu s1,s0,1
400384: 10000003 b 400394 <user_lp_Print+0xd4>
400388: 00002021 move a0,zero
40038c: 26110002 addiu s1,s0,2
400390: 24040001 li a0,1
400394: 82230000 lb v1,0(s1)
400398: 2402002d li v0,45
40039c: 14620004 bne v1,v0,4003b0 <user_lp_Print+0xf0>
4003a0: 00003821 move a3,zero
4003a4: 26310001 addiu s1,s1,1
4003a8: 24070001 li a3,1
4003ac: 82230000 lb v1,0(s1)
4003b0: 24020030 li v0,48
4003b4: 14620003 bne v1,v0,4003c4 <user_lp_Print+0x104>
4003b8: 24090020 li t1,32
4003bc: 26310001 addiu s1,s1,1
4003c0: 24090030 li t1,48
4003c4: 82260000 lb a2,0(s1)
4003c8: 00000000 nop
4003cc: 24c2ffd0 addiu v0,a2,-48
4003d0: 304200ff andi v0,v0,0xff
4003d4: 2c42000a sltiu v0,v0,10
4003d8: 1040000e beqz v0,400414 <user_lp_Print+0x154>
4003dc: 00004021 move t0,zero
4003e0: 00081040 sll v0,t0,0x1
4003e4: 000818c0 sll v1,t0,0x3
4003e8: 00431021 addu v0,v0,v1
4003ec: 00461021 addu v0,v0,a2
4003f0: 2448ffd0 addiu t0,v0,-48
4003f4: 26310001 addiu s1,s1,1
4003f8: 82260000 lb a2,0(s1)
4003fc: 00000000 nop
400400: 24c2ffd0 addiu v0,a2,-48
400404: 304200ff andi v0,v0,0xff
400408: 2c42000a sltiu v0,v0,10
40040c: 1440fff5 bnez v0,4003e4 <user_lp_Print+0x124>
400410: 00081040 sll v0,t0,0x1
400414: 82230000 lb v1,0(s1)
400418: 2402002e li v0,46
40041c: 14620014 bne v1,v0,400470 <user_lp_Print+0x1b0>
400420: 2c620079 sltiu v0,v1,121
400424: 26310001 addiu s1,s1,1
400428: 92220000 lbu v0,0(s1)
40042c: 00000000 nop
400430: 2442ffd0 addiu v0,v0,-48
400434: 304200ff andi v0,v0,0xff
400438: 2c42000a sltiu v0,v0,10
40043c: 10400009 beqz v0,400464 <user_lp_Print+0x1a4>
400440: 00000000 nop
400444: 26310001 addiu s1,s1,1
400448: 92220000 lbu v0,0(s1)
40044c: 00000000 nop
400450: 2442ffd0 addiu v0,v0,-48
400454: 304200ff andi v0,v0,0xff
400458: 2c42000a sltiu v0,v0,10
40045c: 1440fff9 bnez v0,400444 <user_lp_Print+0x184>
400460: 00000000 nop
400464: 82230000 lb v1,0(s1)
400468: 00000000 nop
40046c: 2c620079 sltiu v0,v1,121
400470: 104000ed beqz v0,400828 <user_lp_Print+0x568>
400474: 00031080 sll v0,v1,0x2
400478: 3c030040 lui v1,0x40
40047c: 24637024 addiu v1,v1,28708
400480: 00431021 addu v0,v0,v1
400484: 8c420000 lw v0,0(v0)
400488: 00000000 nop
40048c: 00400008 jr v0
400490: 00000000 nop
400494: 10800004 beqz a0,4004a8 <user_lp_Print+0x1e8>
400498: 00000000 nop
40049c: 8e650000 lw a1,0(s3)
4004a0: 10000003 b 4004b0 <user_lp_Print+0x1f0>
4004a4: 26730004 addiu s3,s3,4
4004a8: 8e650000 lw a1,0(s3)
4004ac: 26730004 addiu s3,s3,4
4004b0: afa80010 sw t0,16(sp)
4004b4: afa70014 sw a3,20(sp)
4004b8: afa90018 sw t1,24(sp)
4004bc: afa0001c sw zero,28(sp)
4004c0: 27a40020 addiu a0,sp,32
4004c4: 24060002 li a2,2
4004c8: 0c10028a jal 400a28 <user_PrintNum>
4004cc: 00003821 move a3,zero
4004d0: 00408021 move s0,v0
4004d4: 00403021 move a2,v0
4004d8: 2c4203e9 sltiu v0,v0,1001
4004dc: 14400007 bnez v0,4004fc <user_lp_Print+0x23c>
4004e0: 02402021 move a0,s2
4004e4: 3c050040 lui a1,0x40
4004e8: 24a57000 addiu a1,a1,28672
4004ec: 02a0f809 jalr s5
4004f0: 2406001d li a2,29
4004f4: 1000ffff b 4004f4 <user_lp_Print+0x234>
4004f8: 00000000 nop
4004fc: 02a0f809 jalr s5
400500: 27a50020 addiu a1,sp,32
400504: 100000cd b 40083c <user_lp_Print+0x57c>
400508: 02509021 addu s2,s2,s0
40050c: 10800004 beqz a0,400520 <user_lp_Print+0x260>
400510: 00000000 nop
400514: 8e650000 lw a1,0(s3)
400518: 10000003 b 400528 <user_lp_Print+0x268>
40051c: 26730004 addiu s3,s3,4
400520: 8e650000 lw a1,0(s3)
400524: 26730004 addiu s3,s3,4
400528: 04a10003 bgez a1,400538 <user_lp_Print+0x278>
40052c: 00001021 move v0,zero
400530: 00052823 negu a1,a1
400534: 24020001 li v0,1
400538: afa80010 sw t0,16(sp)
40053c: afa70014 sw a3,20(sp)
400540: afa90018 sw t1,24(sp)
400544: afa0001c sw zero,28(sp)
400548: 27a40020 addiu a0,sp,32
40054c: 2406000a li a2,10
400550: 0c10028a jal 400a28 <user_PrintNum>
400554: 00403821 move a3,v0
400558: 00408021 move s0,v0
40055c: 00403021 move a2,v0
400560: 2c4203e9 sltiu v0,v0,1001
400564: 14400007 bnez v0,400584 <user_lp_Print+0x2c4>
400568: 02402021 move a0,s2
40056c: 3c050040 lui a1,0x40
400570: 24a57000 addiu a1,a1,28672
400574: 02a0f809 jalr s5
400578: 2406001d li a2,29
40057c: 1000ffff b 40057c <user_lp_Print+0x2bc>
400580: 00000000 nop
400584: 02a0f809 jalr s5
400588: 27a50020 addiu a1,sp,32
40058c: 100000ab b 40083c <user_lp_Print+0x57c>
400590: 02509021 addu s2,s2,s0
400594: 10800004 beqz a0,4005a8 <user_lp_Print+0x2e8>
400598: 00000000 nop
40059c: 8e650000 lw a1,0(s3)
4005a0: 10000003 b 4005b0 <user_lp_Print+0x2f0>
4005a4: 26730004 addiu s3,s3,4
4005a8: 8e650000 lw a1,0(s3)
4005ac: 26730004 addiu s3,s3,4
4005b0: afa80010 sw t0,16(sp)
4005b4: afa70014 sw a3,20(sp)
4005b8: afa90018 sw t1,24(sp)
4005bc: afa0001c sw zero,28(sp)
4005c0: 27a40020 addiu a0,sp,32
4005c4: 24060008 li a2,8
4005c8: 0c10028a jal 400a28 <user_PrintNum>
4005cc: 00003821 move a3,zero
4005d0: 00408021 move s0,v0
4005d4: 00403021 move a2,v0
4005d8: 2c4203e9 sltiu v0,v0,1001
4005dc: 14400007 bnez v0,4005fc <user_lp_Print+0x33c>
4005e0: 02402021 move a0,s2
4005e4: 3c050040 lui a1,0x40
4005e8: 24a57000 addiu a1,a1,28672
4005ec: 02a0f809 jalr s5
4005f0: 2406001d li a2,29
4005f4: 1000ffff b 4005f4 <user_lp_Print+0x334>
4005f8: 00000000 nop
4005fc: 02a0f809 jalr s5
400600: 27a50020 addiu a1,sp,32
400604: 1000008d b 40083c <user_lp_Print+0x57c>
400608: 02509021 addu s2,s2,s0
40060c: 10800004 beqz a0,400620 <user_lp_Print+0x360>
400610: 00000000 nop
400614: 8e650000 lw a1,0(s3)
400618: 10000003 b 400628 <user_lp_Print+0x368>
40061c: 26730004 addiu s3,s3,4
400620: 8e650000 lw a1,0(s3)
400624: 26730004 addiu s3,s3,4
400628: afa80010 sw t0,16(sp)
40062c: afa70014 sw a3,20(sp)
400630: afa90018 sw t1,24(sp)
400634: afa0001c sw zero,28(sp)
400638: 27a40020 addiu a0,sp,32
40063c: 2406000a li a2,10
400640: 0c10028a jal 400a28 <user_PrintNum>
400644: 00003821 move a3,zero
400648: 00408021 move s0,v0
40064c: 00403021 move a2,v0
400650: 2c4203e9 sltiu v0,v0,1001
400654: 14400007 bnez v0,400674 <user_lp_Print+0x3b4>
400658: 02402021 move a0,s2
40065c: 3c050040 lui a1,0x40
400660: 24a57000 addiu a1,a1,28672
400664: 02a0f809 jalr s5
400668: 2406001d li a2,29
40066c: 1000ffff b 40066c <user_lp_Print+0x3ac>
400670: 00000000 nop
400674: 02a0f809 jalr s5
400678: 27a50020 addiu a1,sp,32
40067c: 1000006f b 40083c <user_lp_Print+0x57c>
400680: 02509021 addu s2,s2,s0
400684: 10800004 beqz a0,400698 <user_lp_Print+0x3d8>
400688: 00000000 nop
40068c: 8e650000 lw a1,0(s3)
400690: 10000003 b 4006a0 <user_lp_Print+0x3e0>
400694: 26730004 addiu s3,s3,4
400698: 8e650000 lw a1,0(s3)
40069c: 26730004 addiu s3,s3,4
4006a0: afa80010 sw t0,16(sp)
4006a4: afa70014 sw a3,20(sp)
4006a8: afa90018 sw t1,24(sp)
4006ac: afa0001c sw zero,28(sp)
4006b0: 27a40020 addiu a0,sp,32
4006b4: 24060010 li a2,16
4006b8: 0c10028a jal 400a28 <user_PrintNum>
4006bc: 00003821 move a3,zero
4006c0: 00408021 move s0,v0
4006c4: 00403021 move a2,v0
4006c8: 2c4203e9 sltiu v0,v0,1001
4006cc: 14400007 bnez v0,4006ec <user_lp_Print+0x42c>
4006d0: 02402021 move a0,s2
4006d4: 3c050040 lui a1,0x40
4006d8: 24a57000 addiu a1,a1,28672
4006dc: 02a0f809 jalr s5
4006e0: 2406001d li a2,29
4006e4: 1000ffff b 4006e4 <user_lp_Print+0x424>
4006e8: 00000000 nop
4006ec: 02a0f809 jalr s5
4006f0: 27a50020 addiu a1,sp,32
4006f4: 10000051 b 40083c <user_lp_Print+0x57c>
4006f8: 02509021 addu s2,s2,s0
4006fc: 10800004 beqz a0,400710 <user_lp_Print+0x450>
400700: 00000000 nop
400704: 8e650000 lw a1,0(s3)
400708: 10000003 b 400718 <user_lp_Print+0x458>
40070c: 26730004 addiu s3,s3,4
400710: 8e650000 lw a1,0(s3)
400714: 26730004 addiu s3,s3,4
400718: afa80010 sw t0,16(sp)
40071c: afa70014 sw a3,20(sp)
400720: afa90018 sw t1,24(sp)
400724: 24020001 li v0,1
400728: afa2001c sw v0,28(sp)
40072c: 27a40020 addiu a0,sp,32
400730: 24060010 li a2,16
400734: 0c10028a jal 400a28 <user_PrintNum>
400738: 00003821 move a3,zero
40073c: 00408021 move s0,v0
400740: 00403021 move a2,v0
400744: 2c4203e9 sltiu v0,v0,1001
400748: 14400007 bnez v0,400768 <user_lp_Print+0x4a8>
40074c: 02402021 move a0,s2
400750: 3c050040 lui a1,0x40
400754: 24a57000 addiu a1,a1,28672
400758: 02a0f809 jalr s5
40075c: 2406001d li a2,29
400760: 1000ffff b 400760 <user_lp_Print+0x4a0>
400764: 00000000 nop
400768: 02a0f809 jalr s5
40076c: 27a50020 addiu a1,sp,32
400770: 10000032 b 40083c <user_lp_Print+0x57c>
400774: 02509021 addu s2,s2,s0
400778: 26740004 addiu s4,s3,4
40077c: 27a40020 addiu a0,sp,32
400780: 82650003 lb a1,3(s3)
400784: 0c100223 jal 40088c <user_PrintChar>
400788: 01003021 move a2,t0
40078c: 00408021 move s0,v0
400790: 00403021 move a2,v0
400794: 2c4203e9 sltiu v0,v0,1001
400798: 14400007 bnez v0,4007b8 <user_lp_Print+0x4f8>
40079c: 02402021 move a0,s2
4007a0: 3c050040 lui a1,0x40
4007a4: 24a57000 addiu a1,a1,28672
4007a8: 02a0f809 jalr s5
4007ac: 2406001d li a2,29
4007b0: 1000ffff b 4007b0 <user_lp_Print+0x4f0>
4007b4: 00000000 nop
4007b8: 02a0f809 jalr s5
4007bc: 27a50020 addiu a1,sp,32
4007c0: 02509021 addu s2,s2,s0
4007c4: 1000001d b 40083c <user_lp_Print+0x57c>
4007c8: 02809821 move s3,s4
4007cc: 26740004 addiu s4,s3,4
4007d0: 27a40020 addiu a0,sp,32
4007d4: 8e650000 lw a1,0(s3)
4007d8: 0c100242 jal 400908 <user_PrintString>
4007dc: 01003021 move a2,t0
4007e0: 00408021 move s0,v0
4007e4: 00403021 move a2,v0
4007e8: 2c4203e9 sltiu v0,v0,1001
4007ec: 14400007 bnez v0,40080c <user_lp_Print+0x54c>
4007f0: 02402021 move a0,s2
4007f4: 3c050040 lui a1,0x40
4007f8: 24a57000 addiu a1,a1,28672
4007fc: 02a0f809 jalr s5
400800: 2406001d li a2,29
400804: 1000ffff b 400804 <user_lp_Print+0x544>
400808: 00000000 nop
40080c: 02a0f809 jalr s5
400810: 27a50020 addiu a1,sp,32
400814: 02509021 addu s2,s2,s0
400818: 10000008 b 40083c <user_lp_Print+0x57c>
40081c: 02809821 move s3,s4
400820: 10000006 b 40083c <user_lp_Print+0x57c>
400824: 2631ffff addiu s1,s1,-1
400828: 02402021 move a0,s2
40082c: 02202821 move a1,s1
400830: 02a0f809 jalr s5
400834: 24060001 li a2,1
400838: 26520001 addiu s2,s2,1
40083c: 1000feac b 4002f0 <user_lp_Print+0x30>
400840: 26250001 addiu a1,s1,1
400844: 02402021 move a0,s2
400848: 3c050040 lui a1,0x40
40084c: 24a57020 addiu a1,a1,28704
400850: 02a0f809 jalr s5
400854: 24060001 li a2,1
400858: 8fbf0420 lw ra,1056(sp)
40085c: 8fb5041c lw s5,1052(sp)
400860: 8fb40418 lw s4,1048(sp)
400864: 8fb30414 lw s3,1044(sp)
400868: 8fb20410 lw s2,1040(sp)
40086c: 8fb1040c lw s1,1036(sp)
400870: 8fb00408 lw s0,1032(sp)
400874: 03e00008 jr ra
400878: 27bd0428 addiu sp,sp,1064
40087c: 1462fea2 bne v1,v0,400308 <user_lp_Print+0x48>
400880: 24030025 li v1,37
400884: 1000feaa b 400330 <user_lp_Print+0x70>
400888: 00a08021 move s0,a1
0040088c <user_PrintChar>:
40088c: 00052e00 sll a1,a1,0x18
400890: 1cc00002 bgtz a2,40089c <user_PrintChar+0x10>
400894: 00052e03 sra a1,a1,0x18
400898: 24060001 li a2,1
40089c: 10e00014 beqz a3,4008f0 <user_PrintChar+0x64>
4008a0: 28c20002 slti v0,a2,2
4008a4: 14400016 bnez v0,400900 <user_PrintChar+0x74>
4008a8: a0850000 sb a1,0(a0)
4008ac: 24030001 li v1,1
4008b0: 24050020 li a1,32
4008b4: 00831021 addu v0,a0,v1
4008b8: 24630001 addiu v1,v1,1
4008bc: 10c30010 beq a2,v1,400900 <user_PrintChar+0x74>
4008c0: a0450000 sb a1,0(v0)
4008c4: 1000fffc b 4008b8 <user_PrintChar+0x2c>
4008c8: 00831021 addu v0,a0,v1
4008cc: 00001821 move v1,zero
4008d0: 24080020 li t0,32
4008d4: 00641021 addu v0,v1,a0
4008d8: 24630001 addiu v1,v1,1
4008dc: 1467fffd bne v1,a3,4008d4 <user_PrintChar+0x48>
4008e0: a0480000 sb t0,0(v0)
4008e4: 00c41021 addu v0,a2,a0
4008e8: 10000005 b 400900 <user_PrintChar+0x74>
4008ec: a045ffff sb a1,-1(v0)
4008f0: 24c7ffff addiu a3,a2,-1
4008f4: 1ce0fff5 bgtz a3,4008cc <user_PrintChar+0x40>
4008f8: 00c41021 addu v0,a2,a0
4008fc: a045ffff sb a1,-1(v0)
400900: 03e00008 jr ra
400904: 00c01021 move v0,a2
00400908 <user_PrintString>:
400908: 80a20000 lb v0,0(a1)
40090c: 00000000 nop
400910: 14400003 bnez v0,400920 <user_PrintString+0x18>
400914: 24a30001 addiu v1,a1,1
400918: 10000007 b 400938 <user_PrintString+0x30>
40091c: 00004021 move t0,zero
400920: 00004021 move t0,zero
400924: 25080001 addiu t0,t0,1
400928: 80620000 lb v0,0(v1)
40092c: 00000000 nop
400930: 1440fffc bnez v0,400924 <user_PrintString+0x1c>
400934: 24630001 addiu v1,v1,1
400938: 00c8102a slt v0,a2,t0
40093c: 10400002 beqz v0,400948 <user_PrintString+0x40>
400940: 00000000 nop
400944: 01003021 move a2,t0
400948: 14e00031 bnez a3,400a10 <user_PrintString+0x108>
40094c: 00c83823 subu a3,a2,t0
400950: 1000002b b 400a00 <user_PrintString+0xf8>
400954: 00000000 nop
400958: 00003821 move a3,zero
40095c: 00871021 addu v0,a0,a3
400960: 00a71821 addu v1,a1,a3
400964: 90630000 lbu v1,0(v1)
400968: 24e70001 addiu a3,a3,1
40096c: 1507fffb bne t0,a3,40095c <user_PrintString+0x54>
400970: a0430000 sb v1,0(v0)
400974: 0106102a slt v0,t0,a2
400978: 10400029 beqz v0,400a20 <user_PrintString+0x118>
40097c: 00001821 move v1,zero
400980: 00881021 addu v0,a0,t0
400984: 24050020 li a1,32
400988: 00c82023 subu a0,a2,t0
40098c: a0450000 sb a1,0(v0)
400990: 24630001 addiu v1,v1,1
400994: 10640022 beq v1,a0,400a20 <user_PrintString+0x118>
400998: 24420001 addiu v0,v0,1
40099c: 1000fffc b 400990 <user_PrintString+0x88>
4009a0: a0450000 sb a1,0(v0)
4009a4: 00001821 move v1,zero
4009a8: 24090020 li t1,32
4009ac: 00831021 addu v0,a0,v1
4009b0: 24630001 addiu v1,v1,1
4009b4: 1467fffd bne v1,a3,4009ac <user_PrintString+0xa4>
4009b8: a0490000 sb t1,0(v0)
4009bc: 00e6102a slt v0,a3,a2
4009c0: 10400017 beqz v0,400a20 <user_PrintString+0x118>
4009c4: 00872021 addu a0,a0,a3
4009c8: 00e61023 subu v0,a3,a2
4009cc: 01021021 addu v0,t0,v0
4009d0: 00a21821 addu v1,a1,v0
4009d4: 00002821 move a1,zero
4009d8: 00c73823 subu a3,a2,a3
4009dc: 90620000 lbu v0,0(v1)
4009e0: 00000000 nop
4009e4: a0820000 sb v0,0(a0)
4009e8: 24a50001 addiu a1,a1,1
4009ec: 24630001 addiu v1,v1,1
4009f0: 10a7000b beq a1,a3,400a20 <user_PrintString+0x118>
4009f4: 24840001 addiu a0,a0,1
4009f8: 1000fff8 b 4009dc <user_PrintString+0xd4>
4009fc: 00000000 nop
400a00: 1ce0ffe8 bgtz a3,4009a4 <user_PrintString+0x9c>
400a04: 00e6102a slt v0,a3,a2
400a08: 1000ffed b 4009c0 <user_PrintString+0xb8>
400a0c: 00000000 nop
400a10: 1d00ffd1 bgtz t0,400958 <user_PrintString+0x50>
400a14: 0106102a slt v0,t0,a2
400a18: 1000ffd7 b 400978 <user_PrintString+0x70>
400a1c: 00000000 nop
400a20: 03e00008 jr ra
400a24: 00c01021 move v0,a2
00400a28 <user_PrintNum>:
400a28: 8fa90010 lw t1,16(sp)
400a2c: 8fac0014 lw t4,20(sp)
400a30: 8fab001c lw t3,28(sp)
400a34: 83aa001b lb t2,27(sp)
400a38: 00804021 move t0,a0
400a3c: 14c00002 bnez a2,400a48 <user_PrintNum+0x20>
400a40: 00a6001b divu zero,a1,a2
400a44: 0007000d break 0x7
400a48: 00001810 mfhi v1
400a4c: 2862000a slti v0,v1,10
400a50: 10400004 beqz v0,400a64 <user_PrintNum+0x3c>
400a54: 24620030 addiu v0,v1,48
400a58: a1020000 sb v0,0(t0)
400a5c: 1000000c b 400a90 <user_PrintNum+0x68>
400a60: 25080001 addiu t0,t0,1
400a64: 11600005 beqz t3,400a7c <user_PrintNum+0x54>
400a68: 24620057 addiu v0,v1,87
400a6c: 24620037 addiu v0,v1,55
400a70: a1020000 sb v0,0(t0)
400a74: 10000003 b 400a84 <user_PrintNum+0x5c>
400a78: 25080001 addiu t0,t0,1
400a7c: a1020000 sb v0,0(t0)
400a80: 25080001 addiu t0,t0,1
400a84: 14c00002 bnez a2,400a90 <user_PrintNum+0x68>
400a88: 00a6001b divu zero,a1,a2
400a8c: 0007000d break 0x7
400a90: 00002812 mflo a1
400a94: 14a0ffe9 bnez a1,400a3c <user_PrintNum+0x14>
400a98: 00000000 nop
400a9c: 10e00005 beqz a3,400ab4 <user_PrintNum+0x8c>
400aa0: 01043023 subu a2,t0,a0
400aa4: 2402002d li v0,45
400aa8: a1020000 sb v0,0(t0)
400aac: 25080001 addiu t0,t0,1
400ab0: 01043023 subu a2,t0,a0
400ab4: 0126102a slt v0,t1,a2
400ab8: 10400002 beqz v0,400ac4 <user_PrintNum+0x9c>
400abc: 00000000 nop
400ac0: 00c04821 move t1,a2
400ac4: 11800002 beqz t4,400ad0 <user_PrintNum+0xa8>
400ac8: 00000000 nop
400acc: 240a0020 li t2,32
400ad0: 10e00033 beqz a3,400ba0 <user_PrintNum+0x178>
400ad4: 00c9102a slt v0,a2,t1
400ad8: 15800031 bnez t4,400ba0 <user_PrintNum+0x178>
400adc: 00000000 nop
400ae0: 24020030 li v0,48
400ae4: 1542002e bne t2,v0,400ba0 <user_PrintNum+0x178>
400ae8: 00c9102a slt v0,a2,t1
400aec: 24c6ffff addiu a2,a2,-1
400af0: 2528ffff addiu t0,t1,-1
400af4: 00c8102a slt v0,a2,t0
400af8: 10400008 beqz v0,400b1c <user_PrintNum+0xf4>
400afc: 01061023 subu v0,t0,a2
400b00: 00861821 addu v1,a0,a2
400b04: 00002821 move a1,zero
400b08: 24070030 li a3,48
400b0c: a0670000 sb a3,0(v1)
400b10: 24a50001 addiu a1,a1,1
400b14: 14a2fffd bne a1,v0,400b0c <user_PrintNum+0xe4>
400b18: 24630001 addiu v1,v1,1
400b1c: 00891821 addu v1,a0,t1
400b20: 2402002d li v0,45
400b24: 1000000d b 400b5c <user_PrintNum+0x134>
400b28: a062ffff sb v0,-1(v1)
400b2c: a0aa0000 sb t2,0(a1)
400b30: 24630001 addiu v1,v1,1
400b34: 01261023 subu v0,t1,a2
400b38: 1462fffc bne v1,v0,400b2c <user_PrintNum+0x104>
400b3c: 24a50001 addiu a1,a1,1
400b40: 11800006 beqz t4,400b5c <user_PrintNum+0x134>
400b44: 00000000 nop
400b48: 24c6ffff addiu a2,a2,-1
400b4c: 1cc00005 bgtz a2,400b64 <user_PrintNum+0x13c>
400b50: 00003821 move a3,zero
400b54: 03e00008 jr ra
400b58: 01201021 move v0,t1
400b5c: 1000fffb b 400b4c <user_PrintNum+0x124>
400b60: 2526ffff addiu a2,t1,-1
400b64: 00802821 move a1,a0
400b68: 00862021 addu a0,a0,a2
400b6c: 80a20000 lb v0,0(a1)
400b70: 90830000 lbu v1,0(a0)
400b74: 00000000 nop
400b78: a0a30000 sb v1,0(a1)
400b7c: a0820000 sb v0,0(a0)
400b80: 24e70001 addiu a3,a3,1
400b84: 24c6ffff addiu a2,a2,-1
400b88: 24a50001 addiu a1,a1,1
400b8c: 00e6102a slt v0,a3,a2
400b90: 10400008 beqz v0,400bb4 <user_PrintNum+0x18c>
400b94: 2484ffff addiu a0,a0,-1
400b98: 1000fff4 b 400b6c <user_PrintNum+0x144>
400b9c: 00000000 nop
400ba0: 1040ffe7 beqz v0,400b40 <user_PrintNum+0x118>
400ba4: 00000000 nop
400ba8: 00862821 addu a1,a0,a2
400bac: 1000ffdf b 400b2c <user_PrintNum+0x104>
400bb0: 00001821 move v1,zero
400bb4: 01201021 move v0,t1
400bb8: 03e00008 jr ra
400bbc: 00000000 nop
00400bc0 <exit>:
400bc0: 27bdffe8 addiu sp,sp,-24
400bc4: afbf0010 sw ra,16(sp)
400bc8: 0c100554 jal 401550 <syscall_env_destroy>
400bcc: 00002021 move a0,zero
400bd0: 8fbf0010 lw ra,16(sp)
400bd4: 00000000 nop
400bd8: 03e00008 jr ra
400bdc: 27bd0018 addiu sp,sp,24
00400be0 <libmain>:
400be0: 27bdffe0 addiu sp,sp,-32
400be4: afbf001c sw ra,28(sp)
400be8: afb20018 sw s2,24(sp)
400bec: afb10014 sw s1,20(sp)
400bf0: afb00010 sw s0,16(sp)
400bf4: 00808821 move s1,a0
400bf8: 00a09021 move s2,a1
400bfc: 3c100041 lui s0,0x41
400c00: 0c10053a jal 4014e8 <syscall_getenvid>
400c04: ae008004 sw zero,-32764(s0)
400c08: 304203ff andi v0,v0,0x3ff
400c0c: 00022080 sll a0,v0,0x2
400c10: 00021940 sll v1,v0,0x5
400c14: 00641823 subu v1,v1,a0
400c18: 00621821 addu v1,v1,v0
400c1c: 000318c0 sll v1,v1,0x3
400c20: 3c020040 lui v0,0x40
400c24: 8c426000 lw v0,24576(v0)
400c28: 00000000 nop
400c2c: 00621821 addu v1,v1,v0
400c30: ae038004 sw v1,-32764(s0)
400c34: 02202021 move a0,s1
400c38: 0c100038 jal 4000e0 <umain>
400c3c: 02402821 move a1,s2
400c40: 0c1002f0 jal 400bc0 <exit>
400c44: 00000000 nop
400c48: 8fbf001c lw ra,28(sp)
400c4c: 8fb20018 lw s2,24(sp)
400c50: 8fb10014 lw s1,20(sp)
400c54: 8fb00010 lw s0,16(sp)
400c58: 03e00008 jr ra
400c5c: 27bd0020 addiu sp,sp,32
00400c60 <uget_sp>:
400c60: 27bdffe8 addiu sp,sp,-24
400c64: afbf0010 sw ra,16(sp)
400c68: 0c100034 jal 4000d0 <get_sp>
400c6c: 00000000 nop
400c70: 2403f000 li v1,-4096
400c74: 00431024 and v0,v0,v1
400c78: 8fbf0010 lw ra,16(sp)
400c7c: 00000000 nop
400c80: 03e00008 jr ra
400c84: 27bd0018 addiu sp,sp,24
00400c88 <user_bcopy>:
400c88: 30820003 andi v0,a0,0x3
400c8c: 14400004 bnez v0,400ca0 <user_bcopy+0x18>
400c90: 00c53021 addu a2,a2,a1
400c94: 30a20003 andi v0,a1,0x3
400c98: 10400018 beqz v0,400cfc <user_bcopy+0x74>
400c9c: 24a20003 addiu v0,a1,3
400ca0: 00a6102b sltu v0,a1,a2
400ca4: 1440000d bnez v0,400cdc <user_bcopy+0x54>
400ca8: 00a01821 move v1,a1
400cac: 03e00008 jr ra
400cb0: 00000000 nop
400cb4: 8c820000 lw v0,0(a0)
400cb8: 00000000 nop
400cbc: aca20000 sw v0,0(a1)
400cc0: 24a50004 addiu a1,a1,4
400cc4: 24630007 addiu v1,v1,7
400cc8: 0066182b sltu v1,v1,a2
400ccc: 1060fff4 beqz v1,400ca0 <user_bcopy+0x18>
400cd0: 24840004 addiu a0,a0,4
400cd4: 1000fff7 b 400cb4 <user_bcopy+0x2c>
400cd8: 00a01821 move v1,a1
400cdc: 90820000 lbu v0,0(a0)
400ce0: 00000000 nop
400ce4: a0620000 sb v0,0(v1)
400ce8: 24630001 addiu v1,v1,1
400cec: 1066ffef beq v1,a2,400cac <user_bcopy+0x24>
400cf0: 24840001 addiu a0,a0,1
400cf4: 1000fff9 b 400cdc <user_bcopy+0x54>
400cf8: 00000000 nop
400cfc: 0046102b sltu v0,v0,a2
400d00: 1440ffec bnez v0,400cb4 <user_bcopy+0x2c>
400d04: 00a01821 move v1,a1
400d08: 1000ffe6 b 400ca4 <user_bcopy+0x1c>
400d0c: 00a6102b sltu v0,a1,a2
00400d10 <user_bzero>:
400d10: 24a2ffff addiu v0,a1,-1
400d14: 04400007 bltz v0,400d34 <user_bzero+0x24>
400d18: 00801821 move v1,a0
400d1c: 00821021 addu v0,a0,v0
400d20: 24420001 addiu v0,v0,1
400d24: a0600000 sb zero,0(v1)
400d28: 24630001 addiu v1,v1,1
400d2c: 1462fffd bne v1,v0,400d24 <user_bzero+0x14>
400d30: 00000000 nop
400d34: 03e00008 jr ra
400d38: 00000000 nop
00400d3c <pgfault>:
400d3c: 27bdffd8 addiu sp,sp,-40
400d40: afbf0020 sw ra,32(sp)
400d44: afb1001c sw s1,28(sp)
400d48: afb00018 sw s0,24(sp)
400d4c: 00041302 srl v0,a0,0xc
400d50: 3c030040 lui v1,0x40
400d54: 8c636008 lw v1,24584(v1)
400d58: 00021080 sll v0,v0,0x2
400d5c: 00431021 addu v0,v0,v1
400d60: 8c420000 lw v0,0(v0)
400d64: 00000000 nop
400d68: 38420001 xori v0,v0,0x1
400d6c: 30420001 andi v0,v0,0x1
400d70: 10400007 beqz v0,400d90 <pgfault+0x54>
400d74: 2402f000 li v0,-4096
400d78: 3c040040 lui a0,0x40
400d7c: 2484726c addiu a0,a0,29292
400d80: 2405005e li a1,94
400d84: 3c060040 lui a2,0x40
400d88: 0c100096 jal 400258 <_user_panic>
400d8c: 24c67274 addiu a2,a2,29300
400d90: 00828824 and s1,a0,v0
400d94: 00002021 move a0,zero
400d98: 3c057f3f lui a1,0x7f3f
400d9c: 34a5e000 ori a1,a1,0xe000
400da0: 0c100570 jal 4015c0 <syscall_mem_alloc>
400da4: 24060600 li a2,1536
400da8: 04410007 bgez v0,400dc8 <pgfault+0x8c>
400dac: 02202021 move a0,s1
400db0: 3c040040 lui a0,0x40
400db4: 2484726c addiu a0,a0,29292
400db8: 24050066 li a1,102
400dbc: 3c060040 lui a2,0x40
400dc0: 0c100096 jal 400258 <_user_panic>
400dc4: 24c672a0 addiu a2,a2,29344
400dc8: 3c107f3f lui s0,0x7f3f
400dcc: 3605e000 ori a1,s0,0xe000
400dd0: 0c100322 jal 400c88 <user_bcopy>
400dd4: 24061000 li a2,4096
400dd8: 24020600 li v0,1536
400ddc: afa20010 sw v0,16(sp)
400de0: 00002021 move a0,zero
400de4: 3605e000 ori a1,s0,0xe000
400de8: 00003021 move a2,zero
400dec: 0c10057f jal 4015fc <syscall_mem_map>
400df0: 02203821 move a3,s1
400df4: 04410007 bgez v0,400e14 <pgfault+0xd8>
400df8: 00002021 move a0,zero
400dfc: 3c040040 lui a0,0x40
400e00: 2484726c addiu a0,a0,29292
400e04: 2405006e li a1,110
400e08: 3c060040 lui a2,0x40
400e0c: 0c100096 jal 400258 <_user_panic>
400e10: 24c672c8 addiu a2,a2,29384
400e14: 3c057f3f lui a1,0x7f3f
400e18: 0c100591 jal 401644 <syscall_mem_unmap>
400e1c: 34a5e000 ori a1,a1,0xe000
400e20: 04410006 bgez v0,400e3c <pgfault+0x100>
400e24: 3c040040 lui a0,0x40
400e28: 2484726c addiu a0,a0,29292
400e2c: 24050073 li a1,115
400e30: 3c060040 lui a2,0x40
400e34: 0c100096 jal 400258 <_user_panic>
400e38: 24c672ec addiu a2,a2,29420
400e3c: 8fbf0020 lw ra,32(sp)
400e40: 8fb1001c lw s1,28(sp)
400e44: 8fb00018 lw s0,24(sp)
400e48: 03e00008 jr ra
400e4c: 27bd0028 addiu sp,sp,40
00400e50 <duppage>:
400e50: 27bdffd8 addiu sp,sp,-40
400e54: afbf0020 sw ra,32(sp)
400e58: afb1001c sw s1,28(sp)
400e5c: afb00018 sw s0,24(sp)
400e60: 00803021 move a2,a0
400e64: 00058300 sll s0,a1,0xc
400e68: 3c020040 lui v0,0x40
400e6c: 8c426008 lw v0,24584(v0)
400e70: 00052880 sll a1,a1,0x2
400e74: 00a22821 addu a1,a1,v0
400e78: 8ca50000 lw a1,0(a1)
400e7c: 00000000 nop
400e80: 30a20400 andi v0,a1,0x400
400e84: 1440000d bnez v0,400ebc <duppage+0x6c>
400e88: 30a30fff andi v1,a1,0xfff
400e8c: afa30010 sw v1,16(sp)
400e90: 00002021 move a0,zero
400e94: 02002821 move a1,s0
400e98: 0c10057f jal 4015fc <syscall_mem_map>
400e9c: 02003821 move a3,s0
400ea0: 1040003c beqz v0,400f94 <duppage+0x144>
400ea4: 3c040040 lui a0,0x40
400ea8: 2484726c addiu a0,a0,29292
400eac: 24050097 li a1,151
400eb0: 3c060040 lui a2,0x40
400eb4: 0c100096 jal 400258 <_user_panic>
400eb8: 24c67314 addiu a2,a2,29460
400ebc: 30620004 andi v0,v1,0x4
400ec0: 1040000d beqz v0,400ef8 <duppage+0xa8>
400ec4: 30a20001 andi v0,a1,0x1
400ec8: afa30010 sw v1,16(sp)
400ecc: 00002021 move a0,zero
400ed0: 02002821 move a1,s0
400ed4: 0c10057f jal 4015fc <syscall_mem_map>
400ed8: 02003821 move a3,s0
400edc: 1040002d beqz v0,400f94 <duppage+0x144>
400ee0: 3c040040 lui a0,0x40
400ee4: 2484726c addiu a0,a0,29292
400ee8: 2405009c li a1,156
400eec: 3c060040 lui a2,0x40
400ef0: 0c100096 jal 400258 <_user_panic>
400ef4: 24c67334 addiu a2,a2,29492
400ef8: 1040000d beqz v0,400f30 <duppage+0xe0>
400efc: 34710001 ori s1,v1,0x1
400f00: afa30010 sw v1,16(sp)