-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathtest_kernel
10555 lines (10381 loc) · 525 KB
/
test_kernel
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
./kernel/kernel: file format elf32-i386
Disassembly of section .text:
00030000 <start>:
30000: bd 00 00 00 00 mov $0x0,%ebp
30005: bc 00 00 00 08 mov $0x8000000,%esp
3000a: e9 ed 12 00 00 jmp 312fc <init>
0003000f <vec0>:
3000f: 6a 00 push $0x0
30011: 6a 00 push $0x0
30013: eb 72 jmp 30087 <asm_do_irq>
00030015 <vec1>:
30015: 6a 00 push $0x0
30017: 6a 01 push $0x1
30019: eb 6c jmp 30087 <asm_do_irq>
0003001b <vec2>:
3001b: 6a 00 push $0x0
3001d: 6a 02 push $0x2
3001f: eb 66 jmp 30087 <asm_do_irq>
00030021 <vec3>:
30021: 6a 00 push $0x0
30023: 6a 03 push $0x3
30025: eb 60 jmp 30087 <asm_do_irq>
00030027 <vec4>:
30027: 6a 00 push $0x0
30029: 6a 04 push $0x4
3002b: eb 5a jmp 30087 <asm_do_irq>
0003002d <vec5>:
3002d: 6a 00 push $0x0
3002f: 6a 05 push $0x5
30031: eb 54 jmp 30087 <asm_do_irq>
00030033 <vec6>:
30033: 6a 00 push $0x0
30035: 6a 06 push $0x6
30037: eb 4e jmp 30087 <asm_do_irq>
00030039 <vec7>:
30039: 6a 00 push $0x0
3003b: 6a 07 push $0x7
3003d: eb 48 jmp 30087 <asm_do_irq>
0003003f <vec8>:
3003f: 6a 08 push $0x8
30041: eb 44 jmp 30087 <asm_do_irq>
00030043 <vec9>:
30043: 6a 00 push $0x0
30045: 6a 09 push $0x9
30047: eb 3e jmp 30087 <asm_do_irq>
00030049 <vec10>:
30049: 6a 0a push $0xa
3004b: eb 3a jmp 30087 <asm_do_irq>
0003004d <vec11>:
3004d: 6a 0b push $0xb
3004f: eb 36 jmp 30087 <asm_do_irq>
00030051 <vec12>:
30051: 6a 0c push $0xc
30053: eb 32 jmp 30087 <asm_do_irq>
00030055 <vec13>:
30055: 6a 0d push $0xd
30057: eb 2e jmp 30087 <asm_do_irq>
00030059 <vec14>:
30059: 6a 0e push $0xe
3005b: eb 2a jmp 30087 <asm_do_irq>
0003005d <vecsys>:
3005d: 6a 00 push $0x0
3005f: 68 80 00 00 00 push $0x80
30064: eb 21 jmp 30087 <asm_do_irq>
00030066 <irq0>:
30066: 6a 00 push $0x0
30068: 68 e8 03 00 00 push $0x3e8
3006d: eb 18 jmp 30087 <asm_do_irq>
0003006f <irq1>:
3006f: 6a 00 push $0x0
30071: 68 e9 03 00 00 push $0x3e9
30076: eb 0f jmp 30087 <asm_do_irq>
00030078 <irq14>:
30078: 6a 00 push $0x0
3007a: 68 f6 03 00 00 push $0x3f6
3007f: eb 06 jmp 30087 <asm_do_irq>
00030081 <irq_empty>:
30081: 6a 00 push $0x0
30083: 6a ff push $0xffffffff
30085: eb 00 jmp 30087 <asm_do_irq>
00030087 <asm_do_irq>:
30087: 60 pusha
30088: 54 push %esp
30089: e8 98 05 00 00 call 30626 <irq_handle>
3008e: 83 c4 04 add $0x4,%esp
30091: 61 popa
30092: 83 c4 08 add $0x8,%esp
30095: cf iret
00030096 <write_idtr>:
30096: 55 push %ebp
30097: 89 e5 mov %esp,%ebp
30099: e8 b9 03 00 00 call 30457 <__x86.get_pc_thunk.ax>
3009e: 05 62 bf 00 00 add $0xbf62,%eax
300a3: 8b 55 0c mov 0xc(%ebp),%edx
300a6: 4a dec %edx
300a7: 66 89 90 00 18 00 00 mov %dx,0x1800(%eax)
300ae: 8b 55 08 mov 0x8(%ebp),%edx
300b1: 66 89 90 02 18 00 00 mov %dx,0x1802(%eax)
300b8: 8b 55 08 mov 0x8(%ebp),%edx
300bb: c1 ea 10 shr $0x10,%edx
300be: 66 89 90 04 18 00 00 mov %dx,0x1804(%eax)
300c5: 8d 80 00 18 00 00 lea 0x1800(%eax),%eax
300cb: 0f 01 18 lidtl (%eax)
300ce: 90 nop
300cf: 5d pop %ebp
300d0: c3 ret
000300d1 <sti>:
300d1: 55 push %ebp
300d2: 89 e5 mov %esp,%ebp
300d4: e8 7e 03 00 00 call 30457 <__x86.get_pc_thunk.ax>
300d9: 05 27 bf 00 00 add $0xbf27,%eax
300de: fb sti
300df: 90 nop
300e0: 5d pop %ebp
300e1: c3 ret
000300e2 <set_intr>:
300e2: 55 push %ebp
300e3: 89 e5 mov %esp,%ebp
300e5: e8 6d 03 00 00 call 30457 <__x86.get_pc_thunk.ax>
300ea: 05 16 bf 00 00 add $0xbf16,%eax
300ef: 8b 45 10 mov 0x10(%ebp),%eax
300f2: 8b 55 08 mov 0x8(%ebp),%edx
300f5: 66 89 02 mov %ax,(%edx)
300f8: 8b 45 0c mov 0xc(%ebp),%eax
300fb: 8b 55 08 mov 0x8(%ebp),%edx
300fe: 66 89 42 02 mov %ax,0x2(%edx)
30102: 8b 45 08 mov 0x8(%ebp),%eax
30105: c6 40 04 00 movb $0x0,0x4(%eax)
30109: 8b 45 08 mov 0x8(%ebp),%eax
3010c: 8a 50 05 mov 0x5(%eax),%dl
3010f: 83 e2 f0 and $0xfffffff0,%edx
30112: 83 ca 0e or $0xe,%edx
30115: 88 50 05 mov %dl,0x5(%eax)
30118: 8b 45 08 mov 0x8(%ebp),%eax
3011b: 8a 50 05 mov 0x5(%eax),%dl
3011e: 83 e2 ef and $0xffffffef,%edx
30121: 88 50 05 mov %dl,0x5(%eax)
30124: 8b 45 14 mov 0x14(%ebp),%eax
30127: 83 e0 03 and $0x3,%eax
3012a: 88 c2 mov %al,%dl
3012c: 8b 45 08 mov 0x8(%ebp),%eax
3012f: 83 e2 03 and $0x3,%edx
30132: 88 d1 mov %dl,%cl
30134: c1 e1 05 shl $0x5,%ecx
30137: 8a 50 05 mov 0x5(%eax),%dl
3013a: 83 e2 9f and $0xffffff9f,%edx
3013d: 09 ca or %ecx,%edx
3013f: 88 50 05 mov %dl,0x5(%eax)
30142: 8b 45 08 mov 0x8(%ebp),%eax
30145: 8a 50 05 mov 0x5(%eax),%dl
30148: 83 ca 80 or $0xffffff80,%edx
3014b: 88 50 05 mov %dl,0x5(%eax)
3014e: 8b 45 10 mov 0x10(%ebp),%eax
30151: c1 e8 10 shr $0x10,%eax
30154: 8b 55 08 mov 0x8(%ebp),%edx
30157: 66 89 42 06 mov %ax,0x6(%edx)
3015b: 90 nop
3015c: 5d pop %ebp
3015d: c3 ret
0003015e <set_trap>:
3015e: 55 push %ebp
3015f: 89 e5 mov %esp,%ebp
30161: e8 f1 02 00 00 call 30457 <__x86.get_pc_thunk.ax>
30166: 05 9a be 00 00 add $0xbe9a,%eax
3016b: 8b 45 10 mov 0x10(%ebp),%eax
3016e: 8b 55 08 mov 0x8(%ebp),%edx
30171: 66 89 02 mov %ax,(%edx)
30174: 8b 45 0c mov 0xc(%ebp),%eax
30177: 8b 55 08 mov 0x8(%ebp),%edx
3017a: 66 89 42 02 mov %ax,0x2(%edx)
3017e: 8b 45 08 mov 0x8(%ebp),%eax
30181: c6 40 04 00 movb $0x0,0x4(%eax)
30185: 8b 45 08 mov 0x8(%ebp),%eax
30188: 8a 50 05 mov 0x5(%eax),%dl
3018b: 83 ca 0f or $0xf,%edx
3018e: 88 50 05 mov %dl,0x5(%eax)
30191: 8b 45 08 mov 0x8(%ebp),%eax
30194: 8a 50 05 mov 0x5(%eax),%dl
30197: 83 e2 ef and $0xffffffef,%edx
3019a: 88 50 05 mov %dl,0x5(%eax)
3019d: 8b 45 14 mov 0x14(%ebp),%eax
301a0: 83 e0 03 and $0x3,%eax
301a3: 88 c2 mov %al,%dl
301a5: 8b 45 08 mov 0x8(%ebp),%eax
301a8: 83 e2 03 and $0x3,%edx
301ab: 88 d1 mov %dl,%cl
301ad: c1 e1 05 shl $0x5,%ecx
301b0: 8a 50 05 mov 0x5(%eax),%dl
301b3: 83 e2 9f and $0xffffff9f,%edx
301b6: 09 ca or %ecx,%edx
301b8: 88 50 05 mov %dl,0x5(%eax)
301bb: 8b 45 08 mov 0x8(%ebp),%eax
301be: 8a 50 05 mov 0x5(%eax),%dl
301c1: 83 ca 80 or $0xffffff80,%edx
301c4: 88 50 05 mov %dl,0x5(%eax)
301c7: 8b 45 10 mov 0x10(%ebp),%eax
301ca: c1 e8 10 shr $0x10,%eax
301cd: 8b 55 08 mov 0x8(%ebp),%edx
301d0: 66 89 42 06 mov %ax,0x6(%edx)
301d4: 90 nop
301d5: 5d pop %ebp
301d6: c3 ret
000301d7 <init_idt>:
301d7: 55 push %ebp
301d8: 89 e5 mov %esp,%ebp
301da: 53 push %ebx
301db: 83 ec 10 sub $0x10,%esp
301de: e8 78 02 00 00 call 3045b <__x86.get_pc_thunk.bx>
301e3: 81 c3 1d be 00 00 add $0xbe1d,%ebx
301e9: c7 45 f8 00 00 00 00 movl $0x0,-0x8(%ebp)
301f0: eb 2b jmp 3021d <init_idt+0x46>
301f2: c7 c0 81 00 03 00 mov $0x30081,%eax
301f8: 89 c2 mov %eax,%edx
301fa: 8b 45 f8 mov -0x8(%ebp),%eax
301fd: 8d 0c c5 00 00 00 00 lea 0x0(,%eax,8),%ecx
30204: 8d 83 00 10 00 00 lea 0x1000(%ebx),%eax
3020a: 01 c8 add %ecx,%eax
3020c: 6a 00 push $0x0
3020e: 52 push %edx
3020f: 6a 08 push $0x8
30211: 50 push %eax
30212: e8 47 ff ff ff call 3015e <set_trap>
30217: 83 c4 10 add $0x10,%esp
3021a: ff 45 f8 incl -0x8(%ebp)
3021d: 81 7d f8 ff 00 00 00 cmpl $0xff,-0x8(%ebp)
30224: 7e cc jle 301f2 <init_idt+0x1b>
30226: c7 c0 0f 00 03 00 mov $0x3000f,%eax
3022c: 6a 00 push $0x0
3022e: 50 push %eax
3022f: 6a 08 push $0x8
30231: 8d 83 00 10 00 00 lea 0x1000(%ebx),%eax
30237: 50 push %eax
30238: e8 21 ff ff ff call 3015e <set_trap>
3023d: 83 c4 10 add $0x10,%esp
30240: c7 c0 15 00 03 00 mov $0x30015,%eax
30246: 89 c2 mov %eax,%edx
30248: 8d 83 08 10 00 00 lea 0x1008(%ebx),%eax
3024e: 6a 00 push $0x0
30250: 52 push %edx
30251: 6a 08 push $0x8
30253: 50 push %eax
30254: e8 05 ff ff ff call 3015e <set_trap>
30259: 83 c4 10 add $0x10,%esp
3025c: c7 c0 1b 00 03 00 mov $0x3001b,%eax
30262: 89 c2 mov %eax,%edx
30264: 8d 83 10 10 00 00 lea 0x1010(%ebx),%eax
3026a: 6a 00 push $0x0
3026c: 52 push %edx
3026d: 6a 08 push $0x8
3026f: 50 push %eax
30270: e8 e9 fe ff ff call 3015e <set_trap>
30275: 83 c4 10 add $0x10,%esp
30278: c7 c0 21 00 03 00 mov $0x30021,%eax
3027e: 89 c2 mov %eax,%edx
30280: 8d 83 18 10 00 00 lea 0x1018(%ebx),%eax
30286: 6a 00 push $0x0
30288: 52 push %edx
30289: 6a 08 push $0x8
3028b: 50 push %eax
3028c: e8 cd fe ff ff call 3015e <set_trap>
30291: 83 c4 10 add $0x10,%esp
30294: c7 c0 27 00 03 00 mov $0x30027,%eax
3029a: 89 c2 mov %eax,%edx
3029c: 8d 83 20 10 00 00 lea 0x1020(%ebx),%eax
302a2: 6a 00 push $0x0
302a4: 52 push %edx
302a5: 6a 08 push $0x8
302a7: 50 push %eax
302a8: e8 b1 fe ff ff call 3015e <set_trap>
302ad: 83 c4 10 add $0x10,%esp
302b0: c7 c0 2d 00 03 00 mov $0x3002d,%eax
302b6: 89 c2 mov %eax,%edx
302b8: 8d 83 28 10 00 00 lea 0x1028(%ebx),%eax
302be: 6a 00 push $0x0
302c0: 52 push %edx
302c1: 6a 08 push $0x8
302c3: 50 push %eax
302c4: e8 95 fe ff ff call 3015e <set_trap>
302c9: 83 c4 10 add $0x10,%esp
302cc: c7 c0 33 00 03 00 mov $0x30033,%eax
302d2: 89 c2 mov %eax,%edx
302d4: 8d 83 30 10 00 00 lea 0x1030(%ebx),%eax
302da: 6a 00 push $0x0
302dc: 52 push %edx
302dd: 6a 08 push $0x8
302df: 50 push %eax
302e0: e8 79 fe ff ff call 3015e <set_trap>
302e5: 83 c4 10 add $0x10,%esp
302e8: c7 c0 39 00 03 00 mov $0x30039,%eax
302ee: 89 c2 mov %eax,%edx
302f0: 8d 83 38 10 00 00 lea 0x1038(%ebx),%eax
302f6: 6a 00 push $0x0
302f8: 52 push %edx
302f9: 6a 08 push $0x8
302fb: 50 push %eax
302fc: e8 5d fe ff ff call 3015e <set_trap>
30301: 83 c4 10 add $0x10,%esp
30304: c7 c0 3f 00 03 00 mov $0x3003f,%eax
3030a: 89 c2 mov %eax,%edx
3030c: 8d 83 40 10 00 00 lea 0x1040(%ebx),%eax
30312: 6a 00 push $0x0
30314: 52 push %edx
30315: 6a 08 push $0x8
30317: 50 push %eax
30318: e8 41 fe ff ff call 3015e <set_trap>
3031d: 83 c4 10 add $0x10,%esp
30320: c7 c0 43 00 03 00 mov $0x30043,%eax
30326: 89 c2 mov %eax,%edx
30328: 8d 83 48 10 00 00 lea 0x1048(%ebx),%eax
3032e: 6a 00 push $0x0
30330: 52 push %edx
30331: 6a 08 push $0x8
30333: 50 push %eax
30334: e8 25 fe ff ff call 3015e <set_trap>
30339: 83 c4 10 add $0x10,%esp
3033c: c7 c0 49 00 03 00 mov $0x30049,%eax
30342: 89 c2 mov %eax,%edx
30344: 8d 83 50 10 00 00 lea 0x1050(%ebx),%eax
3034a: 6a 00 push $0x0
3034c: 52 push %edx
3034d: 6a 08 push $0x8
3034f: 50 push %eax
30350: e8 09 fe ff ff call 3015e <set_trap>
30355: 83 c4 10 add $0x10,%esp
30358: c7 c0 4d 00 03 00 mov $0x3004d,%eax
3035e: 89 c2 mov %eax,%edx
30360: 8d 83 58 10 00 00 lea 0x1058(%ebx),%eax
30366: 6a 00 push $0x0
30368: 52 push %edx
30369: 6a 08 push $0x8
3036b: 50 push %eax
3036c: e8 ed fd ff ff call 3015e <set_trap>
30371: 83 c4 10 add $0x10,%esp
30374: c7 c0 51 00 03 00 mov $0x30051,%eax
3037a: 89 c2 mov %eax,%edx
3037c: 8d 83 60 10 00 00 lea 0x1060(%ebx),%eax
30382: 6a 00 push $0x0
30384: 52 push %edx
30385: 6a 08 push $0x8
30387: 50 push %eax
30388: e8 d1 fd ff ff call 3015e <set_trap>
3038d: 83 c4 10 add $0x10,%esp
30390: c7 c0 55 00 03 00 mov $0x30055,%eax
30396: 89 c2 mov %eax,%edx
30398: 8d 83 68 10 00 00 lea 0x1068(%ebx),%eax
3039e: 6a 00 push $0x0
303a0: 52 push %edx
303a1: 6a 08 push $0x8
303a3: 50 push %eax
303a4: e8 b5 fd ff ff call 3015e <set_trap>
303a9: 83 c4 10 add $0x10,%esp
303ac: c7 c0 59 00 03 00 mov $0x30059,%eax
303b2: 89 c2 mov %eax,%edx
303b4: 8d 83 70 10 00 00 lea 0x1070(%ebx),%eax
303ba: 6a 00 push $0x0
303bc: 52 push %edx
303bd: 6a 08 push $0x8
303bf: 50 push %eax
303c0: e8 99 fd ff ff call 3015e <set_trap>
303c5: 83 c4 10 add $0x10,%esp
303c8: c7 c0 5d 00 03 00 mov $0x3005d,%eax
303ce: 89 c2 mov %eax,%edx
303d0: 8d 83 00 14 00 00 lea 0x1400(%ebx),%eax
303d6: 6a 03 push $0x3
303d8: 52 push %edx
303d9: 6a 08 push $0x8
303db: 50 push %eax
303dc: e8 7d fd ff ff call 3015e <set_trap>
303e1: 83 c4 10 add $0x10,%esp
303e4: c7 c0 66 00 03 00 mov $0x30066,%eax
303ea: 89 c2 mov %eax,%edx
303ec: 8d 83 00 11 00 00 lea 0x1100(%ebx),%eax
303f2: 6a 00 push $0x0
303f4: 52 push %edx
303f5: 6a 08 push $0x8
303f7: 50 push %eax
303f8: e8 e5 fc ff ff call 300e2 <set_intr>
303fd: 83 c4 10 add $0x10,%esp
30400: c7 c0 6f 00 03 00 mov $0x3006f,%eax
30406: 89 c2 mov %eax,%edx
30408: 8d 83 08 11 00 00 lea 0x1108(%ebx),%eax
3040e: 6a 00 push $0x0
30410: 52 push %edx
30411: 6a 08 push $0x8
30413: 50 push %eax
30414: e8 c9 fc ff ff call 300e2 <set_intr>
30419: 83 c4 10 add $0x10,%esp
3041c: c7 c0 78 00 03 00 mov $0x30078,%eax
30422: 89 c2 mov %eax,%edx
30424: 8d 83 70 11 00 00 lea 0x1170(%ebx),%eax
3042a: 6a 00 push $0x0
3042c: 52 push %edx
3042d: 6a 08 push $0x8
3042f: 50 push %eax
30430: e8 ad fc ff ff call 300e2 <set_intr>
30435: 83 c4 10 add $0x10,%esp
30438: 68 00 08 00 00 push $0x800
3043d: 8d 83 00 10 00 00 lea 0x1000(%ebx),%eax
30443: 50 push %eax
30444: e8 4d fc ff ff call 30096 <write_idtr>
30449: 83 c4 08 add $0x8,%esp
3044c: e8 80 fc ff ff call 300d1 <sti>
30451: 90 nop
30452: 8b 5d fc mov -0x4(%ebp),%ebx
30455: c9 leave
30456: c3 ret
00030457 <__x86.get_pc_thunk.ax>:
30457: 8b 04 24 mov (%esp),%eax
3045a: c3 ret
0003045b <__x86.get_pc_thunk.bx>:
3045b: 8b 1c 24 mov (%esp),%ebx
3045e: c3 ret
0003045f <out_byte>:
3045f: 55 push %ebp
30460: 89 e5 mov %esp,%ebp
30462: 83 ec 08 sub $0x8,%esp
30465: e8 ed ff ff ff call 30457 <__x86.get_pc_thunk.ax>
3046a: 05 96 bb 00 00 add $0xbb96,%eax
3046f: 8b 45 08 mov 0x8(%ebp),%eax
30472: 8b 55 0c mov 0xc(%ebp),%edx
30475: 66 89 45 fc mov %ax,-0x4(%ebp)
30479: 88 55 f8 mov %dl,-0x8(%ebp)
3047c: 8a 45 f8 mov -0x8(%ebp),%al
3047f: 8b 55 fc mov -0x4(%ebp),%edx
30482: ee out %al,(%dx)
30483: 90 nop
30484: c9 leave
30485: c3 ret
00030486 <init_i8259>:
30486: 55 push %ebp
30487: 89 e5 mov %esp,%ebp
30489: e8 c9 ff ff ff call 30457 <__x86.get_pc_thunk.ax>
3048e: 05 72 bb 00 00 add $0xbb72,%eax
30493: 68 ff 00 00 00 push $0xff
30498: 6a 21 push $0x21
3049a: e8 c0 ff ff ff call 3045f <out_byte>
3049f: 83 c4 08 add $0x8,%esp
304a2: 68 ff 00 00 00 push $0xff
304a7: 68 a1 00 00 00 push $0xa1
304ac: e8 ae ff ff ff call 3045f <out_byte>
304b1: 83 c4 08 add $0x8,%esp
304b4: 6a 11 push $0x11
304b6: 6a 20 push $0x20
304b8: e8 a2 ff ff ff call 3045f <out_byte>
304bd: 83 c4 08 add $0x8,%esp
304c0: 6a 20 push $0x20
304c2: 6a 21 push $0x21
304c4: e8 96 ff ff ff call 3045f <out_byte>
304c9: 83 c4 08 add $0x8,%esp
304cc: 6a 04 push $0x4
304ce: 6a 21 push $0x21
304d0: e8 8a ff ff ff call 3045f <out_byte>
304d5: 83 c4 08 add $0x8,%esp
304d8: 6a 03 push $0x3
304da: 6a 21 push $0x21
304dc: e8 7e ff ff ff call 3045f <out_byte>
304e1: 83 c4 08 add $0x8,%esp
304e4: 6a 11 push $0x11
304e6: 68 a0 00 00 00 push $0xa0
304eb: e8 6f ff ff ff call 3045f <out_byte>
304f0: 83 c4 08 add $0x8,%esp
304f3: 6a 28 push $0x28
304f5: 68 a1 00 00 00 push $0xa1
304fa: e8 60 ff ff ff call 3045f <out_byte>
304ff: 83 c4 08 add $0x8,%esp
30502: 6a 02 push $0x2
30504: 68 a1 00 00 00 push $0xa1
30509: e8 51 ff ff ff call 3045f <out_byte>
3050e: 83 c4 08 add $0x8,%esp
30511: 6a 03 push $0x3
30513: 68 a1 00 00 00 push $0xa1
30518: e8 42 ff ff ff call 3045f <out_byte>
3051d: 83 c4 08 add $0x8,%esp
30520: 6a 68 push $0x68
30522: 6a 20 push $0x20
30524: e8 36 ff ff ff call 3045f <out_byte>
30529: 83 c4 08 add $0x8,%esp
3052c: 6a 0a push $0xa
3052e: 6a 20 push $0x20
30530: e8 2a ff ff ff call 3045f <out_byte>
30535: 83 c4 08 add $0x8,%esp
30538: 6a 68 push $0x68
3053a: 68 a0 00 00 00 push $0xa0
3053f: e8 1b ff ff ff call 3045f <out_byte>
30544: 83 c4 08 add $0x8,%esp
30547: 6a 0a push $0xa
30549: 68 a0 00 00 00 push $0xa0
3054e: e8 0c ff ff ff call 3045f <out_byte>
30553: 83 c4 08 add $0x8,%esp
30556: 90 nop
30557: c9 leave
30558: c3 ret
00030559 <add_irq_handle>:
30559: 55 push %ebp
3055a: 89 e5 mov %esp,%ebp
3055c: 53 push %ebx
3055d: 83 ec 14 sub $0x14,%esp
30560: e8 f6 fe ff ff call 3045b <__x86.get_pc_thunk.bx>
30565: 81 c3 9b ba 00 00 add $0xba9b,%ebx
3056b: 83 7d 08 0f cmpl $0xf,0x8(%ebp)
3056f: 7e 2f jle 305a0 <add_irq_handle+0x47>
30571: 83 ec 0c sub $0xc,%esp
30574: 8d 83 40 c5 ff ff lea -0x3ac0(%ebx),%eax
3057a: 50 push %eax
3057b: 8d 83 2c c7 ff ff lea -0x38d4(%ebx),%eax
30581: 50 push %eax
30582: 6a 16 push $0x16
30584: 8d 83 53 c5 ff ff lea -0x3aad(%ebx),%eax
3058a: 50 push %eax
3058b: 8d 83 68 c5 ff ff lea -0x3a98(%ebx),%eax
30591: 50 push %eax
30592: e8 01 0a 00 00 call 30f98 <printk>
30597: 83 c4 20 add $0x20,%esp
3059a: b8 01 00 00 00 mov $0x1,%eax
3059f: 82 8b 83 60 19 00 00 orb $0x0,0x196083(%ebx)
305a6: 83 f8 20 cmp $0x20,%eax
305a9: 7e 2f jle 305da <add_irq_handle+0x81>
305ab: 83 ec 0c sub $0xc,%esp
305ae: 8d 83 b2 c5 ff ff lea -0x3a4e(%ebx),%eax
305b4: 50 push %eax
305b5: 8d 83 2c c7 ff ff lea -0x38d4(%ebx),%eax
305bb: 50 push %eax
305bc: 6a 17 push $0x17
305be: 8d 83 53 c5 ff ff lea -0x3aad(%ebx),%eax
305c4: 50 push %eax
305c5: 8d 83 68 c5 ff ff lea -0x3a98(%ebx),%eax
305cb: 50 push %eax
305cc: e8 c7 09 00 00 call 30f98 <printk>
305d1: 83 c4 20 add $0x20,%esp
305d4: b8 01 00 00 00 mov $0x1,%eax
305d9: 82 8b 83 60 19 00 00 orb $0x0,0x196083(%ebx)
305e0: 8d 50 01 lea 0x1(%eax),%edx
305e3: 89 93 60 19 00 00 mov %edx,0x1960(%ebx)
305e9: 8d 14 c5 00 00 00 00 lea 0x0(,%eax,8),%edx
305f0: 8d 83 20 18 00 00 lea 0x1820(%ebx),%eax
305f6: 01 d0 add %edx,%eax
305f8: 89 45 f4 mov %eax,-0xc(%ebp)
305fb: 8b 45 f4 mov -0xc(%ebp),%eax
305fe: 8b 55 0c mov 0xc(%ebp),%edx
30601: 89 10 mov %edx,(%eax)
30603: 8b 45 08 mov 0x8(%ebp),%eax
30606: 8b 94 83 20 19 00 00 mov 0x1920(%ebx,%eax,4),%edx
3060d: 8b 45 f4 mov -0xc(%ebp),%eax
30610: 89 50 04 mov %edx,0x4(%eax)
30613: 8b 45 08 mov 0x8(%ebp),%eax
30616: 8b 55 f4 mov -0xc(%ebp),%edx
30619: 89 94 83 20 19 00 00 mov %edx,0x1920(%ebx,%eax,4)
30620: 90 nop
30621: 8b 5d fc mov -0x4(%ebp),%ebx
30624: c9 leave
30625: c3 ret
00030626 <irq_handle>:
30626: 55 push %ebp
30627: 89 e5 mov %esp,%ebp
30629: 53 push %ebx
3062a: 83 ec 14 sub $0x14,%esp
3062d: e8 29 fe ff ff call 3045b <__x86.get_pc_thunk.bx>
30632: 81 c3 ce b9 00 00 add $0xb9ce,%ebx
30638: 8b 45 08 mov 0x8(%ebp),%eax
3063b: 8b 40 20 mov 0x20(%eax),%eax
3063e: 89 45 f0 mov %eax,-0x10(%ebp)
30641: 83 7d f0 00 cmpl $0x0,-0x10(%ebp)
30645: 79 2a jns 30671 <irq_handle+0x4b>
30647: 8d 83 3c c7 ff ff lea -0x38c4(%ebx),%eax
3064d: 50 push %eax
3064e: 6a 24 push $0x24
30650: 8d 83 53 c5 ff ff lea -0x3aad(%ebx),%eax
30656: 50 push %eax
30657: 8d 83 d0 c5 ff ff lea -0x3a30(%ebx),%eax
3065d: 50 push %eax
3065e: e8 35 09 00 00 call 30f98 <printk>
30663: 83 c4 10 add $0x10,%esp
30666: b8 01 00 00 00 mov $0x1,%eax
3066b: 82 e9 f9 sub $0xf9,%cl
3066e: 00 00 add %al,(%eax)
30670: 00 81 7d f0 80 00 add %al,0x80f07d(%ecx)
30676: 00 00 add %al,(%eax)
30678: 75 13 jne 3068d <irq_handle+0x67>
3067a: 83 ec 0c sub $0xc,%esp
3067d: ff 75 08 pushl 0x8(%ebp)
30680: e8 89 0b 00 00 call 3120e <do_syscall>
30685: 83 c4 10 add $0x10,%esp
30688: e9 dd 00 00 00 jmp 3076a <irq_handle+0x144>
3068d: 81 7d f0 e7 03 00 00 cmpl $0x3e7,-0x10(%ebp)
30694: 7f 37 jg 306cd <irq_handle+0xa7>
30696: 8b 45 08 mov 0x8(%ebp),%eax
30699: 8b 40 28 mov 0x28(%eax),%eax
3069c: 83 ec 08 sub $0x8,%esp
3069f: 50 push %eax
306a0: ff 75 f0 pushl -0x10(%ebp)
306a3: 8d 83 3c c7 ff ff lea -0x38c4(%ebx),%eax
306a9: 50 push %eax
306aa: 6a 28 push $0x28
306ac: 8d 83 53 c5 ff ff lea -0x3aad(%ebx),%eax
306b2: 50 push %eax
306b3: 8d 83 1c c6 ff ff lea -0x39e4(%ebx),%eax
306b9: 50 push %eax
306ba: e8 d9 08 00 00 call 30f98 <printk>
306bf: 83 c4 20 add $0x20,%esp
306c2: b8 01 00 00 00 mov $0x1,%eax
306c7: 82 e9 9d sub $0x9d,%cl
306ca: 00 00 add %al,(%eax)
306cc: 00 81 7d f0 e7 03 add %al,0x3e7f07d(%ecx)
306d2: 00 00 add %al,(%eax)
306d4: 0f 8e 90 00 00 00 jle 3076a <irq_handle+0x144>
306da: 8b 45 f0 mov -0x10(%ebp),%eax
306dd: 2d e8 03 00 00 sub $0x3e8,%eax
306e2: 89 45 ec mov %eax,-0x14(%ebp)
306e5: 83 7d ec 0f cmpl $0xf,-0x14(%ebp)
306e9: 7e 2f jle 3071a <irq_handle+0xf4>
306eb: 83 ec 0c sub $0xc,%esp
306ee: 8d 83 76 c6 ff ff lea -0x398a(%ebx),%eax
306f4: 50 push %eax
306f5: 8d 83 3c c7 ff ff lea -0x38c4(%ebx),%eax
306fb: 50 push %eax
306fc: 6a 2b push $0x2b
306fe: 8d 83 53 c5 ff ff lea -0x3aad(%ebx),%eax
30704: 50 push %eax
30705: 8d 83 68 c5 ff ff lea -0x3a98(%ebx),%eax
3070b: 50 push %eax
3070c: e8 87 08 00 00 call 30f98 <printk>
30711: 83 c4 20 add $0x20,%esp
30714: b8 01 00 00 00 mov $0x1,%eax
30719: 82 83 7d ec 00 75 25 addb $0x25,0x7500ec7d(%ebx)
30720: 8d 83 3c c7 ff ff lea -0x38c4(%ebx),%eax
30726: 50 push %eax
30727: 6a 2d push $0x2d
30729: 8d 83 53 c5 ff ff lea -0x3aad(%ebx),%eax
3072f: 50 push %eax
30730: 8d 83 8c c6 ff ff lea -0x3974(%ebx),%eax
30736: 50 push %eax
30737: e8 5c 08 00 00 call 30f98 <printk>
3073c: 83 c4 10 add $0x10,%esp
3073f: b8 01 00 00 00 mov $0x1,%eax
30744: 82 8b 45 ec 8b 84 83 orb $0x83,-0x7b7413bb(%ebx)
3074b: 20 19 and %bl,(%ecx)
3074d: 00 00 add %al,(%eax)
3074f: 89 45 f4 mov %eax,-0xc(%ebp)
30752: eb 10 jmp 30764 <irq_handle+0x13e>
30754: 8b 45 f4 mov -0xc(%ebp),%eax
30757: 8b 00 mov (%eax),%eax
30759: ff d0 call *%eax
3075b: 8b 45 f4 mov -0xc(%ebp),%eax
3075e: 8b 40 04 mov 0x4(%eax),%eax
30761: 89 45 f4 mov %eax,-0xc(%ebp)
30764: 83 7d f4 00 cmpl $0x0,-0xc(%ebp)
30768: 75 ea jne 30754 <irq_handle+0x12e>
3076a: 90 nop
3076b: 8b 5d fc mov -0x4(%ebp),%ebx
3076e: c9 leave
3076f: c3 ret
00030770 <wait_intr>:
30770: 55 push %ebp
30771: 89 e5 mov %esp,%ebp
30773: e8 df fc ff ff call 30457 <__x86.get_pc_thunk.ax>
30778: 05 88 b8 00 00 add $0xb888,%eax
3077d: f4 hlt
3077e: 90 nop
3077f: 5d pop %ebp
30780: c3 ret
00030781 <ide_read>:
30781: 55 push %ebp
30782: 89 e5 mov %esp,%ebp
30784: 56 push %esi
30785: 53 push %ebx
30786: 83 ec 10 sub $0x10,%esp
30789: e8 cd fc ff ff call 3045b <__x86.get_pc_thunk.bx>
3078e: 81 c3 72 b8 00 00 add $0xb872,%ebx
30794: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp)
3079b: eb 22 jmp 307bf <ide_read+0x3e>
3079d: 8b 55 08 mov 0x8(%ebp),%edx
307a0: 8b 45 f4 mov -0xc(%ebp),%eax
307a3: 8d 34 02 lea (%edx,%eax,1),%esi
307a6: 8b 55 0c mov 0xc(%ebp),%edx
307a9: 8b 45 f4 mov -0xc(%ebp),%eax
307ac: 01 d0 add %edx,%eax
307ae: 83 ec 0c sub $0xc,%esp
307b1: 50 push %eax
307b2: e8 1b 06 00 00 call 30dd2 <read_byte>
307b7: 83 c4 10 add $0x10,%esp
307ba: 88 06 mov %al,(%esi)
307bc: ff 45 f4 incl -0xc(%ebp)
307bf: 8b 45 f4 mov -0xc(%ebp),%eax
307c2: 3b 45 10 cmp 0x10(%ebp),%eax
307c5: 72 d6 jb 3079d <ide_read+0x1c>
307c7: 90 nop
307c8: 8d 65 f8 lea -0x8(%ebp),%esp
307cb: 5b pop %ebx
307cc: 5e pop %esi
307cd: 5d pop %ebp
307ce: c3 ret
000307cf <ide_write>:
307cf: 55 push %ebp
307d0: 89 e5 mov %esp,%ebp
307d2: 53 push %ebx
307d3: 83 ec 14 sub $0x14,%esp
307d6: e8 80 fc ff ff call 3045b <__x86.get_pc_thunk.bx>
307db: 81 c3 25 b8 00 00 add $0xb825,%ebx
307e1: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp)
307e8: eb 25 jmp 3080f <ide_write+0x40>
307ea: 8b 55 08 mov 0x8(%ebp),%edx
307ed: 8b 45 f4 mov -0xc(%ebp),%eax
307f0: 01 d0 add %edx,%eax
307f2: 8a 00 mov (%eax),%al
307f4: 0f b6 c0 movzbl %al,%eax
307f7: 8b 4d 0c mov 0xc(%ebp),%ecx
307fa: 8b 55 f4 mov -0xc(%ebp),%edx
307fd: 01 ca add %ecx,%edx
307ff: 83 ec 08 sub $0x8,%esp
30802: 50 push %eax
30803: 52 push %edx
30804: e8 06 06 00 00 call 30e0f <write_byte>
30809: 83 c4 10 add $0x10,%esp
3080c: ff 45 f4 incl -0xc(%ebp)
3080f: 8b 45 f4 mov -0xc(%ebp),%eax
30812: 3b 45 10 cmp 0x10(%ebp),%eax
30815: 72 d3 jb 307ea <ide_write+0x1b>
30817: 90 nop
30818: 8b 5d fc mov -0x4(%ebp),%ebx
3081b: c9 leave
3081c: c3 ret
0003081d <ide_writeback>:
3081d: 55 push %ebp
3081e: 89 e5 mov %esp,%ebp
30820: 53 push %ebx
30821: 83 ec 04 sub $0x4,%esp
30824: e8 32 fc ff ff call 3045b <__x86.get_pc_thunk.bx>
30829: 81 c3 d7 b7 00 00 add $0xb7d7,%ebx
3082f: 8b 83 68 19 00 00 mov 0x1968(%ebx),%eax
30835: 40 inc %eax
30836: 89 83 68 19 00 00 mov %eax,0x1968(%ebx)
3083c: 8b 83 68 19 00 00 mov 0x1968(%ebx),%eax
30842: 83 f8 64 cmp $0x64,%eax
30845: 75 0f jne 30856 <ide_writeback+0x39>
30847: e8 4b 04 00 00 call 30c97 <cache_writeback>
3084c: c7 83 68 19 00 00 00 movl $0x0,0x1968(%ebx)
30853: 00 00 00
30856: 90 nop
30857: 83 c4 04 add $0x4,%esp
3085a: 5b pop %ebx
3085b: 5d pop %ebp
3085c: c3 ret
0003085d <ide_intr>:
3085d: 55 push %ebp
3085e: 89 e5 mov %esp,%ebp
30860: e8 f2 fb ff ff call 30457 <__x86.get_pc_thunk.ax>
30865: 05 9b b7 00 00 add $0xb79b,%eax
3086a: c7 80 64 19 00 00 01 movl $0x1,0x1964(%eax)
30871: 00 00 00
30874: 90 nop
30875: 5d pop %ebp
30876: c3 ret
00030877 <clear_ide_intr>:
30877: 55 push %ebp
30878: 89 e5 mov %esp,%ebp
3087a: e8 d8 fb ff ff call 30457 <__x86.get_pc_thunk.ax>
3087f: 05 81 b7 00 00 add $0xb781,%eax
30884: c7 80 64 19 00 00 00 movl $0x0,0x1964(%eax)
3088b: 00 00 00
3088e: 90 nop
3088f: 5d pop %ebp
30890: c3 ret
00030891 <wait_ide_intr>:
30891: 55 push %ebp
30892: 89 e5 mov %esp,%ebp
30894: 53 push %ebx
30895: e8 c1 fb ff ff call 3045b <__x86.get_pc_thunk.bx>
3089a: 81 c3 66 b7 00 00 add $0xb766,%ebx
308a0: eb 05 jmp 308a7 <wait_ide_intr+0x16>
308a2: e8 c9 fe ff ff call 30770 <wait_intr>
308a7: 8b 83 64 19 00 00 mov 0x1964(%ebx),%eax
308ad: 85 c0 test %eax,%eax
308af: 74 f1 je 308a2 <wait_ide_intr+0x11>
308b1: e8 c1 ff ff ff call 30877 <clear_ide_intr>
308b6: 90 nop
308b7: 5b pop %ebx
308b8: 5d pop %ebp
308b9: c3 ret
000308ba <init_ide>:
308ba: 55 push %ebp
308bb: 89 e5 mov %esp,%ebp
308bd: 53 push %ebx
308be: 83 ec 04 sub $0x4,%esp
308c1: e8 95 fb ff ff call 3045b <__x86.get_pc_thunk.bx>
308c6: 81 c3 3a b7 00 00 add $0xb73a,%ebx
308cc: e8 83 03 00 00 call 30c54 <cache_init>
308d1: 83 ec 08 sub $0x8,%esp
308d4: 8d 83 1d 48 ff ff lea -0xb7e3(%ebx),%eax
308da: 50 push %eax
308db: 6a 00 push $0x0
308dd: e8 77 fc ff ff call 30559 <add_irq_handle>
308e2: 83 c4 10 add $0x10,%esp
308e5: 83 ec 08 sub $0x8,%esp
308e8: 8d 83 5d 48 ff ff lea -0xb7a3(%ebx),%eax
308ee: 50 push %eax
308ef: 6a 0e push $0xe
308f1: e8 63 fc ff ff call 30559 <add_irq_handle>
308f6: 83 c4 10 add $0x10,%esp
308f9: 90 nop
308fa: 8b 5d fc mov -0x4(%ebp),%ebx
308fd: c9 leave
308fe: c3 ret
000308ff <in_byte>:
308ff: 55 push %ebp
30900: 89 e5 mov %esp,%ebp
30902: 83 ec 14 sub $0x14,%esp
30905: e8 4d fb ff ff call 30457 <__x86.get_pc_thunk.ax>
3090a: 05 f6 b6 00 00 add $0xb6f6,%eax
3090f: 8b 45 08 mov 0x8(%ebp),%eax
30912: 66 89 45 ec mov %ax,-0x14(%ebp)
30916: 8b 45 ec mov -0x14(%ebp),%eax
30919: 89 c2 mov %eax,%edx
3091b: ec in (%dx),%al
3091c: 88 45 ff mov %al,-0x1(%ebp)
3091f: 8a 45 ff mov -0x1(%ebp),%al
30922: c9 leave
30923: c3 ret
00030924 <in_long>:
30924: 55 push %ebp
30925: 89 e5 mov %esp,%ebp
30927: 83 ec 14 sub $0x14,%esp
3092a: e8 28 fb ff ff call 30457 <__x86.get_pc_thunk.ax>
3092f: 05 d1 b6 00 00 add $0xb6d1,%eax
30934: 8b 45 08 mov 0x8(%ebp),%eax
30937: 66 89 45 ec mov %ax,-0x14(%ebp)
3093b: 8b 45 ec mov -0x14(%ebp),%eax
3093e: 89 c2 mov %eax,%edx
30940: ed in (%dx),%eax
30941: 89 45 fc mov %eax,-0x4(%ebp)
30944: 8b 45 fc mov -0x4(%ebp),%eax
30947: c9 leave
30948: c3 ret
00030949 <out_byte>:
30949: 55 push %ebp
3094a: 89 e5 mov %esp,%ebp
3094c: 83 ec 08 sub $0x8,%esp
3094f: e8 03 fb ff ff call 30457 <__x86.get_pc_thunk.ax>
30954: 05 ac b6 00 00 add $0xb6ac,%eax
30959: 8b 45 08 mov 0x8(%ebp),%eax
3095c: 8b 55 0c mov 0xc(%ebp),%edx
3095f: 66 89 45 fc mov %ax,-0x4(%ebp)
30963: 88 55 f8 mov %dl,-0x8(%ebp)
30966: 8a 45 f8 mov -0x8(%ebp),%al
30969: 8b 55 fc mov -0x4(%ebp),%edx
3096c: ee out %al,(%dx)
3096d: 90 nop
3096e: c9 leave
3096f: c3 ret
00030970 <out_long>:
30970: 55 push %ebp
30971: 89 e5 mov %esp,%ebp
30973: 83 ec 04 sub $0x4,%esp
30976: e8 dc fa ff ff call 30457 <__x86.get_pc_thunk.ax>
3097b: 05 85 b6 00 00 add $0xb685,%eax
30980: 8b 45 08 mov 0x8(%ebp),%eax
30983: 66 89 45 fc mov %ax,-0x4(%ebp)
30987: 8b 45 0c mov 0xc(%ebp),%eax
3098a: 8b 55 fc mov -0x4(%ebp),%edx
3098d: ef out %eax,(%dx)
3098e: 90 nop
3098f: c9 leave
30990: c3 ret
00030991 <waitdisk>:
30991: 55 push %ebp
30992: 89 e5 mov %esp,%ebp
30994: e8 be fa ff ff call 30457 <__x86.get_pc_thunk.ax>
30999: 05 67 b6 00 00 add $0xb667,%eax
3099e: 90 nop
3099f: 68 f7 01 00 00 push $0x1f7
309a4: e8 56 ff ff ff call 308ff <in_byte>
309a9: 83 c4 04 add $0x4,%esp
309ac: 0f b6 c0 movzbl %al,%eax
309af: 25 c0 00 00 00 and $0xc0,%eax
309b4: 83 f8 40 cmp $0x40,%eax
309b7: 75 e6 jne 3099f <waitdisk+0xe>
309b9: 90 nop
309ba: c9 leave
309bb: c3 ret
000309bc <ide_prepare>:
309bc: 55 push %ebp
309bd: 89 e5 mov %esp,%ebp
309bf: e8 93 fa ff ff call 30457 <__x86.get_pc_thunk.ax>
309c4: 05 3c b6 00 00 add $0xb63c,%eax
309c9: e8 c3 ff ff ff call 30991 <waitdisk>
309ce: 6a 00 push $0x0
309d0: 68 f1 01 00 00 push $0x1f1
309d5: e8 6f ff ff ff call 30949 <out_byte>
309da: 83 c4 08 add $0x8,%esp
309dd: 6a 01 push $0x1
309df: 68 f2 01 00 00 push $0x1f2
309e4: e8 60 ff ff ff call 30949 <out_byte>
309e9: 83 c4 08 add $0x8,%esp
309ec: 8b 45 08 mov 0x8(%ebp),%eax
309ef: 0f b6 c0 movzbl %al,%eax
309f2: 50 push %eax
309f3: 68 f3 01 00 00 push $0x1f3
309f8: e8 4c ff ff ff call 30949 <out_byte>
309fd: 83 c4 08 add $0x8,%esp
30a00: 8b 45 08 mov 0x8(%ebp),%eax
30a03: c1 e8 08 shr $0x8,%eax
30a06: 0f b6 c0 movzbl %al,%eax
30a09: 50 push %eax
30a0a: 68 f4 01 00 00 push $0x1f4
30a0f: e8 35 ff ff ff call 30949 <out_byte>
30a14: 83 c4 08 add $0x8,%esp
30a17: 8b 45 08 mov 0x8(%ebp),%eax
30a1a: c1 e8 10 shr $0x10,%eax
30a1d: 0f b6 c0 movzbl %al,%eax
30a20: 50 push %eax
30a21: 68 f5 01 00 00 push $0x1f5
30a26: e8 1e ff ff ff call 30949 <out_byte>
30a2b: 83 c4 08 add $0x8,%esp
30a2e: 8b 45 08 mov 0x8(%ebp),%eax
30a31: c1 e8 18 shr $0x18,%eax
30a34: 83 c8 e0 or $0xffffffe0,%eax
30a37: 0f b6 c0 movzbl %al,%eax
30a3a: 50 push %eax
30a3b: 68 f6 01 00 00 push $0x1f6
30a40: e8 04 ff ff ff call 30949 <out_byte>
30a45: 83 c4 08 add $0x8,%esp
30a48: 90 nop
30a49: c9 leave
30a4a: c3 ret
00030a4b <issue_read>:
30a4b: 55 push %ebp
30a4c: 89 e5 mov %esp,%ebp
30a4e: e8 04 fa ff ff call 30457 <__x86.get_pc_thunk.ax>
30a53: 05 ad b5 00 00 add $0xb5ad,%eax
30a58: 6a 20 push $0x20
30a5a: 68 f7 01 00 00 push $0x1f7
30a5f: e8 e5 fe ff ff call 30949 <out_byte>
30a64: 83 c4 08 add $0x8,%esp
30a67: 90 nop
30a68: c9 leave
30a69: c3 ret
00030a6a <issue_write>:
30a6a: 55 push %ebp
30a6b: 89 e5 mov %esp,%ebp
30a6d: e8 e5 f9 ff ff call 30457 <__x86.get_pc_thunk.ax>
30a72: 05 8e b5 00 00 add $0xb58e,%eax
30a77: 6a 30 push $0x30
30a79: 68 f7 01 00 00 push $0x1f7
30a7e: e8 c6 fe ff ff call 30949 <out_byte>
30a83: 83 c4 08 add $0x8,%esp
30a86: 90 nop
30a87: c9 leave
30a88: c3 ret