Chameleon

Chameleon Commit Details

Date:2012-01-17 23:32:17 (8 years 10 months ago)
Author:armel cadet-petit
Commit:1804
Parents: 1803
Message:Please, see change log
Changes:
A/branches/cparm/i386/libsa/udivdi3.c
A/branches/cparm/i386/libsa/qdivrem.c
A/branches/cparm/i386/libsa/moddi3.c
A/branches/cparm/i386/libsaio/arc4random.c
A/branches/cparm/i386/libsa/bzero.s
A/branches/cparm/i386/libsa/umoddi3.c
A/branches/cparm/i386/libsa/divdi3.c
A/branches/cparm/i386/libsaio/cpu_intel_amd.c
A/branches/cparm/i386/libsa/bcopy.s
A/branches/cparm/i386/libsaio/stack_protector.c
A/branches/cparm/i386/libsa/quad.h
M/branches/cparm/i386/libsa/string.c
M/branches/cparm/i386/libsaio/stringTable.c
M/branches/cparm/i386/boot2/modules.h
M/branches/cparm/i386/util/Symbols.c
M/branches/cparm/Chameleon.xcodeproj/project.pbxproj
M/branches/cparm/i386/modules/SMBiosPatcher/Makefile
M/branches/cparm/i386/modules/CPUfreq/Makefile
M/branches/cparm/i386/util/Makefile
M/branches/cparm/i386/libsaio/disk.c
M/branches/cparm/i386/modules/Memory/Makefile
M/branches/cparm/i386/libsaio/Makefile
M/branches/cparm/i386/libsaio/saio_internal.h
M/branches/cparm/i386/boot2/options.c
M/branches/cparm/i386/modules/NetbookInstaller/Makefile
M/branches/cparm/i386/libsaio/console.c
M/branches/cparm/i386/boot2/graphics.c
M/branches/cparm/i386/modules/RamDiskLoader/Makefile
M/branches/cparm/i386/modules/YellowIconFixer/Makefile
M/branches/cparm/i386/modules/KextPatcher/Makefile
M/branches/cparm/i386/libsa/Makefile
M/branches/cparm/i386/modules/ACPIPatcher/Makefile
M/branches/cparm/i386/modules/Networking/Makefile
M/branches/cparm/i386/modules/ACPICodec/acpi_codec.c
M/branches/cparm/i386/modules/GraphicsEnabler/Makefile
M/branches/cparm/CHANGES
M/branches/cparm/i386/libsaio/sys.c
M/branches/cparm/i386/modules/Keymapper/Makefile
M/branches/cparm/i386/boot2/drivers.c
M/branches/cparm/i386/modules/USBFix/Makefile
M/branches/cparm/i386/modules/HPET/Makefile
M/branches/cparm/i386/libsaio/saio_types.h
M/branches/cparm/i386/modules/Resolution/Makefile
M/branches/cparm/i386/libsaio/fake_efi.c
M/branches/cparm/i386/modules/KextPatcher/kext_patcher.c
M/branches/cparm/i386/libsa/setjmp.s
M/branches/cparm/i386/libsaio/misc.c
M/branches/cparm/i386/libsa/zalloc.c
M/branches/cparm/i386/modules/ACPICodec/Makefile
M/branches/cparm/i386/modules/HelloWorld/Makefile
M/branches/cparm/i386/modules/GUI/gui.c
M/branches/cparm/i386/libsa/strtol.c
M/branches/cparm/i386/boot2/Makefile
M/branches/cparm/i386/libsa/prf.c
M/branches/cparm/i386/boot2/boot.c
M/branches/cparm/i386/modules/GUI/Makefile
M/branches/cparm/i386/libsa/libsa.h
M/branches/cparm/i386/libsaio/internal_modules.h
M/branches/cparm/i386/modules/KernelPatcher/Makefile
M/branches/cparm/i386/boot2/modules.c
M/branches/cparm/i386/libsaio/pci.c
M/branches/cparm/i386/modules/HibernateEnabler/Makefile
M/branches/cparm/i386/modules/SMBiosGetters/Makefile

File differences

branches/cparm/Chameleon.xcodeproj/project.pbxproj
77
88
99
10
11
12
13
14
15
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
16296
17297
18298
......
28308
29309
30310
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
173311
174312
175313
......
298436
299437
300438
301
302
303439
304
305440
306441
307442
......
310445
311446
312447
313
448
314449
315450
316451
317452
318453
319
320454
321
322455
323456
324457
......
326459
327460
328461
329
462
330463
331464
332
465
466
467
468
469
470
471
472
473
474
475
476
333477
334
478
335479
336480
337
481
338482
339483
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
484
485
486
487
355488
356
489
357490
358491
359
492
360493
361494
362
363
364
365
366
367
368
369
370
371
372
495
496
497
498
499
500
373501
374
502
375503
376504
377
505
378506
379507
380
381
382
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
383528
384
529
385530
386531
387
532
388533
389534
390
391
392
393
394
395
396
535
536
537
397538
398
539
399540
400541
401
542
402543
403544
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
545
546
432547
433
548
434549
435550
436
551
437552
438553
439
440
441
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
442576
443
577
444578
445579
446
580
447581
448582
449
450
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
451673
452
674
453675
454676
455
677
456678
457679
458
459
460
461
462
463
464
465
466
467
468
469
470
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
471701
472
702
473703
474704
475
705
476706
477707
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
708
709
710
711
712
713
714
715
566716
567
717
568718
569719
570
720
571721
572722
573
574
723
724
725
726
727
728
575729
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
576980
577981
578982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
5791025
5801026
5811027
objects = {
/* Begin PBXFileReference section */
0172D0DC11FB66820030222E /* dram_controllers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dram_controllers.h; sourceTree = "<group>"; };
0172D0DD11FB66820030222E /* dram_controllers.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dram_controllers.c; sourceTree = "<group>"; };
019DFBAF11FB94090013E8CC /* MEMTEST86_LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MEMTEST86_LICENSE; sourceTree = "<group>"; };
1D145307137073F40050C0CD /* bootargs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bootargs.h; sourceTree = "<group>"; };
1D2A1AF513743A2600787720 /* bootargs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bootargs.h; sourceTree = "<group>"; };
65ED53931204B83200B22507 /* disk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = disk.h; sourceTree = "<group>"; };
AB0E930C14C6223500F798D7 /* cpu_intel_amd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpu_intel_amd.c; sourceTree = "<group>"; };
AB43B2B714C37E520018D529 /* boot0.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = boot0.s; sourceTree = "<group>"; };
AB43B2B814C37E520018D529 /* boot0md.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = boot0md.s; sourceTree = "<group>"; };
AB43B2B914C37E520018D529 /* chain0.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = chain0.s; sourceTree = "<group>"; };
AB43B2BA14C37E520018D529 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
AB43B2BC14C37E520018D529 /* boot1f32-install.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "boot1f32-install.sh"; sourceTree = "<group>"; };
AB43B2BD14C37E520018D529 /* boot1f32.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = boot1f32.s; sourceTree = "<group>"; };
AB43B2BE14C37E520018D529 /* boot1h.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = boot1h.s; sourceTree = "<group>"; };
AB43B2BF14C37E520018D529 /* boot1he.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = boot1he.s; sourceTree = "<group>"; };
AB43B2C014C37E520018D529 /* boot1hp.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = boot1hp.s; sourceTree = "<group>"; };
AB43B2C114C37E520018D529 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
AB43B2C314C37E520018D529 /* appleboot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = appleboot.h; sourceTree = "<group>"; };
AB43B2C414C37E520018D529 /* appleClut8.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = appleClut8.h; sourceTree = "<group>"; };
AB43B2C514C37E520018D529 /* boot.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = boot.c; sourceTree = "<group>"; };
AB43B2C614C37E520018D529 /* boot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = boot.h; sourceTree = "<group>"; };
AB43B2C714C37E520018D529 /* boot2.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = boot2.s; sourceTree = "<group>"; };
AB43B2C814C37E520018D529 /* drivers.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = drivers.c; sourceTree = "<group>"; };
AB43B2C914C37E520018D529 /* drivers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = drivers.h; sourceTree = "<group>"; };
AB43B2CA14C37E520018D529 /* failedboot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = failedboot.h; sourceTree = "<group>"; };
AB43B2CB14C37E520018D529 /* graphics.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = graphics.c; sourceTree = "<group>"; };
AB43B2CC14C37E520018D529 /* graphics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = graphics.h; sourceTree = "<group>"; };
AB43B2CD14C37E520018D529 /* lzss.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lzss.c; sourceTree = "<group>"; };
AB43B2CE14C37E520018D529 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
AB43B2CF14C37E520018D529 /* mboot.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mboot.c; sourceTree = "<group>"; };
AB43B2D014C37E520018D529 /* mboot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mboot.h; sourceTree = "<group>"; };
AB43B2D114C37E520018D529 /* modules.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = modules.c; sourceTree = "<group>"; };
AB43B2D214C37E520018D529 /* modules.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = modules.h; sourceTree = "<group>"; };
AB43B2D314C37E520018D529 /* multiboot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = multiboot.h; sourceTree = "<group>"; };
AB43B2D414C37E520018D529 /* options.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = options.c; sourceTree = "<group>"; };
AB43B2D514C37E520018D529 /* options.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = options.h; sourceTree = "<group>"; };
AB43B2D614C37E520018D529 /* prompt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = prompt.c; sourceTree = "<group>"; };
AB43B2D814C37E520018D529 /* cdboot.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = cdboot.s; sourceTree = "<group>"; };
AB43B2D914C37E520018D529 /* cdboothdd.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = cdboothdd.s; sourceTree = "<group>"; };
AB43B2DA14C37E520018D529 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
AB43B2DC14C37E520018D529 /* Limits */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Limits; sourceTree = "<group>"; };
AB43B2DD14C37E520018D529 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = "<group>"; };
AB43B2DF14C37E520018D529 /* efi_tables.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = efi_tables.c; sourceTree = "<group>"; };
AB43B2E014C37E520018D529 /* efi_tables.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = efi_tables.h; sourceTree = "<group>"; };
AB43B2E114C37E520018D529 /* error.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = error.c; sourceTree = "<group>"; };
AB43B2E214C37E520018D529 /* libsa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = libsa.h; sourceTree = "<group>"; };
AB43B2E314C37E520018D529 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
AB43B2E414C37E520018D529 /* memory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = memory.h; sourceTree = "<group>"; };
AB43B2E514C37E520018D529 /* prf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = prf.c; sourceTree = "<group>"; };
AB43B2E614C37E520018D529 /* printf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = printf.c; sourceTree = "<group>"; };
AB43B2E714C37E520018D529 /* qsort.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = qsort.c; sourceTree = "<group>"; };
AB43B2E814C37E520018D529 /* rand.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = rand.c; sourceTree = "<group>"; };
AB43B2E914C37E520018D529 /* setjmp.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = setjmp.s; sourceTree = "<group>"; };
AB43B2EA14C37E520018D529 /* string.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = string.c; sourceTree = "<group>"; };
AB43B2EB14C37E520018D529 /* strtol.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = strtol.c; sourceTree = "<group>"; };
AB43B2EC14C37E520018D529 /* zalloc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zalloc.c; sourceTree = "<group>"; };
AB43B2EE14C37E520018D529 /* acpi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = acpi.h; sourceTree = "<group>"; };
AB43B2EF14C37E520018D529 /* acpi_tools.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = acpi_tools.c; sourceTree = "<group>"; };
AB43B2F014C37E520018D529 /* acpi_tools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = acpi_tools.h; sourceTree = "<group>"; };
AB43B2F114C37E520018D529 /* allocate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = allocate.c; sourceTree = "<group>"; };
AB43B2F214C37E520018D529 /* apic.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = apic.h; sourceTree = "<group>"; };
AB43B2F314C37E520018D529 /* asm.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = asm.s; sourceTree = "<group>"; };
AB43B2F414C37E520018D529 /* befs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = befs.c; sourceTree = "<group>"; };
AB43B2F514C37E520018D529 /* befs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = befs.h; sourceTree = "<group>"; };
AB43B2F614C37E520018D529 /* bios.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bios.h; sourceTree = "<group>"; };
AB43B2F714C37E520018D529 /* bios.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = bios.s; sourceTree = "<group>"; };
AB43B2F814C37E520018D529 /* biosfn.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = biosfn.c; sourceTree = "<group>"; };
AB43B2F914C37E520018D529 /* bootLion.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bootLion.h; sourceTree = "<group>"; };
AB43B2FA14C37E520018D529 /* bootstruct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bootstruct.c; sourceTree = "<group>"; };
AB43B2FB14C37E520018D529 /* bootstruct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bootstruct.h; sourceTree = "<group>"; };
AB43B2FC14C37E520018D529 /* cache.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cache.c; sourceTree = "<group>"; };
AB43B2FD14C37E520018D529 /* console.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = console.c; sourceTree = "<group>"; };
AB43B2FE14C37E520018D529 /* convert.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = convert.c; sourceTree = "<group>"; };
AB43B2FF14C37E520018D529 /* convert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = convert.h; sourceTree = "<group>"; };
AB43B30014C37E520018D529 /* cpu.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpu.c; sourceTree = "<group>"; };
AB43B30114C37E520018D529 /* cpu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cpu.h; sourceTree = "<group>"; };
AB43B30214C37E520018D529 /* cpu_data.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cpu_data.h; sourceTree = "<group>"; };
AB43B30314C37E520018D529 /* cpuid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cpuid.h; sourceTree = "<group>"; };
AB43B30414C37E520018D529 /* datatype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = datatype.h; sourceTree = "<group>"; };
AB43B30514C37E520018D529 /* device_inject.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = device_inject.c; sourceTree = "<group>"; };
AB43B30614C37E520018D529 /* device_inject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = device_inject.h; sourceTree = "<group>"; };
AB43B30714C37E520018D529 /* device_tree.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = device_tree.c; sourceTree = "<group>"; };
AB43B30814C37E520018D529 /* device_tree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = device_tree.h; sourceTree = "<group>"; };
AB43B30914C37E520018D529 /* disk.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = disk.c; sourceTree = "<group>"; };
AB43B30A14C37E520018D529 /* disk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = disk.h; sourceTree = "<group>"; };
AB43B30B14C37E520018D529 /* efi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = efi.h; sourceTree = "<group>"; };
AB43B30C14C37E520018D529 /* exfat.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = exfat.c; sourceTree = "<group>"; };
AB43B30D14C37E520018D529 /* exfat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = exfat.h; sourceTree = "<group>"; };
AB43B30E14C37E520018D529 /* ext2fs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ext2fs.c; sourceTree = "<group>"; };
AB43B30F14C37E520018D529 /* ext2fs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ext2fs.h; sourceTree = "<group>"; };
AB43B31014C37E520018D529 /* fake_efi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fake_efi.c; sourceTree = "<group>"; };
AB43B31114C37E520018D529 /* fake_efi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fake_efi.h; sourceTree = "<group>"; };
AB43B31214C37E520018D529 /* fdisk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fdisk.h; sourceTree = "<group>"; };
AB43B31314C37E520018D529 /* freebsd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = freebsd.c; sourceTree = "<group>"; };
AB43B31414C37E520018D529 /* freebsd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = freebsd.h; sourceTree = "<group>"; };
AB43B31514C37E520018D529 /* hfs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hfs.c; sourceTree = "<group>"; };
AB43B31614C37E520018D529 /* hfs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hfs.h; sourceTree = "<group>"; };
AB43B31714C37E520018D529 /* hfs_CaseTables.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hfs_CaseTables.h; sourceTree = "<group>"; };
AB43B31814C37E520018D529 /* hfs_compare.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hfs_compare.c; sourceTree = "<group>"; };
AB43B31914C37E520018D529 /* intel_acpi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = intel_acpi.h; sourceTree = "<group>"; };
AB43B31A14C37E520018D529 /* internal_modules.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = internal_modules.h; sourceTree = "<group>"; };
AB43B31B14C37E520018D529 /* io_inline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = io_inline.h; sourceTree = "<group>"; };
AB43B31C14C37E520018D529 /* libsaio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = libsaio.h; sourceTree = "<group>"; };
AB43B31D14C37E520018D529 /* load.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = load.c; sourceTree = "<group>"; };
AB43B31E14C37E520018D529 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
AB43B31F14C37E520018D529 /* md5c.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = md5c.c; sourceTree = "<group>"; };
AB43B32014C37E520018D529 /* misc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = misc.c; sourceTree = "<group>"; };
AB43B32114C37E520018D529 /* msdos.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msdos.c; sourceTree = "<group>"; };
AB43B32214C37E520018D529 /* msdos.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = msdos.h; sourceTree = "<group>"; };
AB43B32314C37E520018D529 /* msdos_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = msdos_private.h; sourceTree = "<group>"; };
AB43B32414C37E520018D529 /* nbp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = nbp.c; sourceTree = "<group>"; };
AB43B32514C37E520018D529 /* nbp_cmd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nbp_cmd.h; sourceTree = "<group>"; };
AB43B32614C37E520018D529 /* ntfs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ntfs.c; sourceTree = "<group>"; };
AB43B32714C37E520018D529 /* ntfs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ntfs.h; sourceTree = "<group>"; };
AB43B32814C37E520018D529 /* ntfs_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ntfs_private.h; sourceTree = "<group>"; };
AB43B32914C37E520018D529 /* openbsd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = openbsd.c; sourceTree = "<group>"; };
AB43B32A14C37E520018D529 /* openbsd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = openbsd.h; sourceTree = "<group>"; };
AB43B32B14C37E520018D529 /* pci.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pci.c; sourceTree = "<group>"; };
AB43B32C14C37E520018D529 /* pci.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pci.h; sourceTree = "<group>"; };
AB43B32D14C37E520018D529 /* pci_root.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pci_root.c; sourceTree = "<group>"; };
AB43B32E14C37E520018D529 /* pci_root.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pci_root.h; sourceTree = "<group>"; };
AB43B32F14C37E520018D529 /* platform.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = platform.c; sourceTree = "<group>"; };
AB43B33014C37E520018D529 /* platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platform.h; sourceTree = "<group>"; };
AB43B33114C37E520018D529 /* ppm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ppm.h; sourceTree = "<group>"; };
AB43B33214C37E520018D529 /* ppmsetup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ppmsetup.h; sourceTree = "<group>"; };
AB43B33314C37E520018D529 /* saio_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = saio_internal.h; sourceTree = "<group>"; };
AB43B33414C37E520018D529 /* saio_types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = saio_types.h; sourceTree = "<group>"; };
AB43B33514C37E520018D529 /* sl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sl.h; sourceTree = "<group>"; };
AB43B33614C37E520018D529 /* smbios.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = smbios.c; sourceTree = "<group>"; };
AB43B33714C37E520018D529 /* SMBIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMBIOS.h; sourceTree = "<group>"; };
AB43B33814C37E520018D529 /* smp-imps.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = "smp-imps.c"; sourceTree = "<group>"; };
AB43B33914C37E520018D529 /* smp-imps.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "smp-imps.h"; sourceTree = "<group>"; };
AB43B33A14C37E520018D529 /* stringTable.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = stringTable.c; sourceTree = "<group>"; };
AB43B33B14C37E520018D529 /* sys.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sys.c; sourceTree = "<group>"; };
AB43B33C14C37E520018D529 /* table.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = table.c; sourceTree = "<group>"; };
AB43B33D14C37E520018D529 /* ufs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ufs.c; sourceTree = "<group>"; };
AB43B33E14C37E520018D529 /* ufs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ufs.h; sourceTree = "<group>"; };
AB43B33F14C37E520018D529 /* ufs_byteorder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ufs_byteorder.c; sourceTree = "<group>"; };
AB43B34014C37E520018D529 /* ufs_byteorder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ufs_byteorder.h; sourceTree = "<group>"; };
AB43B34114C37E520018D529 /* vbe.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vbe.c; sourceTree = "<group>"; };
AB43B34214C37E520018D529 /* vbe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vbe.h; sourceTree = "<group>"; };
AB43B34314C37E520018D529 /* xml.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = xml.c; sourceTree = "<group>"; };
AB43B34414C37E520018D529 /* xml.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xml.h; sourceTree = "<group>"; };
AB43B34514C37E520018D529 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
AB43B34614C37E520018D529 /* MakeInc.dir */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MakeInc.dir; sourceTree = "<group>"; };
AB43B34714C37E520018D529 /* MakePaths.dir */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MakePaths.dir; sourceTree = "<group>"; };
AB43B34A14C37E520018D529 /* acpi_codec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = acpi_codec.c; sourceTree = "<group>"; };
AB43B34B14C37E520018D529 /* acpi_codec.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = acpi_codec.h; sourceTree = "<group>"; };
AB43B34C14C37E520018D529 /* acpicode.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = acpicode.c; sourceTree = "<group>"; };
AB43B34D14C37E520018D529 /* acpicode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = acpicode.h; sourceTree = "<group>"; };
AB43B34E14C37E520018D529 /* ACPICodec.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ACPICodec.c; sourceTree = "<group>"; };
AB43B34F14C37E520018D529 /* acpidecode.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = acpidecode.c; sourceTree = "<group>"; };
AB43B35014C37E520018D529 /* acpidecode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = acpidecode.h; sourceTree = "<group>"; };
AB43B35114C37E520018D529 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
AB43B35314C37E520018D529 /* acpi_patcher.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = acpi_patcher.c; sourceTree = "<group>"; };
AB43B35414C37E520018D529 /* acpi_patcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = acpi_patcher.h; sourceTree = "<group>"; };
AB43B35514C37E520018D529 /* AcpiPatcher.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = AcpiPatcher.c; sourceTree = "<group>"; };
AB43B35614C37E520018D529 /* aml_generator.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = aml_generator.c; sourceTree = "<group>"; };
AB43B35714C37E520018D529 /* aml_generator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aml_generator.h; sourceTree = "<group>"; };
AB43B35814C37E520018D529 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
AB43B35A14C37E520018D529 /* CPUfreq.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = CPUfreq.c; sourceTree = "<group>"; };
AB43B35B14C37E520018D529 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
AB43B35D14C37E520018D529 /* ati.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ati.c; sourceTree = "<group>"; };
AB43B35E14C37E520018D529 /* ati.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ati.h; sourceTree = "<group>"; };
AB43B35F14C37E520018D529 /* ati_reg.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ati_reg.h; sourceTree = "<group>"; };
AB43B36014C37E520018D529 /* gma.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = gma.c; sourceTree = "<group>"; };
AB43B36114C37E520018D529 /* gma.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gma.h; sourceTree = "<group>"; };
AB43B36214C37E520018D529 /* GraphicsEnabler.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = GraphicsEnabler.c; sourceTree = "<group>"; };
AB43B36314C37E520018D529 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
AB43B36414C37E520018D529 /* nvidia.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = nvidia.c; sourceTree = "<group>"; };
AB43B36514C37E520018D529 /* nvidia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nvidia.h; sourceTree = "<group>"; };
AB43B36714C37E520018D529 /* graphic_utils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = graphic_utils.c; sourceTree = "<group>"; };
AB43B36814C37E520018D529 /* graphic_utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = graphic_utils.h; sourceTree = "<group>"; };
AB43B36914C37E520018D529 /* gui.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = gui.c; sourceTree = "<group>"; };
AB43B36A14C37E520018D529 /* gui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gui.h; sourceTree = "<group>"; };
AB43B36B14C37E520018D529 /* GUI_appleboot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GUI_appleboot.h; sourceTree = "<group>"; };
AB43B36C14C37E520018D529 /* GUI_module.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = GUI_module.c; sourceTree = "<group>"; };
AB43B36D14C37E520018D529 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
AB43B36E14C37E520018D529 /* picopng.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = picopng.c; sourceTree = "<group>"; };
AB43B36F14C37E520018D529 /* picopng.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = picopng.h; sourceTree = "<group>"; };
AB43B37114C37E520018D529 /* HelloWorld.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = HelloWorld.c; sourceTree = "<group>"; };
AB43B37214C37E520018D529 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
AB43B37414C37E520018D529 /* bmdecompress.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bmdecompress.c; sourceTree = "<group>"; };
AB43B37514C37E520018D529 /* bmdecompress.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bmdecompress.h; sourceTree = "<group>"; };
AB43B37614C37E520018D529 /* graphic_utils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = graphic_utils.c; sourceTree = "<group>"; };
AB43B37714C37E520018D529 /* graphic_utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = graphic_utils.h; sourceTree = "<group>"; };
AB43B37814C37E520018D529 /* HibernateEnabler.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = HibernateEnabler.c; sourceTree = "<group>"; };
AB43B37914C37E520018D529 /* IOHibernatePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IOHibernatePrivate.h; sourceTree = "<group>"; };
AB43B37A14C37E520018D529 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
AB43B37B14C37E520018D529 /* resume.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = resume.c; sourceTree = "<group>"; };
AB43B37C14C37E520018D529 /* resume.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = resume.h; sourceTree = "<group>"; };
AB43B37E14C37E520018D529 /* HPET.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = HPET.c; sourceTree = "<group>"; };
AB43B37F14C37E520018D529 /* hpet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hpet.h; sourceTree = "<group>"; };
AB43B38014C37E520018D529 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
AB43B38214C37E520018D529 /* kernel_patcher.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = kernel_patcher.c; sourceTree = "<group>"; };
AB43B38314C37E520018D529 /* kernel_patcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kernel_patcher.h; sourceTree = "<group>"; };
AB43B38414C37E520018D529 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
AB43B38614C37E520018D529 /* adler32.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = adler32.c; sourceTree = "<group>"; };
AB43B38714C37E520018D529 /* deflate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = deflate.c; sourceTree = "<group>"; };
AB43B38814C37E520018D529 /* deflate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = deflate.h; sourceTree = "<group>"; };
AB43B38914C37E520018D529 /* hex_editor.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hex_editor.c; sourceTree = "<group>"; };
AB43B38A14C37E520018D529 /* hex_editor.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hex_editor.h; sourceTree = "<group>"; };
AB43B38B14C37E520018D529 /* inffast.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = inffast.c; sourceTree = "<group>"; };
AB43B38C14C37E520018D529 /* inffast.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inffast.h; sourceTree = "<group>"; };
AB43B38D14C37E520018D529 /* inffixed.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inffixed.h; sourceTree = "<group>"; };
AB43B38E14C37E520018D529 /* inflate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = inflate.c; sourceTree = "<group>"; };
AB43B38F14C37E520018D529 /* inflate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inflate.h; sourceTree = "<group>"; };
AB43B39014C37E520018D529 /* inftrees.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = inftrees.c; sourceTree = "<group>"; };
AB43B39114C37E520018D529 /* inftrees.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = inftrees.h; sourceTree = "<group>"; };
AB43B39214C37E520018D529 /* kext_patcher.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = kext_patcher.c; sourceTree = "<group>"; };
AB43B39314C37E520018D529 /* kext_patcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = kext_patcher.h; sourceTree = "<group>"; };
AB43B39414C37E520018D529 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
AB43B39514C37E520018D529 /* mkext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mkext.h; sourceTree = "<group>"; };
AB43B39614C37E520018D529 /* trees.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = trees.c; sourceTree = "<group>"; };
AB43B39714C37E520018D529 /* trees.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = trees.h; sourceTree = "<group>"; };
AB43B39814C37E520018D529 /* zconf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zconf.h; sourceTree = "<group>"; };
AB43B39914C37E520018D529 /* zlib.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zlib.h; sourceTree = "<group>"; };
AB43B39A14C37E520018D529 /* zutil.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zutil.c; sourceTree = "<group>"; };
AB43B39B14C37E520018D529 /* zutil.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zutil.h; sourceTree = "<group>"; };
AB43B39D14C37E520018D529 /* Keylayout.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Keylayout.c; sourceTree = "<group>"; };
AB43B39E14C37E520018D529 /* Keylayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Keylayout.h; sourceTree = "<group>"; };
AB43B39F14C37E520018D529 /* Keymapper.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Keymapper.c; sourceTree = "<group>"; };
AB43B3A014C37E520018D529 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
AB43B3A114C37E520018D529 /* term.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = term.h; sourceTree = "<group>"; };
AB43B3A214C37E520018D529 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
AB43B3A414C37E520018D529 /* dram_controllers.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = dram_controllers.c; sourceTree = "<group>"; };
AB43B3A514C37E520018D529 /* dram_controllers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = dram_controllers.h; sourceTree = "<group>"; };
AB43B3A614C37E520018D529 /* GPL_V2_LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GPL_V2_LICENSE; sourceTree = "<group>"; };
AB43B3A714C37E520018D529 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
AB43B3A814C37E520018D529 /* mem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mem.c; sourceTree = "<group>"; };
AB43B3A914C37E520018D529 /* mem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mem.h; sourceTree = "<group>"; };
AB43B3AA14C37E520018D529 /* Memory.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Memory.c; sourceTree = "<group>"; };
AB43B3AB14C37E520018D529 /* MEMTEST86_LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MEMTEST86_LICENSE; sourceTree = "<group>"; };
AB43B3AC14C37E520018D529 /* memvendors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = memvendors.h; sourceTree = "<group>"; };
AB43B3AD14C37E520018D529 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = "<group>"; };
AB43B3AE14C37E520018D529 /* spd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = spd.c; sourceTree = "<group>"; };
AB43B3AF14C37E520018D529 /* spd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spd.h; sourceTree = "<group>"; };
AB43B3B114C37E520018D529 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
AB43B3B214C37E520018D529 /* NBI.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = NBI.c; sourceTree = "<group>"; };
AB43B3B414C37E520018D529 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
AB43B3B514C37E520018D529 /* Networking.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Networking.c; sourceTree = "<group>"; };
AB43B3B714C37E520018D529 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
AB43B3B814C37E520018D529 /* ramdisk.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ramdisk.c; sourceTree = "<group>"; };
AB43B3B914C37E520018D529 /* ramdisk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ramdisk.h; sourceTree = "<group>"; };
AB43B3BA14C37E520018D529 /* RamDiskLoader.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = RamDiskLoader.c; sourceTree = "<group>"; };
AB43B3BC14C37E520018D529 /* 915resolution.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = 915resolution.c; sourceTree = "<group>"; };
AB43B3BD14C37E520018D529 /* 915resolution.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = 915resolution.h; sourceTree = "<group>"; };
AB43B3BE14C37E520018D529 /* edid.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = edid.c; sourceTree = "<group>"; };
AB43B3BF14C37E520018D529 /* edid.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = edid.h; sourceTree = "<group>"; };
AB43B3C014C37E520018D529 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
AB43B3C114C37E520018D529 /* Resolution.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Resolution.c; sourceTree = "<group>"; };
AB43B3C214C37E520018D529 /* shortatombios.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = shortatombios.h; sourceTree = "<group>"; };
AB43B3C414C37E520018D529 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
AB43B3C514C37E520018D529 /* mysmbios.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mysmbios.c; sourceTree = "<group>"; };
AB43B3C614C37E520018D529 /* mysmbios.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mysmbios.h; sourceTree = "<group>"; };
AB43B3C714C37E520018D529 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = "<group>"; };
AB43B3C814C37E520018D529 /* smbios_decode.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = smbios_decode.c; sourceTree = "<group>"; };
AB43B3C914C37E520018D529 /* smbios_getters.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = smbios_getters.c; sourceTree = "<group>"; };
AB43B3CA14C37E520018D529 /* smbios_getters.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = smbios_getters.h; sourceTree = "<group>"; };
AB43B3CB14C37E520018D529 /* SMBiosGetters.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SMBiosGetters.c; sourceTree = "<group>"; };
AB43B3CD14C37E520018D529 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
AB43B3CE14C37E520018D529 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = "<group>"; };
AB43B3CF14C37E520018D529 /* smbios_patcher.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = smbios_patcher.c; sourceTree = "<group>"; };
AB43B3D014C37E520018D529 /* smbios_patcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = smbios_patcher.h; sourceTree = "<group>"; };
AB43B3D114C37E520018D529 /* SMBiosPatcher.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = SMBiosPatcher.c; sourceTree = "<group>"; };
AB43B3D314C37E520018D529 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
AB43B3D414C37E520018D529 /* usb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = usb.c; sourceTree = "<group>"; };
AB43B3D514C37E520018D529 /* USBFix.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = USBFix.c; sourceTree = "<group>"; };
AB43B3D714C37E520018D529 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
AB43B3D814C37E520018D529 /* YellowIconFixer.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = YellowIconFixer.c; sourceTree = "<group>"; };
AB43B3DA14C37E520018D529 /* amlsgn.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = amlsgn.m; sourceTree = "<group>"; };
AB43B3DB14C37E520018D529 /* bdmesg.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bdmesg.c; sourceTree = "<group>"; };
AB43B3DD14C37E530018D529 /* acpidecode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = acpidecode.h; sourceTree = "<group>"; };
AB43B3DE14C37E530018D529 /* datatype.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = datatype.h; sourceTree = "<group>"; };
AB43B3DF14C37E530018D529 /* intel_acpi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = intel_acpi.h; sourceTree = "<group>"; };
AB43B3E014C37E530018D529 /* ppm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ppm.h; sourceTree = "<group>"; };
AB43B3E114C37E530018D529 /* ppmsetup.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ppmsetup.h; sourceTree = "<group>"; };
AB43B3E214C37E530018D529 /* machOconv.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = machOconv.c; sourceTree = "<group>"; };
AB43B3E314C37E530018D529 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
AB43B3E414C37E530018D529 /* Symbols.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = Symbols.c; sourceTree = "<group>"; };
AB43B3E514C37E530018D529 /* WKdm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKdm.h; sourceTree = "<group>"; };
AB43B3E614C37E530018D529 /* WKdmDecompress.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = WKdmDecompress.c; sourceTree = "<group>"; };
AB43B3EC14C383120018D529 /* bcopy.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = bcopy.s; sourceTree = "<group>"; };
AB43B3ED14C383120018D529 /* bzero.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = bzero.s; sourceTree = "<group>"; };
AB43B3EE14C383120018D529 /* divdi3.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = divdi3.c; sourceTree = "<group>"; };
AB43B3EF14C383120018D529 /* moddi3.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = moddi3.c; sourceTree = "<group>"; };
AB43B3F014C383120018D529 /* qdivrem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = qdivrem.c; sourceTree = "<group>"; };
AB43B3F114C383120018D529 /* quad.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = quad.h; sourceTree = "<group>"; };
AB43B3F214C383120018D529 /* udivdi3.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = udivdi3.c; sourceTree = "<group>"; };
AB43B3F314C383120018D529 /* umoddi3.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = umoddi3.c; sourceTree = "<group>"; };
AB43B3F814C384040018D529 /* stack_protector.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = stack_protector.c; sourceTree = "<group>"; };
AB43B42A14C3A8080018D529 /* arc4random.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = arc4random.c; sourceTree = "<group>"; };
B0056CD611F3868000754B65 /* boot */ = {isa = PBXFileReference; lastKnownFileType = text; path = boot; sourceTree = "<group>"; };
B0056CD711F3868000754B65 /* boot.sys */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.preload"; path = boot.sys; sourceTree = "<group>"; };
B0056CD811F3868000754B65 /* boot0 */ = {isa = PBXFileReference; lastKnownFileType = text; path = boot0; sourceTree = "<group>"; };
B0056CE211F3868000754B65 /* libsaio.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libsaio.a; sourceTree = "<group>"; };
B0056CE311F3868000754B65 /* machOconv */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.executable"; path = machOconv; sourceTree = "<group>"; };
B0056CE411F3868000754B65 /* vers.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vers.h; sourceTree = "<group>"; };
B0056CE711F3868000754B65 /* boot0.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = boot0.s; sourceTree = "<group>"; };
B0056CE811F3868000754B65 /* chain0.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = chain0.s; sourceTree = "<group>"; };
B0056CE911F3868000754B65 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
B0056CEB11F3868000754B65 /* boot1.asm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm.asm; path = boot1.asm; sourceTree = "<group>"; };
B0056CEC11F3868000754B65 /* boot1.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = boot1.s; sourceTree = "<group>"; };
B0056CED11F3868000754B65 /* boot1f32-install.sh */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.sh; path = "boot1f32-install.sh"; sourceTree = "<group>"; };
B0056CEE11F3868000754B65 /* boot1f32.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = boot1f32.s; sourceTree = "<group>"; };
B0056CEF11F3868000754B65 /* boot1he.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = boot1he.s; sourceTree = "<group>"; };
B0056CF011F3868000754B65 /* boot1hp.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = boot1hp.s; sourceTree = "<group>"; };
B0056CF111F3868000754B65 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
B0056CF311F3868000754B65 /* appleboot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = appleboot.h; sourceTree = "<group>"; };
B0056CF411F3868000754B65 /* appleClut8.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = appleClut8.h; sourceTree = "<group>"; };
B0056CF511F3868000754B65 /* bmdecompress.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bmdecompress.c; sourceTree = "<group>"; };
B0056CF611F3868000754B65 /* boot.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = boot.c; sourceTree = "<group>"; };
B0056CF711F3868000754B65 /* boot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = boot.h; sourceTree = "<group>"; };
B0056CF811F3868000754B65 /* boot2.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = boot2.s; sourceTree = "<group>"; };
B0056CF911F3868000754B65 /* drivers.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = drivers.c; sourceTree = "<group>"; };
B0056CFA11F3868000754B65 /* graphic_utils.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = graphic_utils.c; sourceTree = "<group>"; };
B0056CFB11F3868000754B65 /* graphic_utils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = graphic_utils.h; sourceTree = "<group>"; };
B0056CFC11F3868000754B65 /* graphics.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = graphics.c; sourceTree = "<group>"; };
B0056CFD11F3868000754B65 /* graphics.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = graphics.h; sourceTree = "<group>"; };
B0056CFE11F3868000754B65 /* gui.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = gui.c; sourceTree = "<group>"; };
B0056CFF11F3868000754B65 /* gui.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = gui.h; sourceTree = "<group>"; };
B0056D0011F3868000754B65 /* IOHibernatePrivate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IOHibernatePrivate.h; sourceTree = "<group>"; };
B0056D0111F3868000754B65 /* lzss.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = lzss.c; sourceTree = "<group>"; };
B0056D0211F3868000754B65 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
B0056D0311F3868000754B65 /* mboot.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mboot.c; sourceTree = "<group>"; };
B0056D0411F3868000754B65 /* mboot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mboot.h; sourceTree = "<group>"; };
B0056D0511F3868000754B65 /* multiboot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = multiboot.h; sourceTree = "<group>"; };
B0056D0611F3868000754B65 /* options.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = options.c; sourceTree = "<group>"; };
B0056D0711F3868000754B65 /* picopng.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = picopng.c; sourceTree = "<group>"; };
B0056D0811F3868000754B65 /* picopng.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = picopng.h; sourceTree = "<group>"; };
B0056D0911F3868000754B65 /* prompt.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = prompt.c; sourceTree = "<group>"; };
B0056D0A11F3868000754B65 /* ramdisk.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ramdisk.c; sourceTree = "<group>"; };
B0056D0B11F3868000754B65 /* ramdisk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ramdisk.h; sourceTree = "<group>"; };
B0056D0C11F3868000754B65 /* resume.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = resume.c; sourceTree = "<group>"; };
B0056D0D11F3868000754B65 /* WKdm.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WKdm.h; sourceTree = "<group>"; };
B0056D0E11F3868000754B65 /* WKdmDecompress.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = WKdmDecompress.c; sourceTree = "<group>"; };
B0056D1011F3868000754B65 /* cdboot.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = cdboot.s; sourceTree = "<group>"; };
B0056D1111F3868000754B65 /* cdboothdd.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = cdboothdd.s; sourceTree = "<group>"; };
B0056D1211F3868000754B65 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
B0056D1411F3868000754B65 /* Limits */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = Limits; sourceTree = "<group>"; };
B0056D1511F3868000754B65 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = "<group>"; };
B0056D1711F3868000754B65 /* efi_tables.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = efi_tables.c; sourceTree = "<group>"; };
B0056D1811F3868000754B65 /* efi_tables.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = efi_tables.h; sourceTree = "<group>"; };
B0056D1911F3868000754B65 /* error.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = error.c; sourceTree = "<group>"; };
B0056D1A11F3868000754B65 /* libsa.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = libsa.h; sourceTree = "<group>"; };
B0056D1B11F3868000754B65 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
B0056D1C11F3868000754B65 /* memory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = memory.h; sourceTree = "<group>"; };
B0056D1D11F3868000754B65 /* prf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = prf.c; sourceTree = "<group>"; };
B0056D1E11F3868000754B65 /* printf.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = printf.c; sourceTree = "<group>"; };
B0056D1F11F3868000754B65 /* qsort.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = qsort.c; sourceTree = "<group>"; };
B0056D2011F3868000754B65 /* setjmp.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = setjmp.s; sourceTree = "<group>"; };
B0056D2111F3868000754B65 /* string.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = string.c; sourceTree = "<group>"; };
B0056D2211F3868000754B65 /* strtol.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = strtol.c; sourceTree = "<group>"; };
B0056D2311F3868000754B65 /* zalloc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zalloc.c; sourceTree = "<group>"; };
B0056D2511F3868000754B65 /* acpi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = acpi.h; sourceTree = "<group>"; };
B0056D2611F3868000754B65 /* acpi_patcher.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = acpi_patcher.c; sourceTree = "<group>"; };
B0056D2711F3868000754B65 /* acpi_patcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = acpi_patcher.h; sourceTree = "<group>"; };
B0056D2811F3868000754B65 /* allocate.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = allocate.c; sourceTree = "<group>"; };
B0056D2911F3868000754B65 /* asm.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = asm.s; sourceTree = "<group>"; };
B0056D2A11F3868000754B65 /* ati.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ati.c; sourceTree = "<group>"; };
B0056D2B11F3868000754B65 /* ati.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ati.h; sourceTree = "<group>"; };
B0056D2C11F3868000754B65 /* bios.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bios.h; sourceTree = "<group>"; };
B0056D2D11F3868000754B65 /* bios.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = bios.s; sourceTree = "<group>"; };
B0056D2E11F3868000754B65 /* biosfn.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = biosfn.c; sourceTree = "<group>"; };
B0056D2F11F3868000754B65 /* bootstruct.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = bootstruct.c; sourceTree = "<group>"; };
B0056D3011F3868000754B65 /* bootstruct.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = bootstruct.h; sourceTree = "<group>"; };
B0056D3111F3868000754B65 /* cache.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cache.c; sourceTree = "<group>"; };
B0056D3211F3868000754B65 /* console.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = console.c; sourceTree = "<group>"; };
B0056D3311F3868000754B65 /* convert.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = convert.c; sourceTree = "<group>"; };
B0056D3411F3868000754B65 /* convert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = convert.h; sourceTree = "<group>"; };
B0056D3511F3868000754B65 /* cpu.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpu.c; sourceTree = "<group>"; };
B0056D3611F3868000754B65 /* cpu.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = cpu.h; sourceTree = "<group>"; };
B0056D3711F3868000754B65 /* device_inject.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = device_inject.c; sourceTree = "<group>"; };
B0056D3811F3868000754B65 /* device_inject.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = device_inject.h; sourceTree = "<group>"; };
B0056D3911F3868000754B65 /* device_tree.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = device_tree.c; sourceTree = "<group>"; };
B0056D3A11F3868000754B65 /* device_tree.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = device_tree.h; sourceTree = "<group>"; };
B0056D3B11F3868000754B65 /* disk.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = disk.c; sourceTree = "<group>"; };
B0056D3C11F3868000754B65 /* efi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = efi.h; sourceTree = "<group>"; };
B0056D3D11F3868000754B65 /* ext2fs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ext2fs.c; sourceTree = "<group>"; };
B0056D3E11F3868000754B65 /* ext2fs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ext2fs.h; sourceTree = "<group>"; };
B0056D3F11F3868000754B65 /* fake_efi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = fake_efi.c; sourceTree = "<group>"; };
B0056D4011F3868000754B65 /* fake_efi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fake_efi.h; sourceTree = "<group>"; };
B0056D4111F3868000754B65 /* fdisk.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fdisk.h; sourceTree = "<group>"; };
B0056D4211F3868000754B65 /* hfs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hfs.c; sourceTree = "<group>"; };
B0056D4311F3868000754B65 /* hfs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hfs.h; sourceTree = "<group>"; };
B0056D4411F3868000754B65 /* hfs_CaseTables.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hfs_CaseTables.h; sourceTree = "<group>"; };
B0056D4511F3868000754B65 /* hfs_compare.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hfs_compare.c; sourceTree = "<group>"; };
B0056D4611F3868000754B65 /* hpet.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = hpet.c; sourceTree = "<group>"; };
B0056D4711F3868000754B65 /* hpet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = hpet.h; sourceTree = "<group>"; };
B0056D4811F3868000754B65 /* io_inline.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = io_inline.h; sourceTree = "<group>"; };
B0056D4911F3868000754B65 /* libsaio.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = libsaio.h; sourceTree = "<group>"; };
B0056D4A11F3868000754B65 /* load.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = load.c; sourceTree = "<group>"; };
B0056D4B11F3868000754B65 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
B0056D4C11F3868000754B65 /* md5c.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = md5c.c; sourceTree = "<group>"; };
B0056D4D11F3868000754B65 /* mem.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mem.c; sourceTree = "<group>"; };
B0056D4E11F3868000754B65 /* mem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mem.h; sourceTree = "<group>"; };
B0056D4F11F3868000754B65 /* memvendors.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = memvendors.h; sourceTree = "<group>"; };
B0056D5011F3868000754B65 /* misc.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = misc.c; sourceTree = "<group>"; };
B0056D5111F3868000754B65 /* msdos.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = msdos.c; sourceTree = "<group>"; };
B0056D5211F3868000754B65 /* msdos.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = msdos.h; sourceTree = "<group>"; };
B0056D5311F3868000754B65 /* msdos_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = msdos_private.h; sourceTree = "<group>"; };
B0056D5411F3868000754B65 /* nbp.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = nbp.c; sourceTree = "<group>"; };
B0056D5511F3868000754B65 /* nbp_cmd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nbp_cmd.h; sourceTree = "<group>"; };
B0056D5611F3868000754B65 /* ntfs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ntfs.c; sourceTree = "<group>"; };
B0056D5711F3868000754B65 /* ntfs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ntfs.h; sourceTree = "<group>"; };
B0056D5811F3868000754B65 /* ntfs_private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ntfs_private.h; sourceTree = "<group>"; };
B0056D5911F3868000754B65 /* nvidia.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = nvidia.c; sourceTree = "<group>"; };
B0056D5A11F3868000754B65 /* nvidia.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = nvidia.h; sourceTree = "<group>"; };
B0056D5B11F3868000754B65 /* pci.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pci.c; sourceTree = "<group>"; };
B0056D5C11F3868000754B65 /* pci.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pci.h; sourceTree = "<group>"; };
B0056D5D11F3868000754B65 /* pci_root.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pci_root.c; sourceTree = "<group>"; };
B0056D5E11F3868000754B65 /* pci_root.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = pci_root.h; sourceTree = "<group>"; };
B0056D5F11F3868000754B65 /* pci_setup.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = pci_setup.c; sourceTree = "<group>"; };
B0056D6011F3868000754B65 /* platform.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = platform.c; sourceTree = "<group>"; };
B0056D6111F3868000754B65 /* platform.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = platform.h; sourceTree = "<group>"; };
B0056D6211F3868000754B65 /* saio_internal.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = saio_internal.h; sourceTree = "<group>"; };
B0056D6311F3868000754B65 /* saio_types.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = saio_types.h; sourceTree = "<group>"; };
B0056D6411F3868000754B65 /* sl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = sl.h; sourceTree = "<group>"; };
B0056D6511F3868000754B65 /* SMBIOS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SMBIOS.h; sourceTree = "<group>"; };
B0056D6611F3868000754B65 /* smbios_patcher.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = smbios_patcher.c; sourceTree = "<group>"; };
B0056D6711F3868000754B65 /* smbios_patcher.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = smbios_patcher.h; sourceTree = "<group>"; };
B0056D6811F3868000754B65 /* spd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = spd.c; sourceTree = "<group>"; };
B0056D6911F3868000754B65 /* spd.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = spd.h; sourceTree = "<group>"; };
B0056D6A11F3868000754B65 /* stringTable.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = stringTable.c; sourceTree = "<group>"; };
B0056D6B11F3868000754B65 /* sys.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = sys.c; sourceTree = "<group>"; };
B0056D6C11F3868000754B65 /* table.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = table.c; sourceTree = "<group>"; };
B0056D6D11F3868000754B65 /* ufs.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ufs.c; sourceTree = "<group>"; };
B0056D6E11F3868000754B65 /* ufs.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ufs.h; sourceTree = "<group>"; };
B0056D6F11F3868000754B65 /* ufs_byteorder.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ufs_byteorder.c; sourceTree = "<group>"; };
B0056D7011F3868000754B65 /* ufs_byteorder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ufs_byteorder.h; sourceTree = "<group>"; };
B0056D7111F3868000754B65 /* usb.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = usb.c; sourceTree = "<group>"; };
B0056D7211F3868000754B65 /* vbe.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = vbe.c; sourceTree = "<group>"; };
B0056D7311F3868000754B65 /* vbe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = vbe.h; sourceTree = "<group>"; };
B0056D7411F3868000754B65 /* xml.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = xml.c; sourceTree = "<group>"; };
B0056D7511F3868000754B65 /* xml.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = xml.h; sourceTree = "<group>"; };
B0056D7611F3868000754B65 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
B0056D7711F3868000754B65 /* MakeInc.dir */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MakeInc.dir; sourceTree = "<group>"; };
B0056D7811F3868000754B65 /* MakePaths.dir */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = MakePaths.dir; sourceTree = "<group>"; };
B0056D7A11F3868000754B65 /* machOconv.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = machOconv.c; sourceTree = "<group>"; };
B0056D7B11F3868000754B65 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
B0056D7C11F3868000754B65 /* TODO */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = TODO; sourceTree = "<group>"; };
B0056D7D11F3868000754B65 /* Makefile */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = "<group>"; };
B0056D7F11F3868000754B65 /* CREDITS */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = CREDITS; sourceTree = "<group>"; };
B0056E1811F3868000754B65 /* screen_format.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = screen_format.png; sourceTree = "<group>"; };
B0056E1911F3868000754B65 /* xnulogo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = xnulogo.png; sourceTree = "<group>"; };
B0056E1A11F3868000754B65 /* Users_Guide0.5.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = Users_Guide0.5.pdf; sourceTree = "<group>"; };
B00F494911F6089500B1D7C5 /* aml_generator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = aml_generator.h; sourceTree = "<group>"; };
B00F494A11F6089500B1D7C5 /* aml_generator.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = aml_generator.c; sourceTree = "<group>"; };
B0146EFF11FDEF550010765C /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = "<group>"; };
B0146F0011FDEFB90010765C /* GPL_V2_LICENSE */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GPL_V2_LICENSE; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXGroup section */
children = (
B0056DBA11F3868000754B65 /* artwork */,
B0056E0611F3868000754B65 /* doc */,
B0056CE511F3868000754B65 /* i386 */,
AB43B2B514C37E520018D529 /* i386 */,
B0056D8311F3868000754B65 /* package */,
B0056CD411F3868000754B65 /* sym */,
B0056D8211F3868000754B65 /* APPLE_LICENSE */,
B0056D7F11F3868000754B65 /* CREDITS */,
B0056D8111F3868000754B65 /* CHANGES */,
B0146F0011FDEFB90010765C /* GPL_V2_LICENSE */,
B0146EFF11FDEF550010765C /* README */,
019DFBAF11FB94090013E8CC /* MEMTEST86_LICENSE */,
B0056D7C11F3868000754B65 /* TODO */,
B0056D7D11F3868000754B65 /* Makefile */,
B0056D8011F3868000754B65 /* coding_standards.txt */,
name = Chameleon;
sourceTree = "<group>";
};
B0056CD411F3868000754B65 /* sym */ = {
AB43B2B514C37E520018D529 /* i386 */ = {
isa = PBXGroup;
children = (
B0056CD511F3868000754B65 /* i386 */,
AB43B2B614C37E520018D529 /* boot0 */,
AB43B2BB14C37E520018D529 /* boot1 */,
AB43B2C214C37E520018D529 /* boot2 */,
AB43B2D714C37E520018D529 /* cdboot */,
AB43B2DB14C37E520018D529 /* doc */,
AB43B2DE14C37E520018D529 /* libsa */,
AB43B2ED14C37E520018D529 /* libsaio */,
AB43B34514C37E520018D529 /* Makefile */,
AB43B34614C37E520018D529 /* MakeInc.dir */,
AB43B34714C37E520018D529 /* MakePaths.dir */,
AB43B34814C37E520018D529 /* modules */,
AB43B3D914C37E520018D529 /* util */,
);
path = sym;
path = i386;
sourceTree = "<group>";
};
B0056CD511F3868000754B65 /* i386 */ = {
AB43B2B614C37E520018D529 /* boot0 */ = {
isa = PBXGroup;
children = (
B0056CD611F3868000754B65 /* boot */,
B0056CD711F3868000754B65 /* boot.sys */,
B0056CD811F3868000754B65 /* boot0 */,
B0056CD911F3868000754B65 /* boot0hfs */,
B0056CDA11F3868000754B65 /* boot1f32 */,
B0056CDB11F3868000754B65 /* boot1h */,
B0056CDC11F3868000754B65 /* boot1he */,
B0056CDD11F3868000754B65 /* boot1hp */,
B0056CDE11F3868000754B65 /* cdboot */,
B0056CDF11F3868000754B65 /* chain0 */,
B0056CE011F3868000754B65 /* embedded.h */,
B0056CE111F3868000754B65 /* libsa.a */,
B0056CE211F3868000754B65 /* libsaio.a */,
B0056CE311F3868000754B65 /* machOconv */,
B0056CE411F3868000754B65 /* vers.h */,
AB43B2B714C37E520018D529 /* boot0.s */,
AB43B2B814C37E520018D529 /* boot0md.s */,
AB43B2B914C37E520018D529 /* chain0.s */,
AB43B2BA14C37E520018D529 /* Makefile */,
);
path = i386;
path = boot0;
sourceTree = "<group>";
};
B0056CE511F3868000754B65 /* i386 */ = {
AB43B2BB14C37E520018D529 /* boot1 */ = {
isa = PBXGroup;
children = (
B0056CE611F3868000754B65 /* boot0 */,
B0056CEA11F3868000754B65 /* boot1 */,
B0056CF211F3868000754B65 /* boot2 */,
B0056D0F11F3868000754B65 /* cdboot */,
B0056D1311F3868000754B65 /* doc */,
B0056D1611F3868000754B65 /* libsa */,
B0056D2411F3868000754B65 /* libsaio */,
B0056D7911F3868000754B65 /* util */,
B0056D7611F3868000754B65 /* Makefile */,
B0056D7711F3868000754B65 /* MakeInc.dir */,
B0056D7811F3868000754B65 /* MakePaths.dir */,
AB43B2BC14C37E520018D529 /* boot1f32-install.sh */,
AB43B2BD14C37E520018D529 /* boot1f32.s */,
AB43B2BE14C37E520018D529 /* boot1h.s */,
AB43B2BF14C37E520018D529 /* boot1he.s */,
AB43B2C014C37E520018D529 /* boot1hp.s */,
AB43B2C114C37E520018D529 /* Makefile */,
);
path = i386;
path = boot1;
sourceTree = "<group>";
};
B0056CE611F3868000754B65 /* boot0 */ = {
AB43B2C214C37E520018D529 /* boot2 */ = {
isa = PBXGroup;
children = (
B0056CE711F3868000754B65 /* boot0.s */,
B0056CE811F3868000754B65 /* chain0.s */,
B0056CE911F3868000754B65 /* Makefile */,
AB43B2C314C37E520018D529 /* appleboot.h */,
AB43B2C414C37E520018D529 /* appleClut8.h */,
AB43B2C514C37E520018D529 /* boot.c */,
AB43B2C614C37E520018D529 /* boot.h */,
AB43B2C714C37E520018D529 /* boot2.s */,
AB43B2C814C37E520018D529 /* drivers.c */,
AB43B2C914C37E520018D529 /* drivers.h */,
AB43B2CA14C37E520018D529 /* failedboot.h */,
AB43B2CB14C37E520018D529 /* graphics.c */,
AB43B2CC14C37E520018D529 /* graphics.h */,
AB43B2CD14C37E520018D529 /* lzss.c */,
AB43B2CE14C37E520018D529 /* Makefile */,
AB43B2CF14C37E520018D529 /* mboot.c */,
AB43B2D014C37E520018D529 /* mboot.h */,
AB43B2D114C37E520018D529 /* modules.c */,
AB43B2D214C37E520018D529 /* modules.h */,
AB43B2D314C37E520018D529 /* multiboot.h */,
AB43B2D414C37E520018D529 /* options.c */,
AB43B2D514C37E520018D529 /* options.h */,
AB43B2D614C37E520018D529 /* prompt.c */,
);
path = boot0;
path = boot2;
sourceTree = "<group>";
};
B0056CEA11F3868000754B65 /* boot1 */ = {
AB43B2D714C37E520018D529 /* cdboot */ = {
isa = PBXGroup;
children = (
B0056CEB11F3868000754B65 /* boot1.asm */,
B0056CEC11F3868000754B65 /* boot1.s */,
B0056CED11F3868000754B65 /* boot1f32-install.sh */,
B0056CEE11F3868000754B65 /* boot1f32.s */,
B0056CEF11F3868000754B65 /* boot1he.s */,
B0056CF011F3868000754B65 /* boot1hp.s */,
B0056CF111F3868000754B65 /* Makefile */,
AB43B2D814C37E520018D529 /* cdboot.s */,
AB43B2D914C37E520018D529 /* cdboothdd.s */,
AB43B2DA14C37E520018D529 /* Makefile */,
);
path = boot1;
path = cdboot;
sourceTree = "<group>";
};
B0056CF211F3868000754B65 /* boot2 */ = {
AB43B2DB14C37E520018D529 /* doc */ = {
isa = PBXGroup;
children = (
B0056CF311F3868000754B65 /* appleboot.h */,
B0056CF411F3868000754B65 /* appleClut8.h */,
B0056CF511F3868000754B65 /* bmdecompress.c */,
B0056CF611F3868000754B65 /* boot.c */,
B0056CF711F3868000754B65 /* boot.h */,
B0056CF811F3868000754B65 /* boot2.s */,
B0056CF911F3868000754B65 /* drivers.c */,
B0056CFA11F3868000754B65 /* graphic_utils.c */,
B0056CFB11F3868000754B65 /* graphic_utils.h */,
B0056CFC11F3868000754B65 /* graphics.c */,
B0056CFD11F3868000754B65 /* graphics.h */,
B0056CFE11F3868000754B65 /* gui.c */,
B0056CFF11F3868000754B65 /* gui.h */,
B0056D0011F3868000754B65 /* IOHibernatePrivate.h */,
B0056D0111F3868000754B65 /* lzss.c */,
B0056D0211F3868000754B65 /* Makefile */,
B0056D0311F3868000754B65 /* mboot.c */,
B0056D0411F3868000754B65 /* mboot.h */,
B0056D0511F3868000754B65 /* multiboot.h */,
B0056D0611F3868000754B65 /* options.c */,
B0056D0711F3868000754B65 /* picopng.c */,
B0056D0811F3868000754B65 /* picopng.h */,
B0056D0911F3868000754B65 /* prompt.c */,
B0056D0A11F3868000754B65 /* ramdisk.c */,
B0056D0B11F3868000754B65 /* ramdisk.h */,
B0056D0C11F3868000754B65 /* resume.c */,
B0056D0D11F3868000754B65 /* WKdm.h */,
B0056D0E11F3868000754B65 /* WKdmDecompress.c */,
AB43B2DC14C37E520018D529 /* Limits */,
AB43B2DD14C37E520018D529 /* README */,
);
path = boot2;
path = doc;
sourceTree = "<group>";
};
B0056D0F11F3868000754B65 /* cdboot */ = {
AB43B2DE14C37E520018D529 /* libsa */ = {
isa = PBXGroup;
children = (
B0056D1011F3868000754B65 /* cdboot.s */,
B0056D1111F3868000754B65 /* cdboothdd.s */,
B0056D1211F3868000754B65 /* Makefile */,
AB43B3EC14C383120018D529 /* bcopy.s */,
AB43B3ED14C383120018D529 /* bzero.s */,
AB43B3EE14C383120018D529 /* divdi3.c */,
AB43B3EF14C383120018D529 /* moddi3.c */,
AB43B3F014C383120018D529 /* qdivrem.c */,
AB43B3F114C383120018D529 /* quad.h */,
AB43B3F214C383120018D529 /* udivdi3.c */,
AB43B3F314C383120018D529 /* umoddi3.c */,
AB43B2DF14C37E520018D529 /* efi_tables.c */,
AB43B2E014C37E520018D529 /* efi_tables.h */,
AB43B2E114C37E520018D529 /* error.c */,
AB43B2E214C37E520018D529 /* libsa.h */,
AB43B2E314C37E520018D529 /* Makefile */,
AB43B2E414C37E520018D529 /* memory.h */,
AB43B2E514C37E520018D529 /* prf.c */,
AB43B2E614C37E520018D529 /* printf.c */,
AB43B2E714C37E520018D529 /* qsort.c */,
AB43B2E814C37E520018D529 /* rand.c */,
AB43B2E914C37E520018D529 /* setjmp.s */,
AB43B2EA14C37E520018D529 /* string.c */,
AB43B2EB14C37E520018D529 /* strtol.c */,
AB43B2EC14C37E520018D529 /* zalloc.c */,
);
path = cdboot;
path = libsa;
sourceTree = "<group>";
};
B0056D1311F3868000754B65 /* doc */ = {
AB43B2ED14C37E520018D529 /* libsaio */ = {
isa = PBXGroup;
children = (
B0056D1411F3868000754B65 /* Limits */,
B0056D1511F3868000754B65 /* README */,
AB43B2EE14C37E520018D529 /* acpi.h */,
AB43B2EF14C37E520018D529 /* acpi_tools.c */,
AB43B2F014C37E520018D529 /* acpi_tools.h */,
AB43B2F114C37E520018D529 /* allocate.c */,
AB43B2F214C37E520018D529 /* apic.h */,
AB43B42A14C3A8080018D529 /* arc4random.c */,
AB43B2F314C37E520018D529 /* asm.s */,
AB43B2F414C37E520018D529 /* befs.c */,
AB43B2F514C37E520018D529 /* befs.h */,
AB43B2F614C37E520018D529 /* bios.h */,
AB43B2F714C37E520018D529 /* bios.s */,
AB43B2F814C37E520018D529 /* biosfn.c */,
AB43B2F914C37E520018D529 /* bootLion.h */,
AB43B2FA14C37E520018D529 /* bootstruct.c */,
AB43B2FB14C37E520018D529 /* bootstruct.h */,
AB43B2FC14C37E520018D529 /* cache.c */,
AB43B2FD14C37E520018D529 /* console.c */,
AB43B2FE14C37E520018D529 /* convert.c */,
AB43B2FF14C37E520018D529 /* convert.h */,
AB43B30014C37E520018D529 /* cpu.c */,
AB43B30114C37E520018D529 /* cpu.h */,
AB0E930C14C6223500F798D7 /* cpu_intel_amd.c */,
AB43B30214C37E520018D529 /* cpu_data.h */,
AB43B30314C37E520018D529 /* cpuid.h */,
AB43B30414C37E520018D529 /* datatype.h */,
AB43B30514C37E520018D529 /* device_inject.c */,
AB43B30614C37E520018D529 /* device_inject.h */,
AB43B30714C37E520018D529 /* device_tree.c */,
AB43B30814C37E520018D529 /* device_tree.h */,
AB43B30914C37E520018D529 /* disk.c */,
AB43B30A14C37E520018D529 /* disk.h */,
AB43B30B14C37E520018D529 /* efi.h */,
AB43B30C14C37E520018D529 /* exfat.c */,
AB43B30D14C37E520018D529 /* exfat.h */,
AB43B30E14C37E520018D529 /* ext2fs.c */,
AB43B30F14C37E520018D529 /* ext2fs.h */,
AB43B31014C37E520018D529 /* fake_efi.c */,
AB43B31114C37E520018D529 /* fake_efi.h */,
AB43B31214C37E520018D529 /* fdisk.h */,
AB43B31314C37E520018D529 /* freebsd.c */,
AB43B31414C37E520018D529 /* freebsd.h */,
AB43B31514C37E520018D529 /* hfs.c */,
AB43B31614C37E520018D529 /* hfs.h */,
AB43B31714C37E520018D529 /* hfs_CaseTables.h */,
AB43B31814C37E520018D529 /* hfs_compare.c */,
AB43B31914C37E520018D529 /* intel_acpi.h */,
AB43B31A14C37E520018D529 /* internal_modules.h */,
AB43B31B14C37E520018D529 /* io_inline.h */,
AB43B31C14C37E520018D529 /* libsaio.h */,
AB43B31D14C37E520018D529 /* load.c */,
AB43B31E14C37E520018D529 /* Makefile */,
AB43B31F14C37E520018D529 /* md5c.c */,
AB43B32014C37E520018D529 /* misc.c */,
AB43B32114C37E520018D529 /* msdos.c */,
AB43B32214C37E520018D529 /* msdos.h */,
AB43B32314C37E520018D529 /* msdos_private.h */,
AB43B32414C37E520018D529 /* nbp.c */,
AB43B32514C37E520018D529 /* nbp_cmd.h */,
AB43B32614C37E520018D529 /* ntfs.c */,
AB43B32714C37E520018D529 /* ntfs.h */,
AB43B32814C37E520018D529 /* ntfs_private.h */,
AB43B32914C37E520018D529 /* openbsd.c */,
AB43B32A14C37E520018D529 /* openbsd.h */,
AB43B32B14C37E520018D529 /* pci.c */,
AB43B32C14C37E520018D529 /* pci.h */,
AB43B32D14C37E520018D529 /* pci_root.c */,
AB43B32E14C37E520018D529 /* pci_root.h */,
AB43B32F14C37E520018D529 /* platform.c */,
AB43B33014C37E520018D529 /* platform.h */,
AB43B33114C37E520018D529 /* ppm.h */,
AB43B33214C37E520018D529 /* ppmsetup.h */,
AB43B33314C37E520018D529 /* saio_internal.h */,
AB43B33414C37E520018D529 /* saio_types.h */,
AB43B33514C37E520018D529 /* sl.h */,
AB43B33614C37E520018D529 /* smbios.c */,
AB43B33714C37E520018D529 /* SMBIOS.h */,
AB43B3F814C384040018D529 /* stack_protector.c */,
AB43B33814C37E520018D529 /* smp-imps.c */,
AB43B33914C37E520018D529 /* smp-imps.h */,
AB43B33A14C37E520018D529 /* stringTable.c */,
AB43B33B14C37E520018D529 /* sys.c */,
AB43B33C14C37E520018D529 /* table.c */,
AB43B33D14C37E520018D529 /* ufs.c */,
AB43B33E14C37E520018D529 /* ufs.h */,
AB43B33F14C37E520018D529 /* ufs_byteorder.c */,
AB43B34014C37E520018D529 /* ufs_byteorder.h */,
AB43B34114C37E520018D529 /* vbe.c */,
AB43B34214C37E520018D529 /* vbe.h */,
AB43B34314C37E520018D529 /* xml.c */,
AB43B34414C37E520018D529 /* xml.h */,
);
path = doc;
path = libsaio;
sourceTree = "<group>";
};
B0056D1611F3868000754B65 /* libsa */ = {
AB43B34814C37E520018D529 /* modules */ = {
isa = PBXGroup;
children = (
B0056D1711F3868000754B65 /* efi_tables.c */,
B0056D1811F3868000754B65 /* efi_tables.h */,
B0056D1911F3868000754B65 /* error.c */,
B0056D1A11F3868000754B65 /* libsa.h */,
B0056D1B11F3868000754B65 /* Makefile */,
B0056D1C11F3868000754B65 /* memory.h */,
B0056D1D11F3868000754B65 /* prf.c */,
B0056D1E11F3868000754B65 /* printf.c */,
B0056D1F11F3868000754B65 /* qsort.c */,
B0056D2011F3868000754B65 /* setjmp.s */,
B0056D2111F3868000754B65 /* string.c */,
B0056D2211F3868000754B65 /* strtol.c */,
B0056D2311F3868000754B65 /* zalloc.c */,
AB43B34914C37E520018D529 /* ACPICodec */,
AB43B35214C37E520018D529 /* ACPIPatcher */,
AB43B35914C37E520018D529 /* CPUfreq */,
AB43B35C14C37E520018D529 /* GraphicsEnabler */,
AB43B36614C37E520018D529 /* GUI */,
AB43B37014C37E520018D529 /* HelloWorld */,
AB43B37314C37E520018D529 /* HibernateEnabler */,
AB43B37D14C37E520018D529 /* HPET */,
AB43B38114C37E520018D529 /* KernelPatcher */,
AB43B38514C37E520018D529 /* KextPatcher */,
AB43B39C14C37E520018D529 /* Keymapper */,
AB43B3A214C37E520018D529 /* Makefile */,
AB43B3A314C37E520018D529 /* Memory */,
AB43B3B014C37E520018D529 /* NetbookInstaller */,
AB43B3B314C37E520018D529 /* Networking */,
AB43B3B614C37E520018D529 /* RamDiskLoader */,
AB43B3BB14C37E520018D529 /* Resolution */,
AB43B3C314C37E520018D529 /* SMBiosGetters */,
AB43B3CC14C37E520018D529 /* SMBiosPatcher */,
AB43B3D214C37E520018D529 /* USBFix */,
AB43B3D614C37E520018D529 /* YellowIconFixer */,
);
path = libsa;
path = modules;
sourceTree = "<group>";
};
B0056D2411F3868000754B65 /* libsaio */ = {
AB43B34914C37E520018D529 /* ACPICodec */ = {
isa = PBXGroup;
children = (
B0056D2511F3868000754B65 /* acpi.h */,
B0056D2611F3868000754B65 /* acpi_patcher.c */,
B0056D2711F3868000754B65 /* acpi_patcher.h */,
B0056D2811F3868000754B65 /* allocate.c */,
B00F494A11F6089500B1D7C5 /* aml_generator.c */,
B00F494911F6089500B1D7C5 /* aml_generator.h */,
B0056D2911F3868000754B65 /* asm.s */,
B0056D2A11F3868000754B65 /* ati.c */,
B0056D2B11F3868000754B65 /* ati.h */,
B0056D2C11F3868000754B65 /* bios.h */,
B0056D2D11F3868000754B65 /* bios.s */,
B0056D2E11F3868000754B65 /* biosfn.c */,
1D145307137073F40050C0CD /* bootargs.h */,
B0056D2F11F3868000754B65 /* bootstruct.c */,
B0056D3011F3868000754B65 /* bootstruct.h */,
B0056D3111F3868000754B65 /* cache.c */,
B0056D3211F3868000754B65 /* console.c */,
B0056D3311F3868000754B65 /* convert.c */,
B0056D3411F3868000754B65 /* convert.h */,
B0056D3511F3868000754B65 /* cpu.c */,
B0056D3611F3868000754B65 /* cpu.h */,
B0056D3711F3868000754B65 /* device_inject.c */,
B0056D3811F3868000754B65 /* device_inject.h */,
B0056D3911F3868000754B65 /* device_tree.c */,
B0056D3A11F3868000754B65 /* device_tree.h */,
B0056D3B11F3868000754B65 /* disk.c */,
65ED53931204B83200B22507 /* disk.h */,
0172D0DC11FB66820030222E /* dram_controllers.h */,
0172D0DD11FB66820030222E /* dram_controllers.c */,
B0056D3C11F3868000754B65 /* efi.h */,
B0056D3D11F3868000754B65 /* ext2fs.c */,
B0056D3E11F3868000754B65 /* ext2fs.h */,
B0056D3F11F3868000754B65 /* fake_efi.c */,
B0056D4011F3868000754B65 /* fake_efi.h */,
B0056D4111F3868000754B65 /* fdisk.h */,
B0056D4211F3868000754B65 /* hfs.c */,
B0056D4311F3868000754B65 /* hfs.h */,
B0056D4411F3868000754B65 /* hfs_CaseTables.h */,
B0056D4511F3868000754B65 /* hfs_compare.c */,
B0056D4611F3868000754B65 /* hpet.c */,
B0056D4711F3868000754B65 /* hpet.h */,
B0056D4811F3868000754B65 /* io_inline.h */,
B0056D4911F3868000754B65 /* libsaio.h */,
B0056D4A11F3868000754B65 /* load.c */,
B0056D4B11F3868000754B65 /* Makefile */,
B0056D4C11F3868000754B65 /* md5c.c */,
B0056D4D11F3868000754B65 /* mem.c */,
B0056D4E11F3868000754B65 /* mem.h */,
B0056D4F11F3868000754B65 /* memvendors.h */,
B0056D5011F3868000754B65 /* misc.c */,
B0056D5111F3868000754B65 /* msdos.c */,
B0056D5211F3868000754B65 /* msdos.h */,
B0056D5311F3868000754B65 /* msdos_private.h */,
B0056D5411F3868000754B65 /* nbp.c */,
B0056D5511F3868000754B65 /* nbp_cmd.h */,
B0056D5611F3868000754B65 /* ntfs.c */,
B0056D5711F3868000754B65 /* ntfs.h */,
B0056D5811F3868000754B65 /* ntfs_private.h */,
B0056D5911F3868000754B65 /* nvidia.c */,
B0056D5A11F3868000754B65 /* nvidia.h */,
B0056D5B11F3868000754B65 /* pci.c */,
B0056D5C11F3868000754B65 /* pci.h */,
B0056D5D11F3868000754B65 /* pci_root.c */,
B0056D5E11F3868000754B65 /* pci_root.h */,
B0056D5F11F3868000754B65 /* pci_setup.c */,
B0056D6011F3868000754B65 /* platform.c */,
B0056D6111F3868000754B65 /* platform.h */,
B0056D6211F3868000754B65 /* saio_internal.h */,
B0056D6311F3868000754B65 /* saio_types.h */,
B0056D6411F3868000754B65 /* sl.h */,
B0056D6511F3868000754B65 /* SMBIOS.h */,
B0056D6611F3868000754B65 /* smbios_patcher.c */,
B0056D6711F3868000754B65 /* smbios_patcher.h */,
B0056D6811F3868000754B65 /* spd.c */,
B0056D6911F3868000754B65 /* spd.h */,
B0056D6A11F3868000754B65 /* stringTable.c */,
B0056D6B11F3868000754B65 /* sys.c */,
B0056D6C11F3868000754B65 /* table.c */,
B0056D6D11F3868000754B65 /* ufs.c */,
B0056D6E11F3868000754B65 /* ufs.h */,
B0056D6F11F3868000754B65 /* ufs_byteorder.c */,
B0056D7011F3868000754B65 /* ufs_byteorder.h */,
B0056D7111F3868000754B65 /* usb.c */,
B0056D7211F3868000754B65 /* vbe.c */,
B0056D7311F3868000754B65 /* vbe.h */,
B0056D7411F3868000754B65 /* xml.c */,
B0056D7511F3868000754B65 /* xml.h */,
1D2A1AF513743A2600787720 /* bootargs.h */,
AB43B34A14C37E520018D529 /* acpi_codec.c */,
AB43B34B14C37E520018D529 /* acpi_codec.h */,
AB43B34C14C37E520018D529 /* acpicode.c */,
AB43B34D14C37E520018D529 /* acpicode.h */,
AB43B34E14C37E520018D529 /* ACPICodec.c */,
AB43B34F14C37E520018D529 /* acpidecode.c */,
AB43B35014C37E520018D529 /* acpidecode.h */,
AB43B35114C37E520018D529 /* Makefile */,
);
path = libsaio;
path = ACPICodec;
sourceTree = "<group>";
};
B0056D7911F3868000754B65 /* util */ = {
AB43B35214C37E520018D529 /* ACPIPatcher */ = {
isa = PBXGroup;
children = (
B0056D7A11F3868000754B65 /* machOconv.c */,
B0056D7B11F3868000754B65 /* Makefile */,
AB43B35314C37E520018D529 /* acpi_patcher.c */,
AB43B35414C37E520018D529 /* acpi_patcher.h */,
AB43B35514C37E520018D529 /* AcpiPatcher.c */,
AB43B35614C37E520018D529 /* aml_generator.c */,
AB43B35714C37E520018D529 /* aml_generator.h */,
AB43B35814C37E520018D529 /* Makefile */,
);
path = ACPIPatcher;
sourceTree = "<group>";
};
AB43B35914C37E520018D529 /* CPUfreq */ = {
isa = PBXGroup;
children = (
AB43B35A14C37E520018D529 /* CPUfreq.c */,
AB43B35B14C37E520018D529 /* Makefile */,
);
path = CPUfreq;
sourceTree = "<group>";
};
AB43B35C14C37E520018D529 /* GraphicsEnabler */ = {
isa = PBXGroup;
children = (
AB43B35D14C37E520018D529 /* ati.c */,
AB43B35E14C37E520018D529 /* ati.h */,
AB43B35F14C37E520018D529 /* ati_reg.h */,
AB43B36014C37E520018D529 /* gma.c */,
AB43B36114C37E520018D529 /* gma.h */,
AB43B36214C37E520018D529 /* GraphicsEnabler.c */,
AB43B36314C37E520018D529 /* Makefile */,
AB43B36414C37E520018D529 /* nvidia.c */,
AB43B36514C37E520018D529 /* nvidia.h */,
);
path = GraphicsEnabler;
sourceTree = "<group>";
};
AB43B36614C37E520018D529 /* GUI */ = {
isa = PBXGroup;
children = (
AB43B36714C37E520018D529 /* graphic_utils.c */,
AB43B36814C37E520018D529 /* graphic_utils.h */,
AB43B36914C37E520018D529 /* gui.c */,
AB43B36A14C37E520018D529 /* gui.h */,
AB43B36B14C37E520018D529 /* GUI_appleboot.h */,
AB43B36C14C37E520018D529 /* GUI_module.c */,
AB43B36D14C37E520018D529 /* Makefile */,
AB43B36E14C37E520018D529 /* picopng.c */,
AB43B36F14C37E520018D529 /* picopng.h */,
);
path = GUI;
sourceTree = "<group>";
};
AB43B37014C37E520018D529 /* HelloWorld */ = {
isa = PBXGroup;
children = (
AB43B37114C37E520018D529 /* HelloWorld.c */,
AB43B37214C37E520018D529 /* Makefile */,
);
path = HelloWorld;
sourceTree = "<group>";
};
AB43B37314C37E520018D529 /* HibernateEnabler */ = {
isa = PBXGroup;
children = (
AB43B37414C37E520018D529 /* bmdecompress.c */,
AB43B37514C37E520018D529 /* bmdecompress.h */,
AB43B37614C37E520018D529 /* graphic_utils.c */,
AB43B37714C37E520018D529 /* graphic_utils.h */,
AB43B37814C37E520018D529 /* HibernateEnabler.c */,
AB43B37914C37E520018D529 /* IOHibernatePrivate.h */,
AB43B37A14C37E520018D529 /* Makefile */,
AB43B37B14C37E520018D529 /* resume.c */,
AB43B37C14C37E520018D529 /* resume.h */,
);
path = HibernateEnabler;
sourceTree = "<group>";
};
AB43B37D14C37E520018D529 /* HPET */ = {
isa = PBXGroup;
children = (
AB43B37E14C37E520018D529 /* HPET.c */,
AB43B37F14C37E520018D529 /* hpet.h */,
AB43B38014C37E520018D529 /* Makefile */,
);
path = HPET;
sourceTree = "<group>";
};
AB43B38114C37E520018D529 /* KernelPatcher */ = {
isa = PBXGroup;
children = (
AB43B38214C37E520018D529 /* kernel_patcher.c */,
AB43B38314C37E520018D529 /* kernel_patcher.h */,
AB43B38414C37E520018D529 /* Makefile */,
);
path = KernelPatcher;
sourceTree = "<group>";
};
AB43B38514C37E520018D529 /* KextPatcher */ = {
isa = PBXGroup;
children = (
AB43B38614C37E520018D529 /* adler32.c */,
AB43B38714C37E520018D529 /* deflate.c */,
AB43B38814C37E520018D529 /* deflate.h */,
AB43B38914C37E520018D529 /* hex_editor.c */,
AB43B38A14C37E520018D529 /* hex_editor.h */,
AB43B38B14C37E520018D529 /* inffast.c */,
AB43B38C14C37E520018D529 /* inffast.h */,
AB43B38D14C37E520018D529 /* inffixed.h */,
AB43B38E14C37E520018D529 /* inflate.c */,
AB43B38F14C37E520018D529 /* inflate.h */,
AB43B39014C37E520018D529 /* inftrees.c */,
AB43B39114C37E520018D529 /* inftrees.h */,
AB43B39214C37E520018D529 /* kext_patcher.c */,
AB43B39314C37E520018D529 /* kext_patcher.h */,
AB43B39414C37E520018D529 /* Makefile */,
AB43B39514C37E520018D529 /* mkext.h */,
AB43B39614C37E520018D529 /* trees.c */,
AB43B39714C37E520018D529 /* trees.h */,
AB43B39814C37E520018D529 /* zconf.h */,
AB43B39914C37E520018D529 /* zlib.h */,
AB43B39A14C37E520018D529 /* zutil.c */,
AB43B39B14C37E520018D529 /* zutil.h */,
);
path = KextPatcher;
sourceTree = "<group>";
};
AB43B39C14C37E520018D529 /* Keymapper */ = {
isa = PBXGroup;
children = (
AB43B39D14C37E520018D529 /* Keylayout.c */,
AB43B39E14C37E520018D529 /* Keylayout.h */,
AB43B39F14C37E520018D529 /* Keymapper.c */,
AB43B3A014C37E520018D529 /* Makefile */,
AB43B3A114C37E520018D529 /* term.h */,
);
path = Keymapper;
sourceTree = "<group>";
};
AB43B3A314C37E520018D529 /* Memory */ = {
isa = PBXGroup;
children = (
AB43B3A414C37E520018D529 /* dram_controllers.c */,
AB43B3A514C37E520018D529 /* dram_controllers.h */,
AB43B3A614C37E520018D529 /* GPL_V2_LICENSE */,
AB43B3A714C37E520018D529 /* Makefile */,
AB43B3A814C37E520018D529 /* mem.c */,
AB43B3A914C37E520018D529 /* mem.h */,
AB43B3AA14C37E520018D529 /* Memory.c */,
AB43B3AB14C37E520018D529 /* MEMTEST86_LICENSE */,
AB43B3AC14C37E520018D529 /* memvendors.h */,
AB43B3AD14C37E520018D529 /* README */,
AB43B3AE14C37E520018D529 /* spd.c */,
AB43B3AF14C37E520018D529 /* spd.h */,
);
path = Memory;
sourceTree = "<group>";
};
AB43B3B014C37E520018D529 /* NetbookInstaller */ = {
isa = PBXGroup;
children = (
AB43B3B114C37E520018D529 /* Makefile */,
AB43B3B214C37E520018D529 /* NBI.c */,
);
path = NetbookInstaller;
sourceTree = "<group>";
};
AB43B3B314C37E520018D529 /* Networking */ = {
isa = PBXGroup;
children = (
AB43B3B414C37E520018D529 /* Makefile */,
AB43B3B514C37E520018D529 /* Networking.c */,
);
path = Networking;
sourceTree = "<group>";
};
AB43B3B614C37E520018D529 /* RamDiskLoader */ = {
isa = PBXGroup;
children = (
AB43B3B714C37E520018D529 /* Makefile */,
AB43B3B814C37E520018D529 /* ramdisk.c */,
AB43B3B914C37E520018D529 /* ramdisk.h */,
AB43B3BA14C37E520018D529 /* RamDiskLoader.c */,
);
path = RamDiskLoader;
sourceTree = "<group>";
};
AB43B3BB14C37E520018D529 /* Resolution */ = {
isa = PBXGroup;
children = (
AB43B3BC14C37E520018D529 /* 915resolution.c */,
AB43B3BD14C37E520018D529 /* 915resolution.h */,
AB43B3BE14C37E520018D529 /* edid.c */,
AB43B3BF14C37E520018D529 /* edid.h */,
AB43B3C014C37E520018D529 /* Makefile */,
AB43B3C114C37E520018D529 /* Resolution.c */,
AB43B3C214C37E520018D529 /* shortatombios.h */,
);
path = Resolution;
sourceTree = "<group>";
};
AB43B3C314C37E520018D529 /* SMBiosGetters */ = {
isa = PBXGroup;
children = (
AB43B3C414C37E520018D529 /* Makefile */,
AB43B3C514C37E520018D529 /* mysmbios.c */,
AB43B3C614C37E520018D529 /* mysmbios.h */,
AB43B3C714C37E520018D529 /* README */,
AB43B3C814C37E520018D529 /* smbios_decode.c */,
AB43B3C914C37E520018D529 /* smbios_getters.c */,
AB43B3CA14C37E520018D529 /* smbios_getters.h */,
AB43B3CB14C37E520018D529 /* SMBiosGetters.c */,
);
path = SMBiosGetters;
sourceTree = "<group>";
};
AB43B3CC14C37E520018D529 /* SMBiosPatcher */ = {
isa = PBXGroup;
children = (
AB43B3CD14C37E520018D529 /* Makefile */,
AB43B3CE14C37E520018D529 /* README */,
AB43B3CF14C37E520018D529 /* smbios_patcher.c */,
AB43B3D014C37E520018D529 /* smbios_patcher.h */,
AB43B3D114C37E520018D529 /* SMBiosPatcher.c */,
);
path = SMBiosPatcher;
sourceTree = "<group>";
};
AB43B3D214C37E520018D529 /* USBFix */ = {
isa = PBXGroup;
children = (
AB43B3D314C37E520018D529 /* Makefile */,
AB43B3D414C37E520018D529 /* usb.c */,
AB43B3D514C37E520018D529 /* USBFix.c */,
);
path = USBFix;
sourceTree = "<group>";
};
AB43B3D614C37E520018D529 /* YellowIconFixer */ = {
isa = PBXGroup;
children = (
AB43B3D714C37E520018D529 /* Makefile */,
AB43B3D814C37E520018D529 /* YellowIconFixer.c */,
);
path = YellowIconFixer;
sourceTree = "<group>";
};
AB43B3D914C37E520018D529 /* util */ = {
isa = PBXGroup;
children = (
AB43B3DA14C37E520018D529 /* amlsgn.m */,
AB43B3DB14C37E520018D529 /* bdmesg.c */,
AB43B3DC14C37E530018D529 /* Intel_Acpi */,
AB43B3E214C37E530018D529 /* machOconv.c */,
AB43B3E314C37E530018D529 /* Makefile */,
AB43B3E414C37E530018D529 /* Symbols.c */,
AB43B3E514C37E530018D529 /* WKdm.h */,
AB43B3E614C37E530018D529 /* WKdmDecompress.c */,
);
path = util;
sourceTree = "<group>";
};
AB43B3DC14C37E530018D529 /* Intel_Acpi */ = {
isa = PBXGroup;
children = (
AB43B3DD14C37E530018D529 /* acpidecode.h */,
AB43B3DE14C37E530018D529 /* datatype.h */,
AB43B3DF14C37E530018D529 /* intel_acpi.h */,
AB43B3E014C37E530018D529 /* ppm.h */,
AB43B3E114C37E530018D529 /* ppmsetup.h */,
);
path = Intel_Acpi;
sourceTree = "<group>";
};
B0056CD411F3868000754B65 /* sym */ = {
isa = PBXGroup;
children = (
B0056CD511F3868000754B65 /* i386 */,
);
path = sym;
sourceTree = "<group>";
};
B0056CD511F3868000754B65 /* i386 */ = {
isa = PBXGroup;
children = (
B0056CD611F3868000754B65 /* boot */,
B0056CD711F3868000754B65 /* boot.sys */,
B0056CD811F3868000754B65 /* boot0 */,
B0056CD911F3868000754B65 /* boot0hfs */,
B0056CDA11F3868000754B65 /* boot1f32 */,
B0056CDB11F3868000754B65 /* boot1h */,
B0056CDC11F3868000754B65 /* boot1he */,
B0056CDD11F3868000754B65 /* boot1hp */,
B0056CDE11F3868000754B65 /* cdboot */,
B0056CDF11F3868000754B65 /* chain0 */,
B0056CE011F3868000754B65 /* embedded.h */,
B0056CE111F3868000754B65 /* libsa.a */,
B0056CE211F3868000754B65 /* libsaio.a */,
B0056CE311F3868000754B65 /* machOconv */,
B0056CE411F3868000754B65 /* vers.h */,
);
path = i386;
sourceTree = "<group>";
};
B0056D8311F3868000754B65 /* package */ = {
isa = PBXGroup;
children = (
branches/cparm/CHANGES
1
2
3
4
5
6
17
28
39
- Added cpu_intel_amd.c (not by default, you need to edit the makefile in the libsaio directory to compile it)
- Implemented a stack_protector (seems to work)
- Sync'd libsa with Xnu
- Removed lcc_kext dependency from the make file
- Fixed some bugs
- Updated the default theme to v 1.1 (credit to blackosx)
- Updated LogintoLion with he haiku device logo (credit to blackosx)
- Updated for the gui
branches/cparm/i386/libsaio/console.c
6868
6969
7070
71
72
73
74
75
71
72
73
74
75
7676
7777
7878
......
8787
8888
8989
90
90
9191
9292
93
93
9494
9595
96
96
9797
9898
9999
......
106106
107107
108108
109
109
110110
111111
112112
......
124124
125125
126126
127
127
128128
129129
130130
131131
132
132
133133
134134
135135
136136
137137
138
138
139139
140
141
142140
143141
144142
......
151149
152150
153151
154
152
155153
156
154
157155
158156
159157
......
163161
164162
165163
166
164
167165
168166
169167
170
168
171169
172
170
173171
174172
175
173
176174
177175
178176
......
180178
181179
182180
183
181
184182
185183
186184
......
194192
195193
196194
197
195
198196
199
197
200198
201
199
202200
203201
204
202
205203
206204
207205
......
209207
210208
211209
212
210
213211
214212
215213
......
219217
220218
221219
222
220
223221
224222
225223
......
229227
230228
231229
232
230
233231
234232
235
233
236234
237235
238236
......
247245
248246
249247
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
void sputc(int c, struct putc_info * pi)
{
if (pi->last_str)
if (pi->str == pi->last_str)
{
*(pi->str) = '\0';
return;
}
if (pi->str == pi->last_str)
{
*(pi->str) = '\0';
return;
}
*(pi->str)++ = c;
}
{
va_list ap;
struct putc_info pi;
if (!msgbuf)
return;
if (((cursor - msgbuf) > (BOOTER_LOG_SIZE - SAFE_LOG_SIZE)))
return;
va_start(ap, fmt);
pi.str = cursor;
pi.last_str = 0;
{
if (!msgbuf)
return;
Node *node = DT__FindNode("/", false);
if (node)
DT__AddProperty(node, "boot-log", strlen((char *)msgbuf) + 1, msgbuf);
for (c = 0; c < 8; c++) putc(' ');
return;
}
if ( c == '\n' )
{
putc('\r');
}
putc(c);
}
int getc()
{
int c = bgetc();
int c = bgetc();
//execute_hook("Keymapper", &c, NULL, NULL, NULL, NULL, NULL);
if ((c & 0xff) == 0)
return c;
else
int getchar()
{
register int c = getc();
if ( c == '\r' ) c = '\n';
if ( c >= ' ' && c < 0x7f) putchar(c);
return (c);
{
va_list ap;
va_start(ap, fmt);
prf(fmt, ap, putchar, 0);
{
/* Kabyl: BooterLog */
/* Kabyl: BooterLog */
struct putc_info pi;
if (!msgbuf)
return 0;
if (((cursor - msgbuf) > (BOOTER_LOG_SIZE - SAFE_LOG_SIZE)))
return 0;
pi.str = cursor;
prf(fmt, ap, sputc, &pi);
cursor += strlen((char *)cursor);
}
va_end(ap);
return 0;
}
{
prf(fmt, ap, putchar, 0);
}
{
/* Kabyl: BooterLog */
/* Kabyl: BooterLog */
struct putc_info pi;
if (!msgbuf)
return 0;
if (((cursor - msgbuf) > (BOOTER_LOG_SIZE - SAFE_LOG_SIZE)))
return 0;
pi.str = cursor;
prf(fmt, ap, sputc, &pi);
cursor += strlen((char *)cursor);
}
va_end(ap);
return(0);
}
va_list ap;
gErrors = true;
va_start(ap, fmt);
prf(fmt, ap, putchar, 0);
va_end(ap);
void stop(const char * fmt, ...)
{
va_list ap;
printf("\n");
va_start(ap, fmt);
prf(fmt, ap, putchar, 0);
va_end(ap);
printf("Press a key to continue...");
getc();
}
char * newStringWithFormat(const char * fmt, ...)
{
va_list ap;
struct putc_info pi;
int len;
char *str = NULL;
va_start(ap, fmt);
pi.last_str = 0;
len = prf_fmt_str_len(fmt, ap);
if (len > 0)
{
str = malloc(len+1);
if (!str) return NULL;
}
pi.str = str;
prf(fmt, ap, sputc, &pi);
*pi.str = '\0';
va_end(ap);
return str;
}
branches/cparm/i386/libsaio/arc4random.c
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
#include "libsaio.h"
/*
* License for L15_Swap, L15_InitState, L_SCHEDULE, L15_KSA, L15_Discard, L15, L15_Byte
*
* Copyright (c) 2004, 2005, 2006 Robin J Carey. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions, and the following disclaimer,
* without modification, immediately at the beginning of the file.
* 2. The name of the author may not be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* $DragonFly: src/sys/kern/kern_nrandom.c,v 1.7 2008/08/01 04:42:30 dillon Exp $
*/
/*
* IMPORTANT NOTE: LByteType must be exactly 8-bits in size or this software
* will not function correctly.
*/
typedef unsigned char LByteType;
#define L15_STATE_SIZE 256
static LByteType L15_x, L15_y;
static LByteType L15_start_x;
static LByteType L15_state[L15_STATE_SIZE];
/*
* PRIVATE FUNCS:
*/
static void L15(const LByteType * const key, const size_t keyLen);
static void L15_Swap(const LByteType pos1, const LByteType pos2);
static void L15_InitState(void);
static void L15_KSA(const LByteType * const key,
const size_t keyLen);
static void L15_Discard(const LByteType numCalls);
/*
* PUBLIC INTERFACE:
*/
static LByteType L15_Byte(void);
static __inline void
L15_Swap(const LByteType pos1, const LByteType pos2)
{
const LByteType save1 = L15_state[pos1];
L15_state[pos1] = L15_state[pos2];
L15_state[pos2] = save1;
}
static void
L15_InitState (void)
{
size_t i;
for (i = 0; i < L15_STATE_SIZE; ++i)
L15_state[i] = i;
}
#define L_SCHEDULE(xx) \
\
for (i = 0; i < L15_STATE_SIZE; ++i) { \
L15_Swap(i, (stateIndex += (L15_state[i] + (xx)))); \
}
static void
L15_KSA (const LByteType * const key, const size_t keyLen)
{
size_t i, keyIndex;
LByteType stateIndex = 0;
L_SCHEDULE(keyLen);
for (keyIndex = 0; keyIndex < keyLen; ++keyIndex) {
L_SCHEDULE(key[keyIndex]);
}
}
static void
L15_Discard(const LByteType numCalls)
{
LByteType i;
for (i = 0; i < numCalls; ++i) {
(void)L15_Byte();
}
}
/*
* PUBLIC INTERFACE:
*/
static void
L15(const LByteType * const key, const size_t keyLen)
{
L15_x = L15_start_x = 0;
L15_y = L15_STATE_SIZE - 1;
L15_InitState();
L15_KSA(key, keyLen);
L15_Discard(L15_Byte());
}
static LByteType
L15_Byte(void)
{
LByteType z;
L15_Swap(L15_state[L15_x], L15_y);
z = (L15_state [L15_x++] + L15_state[L15_y--]);
if (L15_x == L15_start_x) {
--L15_y;
}
return (L15_state[z]);
}
/*-
* THE BEER-WARE LICENSE
*
* <dan@FreeBSD.ORG> wrote this file. As long as you retain this notice you
* can do whatever you want with this stuff. If we meet some day, and you
* think this stuff is worth it, you can buy me a beer in return.
*
* Dan Moschuk
*
* $FreeBSD: src/sys/libkern/arc4random.c,v 1.3.2.2 2001/09/17 07:06:50 silby Exp $
*/
#defineARC4_MAXRUNS 16384
#defineARC4_RESEED_SECONDS 300 * 18
#defineARC4_KEYBYTES 32 /* 256 bit key */
static u_int8_t arc4_i, arc4_j;
static int arc4_initialized = 0;
static int arc4_numruns = 0;
static u_int8_t arc4_sbox[256];
static u_int32_t arc4_tv_nextreseed;
static u_int8_t arc4_randbyte(void);
static __inline void
arc4_swap(u_int8_t *a, u_int8_t *b)
{
u_int8_t c;
c = *a;
*a = *b;
*b = c;
}
/*
* Stir our S-box.
*/
static void
arc4_randomstir (void)
{
u_int8_t key[256];
int r, n;
/*
* XXX read_random() returns unsafe numbers if the entropy
* device is not loaded -- MarkM.
*/
{
for (r = 0; r < ARC4_KEYBYTES; ++r)
((u_char *)key)[r] = L15_Byte();
}
/* If r == 0 || -1, just use what was on the stack. */
if (r > 0)
{
for (n = r; n < sizeof(key); n++)
key[n] = key[n % r];
}
for (n = 0; n < 256; n++)
{
arc4_j = (arc4_j + arc4_sbox[n] + key[n]) % 256;
arc4_swap(&arc4_sbox[n], &arc4_sbox[arc4_j]);
}
arc4_i = arc4_j = 0;
/* Reset for next reseed cycle. */
arc4_tv_nextreseed = time18();
arc4_tv_nextreseed += ARC4_RESEED_SECONDS;
arc4_numruns = 0;
}
/*
* Initialize our S-box to its beginning defaults.
*/
static void
arc4_init(void)
{
int n;
u_int32_t now = time18();
L15((const LByteType *)&now, sizeof(u_int32_t));
arc4_i = arc4_j = 0;
for (n = 0; n < 256; n++)
arc4_sbox[n] = (u_int8_t) n;
arc4_randomstir();
arc4_initialized = 1;
/*
* Throw away the first N words of output, as suggested in the
* paper "Weaknesses in the Key Scheduling Algorithm of RC4"
* by Fluher, Mantin, and Shamir. (N = 256 in our case.)
*/
for (n = 0; n < 256*4; n++)
arc4_randbyte();
}
/*
* Generate a random byte.
*/
static u_int8_t
arc4_randbyte(void)
{
u_int8_t arc4_t;
arc4_i = (arc4_i + 1) % 256;
arc4_j = (arc4_j + arc4_sbox[arc4_i]) % 256;
arc4_swap(&arc4_sbox[arc4_i], &arc4_sbox[arc4_j]);
arc4_t = (arc4_sbox[arc4_i] + arc4_sbox[arc4_j]) % 256;
return arc4_sbox[arc4_t];
}
void
arc4rand(void *ptr, u_int len, int reseed)
{
u_char *p;
u_int32_t tv_now;
/* Initialize array if needed. */
if (!arc4_initialized)
arc4_init();
tv_now = time18();
if (reseed ||
(arc4_numruns > ARC4_MAXRUNS) ||
(tv_now > arc4_tv_nextreseed))
arc4_randomstir();
arc4_numruns += len;
p = ptr;
while (len--)
*p++ = arc4_randbyte();
}
uint32_t
arc4random(void)
{
uint32_t ret;
arc4rand(&ret, sizeof ret, 0);
return ret;
}
branches/cparm/i386/libsaio/Makefile
1111
1212
1313
14
14
1515
1616
1717
18
18
1919
2020
2121
......
3333
3434
3535
36
36
3737
3838
3939
OPTIM = -Os -Oz
DEBUG = -DNOTHING
#DEBUG = -DDEBUG_CPU=1 -DDEBUG_MEM=1 -DDEBUG_SPD=1 -DDEBUG_PCI=1 -DDEBUG_SMBIOS=1
CFLAGS= $(RC_CFLAGS) $(OPTIM) $(MORECPP) -arch i386 -g -Wmost \
CFLAGS= $(RC_CFLAGS) $(OPTIM) $(MORECPP) -arch i386 -g -Wmost -fstack-protector-all \
-D__ARCHITECTURE__=\"i386\" -DSAIO_INTERNAL_USER \
-DRCZ_COMPRESSED_FILE_SUPPORT $(DEBUG) \
-fno-builtin -static $(OMIT_FRAME_POINTER_CFLAG) \
-mpreferred-stack-boundary=2 -fno-align-functions -fno-stack-protector \
-mpreferred-stack-boundary=2 -fno-align-functions \
-march=pentium4 -msse2 -mfpmath=sse -msoft-float
DEFINES=
VPATH = $(OBJROOT):$(SYMROOT)
SAIO_OBJS = table.o asm.o bios.o biosfn.o \
SAIO_OBJS = table.o asm.o bios.o biosfn.o arc4random.o stack_protector.o \
disk.o sys.o cache.o bootstruct.o \
stringTable.o load.o pci.o allocate.o misc.o \
vbe.o hfs.o hfs_compare.o \
branches/cparm/i386/libsaio/cpu_intel_amd.c
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
/*
* Copyright 2008 Islam Ahmed Zaid. All rights reserved. <azismed@gmail.com>
* AsereBLN: 2009: cleanup and bugfix
*/
#include "libsaio.h"
#include "platform.h"
#include "cpu.h"
#ifndef DEBUG_CPU
#define DEBUG_CPU 0
#endif
#if DEBUG_CPU
#define DBG(x...)printf(x)
#else
#define DBG(x...)msglog(x)
#endif
//#define LEGACY_CPU
// DFE: enable_PIT2 and disable_PIT2 come from older xnu
/*
* Enable or disable timer 2.
* Port 0x61 controls timer 2:
* bit 0 gates the clock,
* bit 1 gates output to speaker.
*/
static inline void enable_PIT2(void)
{
/* Enable gate, disable speaker */
__asm__ volatile(
" inb $0x61,%%al \n\t"
" and $0xFC,%%al \n\t" /* & ~0x03 */
" or $1,%%al \n\t"
" outb %%al,$0x61 \n\t"
: : : "%al" );
}
static inline void disable_PIT2(void)
{
/* Disable gate and output to speaker */
__asm__ volatile(
" inb $0x61,%%al \n\t"
" and $0xFC,%%al \n\t"/* & ~0x03 */
" outb %%al,$0x61 \n\t"
: : : "%al" );
}
// DFE: set_PIT2_mode0, poll_PIT2_gate, and measure_tsc_frequency are
// roughly based on Linux code
/* Set the 8254 channel 2 to mode 0 with the specified value.
In mode 0, the counter will initially set its gate low when the
timer expires. For this to be useful, you ought to set it high
before calling this function. The enable_PIT2 function does this.
*/
static inline void set_PIT2_mode0(uint16_t value)
{
__asm__ volatile(
" movb $0xB0,%%al \n\t"
" outb%%al,$0x43\n\t"
" movb%%dl,%%al\n\t"
" outb%%al,$0x42\n\t"
" movb%%dh,%%al\n\t"
" outb%%al,$0x42"
: : "d"(value) /*: no clobber */ );
}
/* Returns the number of times the loop ran before the PIT2 signaled */
static inline unsigned long poll_PIT2_gate(void)
{
unsigned long count = 0;
unsigned char nmi_sc_val;
do {
++count;
__asm__ volatile(
"inb$0x61,%0"
: "=q"(nmi_sc_val) /*:*/ /* no input */ /*:*/ /* no clobber */);
} while( (nmi_sc_val & 0x20) == 0);
return count;
}
#ifdef LEGACY_CPU
static uint64_t measure_tsc_frequency(void);
/*
* DFE: Measures the TSC frequency in Hz (64-bit) using the ACPI PM timer
*/
static uint64_t measure_tsc_frequency(void)
{
uint64_t tscStart;
uint64_t tscEnd;
uint64_t tscDelta = 0xffffffffffffffffULL;
unsigned long pollCount;
uint64_t retval = 0;
int i;
/* Time how many TSC ticks elapse in 30 msec using the 8254 PIT
* counter 2. We run this loop 3 times to make sure the cache
* is hot and we take the minimum delta from all of the runs.
* That is to say that we're biased towards measuring the minimum
* number of TSC ticks that occur while waiting for the timer to
* expire. That theoretically helps avoid inconsistencies when
* running under a VM if the TSC is not virtualized and the host
* steals time. The TSC is normally virtualized for VMware.
*/
for(i = 0; i < 10; ++i)
{
enable_PIT2();
set_PIT2_mode0(CALIBRATE_LATCH);
tscStart = rdtsc64();
pollCount = poll_PIT2_gate();
tscEnd = rdtsc64();
/* The poll loop must have run at least a few times for accuracy */
if(pollCount <= 1)
continue;
/* The TSC must increment at LEAST once every millisecond. We
* should have waited exactly 30 msec so the TSC delta should
* be >= 30. Anything less and the processor is way too slow.
*/
if((tscEnd - tscStart) <= CALIBRATE_TIME_MSEC)
continue;
// tscDelta = min(tscDelta, (tscEnd - tscStart))
if( (tscEnd - tscStart) < tscDelta )
tscDelta = tscEnd - tscStart;
}
/* tscDelta is now the least number of TSC ticks the processor made in
* a timespan of 0.03 s (e.g. 30 milliseconds)
* Linux thus divides by 30 which gives the answer in kiloHertz because
* 1 / ms = kHz. But we're xnu and most of the rest of the code uses
* Hz so we need to convert our milliseconds to seconds. Since we're
* dividing by the milliseconds, we simply multiply by 1000.
*/
/* Unlike linux, we're not limited to 32-bit, but we do need to take care
* that we're going to multiply by 1000 first so we do need at least some
* arithmetic headroom. For now, 32-bit should be enough.
* Also unlike Linux, our compiler can do 64-bit integer arithmetic.
*/
if(tscDelta > (1ULL<<32))
retval = 0;
else
{
retval = tscDelta * 1000 / 30;
}
disable_PIT2();
return retval;
}
#endif
#define MSR_AMD_APERF 0x000000E8
/*
* Original comment/code:
* "DFE: Measures the Max Performance Frequency in Hz (64-bit)"
*
* Measures the Actual Performance Frequency in Hz (64-bit)
* (just a naming change, mperf --> aperf )
*/
static uint64_t measure_aperf_frequency(void)
{
uint64_t aperfStart;
uint64_t aperfEnd;
uint64_t aperfDelta = 0xffffffffffffffffULL;
unsigned long pollCount;
uint64_t retval = 0;
int i;
/* Time how many APERF ticks elapse in 30 msec using the 8254 PIT
* counter 2. We run this loop 3 times to make sure the cache
* is hot and we take the minimum delta from all of the runs.
* That is to say that we're biased towards measuring the minimum
* number of APERF ticks that occur while waiting for the timer to
* expire.
*/
for(i = 0; i < 10; ++i)
{
enable_PIT2();
set_PIT2_mode0(CALIBRATE_LATCH);
aperfStart = rdmsr64(MSR_AMD_APERF);
pollCount = poll_PIT2_gate();
aperfEnd = rdmsr64(MSR_AMD_APERF);
/* The poll loop must have run at least a few times for accuracy */
if (pollCount <= 1)
continue;
/* The TSC must increment at LEAST once every millisecond.
* We should have waited exactly 30 msec so the APERF delta should
* be >= 30. Anything less and the processor is way too slow.
*/
if ((aperfEnd - aperfStart) <= CALIBRATE_TIME_MSEC)
continue;
// tscDelta = MIN(tscDelta, (tscEnd - tscStart))
if ( (aperfEnd - aperfStart) < aperfDelta )
aperfDelta = aperfEnd - aperfStart;
}
/* mperfDelta is now the least number of MPERF ticks the processor made in
* a timespan of 0.03 s (e.g. 30 milliseconds)
*/
if (aperfDelta > (1ULL<<32))
retval = 0;
else
{
retval = aperfDelta * 1000 / 30;
}
disable_PIT2();
return retval;
}
/*
License for x2apic_enabled, get_apicbase, compute_bclk.
Copyright (c) 2010, Intel Corporation
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* Neither the name of Intel Corporation nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
static inline __attribute__((always_inline)) void rdmsr32(uint32_t msr, uint32_t * lo_data_addr, uint32_t * hi_data_addr);
static inline __attribute__((always_inline)) void wrmsr32(uint32_t msr, uint32_t lo_data, uint32_t hi_data);
static uint32_t x2apic_enabled(void);
static uint32_t get_apicbase(void);
static uint32_t compute_bclk(void);
static inline __attribute__((always_inline)) void rdmsr32(uint32_t msr, uint32_t * lo_data_addr, uint32_t * hi_data_addr)
{
__asm__ volatile(
"rdmsr"
: "=a" (*lo_data_addr), "=d" (*hi_data_addr)
: "c" (msr)
);
}
static inline __attribute__((always_inline)) void wrmsr32(uint32_t msr, uint32_t lo_data, uint32_t hi_data)
{
__asm__ __volatile__ (
"wrmsr"
: /* No outputs */
: "c" (msr), "a" (lo_data), "d" (hi_data)
);
}
#define MSR_APIC_BASE 0x1B
#define APIC_TMR_INITIAL_CNT 0x380
#define APIC_TMR_CURRENT_CNT 0x390
#define APIC_TMR_DIVIDE_CFG 0x3E0
#define MSR_APIC_TMR_INITIAL_CNT 0x838
#define MSR_APIC_TMR_CURRENT_CNT 0x839
#define MSR_APIC_TMR_DIVIDE_CFG 0x83E
static uint32_t x2apic_enabled(void)
{
uint64_t temp64;
temp64 = rdmsr64(MSR_APIC_BASE);
return (uint32_t) (temp64 & (1 << 10)) ? 1 : 0;
}
static uint32_t get_apicbase(void)
{
uint64_t temp64;
temp64 = rdmsr64(MSR_APIC_BASE);
return (uint32_t) (temp64 & 0xfffff000);
}
static uint32_t compute_bclk(void)
{
uint32_t dummy;
uint32_t start, stop;
uint8_t temp8;
uint16_t delay_count;
uint32_t bclk;
#define DELAY_IN_US 1000
// Compute fixed delay as time
// delay count = desired time * PIT frequency
// PIT frequency = 1.193182 MHz
delay_count = 1193182 / DELAY_IN_US;
// PIT channel 2 gate is controlled by IO port 0x61, bit 0
#define PIT_CH2_LATCH_REG 0x61
#define CH2_SPEAKER (1 << 1) // bit 1 -- 1 = speaker enabled 0 = speaker disabled
#define CH2_GATE_IN (1 << 0) // bit 0 -- 1 = gate enabled, 0 = gate disabled
#define CH2_GATE_OUT (1 << 5) // bit 5 -- 1 = gate latched, 0 = gate not latched
// PIT Command register
#define PIT_MODE_COMMAND_REG 0x43
#define SELECT_CH2 (2 << 6)
#define ACCESS_MODE_LOBYTE_HIBYTE (3 << 4)
#define MODE0_INTERRUPT_ON_TERMINAL_COUNT 0 // Despite name, no interrupts on CH2
// PIT Channel 2 data port
#define PIT_CH2_DATA 0x42
// Disable the PIT channel 2 speaker and gate
temp8 = inb(PIT_CH2_LATCH_REG);
temp8 &= ~(CH2_SPEAKER | CH2_GATE_IN);
outb(PIT_CH2_LATCH_REG, temp8);
// Setup command and mode
outb(PIT_MODE_COMMAND_REG, SELECT_CH2 | ACCESS_MODE_LOBYTE_HIBYTE | MODE0_INTERRUPT_ON_TERMINAL_COUNT);
// Set time for fixed delay
outb(PIT_CH2_DATA, (uint8_t) (delay_count));
outb(PIT_CH2_DATA, (uint8_t) (delay_count >> 8));
// Prepare to enable channel 2 gate but leave the speaker disabled
temp8 = inb(PIT_CH2_LATCH_REG);
temp8 &= ~CH2_SPEAKER;
temp8 |= CH2_GATE_IN;
if (x2apic_enabled())
{
// Set APIC Timer Divide Value as 2
wrmsr32(MSR_APIC_TMR_DIVIDE_CFG, 0, 0);
// start APIC timer with a known value
start = ~0UL;
wrmsr32(MSR_APIC_TMR_INITIAL_CNT, start, 0);
}
else
{
// Set APIC Timer Divide Value as 2
*(volatile uint32_t *)(uint32_t) (get_apicbase() + APIC_TMR_DIVIDE_CFG) = 0UL;
// start APIC timer with a known value
start = ~0UL;
*(volatile uint32_t *)(uint32_t) (get_apicbase() + APIC_TMR_INITIAL_CNT) = start;
}
// Actually start the PIT channel 2
outb(PIT_CH2_LATCH_REG, temp8);
// Wait for the fixed delay
while (!(inb(PIT_CH2_LATCH_REG) & CH2_GATE_OUT));
if (x2apic_enabled())
{
// read the APIC timer to determine the change that occurred over this fixed delay
rdmsr32(MSR_APIC_TMR_CURRENT_CNT, &stop, &dummy);
// stop APIC timer
wrmsr32(MSR_APIC_TMR_INITIAL_CNT, 0, 0);
}
else
{
// read the APIC timer to determine the change that occurred over this fixed delay
stop = *(volatile uint32_t *)(uint32_t) (get_apicbase() + APIC_TMR_CURRENT_CNT);
// stop APIC timer
*(volatile uint32_t *)(uint32_t) (get_apicbase() + APIC_TMR_INITIAL_CNT) = 0UL;
}
// Disable channel 2 speaker and gate input
temp8 = inb(PIT_CH2_LATCH_REG);
temp8 &= ~(CH2_SPEAKER | CH2_GATE_IN);
outb(PIT_CH2_LATCH_REG, temp8);
bclk = (start - stop) * 2 / DELAY_IN_US;
// Round bclk to the nearest 100/12 integer value
bclk = ((((bclk * 24) + 100) / 200) * 200) / 24;
return bclk;
}
/*
* Calculates the FSB and CPU frequencies using specific MSRs for each CPU
* - multi. is read from a specific MSR. In the case of Intel, there is:
* a max multi. (used to calculate the FSB freq.),
* and a current multi. (used to calculate the CPU freq.)
* - fsbFrequency = tscFrequency / multi
* - cpuFrequency = fsbFrequency * multi
*/
void scan_cpu(PlatformInfo_t *p)
{
uint64_ttscFrequency = 0, fsbFrequency = 0, cpuFrequency = 0;
uint64_tmsr;
uint8_tmaxcoef = 0, maxdiv = 0, currcoef = 0, currdiv = 0;
uint32_treg[4];
uint32_t cores_per_package = 0;
uint32_t logical_per_package = 0;
do_cpuid(0, reg);
p->CPU.Vendor= reg[ebx];
p->CPU.cpuid_max_basic = reg[eax];
if (p->CPU.Vendor == 0x756E6547 /* Intel */)
{
do_cpuid2(0x00000004, 0, reg);
cores_per_package= bitfield(reg[eax], 31, 26) + 1;
}
else if (p->CPU.Vendor != 0x68747541 /* AMD */)
{
stop("Error: CPU unsupported\n");
halt();
}
/* get extended cpuid results */
do_cpuid(0x80000000, reg);
p->CPU.cpuid_max_ext = reg[eax];
/* Begin of Copyright: from Apple's XNU cpuid.c */
/* get brand string (if supported) */
if (p->CPU.cpuid_max_ext > 0x80000004)
{
char str[128], *s;
/*
* The brand string 48 bytes (max), guaranteed to
* be NUL terminated.
*/
do_cpuid(0x80000002, reg);
bcopy((char *)reg, &str[0], 16);
do_cpuid(0x80000003, reg);
bcopy((char *)reg, &str[16], 16);
do_cpuid(0x80000004, reg);
bcopy((char *)reg, &str[32], 16);
for (s = str; *s != '\0'; s++)
{
if (*s != ' ') break;
}
strlcpy(p->CPU.BrandString,s, sizeof(p->CPU.BrandString));
if (!strncmp(p->CPU.BrandString, CPUID_STRING_UNKNOWN, min(sizeof(p->CPU.BrandString), (unsigned)strlen(CPUID_STRING_UNKNOWN) + 1)))
{
/*
* This string means we have a firmware-programmable brand string,
* and the firmware couldn't figure out what sort of CPU we have.
*/
p->CPU.BrandString[0] = '\0';
}
}
/*
* Get processor signature and decode
* and bracket this with the approved procedure for reading the
* the microcode version number a.k.a. signature a.k.a. BIOS ID
*/
if (p->CPU.Vendor == 0x756E6547 /* Intel */)
{
wrmsr64(MSR_IA32_BIOS_SIGN_ID, 0);
do_cpuid(1, reg);
p->CPU.MicrocodeVersion =
(uint32_t) (rdmsr64(MSR_IA32_BIOS_SIGN_ID) >> 32);
}
else if (p->CPU.Vendor != 0x68747541 /* AMD */)
do_cpuid(1, reg);
p->CPU.Signature = reg[eax];
p->CPU.Stepping = bitfield(reg[eax], 3, 0);
p->CPU.Model = bitfield(reg[eax], 7, 4);
p->CPU.Family = bitfield(reg[eax], 11, 8);
p->CPU.ExtModel = bitfield(reg[eax], 19, 16);
p->CPU.ExtFamily = bitfield(reg[eax], 27, 20);
p->CPU.Brand = bitfield(reg[ebx], 7, 0);
p->CPU.Features = quad(reg[ecx], reg[edx]);
/* Fold extensions into family/model */
if (p->CPU.Family == 0x0f)
p->CPU.Family += p->CPU.ExtFamily;
if (p->CPU.Family == 0x0f || p->CPU.Family == 0x06)
p->CPU.Model += (p->CPU.ExtModel << 4);
if (p->CPU.Features & CPUID_FEATURE_HTT)
logical_per_package =
bitfield(reg[ebx], 23, 16);
else
logical_per_package = 1;
if (p->CPU.cpuid_max_ext >= 0x80000001)
{
do_cpuid(0x80000001, reg);
p->CPU.ExtFeatures =
quad(reg[ecx], reg[edx]);
}
if (p->CPU.cpuid_max_ext >= 0x80000007)
{
do_cpuid(0x80000007, reg);
/* Fold in the Invariant TSC feature bit, if present */
p->CPU.ExtFeatures |=
reg[edx] & (uint32_t)CPUID_EXTFEATURE_TSCI;
if (p->CPU.Vendor == 0x68747541 /* AMD */)
{
/* Fold in the Hardware P-State control feature bit, if present */
p->CPU.ExtFeatures |=
reg[edx] & (uint32_t)_Bit(7);
/* Fold in the read-only effective frequency interface feature bit, if present */
p->CPU.ExtFeatures |=
reg[edx] & (uint32_t)_Bit(10);
}
}
if (p->CPU.Vendor == 0x68747541 /* AMD */)
{
if (p->CPU.cpuid_max_ext >= 0x80000008)
{
if (p->CPU.Features & CPUID_FEATURE_HTT)
{
do_cpuid(0x80000008, reg);
cores_per_package= bitfield(reg[ecx], 7 , 0) + 1; // NC + 1
}
}
}
if (p->CPU.cpuid_max_basic >= 0x5) {
/*
* Extract the Monitor/Mwait Leaf info:
*/
do_cpuid(5, reg);
if (p->CPU.Vendor == 0x756E6547 /* Intel */)
{
p->CPU.sub_Cstates = reg[edx];
}
p->CPU.extensions = reg[ecx];
}
if (p->CPU.Vendor == 0x756E6547 /* Intel */)
{
if (p->CPU.cpuid_max_basic >= 0x6)
{
/*
* The thermal and Power Leaf:
*/
do_cpuid(6, reg);
p->CPU.dynamic_acceleration = bitfield(reg[eax], 1, 1); // "Dynamic Acceleration Technology (Turbo Mode)"
p->CPU.invariant_APIC_timer = bitfield(reg[eax], 2, 2); // "Invariant APIC Timer"
p->CPU.fine_grain_clock_mod = bitfield(reg[eax], 4, 4);
}
if ((p->CPU.Vendor == 0x756E6547 /* Intel */) &&
(p->CPU.Family == 0x06))
{
/*
* Find the number of enabled cores and threads
* (which determines whether SMT/Hyperthreading is active).
*/
switch (p->CPU.Model)
{
case CPUID_MODEL_DALES_32NM:
case CPUID_MODEL_WESTMERE:
case CPUID_MODEL_WESTMERE_EX:
{
msr = rdmsr64(MSR_CORE_THREAD_COUNT);
p->CPU.NoThreads = bitfield((uint32_t)msr, 15, 0);
p->CPU.NoCores = bitfield((uint32_t)msr, 19, 16);
break;
}
case CPUID_MODEL_NEHALEM:
case CPUID_MODEL_FIELDS:
case CPUID_MODEL_DALES:
case CPUID_MODEL_NEHALEM_EX:
case CPUID_MODEL_SANDYBRIDGE:
case CPUID_MODEL_JAKETOWN:
{
msr = rdmsr64(MSR_CORE_THREAD_COUNT);
p->CPU.NoThreads = bitfield((uint32_t)msr, 15, 0);
p->CPU.NoCores = bitfield((uint32_t)msr, 31, 16);
break;
}
}
}
}
if (p->CPU.NoCores == 0)
{
if (p->CPU.Vendor == 0x68747541 /* AMD */)
{
if (!cores_per_package) {
//legacy method
if ((p->CPU.ExtFeatures & _HBit(1)/* CmpLegacy */) && ( p->CPU.Features & CPUID_FEATURE_HTT) )
cores_per_package = logical_per_package;
else
cores_per_package = 1;
}
}
p->CPU.NoThreads = logical_per_package;
p->CPU.NoCores = cores_per_package ? cores_per_package : 1 ;
}
/* End of Copyright: from Apple's XNU cpuid.c */
fsbFrequency = (uint64_t)(compute_bclk() * 1000000);
#ifdef LEGACY_CPU
tscFrequency = measure_tsc_frequency();
#endif
if (p->CPU.Vendor == 0x68747541 /* AMD */)
{
#define K8_FIDVID_STATUS0xC0010042
#define K10_COFVID_STATUS0xC0010071
if (p->CPU.ExtFeatures & _Bit(10))
{
cpuFrequency = measure_aperf_frequency();
}
if ((p->CPU.Vendor == 0x68747541 /* AMD */) && (p->CPU.Family == 0x0f))
{
switch(p->CPU.ExtFamily)
{
case 0x00: /* K8 */
msr = rdmsr64(K8_FIDVID_STATUS);
maxcoef = bitfield(msr, 21, 16) / 2 + 4;
currcoef = bitfield(msr, 5, 0) / 2 + 4;
break;
case 0x01: /* K10 */
{
//uint32_t reg[4];
msr = rdmsr64(K10_COFVID_STATUS);
/*
do_cpuid2(0x00000006, 0, reg);
EffFreq: effective frequency interface
if (bitfield(reg[ecx], 0, 0) == 1)
{
uint64_t aperf = measure_aperf_frequency();
cpuFrequency = aperf;
}
*/
// NOTE: tsc runs at the maccoeff (non turbo)
//*not* at the turbo frequency.
maxcoef = bitfield(msr, 54, 49) / 2 + 4;
currcoef = bitfield(msr, 5, 0) + 0x10;
currdiv = 2 << bitfield(msr, 8, 6);
break;
}
case 0x05: /* K14 */
msr = rdmsr64(K10_COFVID_STATUS);
currcoef = (bitfield(msr, 54, 49) + 0x10) << 2;
currdiv = (bitfield(msr, 8, 4) + 1) << 2;
currdiv += bitfield(msr, 3, 0);
break;
case 0x02: /* K11 */
DBG("K11 detected, but not supported !!!\n");
// not implimented
break;
}
if (!fsbFrequency)
{
if (maxcoef)
{
if (currdiv)
{
if (!currcoef) currcoef = maxcoef;
if (!cpuFrequency)
fsbFrequency = ((tscFrequency * currdiv) / currcoef);
else
fsbFrequency = ((cpuFrequency * currdiv) / currcoef);
DBG("%d.%d\n", currcoef / currdiv, ((currcoef % currdiv) * 100) / currdiv);
} else {
if (!cpuFrequency)
fsbFrequency = (tscFrequency / maxcoef);
else
fsbFrequency = (cpuFrequency / maxcoef);
DBG("%d\n", currcoef);
}
}
else if (currcoef)
{
if (currdiv)
{
fsbFrequency = ((tscFrequency * currdiv) / currcoef);
DBG("%d.%d\n", currcoef / currdiv, ((currcoef % currdiv) * 100) / currdiv);
} else {
fsbFrequency = (tscFrequency / currcoef);
DBG("%d\n", currcoef);
}
}
}
}
// NOTE: This is not the approved method,
// the method provided by AMD is:
// if ((PowerNow == enabled (p->CPU.cpuid_max_ext >= 0x80000007)) && (StartupFID(??) != MaxFID(??))) then "mobile processor present"
if (strstr(p->CPU.BrandString, "obile"))
p->CPU.isMobile = true;
else
p->CPU.isMobile = false;
DBG("%s platform detected.\n", p->CPU.isMobile?"Mobile":"Desktop");
}
else if ((p->CPU.Vendor == 0x756E6547 /* Intel */) &&
((p->CPU.Family == 0x06) ||
(p->CPU.Family == 0x0f)))
{
if ((p->CPU.Family == 0x06 && p->CPU.Model >= 0x0c) ||
(p->CPU.Family == 0x0f && p->CPU.Model >= 0x03))
{
/* Nehalem CPU model */
if (p->CPU.Family == 0x06 && (p->CPU.Model == CPUID_MODEL_NEHALEM ||
p->CPU.Model == CPUID_MODEL_FIELDS ||
p->CPU.Model == CPUID_MODEL_DALES ||
p->CPU.Model == CPUID_MODEL_DALES_32NM ||
p->CPU.Model == CPUID_MODEL_WESTMERE ||
p->CPU.Model == CPUID_MODEL_NEHALEM_EX ||
p->CPU.Model == CPUID_MODEL_WESTMERE_EX ||
p->CPU.Model == CPUID_MODEL_SANDYBRIDGE ||
p->CPU.Model == CPUID_MODEL_JAKETOWN))
{
uint8_tbus_ratio_max = 0, bus_ratio_min = 0;
uint32_tmax_ratio = 0;
uint64_tflex_ratio = 0;
msr = rdmsr64(MSR_PLATFORM_INFO);
#if DEBUG_CPU
DBG("msr(%d): platform_info %08x\n", __LINE__, msr & 0xffffffff);
#endif
bus_ratio_max = (msr >> 8) & 0xff;
bus_ratio_min = (msr >> 40) & 0xff;
msr = rdmsr64(MSR_FLEX_RATIO);
#if DEBUG_CPU
DBG("msr(%d): flex_ratio %08x\n", __LINE__, msr & 0xffffffff);
#endif
if ((msr >> 16) & 0x01)
{
flex_ratio = (msr >> 8) & 0xff;
/* bcc9: at least on the gigabyte h67ma-ud2h,
where the cpu multipler can't be changed to
allow overclocking, the flex_ratio msr has unexpected (to OSX)
contents. These contents cause mach_kernel to
fail to compute the bus ratio correctly, instead
causing the system to crash since tscGranularity
is inadvertently set to 0.
*/
if (flex_ratio == 0)
{
/* Clear bit 16 (evidently the
presence bit) */
wrmsr64(MSR_FLEX_RATIO, (msr & 0xFFFFFFFFFFFEFFFFULL));
msr = rdmsr64(MSR_FLEX_RATIO);
#if DEBUG_CPU
DBG("Unusable flex ratio detected. MSR Patched to %08x\n", msr & 0xffffffff);
#endif
}
else
{
if (bus_ratio_max > flex_ratio)
{
bus_ratio_max = flex_ratio;
}
}
}
#ifdef LEGACY_CPU
if (bus_ratio_max)
{
fsbFrequency = (tscFrequency / bus_ratio_max);
}
#endif
//valv: Turbo Ratio Limit
if ((p->CPU.Model != 0x2e) && (p->CPU.Model != 0x2f))
{
//msr = rdmsr64(MSR_TURBO_RATIO_LIMIT);
cpuFrequency = bus_ratio_max * fsbFrequency;
max_ratio = bus_ratio_max * 10;
}
else
{
#ifdef LEGACY_CPU
cpuFrequency = tscFrequency;
#else
cpuFrequency = bus_ratio_max * fsbFrequency;
#endif
}
#if DEBUG_CPU
DBG("Sticking with [BCLK: %dMhz, Bus-Ratio: %d]\n", fsbFrequency / 1000000, max_ratio);
#endif
currcoef = bus_ratio_max;
tscFrequency = cpuFrequency;
}
else
{
msr = rdmsr64(MSR_IA32_PERF_STATUS);
#if DEBUG_CPU
DBG("msr(%d): ia32_perf_stat 0x%08x\n", __LINE__, msr & 0xffffffff);
#endif
currcoef = (msr >> 8) & 0x1f;
/* Non-integer bus ratio for the max-multi*/
maxdiv = (msr >> 46) & 0x01;
/* Non-integer bus ratio for the current-multi (undocumented)*/
currdiv = (msr >> 14) & 0x01;
if ((p->CPU.Family == 0x06 && p->CPU.Model >= 0x0e) ||
(p->CPU.Family == 0x0f)) // This will always be model >= 3
{
/* On these models, maxcoef defines TSC freq */
maxcoef = (msr >> 40) & 0x1f;
}
else
{
/* On lower models, currcoef defines TSC freq */
/* XXX */
maxcoef = currcoef;
}
if (!currcoef) currcoef = maxcoef;
#ifdef LEGACY_CPU
if (maxcoef)
{
if (maxdiv)
{
fsbFrequency = ((tscFrequency * 2) / ((maxcoef * 2) + 1));
}
else
{
fsbFrequency = (tscFrequency / maxcoef);
}
if (currdiv)
{
cpuFrequency = (fsbFrequency * ((currcoef * 2) + 1) / 2);
}
else
{
cpuFrequency = (fsbFrequency * currcoef);
}
#if DEBUG_CPU
DBG("max: %d%s current: %d%s\n", maxcoef, maxdiv ? ".5" : "",currcoef, currdiv ? ".5" : "");
#endif
}
#else
if (currdiv)
{
cpuFrequency = (fsbFrequency * ((currcoef * 2) + 1) / 2);
}
else
{
cpuFrequency = (fsbFrequency * currcoef);
}
if (maxcoef)
{
if (maxdiv)
{
tscFrequency = (fsbFrequency * ((maxcoef * 2) + 1)) / 2;
}
else
{
tscFrequency = fsbFrequency * maxcoef;
}
}
#if DEBUG_CPU
DBG("max: %d%s current: %d%s\n", maxcoef, maxdiv ? ".5" : "",currcoef, currdiv ? ".5" : "");
#endif
#endif // LEGACY_CPU
}
}
/* Mobile CPU ? */
//Slice
p->CPU.isMobile = false;
switch (p->CPU.Model)
{
case 0x0D:
p->CPU.isMobile = true;
break;
case 0x02:
case 0x03:
case 0x04:
case 0x06:
p->CPU.isMobile = (rdmsr64(0x2C) & (1 << 21));
break;
default:
p->CPU.isMobile = (rdmsr64(0x17) & (1 << 28));
break;
}
DBG("%s platform detected.\n", p->CPU.isMobile?"Mobile":"Desktop");
}
if (!cpuFrequency) cpuFrequency = tscFrequency;
if (!tscFrequency) tscFrequency = cpuFrequency;
p->CPU.MaxCoef = maxcoef;
p->CPU.MaxDiv = maxdiv;
p->CPU.CurrCoef = currcoef;
p->CPU.CurrDiv = currdiv;
p->CPU.TSCFrequency = tscFrequency ;
p->CPU.FSBFrequency = fsbFrequency ;
p->CPU.CPUFrequency = cpuFrequency ;
DBG("CPU: Vendor/Model/ExtModel: 0x%x/0x%x/0x%x\n", p->CPU.Vendor, p->CPU.Model, p->CPU.ExtModel);
DBG("CPU: Family/ExtFamily: 0x%x/0x%x\n", p->CPU.Family, p->CPU.ExtFamily);
if (p->CPU.Vendor == 0x68747541 /* AMD */)
{
DBG("CPU (AMD): TSCFreq: %dMHz\n", p->CPU.TSCFrequency / 1000000);
DBG("CPU (AMD): FSBFreq: %dMHz\n", p->CPU.FSBFrequency / 1000000);
DBG("CPU (AMD): CPUFreq: %dMHz\n", p->CPU.CPUFrequency / 1000000);
DBG("CPU (AMD): MaxCoef/CurrCoef: 0x%x/0x%x\n", p->CPU.MaxCoef, p->CPU.CurrCoef);
DBG("CPU (AMD): MaxDiv/CurrDiv: 0x%x/0x%x\n", p->CPU.MaxDiv, p->CPU.CurrDiv);
}
else
{
DBG("CPU: TSCFreq: %dMHz\n", p->CPU.TSCFrequency / 1000000);
DBG("CPU: FSBFreq: %dMHz\n", p->CPU.FSBFrequency / 1000000);
DBG("CPU: CPUFreq: %dMHz\n", p->CPU.CPUFrequency / 1000000);
DBG("CPU: MaxCoef/CurrCoef: 0x%x/0x%x\n", p->CPU.MaxCoef, p->CPU.CurrCoef);
DBG("CPU: MaxDiv/CurrDiv: 0x%x/0x%x\n", p->CPU.MaxDiv, p->CPU.CurrDiv);
}
DBG("CPU: NoCores/NoThreads: %d/%d\n", p->CPU.NoCores, p->CPU.NoThreads);
DBG("CPU: Features: 0x%08x\n", p->CPU.Features);
DBG("CPU: ExtFeatures: 0x%08x\n", p->CPU.ExtFeatures);
if (p->CPU.Vendor == 0x756E6547 /* Intel */)
DBG("CPU: MicrocodeVersion: %d\n", p->CPU.MicrocodeVersion);
#if DEBUG_CPU
pause();
#endif
}
branches/cparm/i386/libsaio/internal_modules.h
2626
2727
2828
29
3029
3130
3231
// Done !!!
// ps: i swear the next version will be more simple
}
#endif /* __INTERNAL_MODULES_H */
branches/cparm/i386/libsaio/sys.c
4545
4646
4747
48
48
4949
5050
5151
......
5555
5656
5757
58
58
5959
6060
6161
......
138138
139139
140140
141
141
142142
143143
144
144
145145
146
146
147147
148
148
149149
150
150
151151
152152
153153
......
160160
161161
162162
163
163
164164
165
165
166166
167167
168
168
169169
170170
171171
......
173173
174174
175175
176
176
177177
178178
179
179
180180
181181
182
182
183183
184184
185185
......
192192
193193
194194
195
195
196196
197197
198
198
199199
200
200
201201
202202
203
203
204204
205
205
206206
207
207
208208
209209
210210
......
221221
222222
223223
224
224
225225
226226
227227
......
231231
232232
233233
234
234
235235
236236
237237
......
243243
244244
245245
246
246
247247
248
248
249249
250250
251251
252252
253253
254
254
255255
256256
257257
258258
259
260
259
260
261261
262262
263263
264264
265265
266266
267
267
268268
269269
270270
271271
272
272
273273
274274
275275
276276
277
277
278278
279279
280280
......
282282
283283
284284
285
285
286286
287287
288288
......
296296
297297
298298
299
299
300300
301
301
302302
303303
304
304
305305
306
306
307307
308
309
310
308
309
310
311311
312312
313313
......
321321
322322
323323
324
324
325325
326326
327
327
328328
329329
330
330
331331
332
332
333333
334334
335335
......
341341
342342
343343
344
344
345345
346346
347347
......
356356
357357
358358
359
359
360360
361361
362362
363363
364
364
365365
366366
367367
......
377377
378378
379379
380
380
381381
382382
383383
......
396396
397397
398398
399
399
400400
401401
402402
403
403
404404
405405
406406
407
407
408408
409409
410
410
411411
412412
413413
......
416416
417417
418418
419
419
420420
421421
422422
......
435435
436436
437437
438
438
439439
440440
441441
......
453453
454454
455455
456
456
457457
458458
459459
460460
461461
462462
463
463
464464
465465
466466
467
467
468468
469469
470470
471
471
472472
473473
474474
......
496496
497497
498498
499
499
500500
501501
502502
......
506506
507507
508508
509
509
510510
511511
512
512
513513
514
514
515515
516516
517517
......
525525
526526
527527
528
528
529529
530530
531
531
532532
533533
534
534
535535
536
536
537537
538
538
539539
540540
541541
......
546546
547547
548548
549
549
550550
551551
552
552
553553
554554
555555
......
560560
561561
562562
563
563
564564
565565
566
566
567567
568568
569569
570
570
571571
572572
573573
574
574
575575
576
576
577577
578
578
579579
580580
581581
......
598598
599599
600600
601
602
603
604
601
602
603
604
605605
606606
607607
......
768768
769769
770770
771
771
772772
773773
774
775
776
777
778
774
775
776
777
778
779779
780780
781781
782782
783783
784784
785
785
786786
787787
788788
......
794794
795795
796796
797
798
799
800
801
797
798
799
800
801
802802
803
804
805
806
807
803
804
805
806
807
808808
809
810
811
812
813
809
810
811
812
813
814814
815815
816816
......
820820
821821
822822
823
824
825
826
827
823
824
825
826
827
828828
829829
830
831
832
830
831
832
833833
834
835
834
835
836836
837837
838
839
838
839
840840
841841
842842
......
922922
923923
924924
925
926
927
925
926
927
928928
929929
930930
......
939939
940940
941941
942
943
944
945
946
947
948
942
943
944
945
946
947
948
949949
950950
951951
952
953
954
955
956
957
952
953
954
955
956
957
958958
959959
960960
961961
962962
963963
964
964
965965
966
966
967967
968968
969969
970
970
971971
972972
973973
......
983983
984984
985985
986
986
987987
988
988
989989
990
990
991991
992992
993993
......
10011001
10021002
10031003
1004
1004
10051005
10061006
10071007
10081008
10091009
10101010
1011
1011
10121012
10131013
10141014
......
10161016
10171017
10181018
1019
1019
10201020
1021
1021
10221022
10231023
1024
1024
10251025
10261026
10271027
1028
1028
10291029
1030
1030
10311031
10321032
10331033
10341034
10351035
1036
1036
10371037
10381038
10391039
10401040
10411041
10421042
1043
1043
10441044
10451045
10461046
10471047
10481048
1049
1049
10501050
10511051
1052
1052
10531053
1054
1054
10551055
10561056
10571057
......
10611061
10621062
10631063
1064
1064
10651065
1066
1066
10671067
10681068
10691069
......
10771077
10781078
10791079
1080
1080
10811081
10821082
1083
1083
10841084
1085
1085
10861086
10871087
10881088
1089
1089
10901090
10911091
10921092
10931093
1094
1094
10951095
10961096
10971097
......
11051105
11061106
11071107
1108
1108
11091109
11101110
11111111
* Add routine, ptol(), to parse partition letters.
*
*/
/*
* Copyright (c) 1982, 1986 Regents of the University of California.
* All rights reserved. The Berkeley software License Agreement
*/
/* Copyright 2007 VMware Inc.
"Preboot" ramdisk support added by David Elliott
"Preboot" ramdisk support added by David Elliott
*/
#include <AvailabilityMacros.h>
long LoadVolumeFile(BVRef bvr, const char *filePath)
{
long fileSize;
// Read file into load buffer. The data in the load buffer will be
// overwritten by the next LoadFile() call.
gFSLoadAddress = (void *) LOAD_ADDR;
fileSize = bvr->fs_loadfile(bvr, (char *)filePath);
// Return the size of the file, or -1 if load failed.
return fileSize;
}
{
const char * filePath;
BVRef bvr;
// Resolve the boot volume from the file spec.
if ((bvr = getBootVolumeRef(fileSpec, &filePath)) == NULL)
return -1;
return LoadVolumeFile(bvr, filePath);
}
{
const char *filePath;
BVRef bvr;
if ((bvr = getBootVolumeRef(fileSpec, &filePath)) == NULL)
return -1;
if (bvr->fs_readfile == NULL)
return -1;
return bvr->fs_readfile(bvr, (char *)filePath, buffer, offset, length);
}
long length2;
// Resolve the boot volume from the file spec.
if ((bvr = getBootVolumeRef(fileSpec, &filePath)) == NULL)
return -1;
*binary = (void *)kLoadAddr;
// Read file into load buffer. The data in the load buffer will be
// overwritten by the next LoadFile() call.
gFSLoadAddress = (void *) LOAD_ADDR;
readFile = bvr->fs_readfile;
if (readFile != NULL) {
// Read the first 4096 bytes (fat header)
length = readFile(bvr, (char *)filePath, *binary, 0, 0x1000);
length2 = readFile(bvr, (char *)filePath, (void *)(kLoadAddr + length), length, 0);
//if (length2 == -1) return -1;
if (length2 < 0) return -1;
length += (unsigned long)length2;
}
}
ThinFatFile(binary, &length);
}
}
return length;
}
char *p = uuidStr;
MD5_CTX md5c;
uint8_t mdresult[16];
bzero(mdresult, sizeof(mdresult));
// just like AppleFileSystemDriver
MD5Init(&md5c);
MD5Update(&md5c, kFSUUIDNamespaceSHA1, sizeof(kFSUUIDNamespaceSHA1));
MD5Update(&md5c, uubytes, nbytes);
MD5Final(mdresult, &md5c);
// this UUID has been made version 3 style (i.e. via namespace)
// see "-uuid-urn-" IETF draft (which otherwise copies byte for byte)
mdresult[6] = 0x30 | ( mdresult[6] & 0x0F );
mdresult[8] = 0x80 | ( mdresult[8] & 0x3F );
// generate the text: e.g. 5EB1869F-C4FA-3502-BDEB-3B8ED5D87292
i = 0; fmtbase = 0;
for(fmtidx = 0; fmtidx < sizeof(uuidfmt); fmtidx++) {
for(i=0; i < uuidfmt[fmtidx]; i++) {
uint8_t byte = mdresult[fmtbase+i];
char nib;
nib = byte >> 4;
*p = nib + '0'; // 0x4 -> '4'
if(*p > '9') *p = (nib - 9 + ('A'-1)); // 0xB -> 'B'
p++;
nib = byte & 0xf;
*p = nib + '0'; // 0x4 -> '4'
if(*p > '9') *p = (nib - 9 + ('A'-1)); // 0xB -> 'B'
p++;
}
fmtbase += i;
if(fmtidx < sizeof(uuidfmt)-1)
else
*p = '\0';
}
return 0;
}
{
const char * dirPath;
BVRef bvr;
// Resolve the boot volume from the dir spec.
if ((bvr = getBootVolumeRef(dirSpec, &dirPath)) == NULL)
return -1;
// Return 0 on success, or -1 if there are no additional entries.
return bvr->fs_getdirentry( bvr,
/* dirPath */ (char *)dirPath,
/* dirIndex */ dirIndex,
/* dirEntry */ (char **)name, flags, time, 0, 0 );
/* dirPath */ (char *)dirPath,
/* dirIndex */ dirIndex,
/* dirEntry */ (char **)name, flags, time, 0, 0 );
}
//==========================================================================
{
long long index = 0;
const char * entryName;
if (gMakeDirSpec == 0)
gMakeDirSpec = (char *)malloc(1024);
if (!dirSpec) {
long idx, len;
len = strlen(name);
for (idx = len; idx && (name[idx] != '/' && name[idx] != '\\'); idx--) {}
if (idx == 0) {
gMakeDirSpec[0] = '/';
}
dirSpec = gMakeDirSpec;
}
while (GetDirEntry(dirSpec, &index, &entryName, flags, time) == 0)
{
if (strcmp(entryName, name) == 0)
static int GetFreeFd(void)
{
intfd;
// Locate a free descriptor slot.
for (fd = 0; fd < NFILES; fd++) {
if (iob[fd].i_flgs == 0) {
return fd;
}
}
}
stop("Out of file descriptors");
// not reached
static struct iob * iob_from_fdesc(int fdesc)
{
register struct iob * io;
if (fdesc < 0 || fdesc >= NFILES ||
((io = &iob[fdesc])->i_flgs & F_ALLOC) == 0)
return NULL;
struct iob*io;
intfdesc;
inti;
if (bvr == NULL) {
return -1;
}
fdesc = GetFreeFd();
io = &iob[fdesc];
bzero(io, sizeof(*io));
// Mark the descriptor as taken.
io->i_flgs = F_ALLOC;
// Find the next available memory block in the download buffer.
io->i_buf = (char *) LOAD_ADDR;
for (i = 0; i < NFILES; i++) {
}
io->i_buf = max(iob[i].i_filesize + iob[i].i_buf, io->i_buf);
}
// Load entire file into memory. Unnecessary open() calls must be avoided.
gFSLoadAddress = io->i_buf;
io->i_filesize = bvr->fs_loadfile(bvr, (char *)filePath);
{
const char*filepath;
BVRefbvr;
// Resolve the boot volume from the file spec.
if ((bvr = getBootVolumeRef(path, &filepath)) != NULL) {
#if UNUSED
int open_bvdev(const char *bvd, const char *path)
#endif
{
const struct devsw*dp;
const struct devsw*dp;
const char*cp;
BVRefbvr;
inti;
intlen;
intunit;
intpartition;
if ((i = open(path)) >= 0) {
return i;
}
if (bvd == NULL || (len = strlen(bvd)) < 2) {
return -1;
}
for (dp=devsw; dp->name; dp++) {
if (bvd[0] == dp->name[0] && bvd[1] == dp->name[1]) {
unit = 0;
return open_bvr(bvr, path);
#endif
}
}
}
return -1;
}
int close(int fdesc)
{
struct iob * io;
if ((io = iob_from_fdesc(fdesc)) == NULL)
return (-1);
io->i_flgs = 0;
return 0;
}
if ((io = iob_from_fdesc(fdesc)) == NULL)
return (-1);
if ((io->i_offset + count) > (unsigned int)io->i_filesize)
count = io->i_filesize - io->i_offset;
if (count <= 0)
return 0; // end of file
bcopy(io->i_buf + io->i_offset, buf, count);
io->i_offset += count;
return count;
}
int file_size(int fdesc)
{
struct iob * io;
if ((io = iob_from_fdesc(fdesc)) == 0)
return 0;
return io->i_filesize;
}
struct dirstuff * dirp = 0;
const char * dirPath;
BVRef bvr;
if ((bvr = getBootVolumeRef(path, &dirPath)) == NULL)
goto error;
dirp = (struct dirstuff *) malloc(sizeof(struct dirstuff));
if (dirp == NULL)
goto error;
dirp->dir_path = newString(dirPath);
if (dirp->dir_path == NULL)
goto error;
dirp->dir_bvr = bvr;
return dirp;
error:
closedir(dirp);
return NULL;
long * time)
{
return dirp->dir_bvr->fs_getdirentry( dirp->dir_bvr,
/* dirPath */ dirp->dir_path,
/* dirIndex */ &dirp->dir_index,
/* dirEntry */ (char **)name, flags, time,
0, 0);
/* dirPath */ dirp->dir_path,
/* dirIndex */ &dirp->dir_index,
/* dirEntry */ (char **)name, flags, time,
0, 0);
}
#if UNUSED
//==========================================================================
int readdir_ext(struct dirstuff * dirp, const char ** name, long * flags,
long * time, FinderInfo *finderInfo, long *infoValid)
long * time, FinderInfo *finderInfo, long *infoValid)
{
return dirp->dir_bvr->fs_getdirentry( dirp->dir_bvr,
/* dirPath */ dirp->dir_path,
/* dirIndex */ &dirp->dir_index,
/* dirEntry */ (char **)name,
flags, time,
finderInfo, infoValid);
/* dirPath */ dirp->dir_path,
/* dirIndex */ &dirp->dir_index,
/* dirEntry */ (char **)name,
flags, time,
finderInfo, infoValid);
}
//==========================================================================
const char * systemConfigDir()
{
if (gBootFileType == kNetworkDeviceType)
return "";
return "";
return "/Library/Preferences/SystemConfiguration";
}
void scanBootVolumes( int biosdev, int * count )
{
BVRef bvr = 0;
bvr = diskScanBootVolumes(biosdev, count);
if (bvr == NULL)
{
BVRef bvr = 0;
bvr = diskScanBootVolumes(biosdev, count);
if (bvr == NULL)
{
#ifdef NBP_SUPPORT
bvr = nbpScanBootVolumes(biosdev, count);
if (bvr != NULL)
{
gBootFileType = kNetworkDeviceType;
}
bvr = nbpScanBootVolumes(biosdev, count);
if (bvr != NULL)
{
gBootFileType = kNetworkDeviceType;
}
#endif
}
else
{
gBootFileType = kBlockDeviceType;
}
}
else
{
gBootFileType = kBlockDeviceType;
}
}
//==========================================================================
void scanDisks(void)
#endif
{
#define MAX_HDD_COUNT 32
int bvCount;
int hd = 0;
// Testing up to MAX_HDD_COUNT hard drives.
#define MAX_HDD_COUNT 32
int bvCount;
int hd = 0;
// Testing up to MAX_HDD_COUNT hard drives.
while(!testBiosread(0x80 + hd, 0) && hd < MAX_HDD_COUNT)
{
bvCount = 0;
scanBootVolumes(0x80 + hd, &bvCount);
hd++;
bvCount = 0;
scanBootVolumes(0x80 + hd, &bvCount);
hd++;
}
// Also scanning CD/DVD drive.
// Also scanning CD/DVD drive.
if (biosDevIsCDROM(gBIOSDev))
{
bvCount = 0;
scanBootVolumes(gBIOSDev, &bvCount);
bvCount = 0;
scanBootVolumes(gBIOSDev, &bvCount);
}
}
int gBIOSDev;
/*!
This is like boot2's gBootVolume except it is for the internal use of
libsaio to track which volume an unqualified path should be relative to.
This replaces bootInfo->kernDev as the carrier of this information.
This is like boot2's gBootVolume except it is for the internal use of
libsaio to track which volume an unqualified path should be relative to.
This replaces bootInfo->kernDev as the carrier of this information.
*/
static BVRef gRootVolume;
void setBootGlobals(BVRef chain)
{
// Record default boot device.
gBootVolume = selectBootVolume(chain);
// turbo - Save the ORIGINAL boot volume too for loading our mkext
if (!gBIOSBootVolume) gBIOSBootVolume = gBootVolume;
setRootVolume(gBootVolume);
// Record default boot device.
gBootVolume = selectBootVolume(chain);
// turbo - Save the ORIGINAL boot volume too for loading our mkext
if (!gBIOSBootVolume) gBIOSBootVolume = gBootVolume;
setRootVolume(gBootVolume);
}
/*!
Extracts the volume selector from the pathname, returns the selected
BVRef, and sets *outPath to the remainder of the path.
If the path did not include a volume selector then the current volume
is used. When called with a volume selector the current volume
is changed to the selected volume unless the volume selector is
that of a ramdisk.
Extracts the volume selector from the pathname, returns the selected
BVRef, and sets *outPath to the remainder of the path.
If the path did not include a volume selector then the current volume
is used. When called with a volume selector the current volume
is changed to the selected volume unless the volume selector is
that of a ramdisk.
*/
BVRef getBootVolumeRef( const char * path, const char ** outPath )
{
const char * cp;
BVRef bvr = gRootVolume;
int biosdev = gBIOSDev;
// Search for left parenthesis in the path specification.
for (cp = path; *cp; cp++) {
if (*cp == LP || *cp == '/') break;
}
if (*cp != LP) // no left paren found
{
// Path is using the implicit current device so if there is
int i;
int unit = -1;
int part = -1;
cp++;
// Check the 2 character device name pointed by 'xp'.
for (dp = devsw; dp->name; dp++)
{
if ((xp[0] == dp->name[0]) && (xp[1] == dp->name[1]))
// Extract the optional unit number from the specification.
// hd(unit) or hd(unit, part).
i = 0;
while (*cp >= '0' && *cp <= '9')
{
i = i * 10 + *cp++ - '0';
unit = i;
}
// Unit is no longer optional and never really was.
// If the user failed to specify it then the unit number from the previous kernDev
// would have been used which makes little sense anyway.
// second hard disk (i.e. unit 1) then fd() would select the second floppy drive!
if(unit == -1)
return NULL;
// Extract the optional partition number from the specification.
if (*cp == ',')
part = atoi(++cp);
// If part is not specified part will be -1 whereas before it would have been
// whatever the last partition was which makes about zero sense if the device
// has been switched.
// Skip past the right paren.
for ( ; *cp && *cp != RP; cp++) /* LOOP */;
if (*cp == RP) cp++;
biosdev = dp->biosdev + unit;
bvr = newBootVolumeRef(biosdev, part);
if(bvr == NULL)
return NULL;
}
else
{
// Bad device specifier, skip past the right paren.
for ( cp++; *cp && *cp != RP; cp++) /* LOOP */;
if (*cp == RP) cp++;
// If gRootVolume was NULL, then bvr will be NULL as well which
// should be caught by the caller.
}
// Returns the file path following the device spec.
// e.g. 'hd(1,b)mach_kernel' is reduced to 'mach_kernel'.
*outPath = cp;
return bvr;
}
static BVRef newBootVolumeRef( int biosdev, int partno )
{
BVRef bvr, bvr1, bvrChain;
bvr = bvr1 = NULL;
// Try resolving "rd" and "bt" devices first.
execute_hook("newRamDisk_BVR", &biosdev, &bvr1, NULL, NULL, NULL, NULL);
else
{
// Fetch the volume list from the device.
scanBootVolumes( biosdev, NULL );
bvrChain = getBVChainForBIOSDev(biosdev);
// Look for a perfect match based on device and partition number.
for ( bvr1 = NULL, bvr = bvrChain; bvr; bvr = bvr->next )
{
if ( ( bvr->flags & kBVFlagNativeBoot ) == 0 ) continue;
bvr1 = bvr;
if ( bvr->part_no == partno ) break;
}
}
return bvr ? bvr : bvr1;
}
return 0;
*str = '\0';
if (bvr)
{
const struct devsw *dp = devsw;
branches/cparm/i386/libsaio/disk.c
196196
197197
198198
199
199200
200201
201202
......
333334
334335
335336
336
337
337
338
338339
339340
340341
......
375376
376377
377378
378
379
379
380
380381
381382
382383
......
417418
418419
419420
420
421
421422
422423
423424
......
10491050
10501051
10511052
1052
1053
1054
1055
1056
1053
1054
1055
1056
1057
10571058
1058
1059
10591060
10601061
1061
1062
1062
1063
1064
1065
10631066
10641067
10651068
......
15191522
15201523
15211524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
15221550
15231551
15241552
15251553
15261554
1527
15281555
15291556
15301557
......
15431570
15441571
15451572
1546
1573
1574
15471575
1548
1549
1550
1551
1552
1553
1554
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
15551599
15561600
15571601
......
21272171
21282172
21292173
2130
2174
21312175
21322176
21332177
......
21432187
21442188
21452189
2146
2147
2190
2191
21482192
21492193
21502194
......
21682212
21692213
21702214
2171
2215
21722216
21732217
21742218
......
21832227
21842228
21852229
2186
2187
2230
2231
21882232
21892233
21902234
#ifdef APPLE_PARTITION_MAP_SUPPORT
static BVRef diskScanAPMBootVolumes( int biosdev, int * countPtr );
#endif
static TagPtr XMLGetElementWithID( TagPtr dict, const char* id );
static bool getOSVersion(BVRef bvr, char *str);
//==========================================================================
rc = 0;
break;
}
error(" EBIOS read error: %s\n", bios_error(rc), rc);
error(" Block 0x%x Sectors %d\n", secno, xnsecs);
printf(" EBIOS read error: %s\n", bios_error(rc), rc);
printf(" Block 0x%x Sectors %d\n", secno, xnsecs);
sleep(1);
}
}
rc = 0;
break;
}
error(" BIOS read error: %s\n", bios_error(rc), rc);
error(" Block %d, Cyl %d Head %d Sector %d\n",
printf(" BIOS read error: %s\n", bios_error(rc), rc);
printf(" Block %d, Cyl %d Head %d Sector %d\n",
secno, cyl, head, sec);
sleep(1);
}
if(biosdev >= 0x100 && (execute_hook("isRamDiskRegistred", NULL, NULL, NULL, NULL, NULL, NULL) == EFI_SUCCESS)){
int ret = -1;
execute_hook("p_ramdiskReadBytes", &biosdev, &blkno, &byteoff, &byteCount, buffer, &ret);
execute_hook("p_ramdiskReadBytes", &biosdev, (void*)(unsigned long)&blkno, &byteoff, &byteCount, buffer, &ret);
return ret;
}
#endif
/* Let's try assuming we are on a hybrid HFS/ISO9660 CD. */
bvr = newFDiskBVRef(
biosdev, 0,
0,
&cdpart,
HFSInitPartition,
HFSLoadFile,
biosdev, 0,
0,
&cdpart,
HFSInitPartition,
HFSLoadFile,
HFSReadFile,
HFSGetDirEntry,
HFSGetDirEntry,
HFSGetFileBlock,
HFSGetUUID,
0,
kBIOSDevTypeHardDrive);
HFSGetDescription,
HFSFree,
0,
kBIOSDevTypeHardDrive, 0);
bvr->next = map->bvr;
map->bvr = bvr;
map->bvrcnt++;
}
}
static TagPtr XMLGetElementWithID( TagPtr dict, const char* id )
{
if(dict->type != kTagTypeArray) return 0;
int element = 0;
TagPtr tmp = dict->tag;
int entry_count = XMLTagCount(dict);
while(element < entry_count)
{
char *Identifier = NULL;
Identifier = XMLCastString(XMLGetProperty(tmp, (const char*)"Identifier"));
if (Identifier && (strcmp(Identifier, id) == 0))
{
return tmp;
}
element++;
tmp = tmp->tagNext;
}
return tmp;
}
static bool getOSVersion(BVRef bvr, char *str)
{
bool valid = false;
config_file_t systemVersion;
char dirSpec[512];
long flags, time;
sprintf(dirSpec, "hd(%d,%d)/System/Library/CoreServices/SystemVersion.plist", BIOS_DEV_UNIT(bvr), bvr->part_no);
}
else
{
sprintf(dirSpec, "hd(%d,%d)/", BIOS_DEV_UNIT(bvr), bvr->part_no);
/* Much clean */
sprintf(dirSpec, "hd(%d,%d)/Mac OS X Install Data/index.sproduct", BIOS_DEV_UNIT(bvr), bvr->part_no);
if (GetFileInfo(dirSpec, "Mac OS X Install Data", &flags, &time) == 0)
{
/*** DIRTY HACK (would be better to have a plist) ***/
*str = '\0';
strncat(str, "10.7", 4);
return true;
}
if (!loadConfigFile(dirSpec, &systemVersion))
{
TagPtr pkg_p = XMLCastArray(XMLGetProperty(systemVersion.dictionary, (const char*)"Packages"));
if (pkg_p)
{
char *version = NULL;
version = XMLCastString(XMLGetProperty(
XMLGetElementWithID(pkg_p,
"com.apple.mpkg.OSInstall"),
(const char*)"Version"));
if (version && strlen(version) >= 4)
{
*str = '\0';
strncat(str, version, 4);
return true;
}
}
}
}
}
int rc;
if ((len & (BPS-1)) != 0) {
error("raw disk read not sector aligned");
printf("raw disk read not sector aligned");
return -1;
}
secno += bvr->part_boff;
if ((rc = ebiosread(bvr->biosdev, secno, secs)) != 0) {
/* Ignore corrected ECC errors */
if (rc != ECC_CORRECTED_ERR) {
error(" EBIOS read error: %s\n", bios_error(rc), rc);
error(" Block %d Sectors %d\n", secno, secs);
printf(" EBIOS read error: %s\n", bios_error(rc), rc);
printf(" Block %d Sectors %d\n", secno, secs);
return rc;
}
}
int rc;
if ((len & (BPS-1)) != 0) {
error("raw disk write not sector aligned");
printf("raw disk write not sector aligned");
return -1;
}
secno += bvr->part_boff;
bcopy( cbuf, trackbuf, copy_len );
//printf("rdr: ebioswrite(%d, %d, %d)\n", bvr->biosdev, secno, secs);
if ((rc = ebioswrite(bvr->biosdev, secno, secs)) != 0) {
error(" EBIOS write error: %s\n", bios_error(rc), rc);
error(" Block %d Sectors %d\n", secno, secs);
printf(" EBIOS write error: %s\n", bios_error(rc), rc);
printf(" Block %d Sectors %d\n", secno, secs);
return rc;
}
len -= copy_len;
branches/cparm/i386/libsaio/stack_protector.c
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
/*
* Copyright (c) 2002 Hiroaki Etoh, Federico G. Schwindt, and Miodrag Vallat.
* All rights reserved.
*