Chameleon

Chameleon Commit Details

Date:2012-03-20 10:05:01 (12 years 1 month ago)
Author:armel cadet-petit
Commit:1899
Parents: 1898
Message:bug fixes
Changes:
D/branches/cparm/artwork/themes/msi_netbook
D/branches/cparm/artwork/themes/pinktink
D/branches/cparm/artwork/themes/twilight
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - WallpaperStyle/device_ntfs_o_WALL_WINDOWS7.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - WallpaperStyle/device_hfsplus_ml_o_WALL.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - Logos/device_befs_ALT1.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - Logos/device_befs_ALT2.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - WallpaperStyle/device_hfsplus_sl_o_WALL.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - Silly/device_hfsraid_sl_VLADSTUDIOS.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - Animals/device_openbsd_ALT1.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - WallpaperStyle/device_ntfs_WALL_WINDOWS7.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - WallpaperStyle/device_hfsraid_lion_o_WALL.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - WallpaperStyle/device_ext3_WALL_UBUNTU.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - Logos/device_openbsd_o_ALT1.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - Silly/device_hfsplus_sl_o_VLADSTUDIOS.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - Logos/device_openbsd_o_ALT2.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - Silly/device_hfsraid_lion_VLADSTUDIOS.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - Animals
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - WallpaperStyle/device_hfsraid_lion_WALL.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - Logos/device_freebsd_o_ALT1.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - Logos/device_freebsd_o_ALT2.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - Logos/device_openbsd_ALT1.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - Silly/device_hfsplus_sl_VLADSTUDIOS.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - Logos/device_openbsd_ALT2.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - WallpaperStyle/device_hfsraid_ml_WALL.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/device_befs_alt.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - Logos/device_befs_o_ALT1.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/font_console_MONOSPACED.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - Logos/device_befs_o_ALT2.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - WallpaperStyle/device_hfsraid_sl_WALL.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - WallpaperStyle
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - WallpaperStyle/device_hfsplus_lion_o_WALL.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - Animals/device_openbsd_o_ALT1.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - Logos/device_freebsd_ALT1.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - Logos/device_freebsd_ALT2.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - Logos
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - Silly/device_hfsplus_lion_VLADSTUDIOS.png
A/branches/cparm/artwork/themes/LoginToLion/device_openbsd_o_alt.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - WallpaperStyle/device_ext3_o_WALL_UBUNTU.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - Silly/device_hfsraid_lion_o_VLADSTUDIOS.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - WallpaperStyle/device_hfsplus_lion_WALL.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - WallpaperStyle/device_hfsplus_ml_WALL.png
A/branches/cparm/artwork/themes/LoginToLion/device_freebsd_o_alt.png
A/branches/cparm/artwork/themes/LoginToLion/device_openbsd_alt.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - WallpaperStyle/device_hfsplus_sl_WALL.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/device_befs_o_alt.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - WallpaperStyle/device_hfsraid_ml_o_WALL.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - WallpaperStyle/device_hfsraid_sl_o_WALL.png
A/branches/cparm/artwork/themes/LoginToLion/device_freebsd_alt.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - Silly
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - Silly/device_hfsplus_lion_o_VLADSTUDIOS.png
A/branches/cparm/artwork/themes/LoginToLion/ALTERNATES/Devices - Silly/device_hfsraid_sl_o_VLADSTUDIOS.png
M/branches/cparm/i386/modules/HibernateEnabler/graphic_utils.c
M/branches/cparm/i386/libsaio/bootstruct.h
M/branches/cparm/i386/util/amlsgn.m
M/branches/cparm/i386/libsaio/platform.h
M/branches/cparm/CREDITS
M/branches/cparm/CHANGES
M/branches/cparm/artwork/themes/LoginToLion/device_befs_o_alt.png
M/branches/cparm/artwork/themes/LoginToLion/device_befs_o.png
M/branches/cparm/i386/libsaio/fake_efi.c
M/branches/cparm/i386/boot2/boot.c
M/branches/cparm/Chameleon.xcodeproj/project.pbxproj
M/branches/cparm/artwork/themes/LoginToLion/device_openbsd_o.png
M/branches/cparm/i386/libsaio/saio_internal.h
M/branches/cparm/i386/libsaio/acpi_tools.c
M/branches/cparm/i386/boot2/options.c
M/branches/cparm/i386/modules/GUI/GUI_module.c
M/branches/cparm/artwork/themes/LoginToLion/device_freebsd_o.png
M/branches/cparm/i386/modules/ACPICodec/acpi_codec.c
M/branches/cparm/artwork/themes/LoginToLion/device_openbsd.png
M/branches/cparm/i386/modules/ACPICodec/acpi_codec.h
M/branches/cparm/i386/boot2/drivers.c
M/branches/cparm/i386/libsaio/saio_types.h
M/branches/cparm/artwork/themes/LoginToLion/device_freebsd.png
M/branches/cparm/i386/modules/GUI/gui.c
M/branches/cparm/artwork/themes/LoginToLion/device_befs_alt.png
M/branches/cparm/artwork/themes/LoginToLion/device_befs.png
M/branches/cparm/i386/modules/GUI/graphic_utils.c
M/branches/cparm/i386/libsaio/bootstruct.c
M/branches/cparm/TODO

File differences

branches/cparm/TODO
66
77
88
9
9
1010
1111
1212
- Implement a pool allocator, so each module will run and allocate memory in there own pool, de-alloc all allocated memory by the module,
will be done simply by destroying the pool
- (re-)Implement a watchdog library set (clear the watchdog , can avoid infinite loop made for unknow reasons by the compiler or cpu reset)
- Try to sync our prf() with the apple/mach __doprnt() (in Xnu/osfmk/kern/printf.c) to normalize the formating in our printf, sprintf, etc ..., and facilitate bug fixes
- Implement a Host like in bits to avoid some return issues
branches/cparm/Chameleon.xcodeproj/project.pbxproj
88
99
1010
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
11175
12176
13177
......
417581
418582
419583
420
421
422
423
424
425
426
427584
428585
429586
......
465622
466623
467624
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
468850
469851
470852
......
11961578
11971579
11981580
1581
1582
1583
11991584
12001585
1201
1202
1203
12041586
12051587
12061588
......
12811663
12821664
12831665
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
13121666
13131667
13141668
/* Begin PBXFileReference section */
AB0E930C14C6223500F798D7 /* cpu_intel_amd.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = cpu_intel_amd.c; sourceTree = "<group>"; };
AB42D02115187F2C0078E84A /* background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = background.png; sourceTree = "<group>"; };
AB42D02215187F2C0078E84A /* boot.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = boot.png; sourceTree = "<group>"; };
AB42D02315187F2C0078E84A /* device_cdrom.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_cdrom.png; sourceTree = "<group>"; };
AB42D02415187F2C0078E84A /* device_ext3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_ext3.png; sourceTree = "<group>"; };
AB42D02515187F2C0078E84A /* device_fat.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_fat.png; sourceTree = "<group>"; };
AB42D02615187F2C0078E84A /* device_generic.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_generic.png; sourceTree = "<group>"; };
AB42D02715187F2C0078E84A /* device_hfsplus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsplus.png; sourceTree = "<group>"; };
AB42D02815187F2C0078E84A /* device_hfsraid.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsraid.png; sourceTree = "<group>"; };
AB42D02915187F2C0078E84A /* device_ntfs.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_ntfs.png; sourceTree = "<group>"; };
AB42D02A15187F2C0078E84A /* device_scroll_next.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_scroll_next.png; sourceTree = "<group>"; };
AB42D02B15187F2C0078E84A /* device_scroll_prev.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_scroll_prev.png; sourceTree = "<group>"; };
AB42D02C15187F2C0078E84A /* device_selection.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_selection.png; sourceTree = "<group>"; };
AB42D02D15187F2C0078E84A /* font_console.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = font_console.png; sourceTree = "<group>"; };
AB42D02E15187F2C0078E84A /* font_small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = font_small.png; sourceTree = "<group>"; };
AB42D02F15187F2C0078E84A /* logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = logo.png; sourceTree = "<group>"; };
AB42D03015187F2C0078E84A /* menu_boot.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_boot.png; sourceTree = "<group>"; };
AB42D03115187F2C0078E84A /* menu_help.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_help.png; sourceTree = "<group>"; };
AB42D03215187F2C0078E84A /* menu_ignore_caches.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_ignore_caches.png; sourceTree = "<group>"; };
AB42D03315187F2C0078E84A /* menu_ignore_caches_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_ignore_caches_disabled.png; sourceTree = "<group>"; };
AB42D03415187F2C0078E84A /* menu_memory_info.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_memory_info.png; sourceTree = "<group>"; };
AB42D03515187F2C0078E84A /* menu_selection.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_selection.png; sourceTree = "<group>"; };
AB42D03615187F2C0078E84A /* menu_single_user.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_single_user.png; sourceTree = "<group>"; };
AB42D03715187F2C0078E84A /* menu_single_user_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_single_user_disabled.png; sourceTree = "<group>"; };
AB42D03815187F2C0078E84A /* menu_verbose.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_verbose.png; sourceTree = "<group>"; };
AB42D03915187F2C0078E84A /* menu_verbose_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_verbose_disabled.png; sourceTree = "<group>"; };
AB42D03A15187F2C0078E84A /* menu_video_info.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_video_info.png; sourceTree = "<group>"; };
AB42D03B15187F2C0078E84A /* progress_bar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = progress_bar.png; sourceTree = "<group>"; };
AB42D03C15187F2C0078E84A /* progress_bar_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = progress_bar_background.png; sourceTree = "<group>"; };
AB42D03D15187F2C0078E84A /* text_scroll_next.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = text_scroll_next.png; sourceTree = "<group>"; };
AB42D03E15187F2C0078E84A /* text_scroll_prev.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = text_scroll_prev.png; sourceTree = "<group>"; };
AB42D03F15187F2C0078E84A /* theme.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = theme.plist; sourceTree = "<group>"; };
AB42D04115187F2C0078E84A /* background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = background.png; sourceTree = "<group>"; };
AB42D04215187F2C0078E84A /* boot.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = boot.png; sourceTree = "<group>"; };
AB42D04315187F2C0078E84A /* device_cdrom.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_cdrom.png; sourceTree = "<group>"; };
AB42D04415187F2C0078E84A /* device_ext3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_ext3.png; sourceTree = "<group>"; };
AB42D04515187F2C0078E84A /* device_fat.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_fat.png; sourceTree = "<group>"; };
AB42D04615187F2C0078E84A /* device_generic.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_generic.png; sourceTree = "<group>"; };
AB42D04715187F2C0078E84A /* device_hfsplus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsplus.png; sourceTree = "<group>"; };
AB42D04815187F2C0078E84A /* device_ntfs.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_ntfs.png; sourceTree = "<group>"; };
AB42D04915187F2C0078E84A /* device_scroll_next.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_scroll_next.png; sourceTree = "<group>"; };
AB42D04A15187F2C0078E84A /* device_scroll_prev.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_scroll_prev.png; sourceTree = "<group>"; };
AB42D04B15187F2C0078E84A /* device_selection.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_selection.png; sourceTree = "<group>"; };
AB42D04C15187F2C0078E84A /* font_console.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = font_console.png; sourceTree = "<group>"; };
AB42D04D15187F2C0078E84A /* font_small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = font_small.png; sourceTree = "<group>"; };
AB42D04E15187F2C0078E84A /* logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = logo.png; sourceTree = "<group>"; };
AB42D04F15187F2C0078E84A /* menu_boot.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_boot.png; sourceTree = "<group>"; };
AB42D05015187F2C0078E84A /* menu_help.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_help.png; sourceTree = "<group>"; };
AB42D05115187F2C0078E84A /* menu_ignore_caches.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_ignore_caches.png; sourceTree = "<group>"; };
AB42D05215187F2C0078E84A /* menu_ignore_caches_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_ignore_caches_disabled.png; sourceTree = "<group>"; };
AB42D05315187F2C0078E84A /* menu_memory_info.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_memory_info.png; sourceTree = "<group>"; };
AB42D05415187F2C0078E84A /* menu_selection.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_selection.png; sourceTree = "<group>"; };
AB42D05515187F2C0078E84A /* menu_single_user.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_single_user.png; sourceTree = "<group>"; };
AB42D05615187F2C0078E84A /* menu_single_user_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_single_user_disabled.png; sourceTree = "<group>"; };
AB42D05715187F2C0078E84A /* menu_verbose.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_verbose.png; sourceTree = "<group>"; };
AB42D05815187F2C0078E84A /* menu_verbose_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_verbose_disabled.png; sourceTree = "<group>"; };
AB42D05915187F2C0078E84A /* menu_video_info.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_video_info.png; sourceTree = "<group>"; };
AB42D05A15187F2C0078E84A /* progress_bar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = progress_bar.png; sourceTree = "<group>"; };
AB42D05B15187F2C0078E84A /* progress_bar_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = progress_bar_background.png; sourceTree = "<group>"; };
AB42D05C15187F2C0078E84A /* text_scroll_next.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = text_scroll_next.png; sourceTree = "<group>"; };
AB42D05D15187F2C0078E84A /* text_scroll_prev.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = text_scroll_prev.png; sourceTree = "<group>"; };
AB42D05E15187F2C0078E84A /* theme.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = theme.plist; sourceTree = "<group>"; };
AB42D06115187F2C0078E84A /* device_befs_alt.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_befs_alt.png; sourceTree = "<group>"; };
AB42D06215187F2C0078E84A /* device_befs_o_alt.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_befs_o_alt.png; sourceTree = "<group>"; };
AB42D06415187F2C0078E84A /* device_openbsd_ALT1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_openbsd_ALT1.png; sourceTree = "<group>"; };
AB42D06515187F2C0078E84A /* device_openbsd_o_ALT1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_openbsd_o_ALT1.png; sourceTree = "<group>"; };
AB42D06715187F2C0078E84A /* device_befs_ALT1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_befs_ALT1.png; sourceTree = "<group>"; };
AB42D06815187F2C0078E84A /* device_befs_ALT2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_befs_ALT2.png; sourceTree = "<group>"; };
AB42D06915187F2C0078E84A /* device_befs_o_ALT1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_befs_o_ALT1.png; sourceTree = "<group>"; };
AB42D06A15187F2C0078E84A /* device_befs_o_ALT2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_befs_o_ALT2.png; sourceTree = "<group>"; };
AB42D06B15187F2C0078E84A /* device_freebsd_ALT1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_freebsd_ALT1.png; sourceTree = "<group>"; };
AB42D06C15187F2C0078E84A /* device_freebsd_ALT2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_freebsd_ALT2.png; sourceTree = "<group>"; };
AB42D06D15187F2C0078E84A /* device_freebsd_o_ALT1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_freebsd_o_ALT1.png; sourceTree = "<group>"; };
AB42D06E15187F2C0078E84A /* device_freebsd_o_ALT2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_freebsd_o_ALT2.png; sourceTree = "<group>"; };
AB42D06F15187F2C0078E84A /* device_openbsd_ALT1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_openbsd_ALT1.png; sourceTree = "<group>"; };
AB42D07015187F2C0078E84A /* device_openbsd_ALT2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_openbsd_ALT2.png; sourceTree = "<group>"; };
AB42D07115187F2C0078E84A /* device_openbsd_o_ALT1.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_openbsd_o_ALT1.png; sourceTree = "<group>"; };
AB42D07215187F2C0078E84A /* device_openbsd_o_ALT2.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_openbsd_o_ALT2.png; sourceTree = "<group>"; };
AB42D07415187F2C0078E84A /* device_hfsplus_lion_o_VLADSTUDIOS.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsplus_lion_o_VLADSTUDIOS.png; sourceTree = "<group>"; };
AB42D07515187F2C0078E84A /* device_hfsplus_lion_VLADSTUDIOS.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsplus_lion_VLADSTUDIOS.png; sourceTree = "<group>"; };
AB42D07615187F2C0078E84A /* device_hfsplus_sl_o_VLADSTUDIOS.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsplus_sl_o_VLADSTUDIOS.png; sourceTree = "<group>"; };
AB42D07715187F2C0078E84A /* device_hfsplus_sl_VLADSTUDIOS.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsplus_sl_VLADSTUDIOS.png; sourceTree = "<group>"; };
AB42D07815187F2C0078E84A /* device_hfsraid_lion_o_VLADSTUDIOS.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsraid_lion_o_VLADSTUDIOS.png; sourceTree = "<group>"; };
AB42D07915187F2C0078E84A /* device_hfsraid_lion_VLADSTUDIOS.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsraid_lion_VLADSTUDIOS.png; sourceTree = "<group>"; };
AB42D07A15187F2C0078E84A /* device_hfsraid_sl_o_VLADSTUDIOS.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsraid_sl_o_VLADSTUDIOS.png; sourceTree = "<group>"; };
AB42D07B15187F2C0078E84A /* device_hfsraid_sl_VLADSTUDIOS.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsraid_sl_VLADSTUDIOS.png; sourceTree = "<group>"; };
AB42D07D15187F2C0078E84A /* device_ext3_o_WALL_UBUNTU.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_ext3_o_WALL_UBUNTU.png; sourceTree = "<group>"; };
AB42D07E15187F2C0078E84A /* device_ext3_WALL_UBUNTU.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_ext3_WALL_UBUNTU.png; sourceTree = "<group>"; };
AB42D07F15187F2C0078E84A /* device_hfsplus_lion_o_WALL.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsplus_lion_o_WALL.png; sourceTree = "<group>"; };
AB42D08015187F2C0078E84A /* device_hfsplus_lion_WALL.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsplus_lion_WALL.png; sourceTree = "<group>"; };
AB42D08115187F2C0078E84A /* device_hfsplus_ml_o_WALL.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsplus_ml_o_WALL.png; sourceTree = "<group>"; };
AB42D08215187F2C0078E84A /* device_hfsplus_ml_WALL.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsplus_ml_WALL.png; sourceTree = "<group>"; };
AB42D08315187F2C0078E84A /* device_hfsplus_sl_o_WALL.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsplus_sl_o_WALL.png; sourceTree = "<group>"; };
AB42D08415187F2C0078E84A /* device_hfsplus_sl_WALL.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsplus_sl_WALL.png; sourceTree = "<group>"; };
AB42D08515187F2C0078E84A /* device_hfsraid_lion_o_WALL.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsraid_lion_o_WALL.png; sourceTree = "<group>"; };
AB42D08615187F2C0078E84A /* device_hfsraid_lion_WALL.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsraid_lion_WALL.png; sourceTree = "<group>"; };
AB42D08715187F2C0078E84A /* device_hfsraid_ml_o_WALL.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsraid_ml_o_WALL.png; sourceTree = "<group>"; };
AB42D08815187F2C0078E84A /* device_hfsraid_ml_WALL.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsraid_ml_WALL.png; sourceTree = "<group>"; };
AB42D08915187F2C0078E84A /* device_hfsraid_sl_o_WALL.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsraid_sl_o_WALL.png; sourceTree = "<group>"; };
AB42D08A15187F2C0078E84A /* device_hfsraid_sl_WALL.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsraid_sl_WALL.png; sourceTree = "<group>"; };
AB42D08B15187F2C0078E84A /* device_ntfs_o_WALL_WINDOWS7.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_ntfs_o_WALL_WINDOWS7.png; sourceTree = "<group>"; };
AB42D08C15187F2C0078E84A /* device_ntfs_WALL_WINDOWS7.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_ntfs_WALL_WINDOWS7.png; sourceTree = "<group>"; };
AB42D08D15187F2C0078E84A /* font_console_MONOSPACED.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = font_console_MONOSPACED.png; sourceTree = "<group>"; };
AB42D08E15187F2C0078E84A /* background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = background.png; sourceTree = "<group>"; };
AB42D08F15187F2C0078E84A /* boot.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = boot.png; sourceTree = "<group>"; };
AB42D09015187F2C0078E84A /* device_befs.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_befs.png; sourceTree = "<group>"; };
AB42D09115187F2C0078E84A /* device_befs_alt.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_befs_alt.png; sourceTree = "<group>"; };
AB42D09215187F2C0078E84A /* device_befs_o.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_befs_o.png; sourceTree = "<group>"; };
AB42D09315187F2C0078E84A /* device_befs_o_alt.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_befs_o_alt.png; sourceTree = "<group>"; };
AB42D09415187F2C0078E84A /* device_cdrom.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_cdrom.png; sourceTree = "<group>"; };
AB42D09515187F2C0078E84A /* device_cdrom_o.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_cdrom_o.png; sourceTree = "<group>"; };
AB42D09615187F2C0078E84A /* device_ext3.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_ext3.png; sourceTree = "<group>"; };
AB42D09715187F2C0078E84A /* device_ext3_o.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_ext3_o.png; sourceTree = "<group>"; };
AB42D09815187F2C0078E84A /* device_fat.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_fat.png; sourceTree = "<group>"; };
AB42D09915187F2C0078E84A /* device_fat_o.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_fat_o.png; sourceTree = "<group>"; };
AB42D09A15187F2C0078E84A /* device_freebsd.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_freebsd.png; sourceTree = "<group>"; };
AB42D09B15187F2C0078E84A /* device_freebsd_alt.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_freebsd_alt.png; sourceTree = "<group>"; };
AB42D09C15187F2C0078E84A /* device_freebsd_o.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_freebsd_o.png; sourceTree = "<group>"; };
AB42D09D15187F2C0078E84A /* device_freebsd_o_alt.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_freebsd_o_alt.png; sourceTree = "<group>"; };
AB42D09E15187F2C0078E84A /* device_generic.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_generic.png; sourceTree = "<group>"; };
AB42D09F15187F2C0078E84A /* device_generic_o.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_generic_o.png; sourceTree = "<group>"; };
AB42D0A015187F2C0078E84A /* device_hfsplus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsplus.png; sourceTree = "<group>"; };
AB42D0A115187F2C0078E84A /* device_hfsplus_leo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsplus_leo.png; sourceTree = "<group>"; };
AB42D0A215187F2C0078E84A /* device_hfsplus_leo_o.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsplus_leo_o.png; sourceTree = "<group>"; };
AB42D0A315187F2C0078E84A /* device_hfsplus_lion.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsplus_lion.png; sourceTree = "<group>"; };
AB42D0A415187F2C0078E84A /* device_hfsplus_lion_o.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsplus_lion_o.png; sourceTree = "<group>"; };
AB42D0A515187F2C0078E84A /* device_hfsplus_ml.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsplus_ml.png; sourceTree = "<group>"; };
AB42D0A615187F2C0078E84A /* device_hfsplus_ml_o.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsplus_ml_o.png; sourceTree = "<group>"; };
AB42D0A715187F2C0078E84A /* device_hfsplus_o.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsplus_o.png; sourceTree = "<group>"; };
AB42D0A815187F2C0078E84A /* device_hfsplus_sl.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsplus_sl.png; sourceTree = "<group>"; };
AB42D0A915187F2C0078E84A /* device_hfsplus_sl_o.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsplus_sl_o.png; sourceTree = "<group>"; };
AB42D0AA15187F2C0078E84A /* device_hfsplus_tiger.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsplus_tiger.png; sourceTree = "<group>"; };
AB42D0AB15187F2C0078E84A /* device_hfsplus_tiger_o.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsplus_tiger_o.png; sourceTree = "<group>"; };
AB42D0AC15187F2C0078E84A /* device_hfsraid.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsraid.png; sourceTree = "<group>"; };
AB42D0AD15187F2C0078E84A /* device_hfsraid_ml.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsraid_ml.png; sourceTree = "<group>"; };
AB42D0AE15187F2C0078E84A /* device_hfsraid_ml_o.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsraid_ml_o.png; sourceTree = "<group>"; };
AB42D0AF15187F2C0078E84A /* device_hfsraid_o.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_hfsraid_o.png; sourceTree = "<group>"; };
AB42D0B015187F2C0078E84A /* device_ntfs.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_ntfs.png; sourceTree = "<group>"; };
AB42D0B115187F2C0078E84A /* device_ntfs_o.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_ntfs_o.png; sourceTree = "<group>"; };
AB42D0B215187F2C0078E84A /* device_openbsd.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_openbsd.png; sourceTree = "<group>"; };
AB42D0B315187F2C0078E84A /* device_openbsd_alt.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_openbsd_alt.png; sourceTree = "<group>"; };
AB42D0B415187F2C0078E84A /* device_openbsd_o.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_openbsd_o.png; sourceTree = "<group>"; };
AB42D0B515187F2C0078E84A /* device_openbsd_o_alt.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_openbsd_o_alt.png; sourceTree = "<group>"; };
AB42D0B615187F2C0078E84A /* device_scroll_next.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_scroll_next.png; sourceTree = "<group>"; };
AB42D0B715187F2C0078E84A /* device_scroll_prev.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_scroll_prev.png; sourceTree = "<group>"; };
AB42D0B815187F2C0078E84A /* device_selection.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = device_selection.png; sourceTree = "<group>"; };
AB42D0B915187F2C0078E84A /* font_console.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = font_console.png; sourceTree = "<group>"; };
AB42D0BA15187F2C0078E84A /* font_small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = font_small.png; sourceTree = "<group>"; };
AB42D0BB15187F2C0078E84A /* logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = logo.png; sourceTree = "<group>"; };
AB42D0BC15187F2C0078E84A /* menu_boot.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_boot.png; sourceTree = "<group>"; };
AB42D0BD15187F2C0078E84A /* menu_help.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_help.png; sourceTree = "<group>"; };
AB42D0BE15187F2C0078E84A /* menu_ignore_caches.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_ignore_caches.png; sourceTree = "<group>"; };
AB42D0BF15187F2C0078E84A /* menu_ignore_caches_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_ignore_caches_disabled.png; sourceTree = "<group>"; };
AB42D0C015187F2C0078E84A /* menu_memory_info.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_memory_info.png; sourceTree = "<group>"; };
AB42D0C115187F2C0078E84A /* menu_selection.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_selection.png; sourceTree = "<group>"; };
AB42D0C215187F2C0078E84A /* menu_single_user.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_single_user.png; sourceTree = "<group>"; };
AB42D0C315187F2C0078E84A /* menu_single_user_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_single_user_disabled.png; sourceTree = "<group>"; };
AB42D0C415187F2C0078E84A /* menu_verbose.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_verbose.png; sourceTree = "<group>"; };
AB42D0C515187F2C0078E84A /* menu_verbose_disabled.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_verbose_disabled.png; sourceTree = "<group>"; };
AB42D0C615187F2C0078E84A /* menu_video_info.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = menu_video_info.png; sourceTree = "<group>"; };
AB42D0C715187F2C0078E84A /* progress_bar.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = progress_bar.png; sourceTree = "<group>"; };
AB42D0C815187F2C0078E84A /* progress_bar_background.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = progress_bar_background.png; sourceTree = "<group>"; };
AB42D0C915187F2C0078E84A /* text_scroll_next.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = text_scroll_next.png; sourceTree = "<group>"; };
AB42D0CA15187F2C0078E84A /* text_scroll_prev.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = text_scroll_prev.png; sourceTree = "<group>"; };
AB42D0CB15187F2C0078E84A /* theme.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = theme.plist; 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>"; };
B0056DF911F3868000754B65 /* text_scroll_next.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = text_scroll_next.png; sourceTree = "<group>"; };
B0056DFA11F3868000754B65 /* text_scroll_prev.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = text_scroll_prev.png; sourceTree = "<group>"; };
B0056DFB11F3868000754B65 /* theme.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = theme.plist; sourceTree = "<group>"; };
B0056DFD11F3868000754B65 /* logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = logo.png; sourceTree = "<group>"; };
B0056DFE11F3868000754B65 /* theme.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = theme.plist; sourceTree = "<group>"; };
B0056E0011F3868000754B65 /* logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = logo.png; sourceTree = "<group>"; };
B0056E0111F3868000754B65 /* theme.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = theme.plist; sourceTree = "<group>"; };
B0056E0311F3868000754B65 /* font_small.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = font_small.png; sourceTree = "<group>"; };
B0056E0411F3868000754B65 /* logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = logo.png; sourceTree = "<group>"; };
B0056E0511F3868000754B65 /* theme.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = theme.plist; sourceTree = "<group>"; };
B0056E0811F3868000754B65 /* Users_Guide0.4.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = Users_Guide0.4.pdf; sourceTree = "<group>"; };
B0056E0911F3868000754B65 /* Users_Guide_v0.3.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = Users_Guide_v0.3.pdf; sourceTree = "<group>"; };
B0056E0A11F3868000754B65 /* UsersGuide-v0.2.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = "UsersGuide-v0.2.pdf"; sourceTree = "<group>"; };
name = Chameleon;
sourceTree = "<group>";
};
AB42D02015187F2C0078E84A /* embed */ = {
isa = PBXGroup;
children = (
AB42D02115187F2C0078E84A /* background.png */,
AB42D02215187F2C0078E84A /* boot.png */,
AB42D02315187F2C0078E84A /* device_cdrom.png */,
AB42D02415187F2C0078E84A /* device_ext3.png */,
AB42D02515187F2C0078E84A /* device_fat.png */,
AB42D02615187F2C0078E84A /* device_generic.png */,
AB42D02715187F2C0078E84A /* device_hfsplus.png */,
AB42D02815187F2C0078E84A /* device_hfsraid.png */,
AB42D02915187F2C0078E84A /* device_ntfs.png */,
AB42D02A15187F2C0078E84A /* device_scroll_next.png */,
AB42D02B15187F2C0078E84A /* device_scroll_prev.png */,
AB42D02C15187F2C0078E84A /* device_selection.png */,
AB42D02D15187F2C0078E84A /* font_console.png */,
AB42D02E15187F2C0078E84A /* font_small.png */,
AB42D02F15187F2C0078E84A /* logo.png */,
AB42D03015187F2C0078E84A /* menu_boot.png */,
AB42D03115187F2C0078E84A /* menu_help.png */,
AB42D03215187F2C0078E84A /* menu_ignore_caches.png */,
AB42D03315187F2C0078E84A /* menu_ignore_caches_disabled.png */,
AB42D03415187F2C0078E84A /* menu_memory_info.png */,
AB42D03515187F2C0078E84A /* menu_selection.png */,
AB42D03615187F2C0078E84A /* menu_single_user.png */,
AB42D03715187F2C0078E84A /* menu_single_user_disabled.png */,
AB42D03815187F2C0078E84A /* menu_verbose.png */,
AB42D03915187F2C0078E84A /* menu_verbose_disabled.png */,
AB42D03A15187F2C0078E84A /* menu_video_info.png */,
AB42D03B15187F2C0078E84A /* progress_bar.png */,
AB42D03C15187F2C0078E84A /* progress_bar_background.png */,
AB42D03D15187F2C0078E84A /* text_scroll_next.png */,
AB42D03E15187F2C0078E84A /* text_scroll_prev.png */,
AB42D03F15187F2C0078E84A /* theme.plist */,
);
path = embed;
sourceTree = "<group>";
};
AB42D04015187F2C0078E84A /* legacy */ = {
isa = PBXGroup;
children = (
AB42D04115187F2C0078E84A /* background.png */,
AB42D04215187F2C0078E84A /* boot.png */,
AB42D04315187F2C0078E84A /* device_cdrom.png */,
AB42D04415187F2C0078E84A /* device_ext3.png */,
AB42D04515187F2C0078E84A /* device_fat.png */,
AB42D04615187F2C0078E84A /* device_generic.png */,
AB42D04715187F2C0078E84A /* device_hfsplus.png */,
AB42D04815187F2C0078E84A /* device_ntfs.png */,
AB42D04915187F2C0078E84A /* device_scroll_next.png */,
AB42D04A15187F2C0078E84A /* device_scroll_prev.png */,
AB42D04B15187F2C0078E84A /* device_selection.png */,
AB42D04C15187F2C0078E84A /* font_console.png */,
AB42D04D15187F2C0078E84A /* font_small.png */,
AB42D04E15187F2C0078E84A /* logo.png */,
AB42D04F15187F2C0078E84A /* menu_boot.png */,
AB42D05015187F2C0078E84A /* menu_help.png */,
AB42D05115187F2C0078E84A /* menu_ignore_caches.png */,
AB42D05215187F2C0078E84A /* menu_ignore_caches_disabled.png */,
AB42D05315187F2C0078E84A /* menu_memory_info.png */,
AB42D05415187F2C0078E84A /* menu_selection.png */,
AB42D05515187F2C0078E84A /* menu_single_user.png */,
AB42D05615187F2C0078E84A /* menu_single_user_disabled.png */,
AB42D05715187F2C0078E84A /* menu_verbose.png */,
AB42D05815187F2C0078E84A /* menu_verbose_disabled.png */,
AB42D05915187F2C0078E84A /* menu_video_info.png */,
AB42D05A15187F2C0078E84A /* progress_bar.png */,
AB42D05B15187F2C0078E84A /* progress_bar_background.png */,
AB42D05C15187F2C0078E84A /* text_scroll_next.png */,
AB42D05D15187F2C0078E84A /* text_scroll_prev.png */,
AB42D05E15187F2C0078E84A /* theme.plist */,
);
path = legacy;
sourceTree = "<group>";
};
AB42D05F15187F2C0078E84A /* LoginToLion */ = {
isa = PBXGroup;
children = (
AB42D06015187F2C0078E84A /* ALTERNATES */,
AB42D08E15187F2C0078E84A /* background.png */,
AB42D08F15187F2C0078E84A /* boot.png */,
AB42D09015187F2C0078E84A /* device_befs.png */,
AB42D09115187F2C0078E84A /* device_befs_alt.png */,
AB42D09215187F2C0078E84A /* device_befs_o.png */,
AB42D09315187F2C0078E84A /* device_befs_o_alt.png */,
AB42D09415187F2C0078E84A /* device_cdrom.png */,
AB42D09515187F2C0078E84A /* device_cdrom_o.png */,
AB42D09615187F2C0078E84A /* device_ext3.png */,
AB42D09715187F2C0078E84A /* device_ext3_o.png */,
AB42D09815187F2C0078E84A /* device_fat.png */,
AB42D09915187F2C0078E84A /* device_fat_o.png */,
AB42D09A15187F2C0078E84A /* device_freebsd.png */,
AB42D09B15187F2C0078E84A /* device_freebsd_alt.png */,
AB42D09C15187F2C0078E84A /* device_freebsd_o.png */,
AB42D09D15187F2C0078E84A /* device_freebsd_o_alt.png */,
AB42D09E15187F2C0078E84A /* device_generic.png */,
AB42D09F15187F2C0078E84A /* device_generic_o.png */,
AB42D0A015187F2C0078E84A /* device_hfsplus.png */,
AB42D0A115187F2C0078E84A /* device_hfsplus_leo.png */,
AB42D0A215187F2C0078E84A /* device_hfsplus_leo_o.png */,
AB42D0A315187F2C0078E84A /* device_hfsplus_lion.png */,
AB42D0A415187F2C0078E84A /* device_hfsplus_lion_o.png */,
AB42D0A515187F2C0078E84A /* device_hfsplus_ml.png */,
AB42D0A615187F2C0078E84A /* device_hfsplus_ml_o.png */,
AB42D0A715187F2C0078E84A /* device_hfsplus_o.png */,
AB42D0A815187F2C0078E84A /* device_hfsplus_sl.png */,
AB42D0A915187F2C0078E84A /* device_hfsplus_sl_o.png */,
AB42D0AA15187F2C0078E84A /* device_hfsplus_tiger.png */,
AB42D0AB15187F2C0078E84A /* device_hfsplus_tiger_o.png */,
AB42D0AC15187F2C0078E84A /* device_hfsraid.png */,
AB42D0AD15187F2C0078E84A /* device_hfsraid_ml.png */,
AB42D0AE15187F2C0078E84A /* device_hfsraid_ml_o.png */,
AB42D0AF15187F2C0078E84A /* device_hfsraid_o.png */,
AB42D0B015187F2C0078E84A /* device_ntfs.png */,
AB42D0B115187F2C0078E84A /* device_ntfs_o.png */,
AB42D0B215187F2C0078E84A /* device_openbsd.png */,
AB42D0B315187F2C0078E84A /* device_openbsd_alt.png */,
AB42D0B415187F2C0078E84A /* device_openbsd_o.png */,
AB42D0B515187F2C0078E84A /* device_openbsd_o_alt.png */,
AB42D0B615187F2C0078E84A /* device_scroll_next.png */,
AB42D0B715187F2C0078E84A /* device_scroll_prev.png */,
AB42D0B815187F2C0078E84A /* device_selection.png */,
AB42D0B915187F2C0078E84A /* font_console.png */,
AB42D0BA15187F2C0078E84A /* font_small.png */,
AB42D0BB15187F2C0078E84A /* logo.png */,
AB42D0BC15187F2C0078E84A /* menu_boot.png */,
AB42D0BD15187F2C0078E84A /* menu_help.png */,
AB42D0BE15187F2C0078E84A /* menu_ignore_caches.png */,
AB42D0BF15187F2C0078E84A /* menu_ignore_caches_disabled.png */,
AB42D0C015187F2C0078E84A /* menu_memory_info.png */,
AB42D0C115187F2C0078E84A /* menu_selection.png */,
AB42D0C215187F2C0078E84A /* menu_single_user.png */,
AB42D0C315187F2C0078E84A /* menu_single_user_disabled.png */,
AB42D0C415187F2C0078E84A /* menu_verbose.png */,
AB42D0C515187F2C0078E84A /* menu_verbose_disabled.png */,
AB42D0C615187F2C0078E84A /* menu_video_info.png */,
AB42D0C715187F2C0078E84A /* progress_bar.png */,
AB42D0C815187F2C0078E84A /* progress_bar_background.png */,
AB42D0C915187F2C0078E84A /* text_scroll_next.png */,
AB42D0CA15187F2C0078E84A /* text_scroll_prev.png */,
AB42D0CB15187F2C0078E84A /* theme.plist */,
);
path = LoginToLion;
sourceTree = "<group>";
};
AB42D06015187F2C0078E84A /* ALTERNATES */ = {
isa = PBXGroup;
children = (
AB42D06115187F2C0078E84A /* device_befs_alt.png */,
AB42D06215187F2C0078E84A /* device_befs_o_alt.png */,
AB42D06315187F2C0078E84A /* Devices - Animals */,
AB42D06615187F2C0078E84A /* Devices - Logos */,
AB42D07315187F2C0078E84A /* Devices - Silly */,
AB42D07C15187F2C0078E84A /* Devices - WallpaperStyle */,
AB42D08D15187F2C0078E84A /* font_console_MONOSPACED.png */,
);
path = ALTERNATES;
sourceTree = "<group>";
};
AB42D06315187F2C0078E84A /* Devices - Animals */ = {
isa = PBXGroup;
children = (
AB42D06415187F2C0078E84A /* device_openbsd_ALT1.png */,
AB42D06515187F2C0078E84A /* device_openbsd_o_ALT1.png */,
);
path = "Devices - Animals";
sourceTree = "<group>";
};
AB42D06615187F2C0078E84A /* Devices - Logos */ = {
isa = PBXGroup;
children = (
AB42D06715187F2C0078E84A /* device_befs_ALT1.png */,
AB42D06815187F2C0078E84A /* device_befs_ALT2.png */,
AB42D06915187F2C0078E84A /* device_befs_o_ALT1.png */,
AB42D06A15187F2C0078E84A /* device_befs_o_ALT2.png */,
AB42D06B15187F2C0078E84A /* device_freebsd_ALT1.png */,
AB42D06C15187F2C0078E84A /* device_freebsd_ALT2.png */,
AB42D06D15187F2C0078E84A /* device_freebsd_o_ALT1.png */,
AB42D06E15187F2C0078E84A /* device_freebsd_o_ALT2.png */,
AB42D06F15187F2C0078E84A /* device_openbsd_ALT1.png */,
AB42D07015187F2C0078E84A /* device_openbsd_ALT2.png */,
AB42D07115187F2C0078E84A /* device_openbsd_o_ALT1.png */,
AB42D07215187F2C0078E84A /* device_openbsd_o_ALT2.png */,
);
path = "Devices - Logos";
sourceTree = "<group>";
};
AB42D07315187F2C0078E84A /* Devices - Silly */ = {
isa = PBXGroup;
children = (
AB42D07415187F2C0078E84A /* device_hfsplus_lion_o_VLADSTUDIOS.png */,
AB42D07515187F2C0078E84A /* device_hfsplus_lion_VLADSTUDIOS.png */,
AB42D07615187F2C0078E84A /* device_hfsplus_sl_o_VLADSTUDIOS.png */,
AB42D07715187F2C0078E84A /* device_hfsplus_sl_VLADSTUDIOS.png */,
AB42D07815187F2C0078E84A /* device_hfsraid_lion_o_VLADSTUDIOS.png */,
AB42D07915187F2C0078E84A /* device_hfsraid_lion_VLADSTUDIOS.png */,
AB42D07A15187F2C0078E84A /* device_hfsraid_sl_o_VLADSTUDIOS.png */,
AB42D07B15187F2C0078E84A /* device_hfsraid_sl_VLADSTUDIOS.png */,
);
path = "Devices - Silly";
sourceTree = "<group>";
};
AB42D07C15187F2C0078E84A /* Devices - WallpaperStyle */ = {
isa = PBXGroup;
children = (
AB42D07D15187F2C0078E84A /* device_ext3_o_WALL_UBUNTU.png */,
AB42D07E15187F2C0078E84A /* device_ext3_WALL_UBUNTU.png */,
AB42D07F15187F2C0078E84A /* device_hfsplus_lion_o_WALL.png */,
AB42D08015187F2C0078E84A /* device_hfsplus_lion_WALL.png */,
AB42D08115187F2C0078E84A /* device_hfsplus_ml_o_WALL.png */,
AB42D08215187F2C0078E84A /* device_hfsplus_ml_WALL.png */,
AB42D08315187F2C0078E84A /* device_hfsplus_sl_o_WALL.png */,
AB42D08415187F2C0078E84A /* device_hfsplus_sl_WALL.png */,
AB42D08515187F2C0078E84A /* device_hfsraid_lion_o_WALL.png */,
AB42D08615187F2C0078E84A /* device_hfsraid_lion_WALL.png */,
AB42D08715187F2C0078E84A /* device_hfsraid_ml_o_WALL.png */,
AB42D08815187F2C0078E84A /* device_hfsraid_ml_WALL.png */,
AB42D08915187F2C0078E84A /* device_hfsraid_sl_o_WALL.png */,
AB42D08A15187F2C0078E84A /* device_hfsraid_sl_WALL.png */,
AB42D08B15187F2C0078E84A /* device_ntfs_o_WALL_WINDOWS7.png */,
AB42D08C15187F2C0078E84A /* device_ntfs_WALL_WINDOWS7.png */,
);
path = "Devices - WallpaperStyle";
sourceTree = "<group>";
};
AB43B2B514C37E520018D529 /* i386 */ = {
isa = PBXGroup;
children = (
B0056DBB11F3868000754B65 /* themes */ = {
isa = PBXGroup;
children = (
AB42D02015187F2C0078E84A /* embed */,
AB42D04015187F2C0078E84A /* legacy */,
AB42D05F15187F2C0078E84A /* LoginToLion */,
B0056DBC11F3868000754B65 /* bullet */,
B0056DDC11F3868000754B65 /* default */,
B0056DFC11F3868000754B65 /* msi_netbook */,
B0056DFF11F3868000754B65 /* pinktink */,
B0056E0211F3868000754B65 /* twilight */,
);
path = themes;
sourceTree = "<group>";
path = default;
sourceTree = "<group>";
};
B0056DFC11F3868000754B65 /* msi_netbook */ = {
isa = PBXGroup;
children = (
B0056DFD11F3868000754B65 /* logo.png */,
B0056DFE11F3868000754B65 /* theme.plist */,
);
path = msi_netbook;
sourceTree = "<group>";
};
B0056DFF11F3868000754B65 /* pinktink */ = {
isa = PBXGroup;
children = (
B0056E0011F3868000754B65 /* logo.png */,
B0056E0111F3868000754B65 /* theme.plist */,
);
path = pinktink;
sourceTree = "<group>";
};
B0056E0211F3868000754B65 /* twilight */ = {
isa = PBXGroup;
children = (
B0056E0311F3868000754B65 /* font_small.png */,
B0056E0411F3868000754B65 /* logo.png */,
B0056E0511F3868000754B65 /* theme.plist */,
);
path = twilight;
sourceTree = "<group>";
};
B0056E0611F3868000754B65 /* doc */ = {
isa = PBXGroup;
children = (
branches/cparm/CHANGES
1
2
3
4
5
16
27
38
- Sync'd LoginToLion with the last Enzo's update (want more about LoginToLion ? please follow or participate to this thread : http://forum.voodooprojects.org/index.php/topic,2125.0.html)
- fixed some bugs
- Added an option to change the acpi detection method (only for acpi 64 users)
- Updated amlsgn with more cocoa
- Many security and bug fixes and improvements
- Added a workaround for some machines that was unable to enter to the startup options during the countdown
- Implemented a new environment platform
branches/cparm/i386/libsaio/bootstruct.c
4646
4747
4848
49
4950
5051
5152
......
5354
5455
5556
57
58
59
60
61
5662
5763
5864
......
6672
6773
6874
69
70
71
72
75
76
77
78
7379
7480
7581
76
82
7783
7884
7985
8086
8187
82
83
88
89
8490
8591
86
87
88
92
8993
9094
9195
......
108112
109113
110114
111
112
113
114
115
116
117
118
115119
116120
117121
......
131135
132136
133137
134
135
136
137
138
139138
140139
141140
......
146145
147146
148147
148
149
150
151
149152
150153
151154
......
232235
233236
234237
235
238
236239
240
237241
238242
239
243
240244
241245
242246
......
247251
248252
249253
250
251
254
255
252256
253257
254258
255259
256
260
257261
258262
259263
260264
261
262
263
265
266
267
264268
265269
266270
267271
268272
269
273
270274
271275
272
276
273277
274278
275
279
276280
277281
278282
279
283
280284
281285
282
283
284
285
286
287
288
289
286290
287
291
288292
289293
290294
......
293297
294298
295299
296
300
297301
298302
299303
......
306310
307311
308312
309
313
310314
311315
312316
Node *gMemoryMapNode = NULL;
static char platformName[64];
static MemoryRange memoryMap[kMemoryMapCountMax];
void initKernBootStruct( void )
{
if ( !init_done )
{
int convmem; // conventional memory
int extmem; // extended memory
unsigned long memoryMapCount = 0;
bootArgs = (boot_args_common *)malloc(sizeof(boot_args_common));
bootInfo = (PrivateBootInfo_t *)malloc(sizeof(PrivateBootInfo_t));
if (bootArgs == NULL || bootInfo == NULL)
// conventional/extended memory for backwards compatibility.
bootInfo->memoryMapCount =
getMemoryMap( bootInfo->memoryMap, kMemoryMapCountMax,
(unsigned long *) &bootInfo->convmem,
(unsigned long *) &bootInfo->extmem );
memoryMapCount =
getMemoryMap( memoryMap, kMemoryMapCountMax,
(unsigned long *) &convmem,
(unsigned long *) &extmem );
if ( bootInfo->memoryMapCount == 0 )
if ( memoryMapCount == 0 )
{
// BIOS did not provide a memory map, systems with
// discontiguous memory or unusual memory hole locations
// may have problems.
bootInfo->convmem = getConventionalMemorySize();
bootInfo->extmem = getExtendedMemorySize();
convmem = getConventionalMemorySize();
extmem = getExtendedMemorySize();
}
#if 0
bootInfo->configEnd = bootInfo->config;
#endif
bootArgs->Video.v_display = VGA_TEXT_MODE;
DT__Initialize();
gMemoryMapNode = DT__FindNode("/chosen/memory-map", true);
safe_set_env(envConvMem, bootInfo->convmem);
safe_set_env(envExtMem, bootInfo->convmem);
safe_set_env(envMemoryMap, (uint32_t)bootInfo->memoryMap);
safe_set_env(envMemoryMapCnt, bootInfo->memoryMapCount);
set_env(envConvMem, convmem);
set_env(envExtMem, extmem);
set_env(envMemoryMap, (uint32_t)memoryMap);
set_env(envMemoryMapCnt, memoryMapCount);
init_done = 1;
{
return bootArgs->Video.v_display;
}
uint32_t getBootArgsVideoPtrAtOffset(uint32_t offset)
{
char *vid = (char *)&bootArgs->Video ;
return (uint32_t)vid[offset];
}
void setBootArgsVideoStruct(Boot_Video*Video)
{
bootArgs->Video.v_display = Video->v_display;
bootArgs->Video.v_baseAddr = Video->v_baseAddr;
return;
}
boot_args_common * getBootArgs(void)
{
return bootArgs;
}
#define AllocateKernelMemoryForBootArgs(Ver) \
{ \
{
{
int i;
EfiMemoryRange *memoryMap = NULL;
EfiMemoryRange *kMemoryMap = NULL;
MemoryRange *range = NULL;
uint64_tsane_size = 0; /* Memory size to use for defaults calculations */
int memoryMapCount = bootInfo->memoryMapCount;
int memoryMapCount = (int)get_env(envMemoryMapCnt);
if (memoryMapCount == 0) {
// convert memory map to boot_args memory map
memoryMap = (EfiMemoryRange *)AllocateKernelMemory(sizeof(EfiMemoryRange) * memoryMapCount);
if (memoryMap == NULL) {
kMemoryMap = (EfiMemoryRange *)AllocateKernelMemory(sizeof(EfiMemoryRange) * memoryMapCount);
if (kMemoryMap == NULL) {
stop("Unable to allocate kernel space for the memory map\n");
return;
}
bootArgs->MemoryMap = (uint32_t)memoryMap;
bootArgs->MemoryMap = (uint32_t)kMemoryMap;
bootArgs->MemoryMapSize = sizeof(EfiMemoryRange) * memoryMapCount;
bootArgs->MemoryMapDescriptorSize = sizeof(EfiMemoryRange);
bootArgs->MemoryMapDescriptorVersion = 0;
for (i=0; i<memoryMapCount; i++, memoryMap++) {
range = &bootInfo->memoryMap[i];
if (!range || !memoryMap) {
for (i=0; i<memoryMapCount; i++, kMemoryMap++) {
range = &memoryMap[i];
if (!range || !kMemoryMap) {
stop("Error while computing kernel memory map\n");
return;
}
switch(range->type) {
case kMemoryRangeACPI:
memoryMap->Type = kEfiACPIReclaimMemory;
kMemoryMap->Type = kEfiACPIReclaimMemory;
break;
case kMemoryRangeNVS:
memoryMap->Type = kEfiACPIMemoryNVS;
kMemoryMap->Type = kEfiACPIMemoryNVS;
break;
case kMemoryRangeUsable:
memoryMap->Type = kEfiConventionalMemory;
kMemoryMap->Type = kEfiConventionalMemory;
break;
case kMemoryRangeReserved:
default:
memoryMap->Type = kEfiReservedMemoryType;
kMemoryMap->Type = kEfiReservedMemoryType;
break;
}
memoryMap->PhysicalStart = range->base;
memoryMap->VirtualStart = range->base;
memoryMap->NumberOfPages = range->length >> I386_PGSHIFT;
memoryMap->Attribute = 0;
kMemoryMap->PhysicalStart = range->base;
kMemoryMap->VirtualStart = range->base;
kMemoryMap->NumberOfPages = range->length >> I386_PGSHIFT;
kMemoryMap->Attribute = 0;
switch (memoryMap->Type) {
switch (kMemoryMap->Type) {
case kEfiLoaderCode:
case kEfiLoaderData:
case kEfiBootServicesCode:
/*
* Consolidate usable memory types into one.
*/
sane_size += (uint64_t)(memoryMap->NumberOfPages << I386_PGSHIFT);
sane_size += (uint64_t)(kMemoryMap->NumberOfPages << I386_PGSHIFT);
break;
case kEfiRuntimeServicesCode:
* in the system, not just the amount that is available for
* the OS to use
*/
sane_size += (uint64_t)(memoryMap->NumberOfPages << I386_PGSHIFT);
sane_size += (uint64_t)(kMemoryMap->NumberOfPages << I386_PGSHIFT);
break;
default:
break;
branches/cparm/i386/libsaio/bootstruct.h
113113
114114
115115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132116
117
118
133119
134120
135121
......
137123
138124
139125
140
126
141127
142
143
144128
145129
146130
to the kernel and are thus located in bootArgs although with different field names.
*/
typedef struct PrivateBootInfo {
int convmem; // conventional memory
int extmem; // extended memory
#if 0
int numBootDrivers; // number of drivers loaded
#endif
char bootFile[128]; // kernel file name
unsigned long memoryMapCount;
MemoryRange memoryMap[kMemoryMapCountMax];
#if 0
PCI_bus_info_t pciInfo;
driver_config_t driverConfig[NDRIVERS];
char * configEnd; // pointer to end of config files
char config[CONFIG_SIZE];
#endif
char bootFile[128]; // kernel file name
config_file_t bootConfig; // the booter boot.plist
config_file_t overrideConfig; // additional boot.plist which can override bootConfig keys
config_file_t smbiosConfig; // smbios.plist
config_file_t helperConfig; // boot helper partition's boot.plist
config_file_t helperConfig; // boot helper partition's boot.plist
unsigned long adler32;
char uuidStr[64+1];//boot device uuid
} PrivateBootInfo_t;
branches/cparm/i386/libsaio/platform.h
112112
113113
114114
115
115116
116117
117118
#define envCPUFreq "CPUFreq"
#define envIsServer "isServer"
#define envAdler32"adler32"
#define envCurrCoef "CurrCoef"
#define envCurrDiv "CurrDiv"
branches/cparm/i386/libsaio/acpi_tools.c
2525
2626
2727
28
28
29
2930
3031
3132
......
8889
8990
9091
91
92
9293
9394
9495
......
129130
130131
131132
132
133
133134
134135
135136
......
137138
138139
139140
140
141
141142
142143
143144
......
191192
192193
193194
194
195195
196196
197197
198198
199
200199
201
200
201
202
202203
203204
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
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
219235
220
221
222
223
224
225
226
227
228
229
230
231236
232237
233
234238
235
236239
237240
238241
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#include "libsaio.h"
#include "bootstruct.h"
#include "datatype.h"
#include "intel_acpi.h"
#include "ppm.h"
// Init memory address as F000 segment and scan 64KB region
if (!success)
success = GetRsdtPointer((void *)0x0F0000, 0x10000, acpi_tables);
if (!success)
return (0ul);
if (*(U32*) (FacsPointer64->Signature) == NAMESEG("FACS"))
acpi_tables->FacsPointer64 = (ACPI_TABLE_FACS *) FacsPointer64;
}
// Find the MADT table which is one of the table pointers in the RSDT
acpi_tables->MadtPointer = (ACPI_TABLE_MADT *) GetTablePtr(acpi_tables->RsdtPointer, NAMESEG("APIC"));
if (acpi_tables->MadtPointer == 0ul)
// Find the MADT(64) table which is one of the table pointers in the XSDT
acpi_tables->MadtPointer64 = (ACPI_TABLE_MADT *) GetTablePtr64(acpi_tables->XsdtPointer, NAMESEG("APIC"));
return (1ul);
}
// Procedure: GetTablePtr64 - Find ACPI table in XSDT with input signature.
//
//-------------------------------------------------------------------------------
#if 0
static ACPI_TABLE_HEADER *GetTablePtr64(ACPI_TABLE_XSDT * xsdt, U32 signature)
{
U32 index;
U32 num_tables;
ACPI_TABLE_HEADER *table = (ACPI_TABLE_HEADER *) xsdt->TableOffsetEntry;
// Compute number of table pointers included in XSDT
int method;
// Compute number of table pointers included in XSDT
num_tables = get_num_tables64(xsdt);
for (index = 0; index < num_tables; index++) {
if (((U32) (table->Signature) == signature) &&
(GetChecksum(table, table->Length) == 0)) {
return (table);
}
// Move array pointer to next 64-bit pointer
table = (ACPI_TABLE_HEADER *) ((U32) table + sizeof(U64));
}
return (0);
}
#else
static ACPI_TABLE_HEADER *GetTablePtr64(ACPI_TABLE_XSDT * xsdt, U32 signature)
{
U32 index;
U32 num_tables;
getIntForKey(kAcpiMethod, &method, DEFAULT_BOOT_CONFIG);
switch (method) {
case 0x2000:
{
for (index = 0; index < num_tables; index++) {
U64 ptr = xsdt->TableOffsetEntry[index];
if ((*(U32 *) ((ACPI_TABLE_HEADER *) (unsigned long)ptr)->Signature == signature) &&
(GetChecksum(((ACPI_TABLE_HEADER *) (unsigned long)ptr), ((ACPI_TABLE_HEADER *) (unsigned long)ptr)->Length) == 0)) {
return (((ACPI_TABLE_HEADER *) (unsigned long)ptr));
}
}
break;
}
case 0x1000:
default:
{
ACPI_TABLE_HEADER *table = (ACPI_TABLE_HEADER *) xsdt->TableOffsetEntry;
for (index = 0; index < num_tables; index++) {
if (((U32) (table->Signature) == signature) &&
(GetChecksum(table, table->Length) == 0)) {
return (table);
}
// Move array pointer to next 64-bit pointer
table = (ACPI_TABLE_HEADER *) ((U32) table + sizeof(U64));
}
break;
}
}
// Compute number of table pointers included in XSDT
num_tables = get_num_tables64(xsdt);
for (index = 0; index < num_tables; index++) {
U64 ptr = xsdt->TableOffsetEntry[index];
if ((*(U32 *) ((ACPI_TABLE_HEADER *) (unsigned long)ptr)->Signature == signature) &&
(GetChecksum(((ACPI_TABLE_HEADER *) (unsigned long)ptr), ((ACPI_TABLE_HEADER *) (unsigned long)ptr)->Length) == 0)) {
return (((ACPI_TABLE_HEADER *) (unsigned long)ptr));
}
}
return (0);
}
#endif
//-------------------------------------------------------------------------------
//
// Procedure: GetChecksum - Performs byte checksum
branches/cparm/i386/libsaio/saio_types.h
7979
8080
8181
82
8283
8384
8485
#define kSystemType"SystemType"/* fake_efi.c */
#define kPCIRootUID"PCIRootUID"/* pci_root.c */
#define kDefaultPartition"Default Partition"/* sys.c */
#define kAcpiMethod"nacpi"// 0x2000 (= method 2) for some machines that may hang on acpi 2 (aka acpi 64 bit) detection (replace the old kUnsafeACPI "UnsafeACPI")
#define PLATFORM_NAME_LEN 64
#define ROOT_PATH_LEN 256
branches/cparm/i386/libsaio/fake_efi.c
448448
449449
450450
451
451452
452453
453454
......
509510
510511
511512
512
513
513514
514515
515516
......
547548
548549
549550
550
551
551552
552
553
553554
554555
555556
......
576577
577578
578579
579
580
580581
581582
582583
......
738739
739740
740741
741
742
742
743
744
745
746
747
748
749
750
751
743752
744753
745
754
746755
747
748
749
750
751
752
753
754
755
756
756757
757758
758759
759760
760761
761
762
762763
763
764
764
765
765766
766767
767768
......
837838
838839
839840
840
841
841842
842843
843844
......
10481049
10491050
10501051
1051
1052
1052
static uint64_t kFSBFrequency;
static uint32_tkHardware_signature;
static uint8_tkType;
static uint32_tkAdler32;
EFI_STATUS Register_Acpi_Efi(void* rsd_p, unsigned char rev )
{
}
ret = setupAcpiNoMod();
} while (0);
return ret;
{
if (!GetgPlatformName() && strcmp(key, "SMproductname") == 0)
readSMBIOS(thePlatformName);
const char*PlatformName = GetgPlatformName() ;
const char*src = (strcmp(key, "SMproductname") == 0) ? PlatformName : getStringForKey(key, DEFAULT_SMBIOS_CONFIG);
EFI_CHAR16* dst = 0;
static EFI_CHAR8 uuid[UUID_LEN];
int i, isZero, isOnes;
SMBByte*p;
p = (SMBByte*)(uint32_t)get_env(envUUID);
if ( p == NULL )
// additionally this value can be used by third-party apps or osx components (ex: pre-10.7 kextcache, ...)
if (bootInfo->uuidStr[0])
DT__AddProperty(chosenNode, kBootUUIDKey, strlen(bootInfo->uuidStr)+1, bootInfo->uuidStr);
if (GetgRootDevice())
if (GetgRootDevice())
{
DT__AddProperty(chosenNode, "boot-device-path", strlen(GetgRootDevice())+1, GetgRootDevice());
}
#ifdef rootpath
else
if (gRootPath[0])
{
DT__AddProperty(chosenNode, "boot-device-path", strlen(GetgRootDevice())+1, GetgRootDevice());
DT__AddProperty(chosenNode, "rootpath", strlen(gRootPath)+1, gRootPath);
}
#ifdef rootpath
else
if (gRootPath[0])
{
DT__AddProperty(chosenNode, "rootpath", strlen(gRootPath)+1, gRootPath);
}
}
#endif
// "boot-file" is not used by kextcache if there is no "boot-device-path" or if there is a valid "rootpath" ,
// but i let it by default since it may be used by another service
DT__AddProperty(chosenNode, "boot-file", strlen(bootInfo->bootFile)+1, (EFI_CHAR16*)bootInfo->bootFile);
DT__AddProperty(chosenNode, "boot-file", strlen(bootInfo->bootFile)+1, (EFI_CHAR16*)bootInfo->bootFile);
if (bootInfo->adler32)
DT__AddProperty(chosenNode, "boot-kernelcache-adler32", sizeof(unsigned long), &bootInfo->adler32);
if ((kAdler32 = (uint32_t)get_env(envAdler32)))
DT__AddProperty(chosenNode, "boot-kernelcache-adler32", sizeof(unsigned long), &kAdler32);
}
}
// NOTE WELL: If you do add FSB Frequency detection, make sure to store
// the value in the fsbFrequency global and not an malloc'd pointer
// because the DT_AddProperty function does not copy its args.
kFSBFrequency = get_env(envFSBFreq);
if (kFSBFrequency != 0)
DT__AddProperty(efiPlatformNode, FSB_Frequency_prop, sizeof(uint64_t), &kFSBFrequency);
// Add configuration table entries to both the services table and the device tree
setupEfiConfigurationTable();
}
}
branches/cparm/i386/libsaio/saio_internal.h
9292
9393
9494
95
9695
96
9797
9898
9999
extern void reserveKern108BootStruct(void);
extern void setBootArgsVideoMode(int mode);
extern void setBootArgsVideoStruct(Boot_Video*Video);
extern uint32_t getBootArgsVideoPtrAtOffset(uint32_t offset);
extern uint32_t getVideoMode(void);
extern boot_args_common * getBootArgs(void);
/* cache.c */
branches/cparm/i386/boot2/boot.c
695695
696696
697697
698
698
699699
700700
701701
......
711711
712712
713713
714
714
715715
716716
717717
......
721721
722722
723723
724
724
725725
726726
727727
......
733733
734734
735735
736
736
737737
738738
739739
......
767767
768768
769769
770
770
771771
772772
773773
......
878878
879879
880880
881
881882
882883
883884
......
949950
950951
951952
952
953
954
953955
954956
955957
......
960962
961963
962964
963
964
965
966
967
968
969
970
965971
966972
967
973
968974
969975
970976
971
972
977
978
973979
974980
975981
if ((ret != 0) || ((flags & kFileTypeMask) != kFileTypeFlat))
{
trycache = 0;
bootInfo->adler32 = 0;
safe_set_env(envAdler32, 0);
DBG("No kernel found, kernelcache disabled !!!\n");
break;
}
|| (cachetime < kerneltime))
{
trycache = 0;
bootInfo->adler32 = 0;
safe_set_env(envAdler32, 0);
DBG("Warning: No kernelcache found or kernelcache too old (timestamp of the kernel > timestamp of the cache), kernelcache disabled !!!\n");
break;
&& (cachetime < exttime))
{
trycache = 0;
bootInfo->adler32 = 0;
safe_set_env(envAdler32, 0);
DBG("Warning: kernelcache too old, timestamp of S/L/E > timestamp of the cache, kernelcache disabled !!! \n");
break;
if (cachetime != (exttime + 1))
{
trycache = 0;
bootInfo->adler32 = 0;
safe_set_env(envAdler32, 0);
DBG("Warning: invalid timestamp, kernelcache disabled !!!\n");
break;
}
}
bootInfo->adler32 = 0;
safe_set_env(envAdler32, 0);
bootFile = bootInfo->bootFile;
#ifdef BOOT_HELPER_SUPPORT
{
const char *val;
int len;
unsigned long Adler32 = 0;
if (getValueForKey(kKernelCacheKey, &val, &len, DEFAULT_BOOT_CONFIG))
{
SetgRootPath(platformInfo->rootPath);
#endif
bootInfo->adler32 = OSSwapHostToBigInt32(adler32((unsigned char *)platformInfo, sizeof(*platformInfo)));
Adler32 = OSSwapHostToBigInt32(adler32((unsigned char *)platformInfo, sizeof(*platformInfo)));
safe_set_env(envAdler32, Adler32);
free(platformInfo);
}
{
long flags, cachetime;
int ret = -1;
sprintf(gBootKernelCacheFile, "%s.%08lX", "/System/Library/Caches/com.apple.kernelcaches/kernelcache",bootInfo->adler32);
ret = GetFileInfo(NULL, gBootKernelCacheFile, &flags, &cachetime);
if (Adler32) {
sprintf(gBootKernelCacheFile, "%s.%08lX", "/System/Library/Caches/com.apple.kernelcaches/kernelcache",Adler32);
ret = GetFileInfo(NULL, gBootKernelCacheFile, &flags, &cachetime);
}
if ((ret != 0) || ((flags & kFileTypeMask) != kFileTypeFlat))
{
bootInfo->adler32 = 0;
safe_set_env(envAdler32, 0);
sprintf(gBootKernelCacheFile, "%s", "/System/Library/Caches/com.apple.kernelcaches/kernelcache");
}
} else
sprintf(gBootKernelCacheFile, "%s_%s.%08lX", kDefaultCachePath, (archCpuType == CPU_TYPE_I386) ? "i386" : "x86_64", bootInfo->adler32); //Snow Leopard
} else if (Adler32)
sprintf(gBootKernelCacheFile, "%s_%s.%08lX", kDefaultCachePath, (archCpuType == CPU_TYPE_I386) ? "i386" : "x86_64", Adler32); //Snow Leopard
}
}
branches/cparm/i386/boot2/drivers.c
818818
819819
820820
821
821
822822
823823
824824
}
char* BootKernelCacheFile = (char*)(uint32_t)get_env(envkCache);
if (((get_env(envgBootMode) & kBootModeSafe) == 0) && (BootKernelCacheFile[0] != '\0') && gBootVolume->OSVersion[3] > '6')
bootInfo->adler32 = kernel_header->adler32;
safe_set_env(envAdler32, kernel_header->adler32);
}
{
branches/cparm/i386/boot2/options.c
127127
128128
129129
130
130
131131
132132
133133
134
134
135135
136136
137137
......
139139
140140
141141
142
142
143143
144144
145145
......
155155
156156
157157
158
158
159159
160160
161161
......
173173
174174
175175
176
176
177177
178178
179179
......
192192
193193
194194
195
195
196196
197197
198198
......
343343
344344
345345
346
346
347347
348348
349349
......
397397
398398
399399
400
400
401401
402402
403403
404404
405
405
406406
407407
408408
......
434434
435435
436436
437
437
438438
439439
440440
......
442442
443443
444444
445
445
446446
447447
448448
......
496496
497497
498498
499
499
500500
501501
502502
......
505505
506506
507507
508
508
509
510
509511
510512
511513
......
529531
530532
531533
532
534
533535
534536
535537
536538
537539
538
540
541
542
539543
540544
541545
......
582586
583587
584588
585
589
586590
587591
588592
......
623627
624628
625629
626
630
627631
628632
629633
......
631635
632636
633637
634
638
635639
636640
637641
......
646650
647651
648652
649
653
650654
651655
652656
......
664668
665669
666670
667
671
668672
669673
670674
......
713717
714718
715719
716
720
717721
718722
719723
......
753757
754758
755759
756
760
757761
758762
759763
......
921925
922926
923927
924
928
925929
926930
927931
......
969973
970974
971975
972
976
973977
974978
975979
......
978982
979983
980984
981
985
982986
983987
984988
......
10441048
10451049
10461050
1047
1051
10481052
10491053
10501054
......
11181122
11191123
11201124
1121
1125
11221126
11231127
11241128
11251129
1126
1130
11271131
11281132
11291133
moveCursor( 0, row );
printf("%s",msg);
for ( time = time18(), timeout++; timeout > 0; )
{
if ((ch = readKeyboardStatus())){
*optionKey = ch;
*optionKey = ch;
break;
}
// Count can be interrupted by holding down shift,
if ( ( readKeyboardShiftFlags() & 0x0F ) != 0 )
{
ch = 1;
break;
}
#endif
}
}
flushKeyboardBuffer();
return ch;
{
gBootArgsPtr = gBootArgs;
memset(gBootArgs, '\0', BOOT_STRING_LEN);
}
void addBootArg(const char * argStr)
{
char * bootPrompt = (char*)(uint32_t)get_env(envBootPrompt);
char * bootRescanPrompt = (char*)(uint32_t)get_env(envBootRescanPrompt);
changeCursor( 0, row, kCursorTypeUnderline, 0 );
clearScreenRows( row, kScreenLastRow );
int MenuBottom = (int)get_env(envgMenuBottom);
int MenuStart = (int)get_env(envgMenuStart);
int MenuEnd = (int)get_env(envgMenuEnd);
union {
struct {
unsigned int
MenuStart--; MenuEnd--;
draw.f.selectionUp = 1;
}
if ( draw.f.selectionUp || draw.f.selectionDown )
{
CursorState cursorState;
// Set cursor at current position, and clear inverse video.
changeCursor( 0, MenuRow + MenuSelection - MenuTop, kCursorTypeHidden, &cursorState );
printMenuItem( &gMenuItems[MenuSelection], 0 );
*paramPtr = gMenuItems[MenuSelection].param;
moved = 1;
}
safe_set_env(envgMenuSelection,MenuSelection);
safe_set_env(envgMenuTop,MenuTop );
safe_set_env(envgMenuRow,MenuRow);
safe_set_env(envgMenuBottom,MenuBottom);
safe_set_env(envgMenuStart,MenuStart);
safe_set_env(envgMenuEnd,MenuEnd);
return moved;
}
{
int line;
unsigned long i;
MemoryRange *mp = bootInfo->memoryMap;
MemoryRange *mp = (MemoryRange*)(uint32_t)get_env(envMemoryMap);
// Activate and clear page 1
setActiveDisplayPage(1);
printf("BIOS reported memory ranges:\n");
line = 1;
for (i=0; i<bootInfo->memoryMapCount; i++) {
int memoryMapCount = (int)get_env(envMemoryMapCnt);
for (i=0; i<memoryMapCount; i++) {
printf("Base 0x%08x%08x, ",
(unsigned long)(mp->base >> 32),
(unsigned long)(mp->base));
char *getMemoryInfoString(void)
{
unsigned long i;
MemoryRange *mp = bootInfo->memoryMap;
MemoryRange *mp = (MemoryRange*)(uint32_t)get_env(envMemoryMap);
char *buff = malloc(sizeof(char)*1024);
if(!buff) return 0;
char info[] = "BIOS reported memory ranges:\n";
sprintf(buff, "%s", info);
for (i=0; i<bootInfo->memoryMapCount; i++) {
int memoryMapCount = (int)get_env(envMemoryMapCnt);
for (i=0; i<memoryMapCount; i++) {
sprintf( buff+strlen(buff), "Base 0x%08x%08x, ",
(unsigned long)(mp->base >> 32),
(unsigned long)(mp->base));
BVRef menuBVR;
bool showPrompt, newShowPrompt, isCDROM;
int optionKey;
// Initialize default menu selection entry.
gBootVolume = menuBVR = selectBootVolume(getBvChain());
if (timeout < 0) {
gBootMode |= kBootModeQuiet;
safe_set_env(envgBootMode,gBootMode);
}
// If the user is holding down a modifier key, enter safe mode.
gBootMode |= kBootModeSafe;
safe_set_env(envgBootMode,gBootMode);
}
// Checking user pressed keys
if (f8press) {
gBootMode &= ~kBootModeQuiet;
safe_set_env(envgBootMode,gBootMode);
timeout = 0;
}
// If user typed 'v' or 'V', boot in verbose mode.
// Display banner and show hardware info.
char * bootBanner = (char*)(uint32_t)get_env(envBootBanner);
printf(bootBanner, (bootInfo->convmem + bootInfo->extmem) / 1024);
printf(bootBanner, (int)(get_env(envConvMem) + get_env(envExtMem)) / 1024);
}
changeCursor(0, kMenuTopRow, kCursorTypeUnderline, 0);
msglog("Scanning device %x...", (uint32_t)get_env(envgBIOSDev));
do {
// Hit the option key ?
if (key == optionKey) {
if (key != 0x1C0D) {
gBootMode &= ~kBootModeQuiet;
safe_set_env(envgBootMode,gBootMode);
if (key == 0x1C0D) {
goto done;
}
else if (key == 0)
{
changeCursor(0, kMenuTopRow, kCursorTypeUnderline, 0);
}
safe_set_env(envShouldboot, false);
if (menuItems) {
free(menuItems);
menuItems = NULL;
bzero(gBootArgs,sizeof(gBootArgs));
strlcpy(gBootArgs, cp_cache,sizeof(gBootArgs));
}
const char * cp = gBootArgs;
const char * val = 0;
const char * kernel;
char * argP;
char * configKernelFlags;
int ArgCntRemaining;
skipblanks( &cp );
// Update the unit and partition number.
if (( kernel = extractKernelName((char **)&cp) )) {
strlcpy( bootInfo->bootFile, kernel, sizeof(bootInfo->bootFile) );
safe_set_env(envgOverrideKernel,true);
} else {
if ( getValueForKey( kKernelNameKey, &val, &cnt, DEFAULT_BOOT_CONFIG ) ) {
strlcpy( bootInfo->bootFile, val, sizeof(bootInfo->bootFile) );
long gBootMode = ( getValueForKey( kSafeModeFlag, &val, &cnt, DEFAULT_BOOT_CONFIG ) ) ?
kBootModeSafe : kBootModeNormal;
safe_set_env(envgBootMode,gBootMode);
if ( getValueForKey( kIgnoreCachesFlag, &val, &cnt, DEFAULT_BOOT_CONFIG ) ) {
gBootMode = kBootModeSafe;
safe_set_env(envgBootMode,gBootMode);
}
}
branches/cparm/i386/modules/GUI/gui.c
128128
129129
130130
131
131
132132
133133
134134
......
25662566
25672567
25682568
2569
2569
25702570
25712571
25722572
......
26542654
26552655
26562656
2657
2657
26582658
26592659
26602660
......
27052705
27062706
27072707
2708
2708
27092709
27102710
27112711
27122712
27132713
27142714
2715
2715
27162716
27172717
27182718
#define MAX(x, y) ((x) > (y) ? (x) : (y))
#endif
#define VIDEO(x) (bootArgs->Video.v_ ## x)
#define VIDEO(x) (((boot_args_common*)getBootArgs())->Video.v_ ## x)
#define vram VIDEO(baseAddr)
getGraphicModeParams(screen_params);
// Set graphics mode if the booter was in text mode or the screen resolution has changed.
if (bootArgs->Video.v_display == VGA_TEXT_MODE
if (getVideoMode() == VGA_TEXT_MODE
|| (screen_params[0] != (uint32_t)oldScreenWidth && screen_params[1] != (uint32_t)oldScreenHeight) )
{
#if UNUSED
flushKeyboardBuffer();
if( bootArgs->Video.v_display == VGA_TEXT_MODE )
if( getVideoMode() == VGA_TEXT_MODE )
{
moveCursor( 0, row );
printf(msg);
time += 18;
timeout--;
if( bootArgs->Video.v_display == VGA_TEXT_MODE )
if( getVideoMode() == VGA_TEXT_MODE )
{
moveCursor( col, row );
printf("(%d) ", timeout);
}
}
if( bootArgs->Video.v_display == GRAPHICS_MODE )
if( getVideoMode() == GRAPHICS_MODE )
{
drawProgressBar( gui.screen.pixmap, 100, gui.progressbar.pos , ( multi * 100 / multi_buff ) );
gui.redraw = true;
branches/cparm/i386/modules/GUI/GUI_module.c
196196
197197
198198
199
199
200200
201201
202202
......
307307
308308
309309
310
310
311311
312312
313313
......
450450
451451
452452
453
453
454454
455455
456456
......
474474
475475
476476
477
477
478478
479479
480480
......
540540
541541
542542
543
543
544544
545545
546546
......
585585
586586
587587
588
588
589589
590590
591591
......
602602
603603
604604
605
605
606606
607607
608608
......
622622
623623
624624
625
625
626626
627627
628628
......
632632
633633
634634
635
635
636636
637637
638638
......
646646
647647
648648
649
649
650650
651651
652652
......
662662
663663
664664
665
665
666666
667667
668668
......
706706
707707
708708
709
709
710710
711711
712712
......
786786
787787
788788
789
789
790790
791791
792792
......
794794
795795
796796
797
797
798798
799799
800800
......
935935
936936
937937
938
938
939939
940940
941941
......
953953
954954
955955
956
956
957
957958
958959
959960
......
972973
973974
974975
975
976
976977
977978
978979
......
985986
986987
987988
988
989
989990
990991
991992
......
10291030
10301031
10311032
1032
1033
10331034
10341035
10351036
......
10401041
10411042
10421043
1043
1044
10441045
10451046
10461047
......
11151116
11161117
11171118
1118
1119
11191120
11201121
11211122
......
11281129
11291130
11301131
1131
1132
11321133
11331134
11341135
......
11691170
11701171
11711172
1172
1173
11731174
11741175
11751176
......
11921193
11931194
11941195
1195
1196
11961197
11971198
11981199
......
12131214
12141215
12151216
1216
1217
12171218
12181219
12191220
......
12481249
12491250
12501251
1251
1252
12521253
12531254
12541255
......
12811282
12821283
12831284
1284
1285
12851286
12861287
12871288
......
12981299
12991300
13001301
1301
1302
13021303
13031304
13041305
......
13071308
13081309
13091310
1310
1311
13111312
13121313
13131314
void GUI_PreBoot_hook(void* arg1, void* arg2, void* arg3, void* arg4, void* arg5, void* arg6)
{
// Turn off any GUI elements
if( bootArgs->Video.v_display == GRAPHICS_MODE )
if( getVideoMode() == GRAPHICS_MODE )
{
gui.devicelist.draw = false;
gui.bootprompt.draw = false;
if ( gMenuItems == NULL )
return 0;
if( bootArgs->Video.v_display == GRAPHICS_MODE )
if( getVideoMode() == GRAPHICS_MODE )
{
int res;
// Set cursor at current position, and clear inverse video.
if( bootArgs->Video.v_display == VGA_TEXT_MODE )
if( getVideoMode() == VGA_TEXT_MODE )
{
changeCursor( 0, (MenuRow + MenuSelection - MenuTop), kCursorTypeHidden, &cursorState );
printMenuItem( &gMenuItems[MenuSelection], 0 );
}
}
if( bootArgs->Video.v_display == VGA_TEXT_MODE )
if( getVideoMode() == VGA_TEXT_MODE )
{
moveCursor( 0, MenuRow + MenuSelection - MenuTop );
printMenuItem( &gMenuItems[MenuSelection], 1 );
// Draw the visible items.
if( bootArgs->Video.v_display == GRAPHICS_MODE )
if( getVideoMode() == GRAPHICS_MODE )
{
drawDeviceList(MenuStart, MenuEnd, MenuSelection, menuItems);
}
}
if (x)
x--;
if( bootArgs->Video.v_display == VGA_TEXT_MODE )
if( getVideoMode() == VGA_TEXT_MODE )
{
setCursorPosition( x, y, 0 );
putca(' ', 0x07, 1);
default:
if ( key >= ' ' && gBootArgsPtr < gBootArgsEnd)
{
if( bootArgs->Video.v_display == VGA_TEXT_MODE )
if( getVideoMode() == VGA_TEXT_MODE )
{
putchar(key); // echo to screen
}
{
char * bootPrompt = (char*)(uint32_t)get_env(envBootPrompt);
if( bootArgs->Video.v_display == VGA_TEXT_MODE )
if( getVideoMode() == VGA_TEXT_MODE )
{
changeCursor( 0, row, kCursorTypeUnderline, 0 );
clearScreenRows( row, kScreenLastRow );
if (visible)
{
if (bootArgs->Video.v_display == VGA_TEXT_MODE)
if (getVideoMode() == VGA_TEXT_MODE)
{
if (get_env(envgEnableCDROMRescan))
{
}
else
{
if (bootArgs->Video.v_display == GRAPHICS_MODE)
if (getVideoMode() == GRAPHICS_MODE)
{
clearGraphicBootPrompt();
}
gBootArgsPtr = gBootArgs;
memset(gBootArgs, '\0', BOOT_STRING_LEN);
if (bootArgs->Video.v_display == GRAPHICS_MODE)
if (getVideoMode() == GRAPHICS_MODE)
{
clearGraphicBootPrompt();
}
}
// ensure we're in graphics mode if gui is setup
if (gui.initialised && bootArgs->Video.v_display == VGA_TEXT_MODE)
if (gui.initialised && (getVideoMode() == VGA_TEXT_MODE))
{
#if UNUSED
setVideoMode(GRAPHICS_MODE, 0);
GUI_addBootArg(kSingleUserModeFlag);
}
if (bootArgs->Video.v_display == VGA_TEXT_MODE)
if (getVideoMode() == VGA_TEXT_MODE)
{
setCursorPosition(0, 0, 0);
clearScreenRows(0, kScreenLastRow);
{
char * bootBanner = (char*)(uint32_t)get_env(envBootBanner);
// Display banner and show hardware info.
printf(bootBanner, (bootInfo->convmem + bootInfo->extmem) / 1024);
printf(bootBanner, (int)(get_env(envConvMem) + get_env(envExtMem)) / 1024);
printf(getVBEInfoString());
}
changeCursor(0, kMenuTopRow, kCursorTypeUnderline, 0);
}
}
if (bootArgs->Video.v_display == GRAPHICS_MODE)
if (getVideoMode() == GRAPHICS_MODE)
{
// redraw the background buffer
gui.logo.draw = true;
char * bootBanner = (char*)(uint32_t)get_env(envBootBanner);
// Display banner and show hardware info.
gprintf(&gui.screen, bootBanner + 1, (bootInfo->convmem + bootInfo->extmem) / 1024);
gprintf(&gui.screen, bootBanner + 1, (int)(get_env(envConvMem) + get_env(envExtMem)) / 1024);
}
// redraw background
if (devcnt)
{
if( bootArgs->Video.v_display == VGA_TEXT_MODE )
if( getVideoMode() == VGA_TEXT_MODE )
{
printf("Use \30\31 keys to select the startup volume.");
}
GUI_showBootPrompt( nextRow, showPrompt );
do {
if (bootArgs->Video.v_display == GRAPHICS_MODE)
if (getVideoMode() == GRAPHICS_MODE)
{
// redraw background
memcpy( gui.backbuffer->pixels, gui.screen.pixmap->pixels, gui.backbuffer->width * gui.backbuffer->height * 4 );
*/
if (strcmp( booterCommand, "video" ) == 0)
{
if (bootArgs->Video.v_display == GRAPHICS_MODE)
if (getVideoMode() == GRAPHICS_MODE)
{
showInfoBox(getVBEInfoString(), getVBEModeInfoString());
}
}
else if ( strcmp( booterCommand, "memory" ) == 0)
{
if (bootArgs->Video.v_display == GRAPHICS_MODE )
if (getVideoMode() == GRAPHICS_MODE )
{
showInfoBox("Memory Map", getMemoryInfoString());
}
// Only Permitted if started in graphics interface
if (useGUI)
{
if (bootArgs->Video.v_display == GRAPHICS_MODE)
if (getVideoMode() == GRAPHICS_MODE)
{
#if UNUSED
setVideoMode(VGA_TEXT_MODE, 0);
char * bootBanner = (char*)(uint32_t)get_env(envBootBanner);
// Display banner and show hardware info.
printf(bootBanner, (bootInfo->convmem + bootInfo->extmem) / 1024);
printf(bootBanner, (int)(get_env(envConvMem) + get_env(envExtMem)) / 1024);
printf(getVBEInfoString());
clearScreenRows(kMenuTopRow, kMenuTopRow + 2);
} while (0 == key);
done:
if (bootArgs->Video.v_display == VGA_TEXT_MODE)
if (getVideoMode() == VGA_TEXT_MODE)
{
clearScreenRows(kMenuTopRow, kScreenLastRow);
changeCursor(0, kMenuTopRow, kCursorTypeUnderline, 0);
gErrors = true;
va_start(ap, fmt);
if (bootArgs->Video.v_display == VGA_TEXT_MODE)
if (getVideoMode() == VGA_TEXT_MODE)
{
prf(fmt, ap, putchar, 0);
}
if (gVerboseMode && (KernelStart == false))
{
if (bootArgs->Video.v_display == VGA_TEXT_MODE)
if (getVideoMode() == VGA_TEXT_MODE)
{
prf(fmt, ap, putchar, 0);
}
if (KernelStart == false) {
if (bootArgs->Video.v_display == VGA_TEXT_MODE)
if (getVideoMode() == VGA_TEXT_MODE)
{
prf(fmt, ap, putchar, 0);
}
printf("\n");
va_start(ap, fmt);
if (bootArgs->Video.v_display == VGA_TEXT_MODE)
if (getVideoMode() == VGA_TEXT_MODE)
{
prf(fmt, ap, putchar, 0);
}
void GUI_showHelp(void)
{
if (bootArgs->Video.v_display == GRAPHICS_MODE) {
if (getVideoMode() == GRAPHICS_MODE) {
showInfoBox("Help. Press q to quit.\n", (char *)BootHelp_txt);
} else {
showTextBuffer((char *)BootHelp_txt, BootHelp_txt_len);
void GUI_showMessage(char *message)
{
if (bootArgs->Video.v_display == GRAPHICS_MODE) {
if (getVideoMode() == GRAPHICS_MODE) {
showInfoBox("Help. Press q to quit.\n", message);
} else {
showTextBuffer(message, strlen(message));
branches/cparm/i386/modules/GUI/graphic_utils.c
1010
1111
1212
13
13
1414
1515
1616
......
640640
641641
642642
643
644
645
646
647
648
643
644
645
646
647
648
649
650
651
652
653
649654
650655
651656
......
808813
809814
810815
811
816
817
812818
813
814
815
816
817
819
820
821
822
823
824
825
826
827
818828
819829
820830
#include "vbe.h"
#include "gui.h"
#define VIDEO(x) (bootArgs->Video.v_ ## x)
#define VIDEO(x) (((boot_args_common*)getBootArgs())->Video.v_ ## x)
#define MIN(x, y) ((x) < (y) ? (x) : (y))
static unsigned long lookUpCLUTIndex( unsigned char index,
// Update KernBootStruct using info provided by the selected
// VESA mode.
bootArgs->Video.v_display = VGA_TEXT_MODE;
bootArgs->Video.v_baseAddr = 0xb8000;
bootArgs->Video.v_width = minfo.XResolution;
bootArgs->Video.v_height = minfo.YResolution;
bootArgs->Video.v_depth = 8;
bootArgs->Video.v_rowBytes = 0x8000;
Boot_VideoVideo;/* Video Information */
Video.v_display = VGA_TEXT_MODE;
Video.v_width = 0xb8000;
Video.v_height = minfo.XResolution;
Video.v_depth = minfo.YResolution;
Video.v_rowBytes = 8;
Video.v_baseAddr = 0x8000;
setBootArgsVideoStruct(&Video);
return errSuccess; // always return success
}
// Update KernBootStruct using info provided by the selected
// VESA mode.
setBootArgsVideoMode(GRAPHICS_MODE);
Boot_VideoVideo;/* Video Information */
bootArgs->Video.v_width = minfo.XResolution;
bootArgs->Video.v_height = minfo.YResolution;
bootArgs->Video.v_depth = minfo.BitsPerPixel;
bootArgs->Video.v_rowBytes = minfo.BytesPerScanline;
bootArgs->Video.v_baseAddr = VBEMakeUInt32(minfo.PhysBasePtr);
Video.v_display = GRAPHICS_MODE;
Video.v_width = minfo.XResolution;
Video.v_height = minfo.YResolution;
Video.v_depth = minfo.BitsPerPixel;
Video.v_rowBytes = minfo.BytesPerScanline;
Video.v_baseAddr = VBEMakeUInt32(minfo.PhysBasePtr);
setBootArgsVideoStruct(&Video);
}
while ( 0 );
branches/cparm/i386/modules/HibernateEnabler/graphic_utils.c
1717
1818
1919
20
20
2121
2222
2323
((size_t) ( (char *)&((st *)(0))->m - (char *)0 ))
#endif
#define VIDEO(x) (getBootArgsVideoPtrAtOffset(offsetof(Boot_Video,v_##x)))
#define VIDEO(x) (((boot_args_common*)getBootArgs())->Video.v_ ## x)
#define MIN(x, y) ((x) < (y) ? (x) : (y))
branches/cparm/i386/modules/ACPICodec/acpi_codec.h
4747
4848
4949
50
50
5151
5252
5353
#define kCoreTurbo"EnableTurbo"/* acpi_codec.c */
#define kUpdateACPI"UpdateACPI" /* acpi_codec.c */
#define kUnsafeACPI"UnsafeACPI"/* acpi_codec.c */ //desactive some safe checks that may stop the boot process on some configurations( temporary option )
//#define kUnsafeACPI"UnsafeACPI"/* acpi_codec.c */ // DEPRECATED, replaced by nacpi=0x2000
#define kOnlySignedAml"LoadSignedAmlOnly" /* acpi_codec.c */
branches/cparm/i386/modules/ACPICodec/acpi_codec.c
367367
368368
369369
370
371
370
371
372372
373
373
374
374375
375376
376377
......
473474
474475
475476
476
477
478
479
477
478
479
480
481
480482
481483
482484
......
14241426
14251427
14261428
1427
1429
14281430
14291431
14301432
......
42964298
42974299
42984300
4299
4300
4301
4302
43014303
4302
4304
4305
43034306
43044307
43054308
......
43144317
43154318
43164319
4317
4320
43184321
43194322
43204323
......
44634466
44644467
44654468
4466
4469
44674470
4468
4469
4471
4472
44704473
4471
4474
4475
44724476
44734477
44744478
......
46184622
46194623
46204624
4621
4625
46224626
46234627
46244628
print_nameseg(*(U32 *) ((ACPI_TABLE_HEADER *) (unsigned long)ptr)->Signature);
printf("\n");
#endif
bool unsafe = false;
getBoolForKey(kUnsafeACPI, &unsafe, DEFAULT_BOOT_CONFIG);
int method = 0;
getIntForKey(kAcpiMethod, &method, DEFAULT_BOOT_CONFIG);
if (!unsafe)
if (method != 0x2000)
{
if (GetChecksum(((ACPI_TABLE_HEADER *) (unsigned long)ptr),
((ACPI_TABLE_HEADER *) (unsigned long)ptr)->Length) != 0)
print_nameseg(*(U32*) (table_array[index]->Signature));
printf("\n");
#endif
bool unsafe = false;
getBoolForKey(kUnsafeACPI, &unsafe, DEFAULT_BOOT_CONFIG);
if (!unsafe)
int method = 0;
getIntForKey(kAcpiMethod, &method, DEFAULT_BOOT_CONFIG);
if (method != 0x2000)
{
if (GetChecksum(table_array[index], table_array[index]->Length) != 0)
{
maximum.Control = rdmsr64(MSR_IA32_PERF_STATUS) & 0xff; // Seems it always contains maximum multiplier value (with turbo, that's we need)...
minimum.Control = (rdmsr64(MSR_PLATFORM_INFO) >> 40) & 0xff;
verbose("P-States: min 0x%x, max 0x%x\n", minimum.Control, maximum.Control);
DBG("P-States: min 0x%x, max 0x%x\n", minimum.Control, maximum.Control);
// Sanity check
if (maximum.Control < minimum.Control)
continue;
}
bool unsafe = false;
getBoolForKey(kUnsafeACPI, &unsafe, DEFAULT_BOOT_CONFIG);
int method = 0;
getIntForKey(kAcpiMethod, &method, DEFAULT_BOOT_CONFIG);
if (!unsafe)
if (method != 0x2000)
{
if (GetChecksum(((ACPI_TABLE_HEADER *) (unsigned long)ptr),
((ACPI_TABLE_HEADER *) (unsigned long)ptr)->Length) != 0)
}
xsdt_mod->TableOffsetEntry[index-dropoffset]=ptr;
char * tableSig = newStringWithLength((char*)((U32)ptr), 4);
DBG("** Processing %s,", tableSig );
for (index = 0; index < num_tables; index++)
{
{
{
bool unsafe = false;
getBoolForKey(kUnsafeACPI, &unsafe, DEFAULT_BOOT_CONFIG);
int method = 0;
getIntForKey(kAcpiMethod, &method, DEFAULT_BOOT_CONFIG);
if (!unsafe)
if (method != 0x2000)
{
if (GetChecksum(table_array[index], table_array[index]->Length) != 0)
{
bool gen_ssdt=false; // will force to generate ssdt even if gen_csta and gen_psta = false
bool gen_tsta=false;
bool oem_dsdt=false, oem_fadt=false;
// Find original rsdp
if (!FindAcpiTables(&acpi_tables))
{
branches/cparm/i386/util/amlsgn.m
138138
139139
140140
141
141
142142
143143
144144
......
151151
152152
153153
154
155
156
154
157155
158156
159157
160
161158
162
163
164
165
166
159
160
167161
168162
169163
......
173167
174168
175169
176
177170
178171
179172
180
181
173
174
182175
183176
184
185
186
187
188
189
190
191
192
193
194
195
177
178
179
180
181
182
183
184
185
186
187
196188
197
189
190
191
192
193
194
198195
196
197
198
199
200
199201
200202
201203
202204
203
205
204206
205207
206208
207209
208210
209
211
210212
211213
212214
......
215217
216218
217219
218
220
219221
220222
221223
......
231233
232234
233235
234
236
235237
236
238
239
240
241
242
243
237244
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258245
259246
260247
261248
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
249
250
251
252
253
254
255
256
257
277258
278259
279
280
281260
282261
283262
284263
285264
286
287
265
266
288267
289
268
290269
291270
292271
......
302281
303282
304283
305
284
306285
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
286
287
288
289
290
291
292
293
330294
331295
332296
333297
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
298
299
300
301
302
303
304
350305
351
352
353306
354
307
355308
356309
357
358
310
311
359312
360
313
314
315
316
317
318
319
320
321
322
323
324
325
361326
362327
363328
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
mach_port_t masterPort;
io_registry_entry_t entry,entry2;
const UInt8* rawdata = NULL;
UInt32 uuid32 = 0;
UInt32 Model32 = 0;
const char *cfilename ;
unsigned long uuid32 = 0,Model32 = 0 ;
NSString *filename, *fullfilename ;
NSArray *namechunks;
NSMutableArray *chunks;
char * input, *output, dirspec[512];
NSString *outStr, *inStr;
if (argc > 3 || argc < 2) {
printf("Usage: amlsgn input(as a file) output(as a directory)\n");
return 1;
} else if (argc == 2) {
if (argc == 2) {
/* Creating output string */
inStr = [NSString stringWithUTF8String:argv[1]];
fullfilename = [chunks lastObject];
namechunks = [fullfilename componentsSeparatedByString: @"."];
filename = [namechunks objectAtIndex:0];
cfilename = [filename UTF8String];
[chunks removeLastObject];
outStr = [chunks componentsJoinedByString: @"/"];
} else {
} else if (argc == 3 ){
inStr = [NSString stringWithUTF8String:argv[1]];
BOOL isDirectory= FALSE;
if ([[NSFileManager defaultManager] fileExistsAtPath:outStr isDirectory:&isDirectory]) {
if (isDirectory == FALSE) {
chunks = [[NSMutableArray alloc] init];
[chunks addObjectsFromArray:[inStr componentsSeparatedByString: @"/"]];
[chunks removeLastObject];
outStr = [chunks componentsJoinedByString: @"/"];
} else {
outStr = [NSString stringWithUTF8String:argv[2]];
}
chunks = [[NSMutableArray alloc] init];
[chunks addObjectsFromArray:[inStr componentsSeparatedByString: @"/"]];
fullfilename = [chunks lastObject];
namechunks = [fullfilename componentsSeparatedByString: @"."];
filename = [namechunks objectAtIndex:0];
if ([[NSFileManager defaultManager] fileExistsAtPath:[NSString stringWithUTF8String:argv[2]] isDirectory:&isDirectory] && isDirectory) {
outStr = [NSString stringWithUTF8String:argv[2]];
}
else
{
[chunks removeLastObject];
outStr = [chunks componentsJoinedByString: @"/"];
}
}
else
{
printf("Usage: amlsgn input(as a file) output(as a directory)\n");
goto out;
}
do {
BOOL isDirectory= FALSE;
if ([[NSFileManager defaultManager] fileExistsAtPath:outStr isDirectory:&isDirectory] && isDirectory) {
if ([[NSFileManager defaultManager] isWritableFileAtPath:outStr])
break;
}
outStr = [NSHomeDirectory() stringByAppendingPathComponent: @"Desktop"];
} while (0);
if (err == KERN_SUCCESS){
entry2=IORegistryEntryFromPath(masterPort, [@"IODeviceTree:/efi" UTF8String]);
if (entry2!=MACH_PORT_NULL) {
data = IORegistryEntrySearchCFProperty( entry2, kIOServicePlane, CFSTR("motherboard-name"), allocator, kIORegistryIterateRecursively);
{
Model32 = OSSwapHostToBigInt32(adler32( (unsigned char *) ModelStr, len ));
printf("uuid32 0x%lu uuidStr %s\n",(unsigned long)Model32,ModelStr);
printf("Model32 0x%lx ModelStr %s\n",Model32,ModelStr);
UInt8 mem[1024*1024];
NSMutableData * mem = [[NSMutableData alloc] initWithContentsOfFile : inStr ];
if (!mem) {
NSLog(@"Error while opening the file : %@ \n",inStr);
goto out;
}
ACPI_TABLE_HEADER * head = (ACPI_TABLE_HEADER *)[mem mutableBytes];
bzero(mem, sizeof(mem));
int fdIn = open([inStr UTF8String], O_RDONLY, 0666);
if (-1 == fdIn) {
printf("Error while opening the file \n");
return 1;
}
size_t nbRead = read(fdIn, (void*)mem, sizeof(mem));
if (nbRead <= 0) {
printf("Error: Unable to read the file\n");
close(fdIn);
return 1;
}
ACPI_TABLE_HEADER * head = (ACPI_TABLE_HEADER *)mem;
close(fdIn);
head->OemRevision = Model32;
SetChecksum(head);
{
char dir[1024];
sprintf(dir,"%s/%s.%s.aml",[outStr UTF8String],cfilename,ModelStr);
int fdOut = open(dir, O_WRONLY | O_CREAT, 0666);
if (-1 == fdOut) {
printf("Error: Can't save the file\n");
return 1;
}
write(fdOut, mem, head->Length);
close(fdOut);
}
if ([mem writeToFile : [NSString stringWithFormat:@"%@/%@.%@.aml",
outStr, filename, [NSString stringWithUTF8String:ModelStr]] atomically: YES] == NO) {
NSLog(@"Error: Can't save the file to %@\n",[NSString stringWithFormat:@"%@/%@.%@.aml",
outStr, filename, [NSString stringWithUTF8String:ModelStr]]);
}
[mem release];
}
IOObjectRelease(entry2);
goto out;
}
}
printf("No Model entry \n");
NSLog(@"No Model entry \n");
entry=IORegistryEntryFromPath(masterPort, [@"IODeviceTree:/efi/platform" UTF8String]);
if (entry!=MACH_PORT_NULL){
{
uuid32 = OSSwapHostToBigInt32(adler32( (unsigned char *) uuidStr, UUID_STR_LEN ));
printf("uuid32 : 0x%lu\n",(unsigned long)uuid32);
printf("uuid32 : 0x%lx\n",uuid32);
printf("uuidStr : %s\n",uuidStr);
UInt8 mem[1024*1024];
bzero(mem, sizeof(mem));
int fdIn = open([inStr UTF8String], O_RDONLY, 0666);
if (-1 == fdIn) {
printf("Error while opening the file \n");
return 1;
}
size_t nbRead = read(fdIn, (void*)mem, sizeof(mem));
if (nbRead <= 0) {
printf("Error: Unable to read the file\n");
close(fdIn);
return 1;
}
ACPI_TABLE_HEADER * head = (ACPI_TABLE_HEADER *)mem;
close(fdIn);
NSMutableData * mem = [[NSMutableData alloc] initWithContentsOfFile : inStr ];
if (!mem) {
NSLog(@"Error while opening the file : %@\n",inStr);
goto out;
}
ACPI_TABLE_HEADER * head = (ACPI_TABLE_HEADER *)[mem mutableBytes];
head->OemRevision = uuid32;
SetChecksum(head);
{
char dir[1024];
sprintf(dir,"%s/%s.%lu.aml",[outStr UTF8String],cfilename,(unsigned long)uuid32);
int fdOut = open(dir, O_WRONLY | O_CREAT, 0666);
if (-1 == fdOut) {
printf("Error: Can't save the file\n");
return 1;
}
write(fdOut, mem, head->Length);
close(fdOut);
}
}
if ([mem writeToFile : [NSString stringWithFormat:@"%@/%@.%@.aml",outStr,filename,[NSNumber numberWithUnsignedLong:uuid32]] atomically: YES] == NO) {
NSLog(@"Error: Can't save the file to %@ \n", [NSString stringWithFormat:@"%@/%@.%@.aml",outStr,filename,[NSNumber numberWithUnsignedLong:uuid32]]);
}
[mem release];
}
IOObjectRelease(entry);
goto out;
}
}
printf("No UUID entry\n");
NSLog(@"No UUID entry\n");
}
out:
out:
if (chunks != NULL) {
[chunks release];
}
if (data != NULL) {
CFRelease(data);
}
if (entry != MACH_PORT_NULL) {
IOObjectRelease(entry);
}
if (entry2 != MACH_PORT_NULL) {
IOObjectRelease(entry2);
}
[pool drain];
return 0;
}
branches/cparm/CREDITS
4848
4949
5050
51
ErmaC
scrax
dmazar
Enzo

Archive Download the corresponding diff file

Revision: 1899