Chameleon

Chameleon Commit Details

Date:2011-01-18 15:51:31 (13 years 3 months ago)
Author:Sergey Slice
Commit:708
Parents: 707
Message:CPUID, some mistakes, NVRAM beta2
Changes:
M/branches/slice/ChamMek/ChamMek.xcodeproj/slice.pbxuser
M/branches/slice/revision
M/branches/slice/i386/modules/ATI5000Enabler/ati5.c
M/branches/slice/i386/libsaio/platform.c
M/branches/slice/ChamMek/ChamMek.xcodeproj/slice.mode1v3
M/branches/slice/i386/boot2/boot.c
M/branches/slice/i386/libsaio/cpu.c
M/branches/slice/i386/modules/ATI5000Enabler/ati5.h
M/branches/slice/i386/libsaio/fake_efi.c
M/branches/slice/i386/boot2/boot.h
M/branches/slice/i386/boot2/modules.c
M/branches/slice/i386/libsaio/cpu.h
M/branches/slice/i386/modules/NVRAM/NVRAM.c
M/branches/slice/i386/libsaio/sys.c

File differences

branches/slice/i386/libsaio/sys.c
806806
807807
808808
809
809
810810
811
811
812812
813813
814814
815
816
815817
816818
817819
818820
819
821
822
820823
821824
825
822826
823827
824828
#define MAX_HDD_COUNT 32
int bvCount;
int hd = 0;
// Testing up to MAX_HDD_COUNT hard drives.
while(!testBiosread(0x80 + hd, 0) && hd < MAX_HDD_COUNT)
while(!testBiosread(0x80 + hd, 0) && hd < MAX_HDD_COUNT)
{
bvCount = 0;
scanBootVolumes(0x80 + hd, &bvCount);
verbose("scanVolume %d\n", hd);
hd++;
}
// Also scanning CD/DVD drive.
if (biosDevIsCDROM(gBIOSDev))
// if (biosDevIsCDROM(gBIOSDev))
if (biosDevIsCDROM(gBIOSDev)) // 0 = CDROM
{
bvCount = 0;
//scanBootVolumes(gBIOSDev, &bvCount);
scanBootVolumes(gBIOSDev, &bvCount);
msglog("biosDevIsCDROM and bvCount=%d\n", bvCount);
}
branches/slice/i386/libsaio/platform.c
1111
1212
1313
14
1415
1516
1617
......
2223
2324
2425
25
2626
27
27
2828
2929
3030
......
4949
5050
5151
52
53
54
55
5256
5357
5458
#include "platform.h"
#include "cpu.h"
#include "modules.h"
#include "efi.h"
#ifndef DEBUG_PLATFORM
#define DEBUG_PLATFORM 0
#define DBG(x...)
#endif
//static
PlatformInfo_t* Platform;
BLESS_EFI_LOAD_OPTION* BootOrder;
/** Return if a CPU feature specified by feature is activated (true) or not (false) */
inline bool platformCPUFeature(uint32_t feature)
{
Platform = malloc(sizeof(PlatformInfo_t));
memset(Platform, 0, sizeof(PlatformInfo_t));
gPlatform = (void*)Platform;
BootOrder = malloc(sizeof(BLESS_EFI_LOAD_OPTION));
memset(BootOrder, 0, sizeof(BLESS_EFI_LOAD_OPTION));
gBootOrder = (void*)BootOrder;
build_pci_dt();
scan_cpu(); //Platform);
//scan_mem(); Rek: called after pci devs init in fake_efi now ...
branches/slice/i386/libsaio/cpu.c
1414
1515
1616
17
17
1818
1919
2020
......
9797
9898
9999
100
100101
101102
102103
103104
104105
105
106
107
108
109
110
111
112
113
114
115
116
117
118
106119
107120
108121
......
177190
178191
179192
180
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
181221
182222
183223
......
201241
202242
203243
244
245
246
204247
205248
206249
......
260303
261304
262305
263
306
307
264308
265309
266
310
267311
268312
269313
314
270315
271316
272317
......
478523
479524
480525
481
526
482527
483528
484529
......
489534
490535
491536
492
537
493538
494539
495540
#endif
#if DEBUG_CPU
#define DBG(x...)verbose(x)
#define DBG(x...)printf(x)
#else
#define DBG(x...)msglog(x)
#endif
{
PlatformInfo_t *p = Platform;
int i = 0;
uint8_t turbo;
uint64_ttscFrequency, fsbFrequency, cpuFrequency;
uint64_tmsr; //, flex_ratio;
uint8_tmaxcoef, maxdiv, currcoef, currdiv, mindiv;
maxcoef = maxdiv = currcoef = currdiv = mindiv = 0;
#if DEBUG_CPU
printf("Enter cpuid_info\n");
pause();
#endif
cpuid_update_generic_info();
#if DEBUG_CPU
printf("...OK\n");
pause();
#endif
#if OLDMETHOD
/* get cpuid values */
for( ; i <= 3; i++)
{
if (p->CPU.NoThreads > p->CPU.NoCores) {
p->CPU.Features |= CPU_FEATURE_HTT;
}
#else //Slice
p->CPU.Vendor= *(UInt32*)&cpuid_info()->cpuid_vendor;
p->CPU.Signature= cpuid_info()->cpuid_signature;
p->CPU.Stepping= cpuid_info()->cpuid_stepping;
p->CPU.Model= cpuid_info()->cpuid_model;
p->CPU.Family= cpuid_info()->cpuid_family;
p->CPU.ExtModel= cpuid_info()->cpuid_extmodel;
p->CPU.ExtFamily= cpuid_info()->cpuid_extfamily;
//DBG("CPU: Vendor/Model/ExtModel: 0x%x/0x%x/0x%x\n", p->CPU.Vendor, p->CPU.Model, p->CPU.ExtModel);
//DBG("CPU: Family/ExtFamily: 0x%x/0x%x\n", p->CPU.Family, p->CPU.ExtFamily);
strlcpy(p->CPU.BrandString, cpuid_info()->cpuid_brand_string, sizeof(p->CPU.BrandString));
DBG("CPU: BrandString %s\n", p->CPU.BrandString);
p->CPU.Features = cpuid_info()->cpuid_features;
p->CPU.NoCores = cpuid_info()->core_count;
p->CPU.NoThreads = cpuid_info()->thread_count;
//DBG("CPU: MaxCoef/CurrCoef: 0x%x/0x%x\n", p->CPU.MaxCoef, p->CPU.CurrCoef);
//DBG("CPU: MaxDiv/CurrDiv: 0x%x/0x%x\n", p->CPU.MaxDiv?2:1, p->CPU.CurrDiv?2:1);
//DBG("CPU: TSCFreq: %dMHz\n", p->CPU.TSCFrequency / 1000000);
//DBG("CPU: FSBFreq: %dMHz\n", p->CPU.FSBFrequency / 1000000);
//DBG("CPU: CPUFreq: %dMHz\n", p->CPU.CPUFrequency / 1000000);
//DBG("CPU: NoCores/NoThreads: %d/%d\n", p->CPU.NoCores, p->CPU.NoThreads);
//DBG("CPU: Features: 0x%08x\n", p->CPU.Features);
#if DEBUG_CPU
pause();
#endif
#endif
tscFrequency = measure_tsc_frequency();
DBG("measure_tsc_frequency = %dMHz\n", tscFrequency / MEGA);
(msr >> 32) & 0xffffffff, msr & 0xffffffff);
mindiv = (msr >> 40) & 0xff;
maxcoef = (msr >> 8) & 0xff;
msr = rdmsr64(MSR_TURBO_RATIO);
turbo = msr & 0x7f;
//Slice - doesn't work
/*
msr = rdmsr64(MSR_FLEX_RATIO);
fsbFrequency = 0;
break;
}
DBG("msr(0x%04x): MSR_FSB_FREQ %dMHz\n", MSR_FSB_FREQ, fsbFrequency/MEGA);
DBG("msr(0x%04x): MSR_FSB_FREQ %d.%dMHz\n", MSR_FSB_FREQ,
fsbFrequency/MEGA, (fsbFrequency%MEGA)/1000);
}
msr = rdmsr64(MSR_PLATFORM_INFO);
msr = rdmsr64(MSR_PLATFORM_INFO); //info only?
uint32_t m2 = msr >> 32;
DBG("msr(0x%04x): platform_info %08x-%08x\n", MSR_PLATFORM_INFO,
m2 & 0xffffffff, msr & 0xffffffff);
turbo = (m2 >> 8) & 0x1f;
msr = rdmsr64(MSR_IA32_PERF_STATUS);
m2 = msr >> 32;
*/
p->CPU.MaxCoef = maxcoef;
p->CPU.MaxCoef = turbo;
p->CPU.MaxDiv = maxdiv;
p->CPU.MinCoef = mindiv;
p->CPU.CurrCoef = currcoef;
DBG("CPU: Vendor/Model/ExtModel: 0x%x/0x%x/0x%x\n", p->CPU.Vendor, p->CPU.Model, p->CPU.ExtModel);
DBG("CPU: Family/ExtFamily: 0x%x/0x%x\n", p->CPU.Family, p->CPU.ExtFamily);
DBG("CPU: MaxCoef/CurrCoef: 0x%x/0x%x\n", p->CPU.MaxCoef, p->CPU.CurrCoef);
DBG("CPU: MaxCoef/CurrCoef/Turbo: 0x%x/0x%x\n", p->CPU.MaxCoef, p->CPU.CurrCoef, turbo);
DBG("CPU: MaxDiv/CurrDiv: 0x%x/0x%x\n", p->CPU.MaxDiv?2:1, p->CPU.CurrDiv?2:1);
DBG("CPU: TSCFreq: %dMHz\n", p->CPU.TSCFrequency / 1000000);
DBG("CPU: FSBFreq: %dMHz\n", p->CPU.FSBFrequency / 1000000);
branches/slice/i386/libsaio/cpu.h
1717
1818
1919
20
21
22
23
2024
2125
2226
2327
24
28
29
2530
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
26121
27122
123
28124
29125
30126
......
75171
76172
77173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
78278
79279
80280
......
182382
183383
184384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
185551
extern void scan_cpu(); //PlatformInfo_t *);
#define min(a,b) ((a) < (b) ? (a) : (b))
#define quad(hi,lo) (((uint64_t)(hi)) << 32 | (lo))
#define bit(n)(1UL << (n))
#define bitmask(h,l)((bit(h)|(bit(h)-1)) & ~(bit(l)-1))
#define bitfield(x,h,l)(((x) & bitmask(h,l)) >> l)
#define CPU_STRING_UNKNOWN"Unknown CPU Typ"
#defineCPUID_VID_INTEL"GenuineIntel"
#defineCPUID_VID_AMD"AuthenticAMD"
#define CPUID_STRING_UNKNOWN "Unknown CPU Typ"
#define _Bit(n)(1ULL << n)
#define _HBit(n)(1ULL << ((n)+32))
/*
* The CPUID_FEATURE_XXX values define 64-bit values
* returned in %ecx:%edx to a CPUID request with %eax of 1:
*/
#defineCPUID_FEATURE_FPU _Bit(0)/* Floating point unit on-chip */
#defineCPUID_FEATURE_VME _Bit(1)/* Virtual Mode Extension */
#defineCPUID_FEATURE_DE _Bit(2)/* Debugging Extension */
#defineCPUID_FEATURE_PSE _Bit(3)/* Page Size Extension */
#defineCPUID_FEATURE_TSC _Bit(4)/* Time Stamp Counter */
#defineCPUID_FEATURE_MSR _Bit(5)/* Model Specific Registers */
#define CPUID_FEATURE_PAE _Bit(6)/* Physical Address Extension */
#defineCPUID_FEATURE_MCE _Bit(7)/* Machine Check Exception */
#defineCPUID_FEATURE_CX8 _Bit(8)/* CMPXCHG8B */
#defineCPUID_FEATURE_APIC _Bit(9)/* On-chip APIC */
#define CPUID_FEATURE_SEP _Bit(11)/* Fast System Call */
#defineCPUID_FEATURE_MTRR _Bit(12)/* Memory Type Range Register */
#defineCPUID_FEATURE_PGE _Bit(13)/* Page Global Enable */
#defineCPUID_FEATURE_MCA _Bit(14)/* Machine Check Architecture */
#defineCPUID_FEATURE_CMOV _Bit(15)/* Conditional Move Instruction */
#define CPUID_FEATURE_PAT _Bit(16)/* Page Attribute Table */
#define CPUID_FEATURE_PSE36 _Bit(17)/* 36-bit Page Size Extension */
#define CPUID_FEATURE_PSN _Bit(18)/* Processor Serial Number */
#define CPUID_FEATURE_CLFSH _Bit(19)/* CLFLUSH Instruction supported */
#define CPUID_FEATURE_DS _Bit(21)/* Debug Store */
#define CPUID_FEATURE_ACPI _Bit(22)/* Thermal monitor and Clock Ctrl */
#define CPUID_FEATURE_MMX _Bit(23)/* MMX supported */
#define CPUID_FEATURE_FXSR _Bit(24)/* Fast floating pt save/restore */
#define CPUID_FEATURE_SSE _Bit(25)/* Streaming SIMD extensions */
#define CPUID_FEATURE_SSE2 _Bit(26)/* Streaming SIMD extensions 2 */
#define CPUID_FEATURE_SS _Bit(27)/* Self-Snoop */
#define CPUID_FEATURE_HTT _Bit(28)/* Hyper-Threading Technology */
#define CPUID_FEATURE_TM _Bit(29)/* Thermal Monitor (TM1) */
#define CPUID_FEATURE_PBE _Bit(31)/* Pend Break Enable */
#define CPUID_FEATURE_SSE3 _HBit(0)/* Streaming SIMD extensions 3 */
#define CPUID_FEATURE_PCLMULQDQ _HBit(1) /* PCLMULQDQ Instruction */
#define CPUID_FEATURE_MONITOR _HBit(3)/* Monitor/mwait */
#define CPUID_FEATURE_DSCPL _HBit(4)/* Debug Store CPL */
#define CPUID_FEATURE_VMX _HBit(5)/* VMX */
#define CPUID_FEATURE_SMX _HBit(6)/* SMX */
#define CPUID_FEATURE_EST _HBit(7)/* Enhanced SpeedsTep (GV3) */
#define CPUID_FEATURE_TM2 _HBit(8)/* Thermal Monitor 2 */
#define CPUID_FEATURE_SSSE3 _HBit(9)/* Supplemental SSE3 instructions */
#define CPUID_FEATURE_CID _HBit(10)/* L1 Context ID */
#define CPUID_FEATURE_CX16 _HBit(13)/* CmpXchg16b instruction */
#define CPUID_FEATURE_xTPR _HBit(14)/* Send Task PRiority msgs */
#define CPUID_FEATURE_PDCM _HBit(15)/* Perf/Debug Capability MSR */
#define CPUID_FEATURE_DCA _HBit(18)/* Direct Cache Access */
#define CPUID_FEATURE_SSE4_1 _HBit(19)/* Streaming SIMD extensions 4.1 */
#define CPUID_FEATURE_SSE4_2 _HBit(20)/* Streaming SIMD extensions 4.2 */
#define CPUID_FEATURE_xAPIC _HBit(21)/* Extended APIC Mode */
#define CPUID_FEATURE_POPCNT _HBit(23)/* POPCNT instruction */
#define CPUID_FEATURE_AES _HBit(25)/* AES instructions */
#define CPUID_FEATURE_VMM _HBit(31)/* VMM (Hypervisor) present */
/*
* The CPUID_EXTFEATURE_XXX values define 64-bit values
* returned in %ecx:%edx to a CPUID request with %eax of 0x80000001:
*/
#define CPUID_EXTFEATURE_SYSCALL _Bit(11)/* SYSCALL/sysret */
#define CPUID_EXTFEATURE_XD _Bit(20)/* eXecute Disable */
#define CPUID_EXTFEATURE_1GBPAGE _Bit(26) /* 1G-Byte Page support */
#define CPUID_EXTFEATURE_RDTSCP _Bit(27)/* RDTSCP */
#define CPUID_EXTFEATURE_EM64T _Bit(29)/* Extended Mem 64 Technology */
//#define CPUID_EXTFEATURE_LAHF _HBit(20)/* LAFH/SAHF instructions */
// New definition with Snow kernel
#define CPUID_EXTFEATURE_LAHF _HBit(0)/* LAHF/SAHF instructions */
/*
* The CPUID_EXTFEATURE_XXX values define 64-bit values
* returned in %ecx:%edx to a CPUID request with %eax of 0x80000007:
*/
#define CPUID_EXTFEATURE_TSCI _Bit(8)/* TSC Invariant */
#defineCPUID_CACHE_SIZE16/* Number of descriptor values */
#define CPUID_MWAIT_EXTENSION_Bit(0)/* enumeration of WMAIT extensions */
#define CPUID_MWAIT_BREAK_Bit(1)/* interrupts are break events */
#define MSR_IA32_PLATFORM_ID0x0017
#define MSR_P4_EBC_FREQUENCY_ID0x002C
#define MSR_CORE_THREAD_COUNT0x0035
#defineMSR_IA32_PERF_STATUS0x0198
#define MSR_IA32_PERF_CONTROL0x0199
#define MSR_IA32_EXT_CONFIG0x00EE
#define CALIBRATE_TIME_MSEC30/* 30 msecs */
#define CALIBRATE_LATCH((CLKNUM * CALIBRATE_TIME_MSEC + 1000/2)/1000)
typedef enum { eax, ebx, ecx, edx } cpuid_register_t;
/*
* Cache ID descriptor structure, used to parse CPUID leaf 2.
* Note: not used in kernel.
*/
typedef enum { Lnone, L1I, L1D, L2U, L3U, LCACHE_MAX } cache_type_t ;
typedef struct {
unsigned charvalue; /* Descriptor value */
cache_type_t type; /* Cache type */
unsigned int size; /* Cache size */
unsigned int linesize; /* Cache line size */
const char*description; /* Cache description */
} cpuid_cache_desc_t;
#define CACHE_DESC(value,type,size,linesize,text) \
{ value, type, size, linesize, text }
/* Physical CPU info - this is exported out of the kernel (kexts), so be wary of changes */
typedef struct {
charcpuid_vendor[16];
charcpuid_brand_string[48];
const char*cpuid_model_string;
cpu_type_tcpuid_type;/* this is *not* a cpu_type_t in our <mach/machine.h> */
uint8_tcpuid_family;
uint8_tcpuid_model;
uint8_tcpuid_extmodel;
uint8_tcpuid_extfamily;
uint8_tcpuid_stepping;
uint64_tcpuid_features;
uint64_tcpuid_extfeatures;
uint32_tcpuid_signature;
uint8_t cpuid_brand;
uint32_tcache_size[LCACHE_MAX];
uint32_tcache_linesize;
uint8_tcache_info[64]; /* list of cache descriptors */
uint32_tcpuid_cores_per_package;
uint32_tcpuid_logical_per_package;
uint32_tcache_sharing[LCACHE_MAX];
uint32_tcache_partitions[LCACHE_MAX];
cpu_type_tcpuid_cpu_type;/* <mach/machine.h> */
cpu_subtype_tcpuid_cpu_subtype;/* <mach/machine.h> */
/* Monitor/mwait Leaf: */
uint32_tcpuid_mwait_linesize_min;
uint32_tcpuid_mwait_linesize_max;
uint32_tcpuid_mwait_extensions;
uint32_tcpuid_mwait_sub_Cstates;
/* Thermal and Power Management Leaf: */
boolean_tcpuid_thermal_sensor;
boolean_tcpuid_thermal_dynamic_acceleration;
uint32_tcpuid_thermal_thresholds;
boolean_tcpuid_thermal_ACNT_MCNT;
/* Architectural Performance Monitoring Leaf: */
uint8_tcpuid_arch_perf_version;
uint8_tcpuid_arch_perf_number;
uint8_tcpuid_arch_perf_width;
uint8_tcpuid_arch_perf_events_number;
uint32_tcpuid_arch_perf_events;
uint8_tcpuid_arch_perf_fixed_number;
uint8_tcpuid_arch_perf_fixed_width;
/* Cache details: */
uint32_tcpuid_cache_linesize;
uint32_tcpuid_cache_L2_associativity;
uint32_tcpuid_cache_size;
/* Virtual and physical address aize: */
uint32_tcpuid_address_bits_physical;
uint32_tcpuid_address_bits_virtual;
uint32_tcpuid_microcode_version;
/* Numbers of tlbs per processor [i|d, small|large, level0|level1] */
uint32_tcpuid_tlb[2][2][2];
#defineTLB_INST0
#defineTLB_DATA1
#defineTLB_SMALL0
#defineTLB_LARGE1
uint32_tcpuid_stlb;
uint32_tcore_count;
uint32_tthread_count;
/* Max leaf ids available from CPUID */
uint32_tcpuid_max_basic;
uint32_tcpuid_max_ext;
} i386_cpu_info_t;
static i386_cpu_info_t cpuid_cpu_info;
static i386_cpu_info_t*cpuid_info(void)
{
return &cpuid_cpu_info;
}
static inline uint64_t rdtsc64(void)
{
uint64_t ret;
return count;
}
static void cpuid_update_generic_info()
{
uint32_t cpuid_reg[4];
uint32_t max_extid;
char str[128];
char* p;
i386_cpu_info_t* info_p = cpuid_info();
/* Get vendor */
do_cpuid(0, cpuid_reg);
bcopy((char *)&cpuid_reg[ebx], &info_p->cpuid_vendor[0], 4); /* ug */
bcopy((char *)&cpuid_reg[ecx], &info_p->cpuid_vendor[8], 4);
bcopy((char *)&cpuid_reg[edx], &info_p->cpuid_vendor[4], 4);
info_p->cpuid_vendor[12] = 0;
/* Get extended CPUID results */
do_cpuid(0x80000000, cpuid_reg);
max_extid = cpuid_reg[eax];
/* Check to see if we can get the brand string */
if (max_extid >= 0x80000004) {
/*
* The brand string is up to 48 bytes and is guaranteed to be
* NUL terminated.
*/
do_cpuid(0x80000002, cpuid_reg);
bcopy((char *)cpuid_reg, &str[0], 16);
do_cpuid(0x80000003, cpuid_reg);
bcopy((char *)cpuid_reg, &str[16], 16);
do_cpuid(0x80000004, cpuid_reg);
bcopy((char *)cpuid_reg, &str[32], 16);
for (p = str; *p != '\0'; p++) {
if (*p != ' ') break;
}
strncpy(info_p->cpuid_brand_string, p,
sizeof(info_p->cpuid_brand_string));
if (!strncmp(info_p->cpuid_brand_string, CPUID_STRING_UNKNOWN,
min(sizeof(info_p->cpuid_brand_string),
strlen(CPUID_STRING_UNKNOWN) + 1))) {
/*
* This string means we have a firmware-programmable brand string,
* and the firmware couldn't figure out what sort of CPU we have.
*/
info_p->cpuid_brand_string[0] = '\0';
}
}
/* Get cache and addressing info */
if (max_extid >= 0x80000006) {
do_cpuid(0x80000006, cpuid_reg);
info_p->cpuid_cache_linesize = bitfield(cpuid_reg[ecx], 7, 0);
info_p->cpuid_cache_L2_associativity = bitfield(cpuid_reg[ecx], 15, 12);
info_p->cpuid_cache_size = bitfield(cpuid_reg[ecx], 31, 16);
do_cpuid(0x80000008, cpuid_reg);
info_p->cpuid_address_bits_physical = bitfield(cpuid_reg[eax], 7, 0);
info_p->cpuid_address_bits_virtual = bitfield(cpuid_reg[eax], 15, 8);
}
/* Get processor signature and decode */
do_cpuid(1, cpuid_reg);
info_p->cpuid_signature = cpuid_reg[eax];
info_p->cpuid_stepping = bitfield(cpuid_reg[eax], 3, 0);
info_p->cpuid_model = bitfield(cpuid_reg[eax], 7, 4);
info_p->cpuid_family = bitfield(cpuid_reg[eax], 11, 8);
info_p->cpuid_type = bitfield(cpuid_reg[eax], 13, 12);
info_p->cpuid_extmodel = bitfield(cpuid_reg[eax], 19, 16);
info_p->cpuid_extfamily = bitfield(cpuid_reg[eax], 27, 20);
info_p->cpuid_brand = bitfield(cpuid_reg[ebx], 7, 0);
info_p->cpuid_features = quad(cpuid_reg[ecx], cpuid_reg[edx]);
/* Fold extensions into family/model */
if (info_p->cpuid_family == 0x0f) {
info_p->cpuid_family += info_p->cpuid_extfamily;
}
if (info_p->cpuid_family == 0x0f || info_p->cpuid_family== 0x06) {
info_p->cpuid_model += (info_p->cpuid_extmodel << 4);
}
if (info_p->cpuid_features & CPUID_FEATURE_HTT) {
info_p->cpuid_logical_per_package = bitfield(cpuid_reg[ebx], 23, 16);
} else {
info_p->cpuid_logical_per_package = 1;
}
if (max_extid >= 0x80000001) {
do_cpuid(0x80000001, cpuid_reg);
info_p->cpuid_extfeatures = quad(cpuid_reg[ecx], cpuid_reg[edx]);
}
if (info_p->cpuid_extfeatures & CPUID_FEATURE_MONITOR) {
do_cpuid(5, cpuid_reg);
info_p->cpuid_mwait_linesize_min = cpuid_reg[eax];
info_p->cpuid_mwait_linesize_max = cpuid_reg[ebx];
info_p->cpuid_mwait_extensions = cpuid_reg[ecx];
info_p->cpuid_mwait_sub_Cstates = cpuid_reg[edx];
do_cpuid(6, cpuid_reg);
info_p->cpuid_thermal_sensor = bitfield(cpuid_reg[eax], 0, 0);
info_p->cpuid_thermal_dynamic_acceleration =
bitfield(cpuid_reg[eax], 1, 1);
info_p->cpuid_thermal_thresholds = bitfield(cpuid_reg[ebx], 3, 0);
info_p->cpuid_thermal_ACNT_MCNT = bitfield(cpuid_reg[ecx], 0, 0);
do_cpuid(0xa, cpuid_reg);
info_p->cpuid_arch_perf_version = bitfield(cpuid_reg[eax], 7, 0);
info_p->cpuid_arch_perf_number = bitfield(cpuid_reg[eax],15, 8);
info_p->cpuid_arch_perf_width = bitfield(cpuid_reg[eax],23,16);
info_p->cpuid_arch_perf_events_number = bitfield(cpuid_reg[eax],31,24);
info_p->cpuid_arch_perf_events = cpuid_reg[ebx];
info_p->cpuid_arch_perf_fixed_number = bitfield(cpuid_reg[edx], 4, 0);
info_p->cpuid_arch_perf_fixed_width = bitfield(cpuid_reg[edx],12, 5);
}
do_cpuid(4, cpuid_reg);
info_p->cpuid_cores_per_package = bitfield(cpuid_reg[eax], 31, 26) + 1;
if (info_p->cpuid_cores_per_package == 0) {
info_p->cpuid_cores_per_package = 1;
}
switch (info_p->cpuid_model)
{
case 0x1C:
{
//uint64_t msr = rdmsr64(MSR_CORE_THREAD_COUNT);
info_p->core_count = 1; //bitfield((uint32_t)msr, 19, 16);
info_p->thread_count = 2; //bitfield((uint32_t)msr, 15, 0);
}
break;
case 0x19: // some i5 ???
case 0x1A: // Intel Core i7 LGA1366 (45nm)
case 0x1E: // Intel Core i5, i7 LGA1156 (45nm)
case 0x25: // Intel Core i3, i5, i7 LGA1156 (32nm)
{
uint64_t msr = rdmsr64(MSR_CORE_THREAD_COUNT);
info_p->core_count = bitfield((uint32_t)msr, 31, 16);
info_p->thread_count = bitfield((uint32_t)msr, 15, 0);
} break;
case 0x2C: // Intel Core i7 LGA1366 (32nm) 6 Core
case 0x1F:
case 0x2F:
{
uint64_t msr = rdmsr64(MSR_CORE_THREAD_COUNT);
info_p->core_count = bitfield((uint32_t)msr, 19, 16);
info_p->thread_count = bitfield((uint32_t)msr, 15, 0);
break;
}
default:
{
do_cpuid(1, cpuid_reg);
info_p->core_count = bitfield(cpuid_reg[1], 23, 16);
} break;
}
if (info_p->core_count == 0) {
info_p->core_count = info_p->cpuid_cores_per_package;
info_p->thread_count = info_p->cpuid_logical_per_package;
}
}
#endif /* !__LIBSAIO_CPU_H */
branches/slice/i386/libsaio/fake_efi.c
2424
2525
2626
27
2728
2829
2930
......
750751
751752
752753
754
755
756
753757
754758
755759
......
800804
801805
802806
803
807
808
804809
805810
806
811
807812
808813
809814
#undef static
#endif
//BLESS_EFI_LOAD_OPTION* BootOrder;
extern struct SMBEntryPoint * getSmbios(int which); // now cached
//extern void setup_pci_devs(pci_dt_t *pci_dt);
//Slice - remember globals
Platform = (PlatformInfo_t *)gPlatform;
root_pci_dev = (pci_dt_t*)gRootPCIDev;
//gBootOrder = (void*)BootOrder;
//verbose("setupFakeEfi: root_pci_dev_Vendor=%04x\n", (root_pci_dev->children)->vendor_id);
setup_pci_devs((pci_dt_t*)gRootPCIDev);
continue;
}
//TODO validate
msglog("Patched platform CPU Info:\n FSB=%d\n MaxSpeed=%d\n CurrentSpeed=%d\n", Platform->CPU.FSBFrequency/MEGA, Platform->CPU.TSCFrequency/MEGA, Platform->CPU.CPUFrequency/MEGA);
//msglog("Patched platform CPU Info:\n FSB=%d\n MaxSpeed=%d\n CurrentSpeed=%d\n",
// Platform->CPU.FSBFrequency/MEGA, Platform->CPU.TSCFrequency/MEGA, Platform->CPU.CPUFrequency/MEGA);
msglog("Patched SMBIOS CPU Info:\n FSB=%d\n MaxSpeed=%d\n CurrentSpeed=%d\n", cpuInfo->externalClock, cpuInfo->maximumClock, cpuInfo->currentClock);
msglog(" Family=%x\n Socket=%x\n Cores=%d Enabled=%d Threads=%d\n", cpuInfo->processorFamily, cpuInfo->processorUpgrade, cpuInfo->coreCount, cpuInfo->coreEnabled, cpuInfo->Threads);
msglog(" Family=%x Socket=%x\n Cores=%d Enabled=%d Threads=%d\n", cpuInfo->processorFamily, cpuInfo->processorUpgrade, cpuInfo->coreCount, cpuInfo->coreEnabled, cpuInfo->Threads);
}
#endif
}
branches/slice/i386/boot2/boot.c
7474
7575
7676
77
7778
7879
7980
......
374375
375376
376377
377
378
379
378
379
380
380381
381382
382383
char gMacOSVersion[8];
void *gRootPCIDev;
void *gPlatform;
void *gBootOrder;
void *gSMBIOS;
int gDualLink;
#ifndef OPTION_ROM
#endif
#if DEBUG
printf(" Default: %x, ->biosdev: %x, ->part_no: %d ->flags: %x\n", gBootVolume, gBootVolume->biosdev, gBootVolume->part_no, gBootVolume->flags);
printf(" bt(0,0): %x, ->biosdev: %x, ->part_no: %d ->flags: %x\n", gBIOSBootVolume, gBIOSBootVolume->biosdev, gBIOSBootVolume->part_no, gBIOSBootVolume->flags);
getc();
printf(" Default: %x, ->gBootVolume: %x, ->part_no: %d ->flags: %x\n", gBootVolume, gBootVolume->biosdev, gBootVolume->part_no, gBootVolume->flags);
printf(" bt(0,0): %x, ->gBIOSBootVolume: %x, ->part_no: %d ->flags: %x\n", gBIOSBootVolume, gBIOSBootVolume->biosdev, gBIOSBootVolume->part_no, gBIOSBootVolume->flags);
pause();
/* Results
Rescan found 1 HDD and bvCount=4
bvr: 836bc10, dev: 80, part: 4, flags: 4a, vis: 1
branches/slice/i386/boot2/modules.c
119119
120120
121121
122
123
124
122125
123126
124127
......
163166
164167
165168
166
169
167170
168171
169172
if(strcmp(&name[strlen(name) - sizeof("dylib")], ".dylib") == 0)
{
char* tmp = malloc(strlen(name) + 1);
if (name[0] == '.') {
continue;
}
strcpy(tmp, name);
DBG("Attempting to load %s\n", tmp);
if(fh < 0)
{
DBG("Unable to locate module %s\n", modString);
getc();
//getc();
return 0;
}
branches/slice/i386/boot2/boot.h
3636
3737
3838
39
3940
4041
4142
......
6869
6970
7071
72
73
7174
7275
7376
extern int bvCount;
extern void *gRootPCIDev;
extern void* gPlatform;
extern void* gBootOrder;
/*
/* AsereBLN: added the other keys */
#define kUseAtiROM"UseAtiROM"/* ati.c */
#define kAtiConfig"AtiConfig"/* ati.c */
#define kATYbinimage"ATYbinimage"/* ati.c */
#define kWake"Wake"/* boot.c */
#define kForceWake"ForceWake"/* boot.c */
#define kWakeImage"WakeImage"/* boot.c */
branches/slice/i386/modules/NVRAM/NVRAM.c
1111
1212
1313
14
1415
1516
16
17
1718
1819
1920
20
21
2122
2223
2324
......
8182
8283
8384
84
85
8586
86
87
8788
8889
8990
......
9293
9394
9495
96
9597
9698
9799
98100
99101
100102
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
103119
104120
105121
......
157173
158174
159175
160
176
161177
162178
163179
......
172188
173189
174190
175
191
176192
177193
178194
195
196
197
179198
180199
181200
......
205224
206225
207226
208
227
209228
210229
211
230
212231
232
213233
214234
215235
216236
237
217238
239
218240
219241
220
221
242
243
244
222245
246
223247
224248
225249
226250
251
227252
228253
229254
230255
231256
232
257
233258
234259
235260
......
248273
249274
250275
251
276
252277
253278
254279
280
281
282
283
284
285
286
287
255288
256289
257
290
291
258292
259293
260294
261
295
296
297
262298
263299
#include "pci.h"
#include "efi.h"
#include "smbios_patcher.h"
#include "xml.h"
#ifndef DEBUG_NVRAM
#define DEBUG_NVRAM 0
#define DEBUG_NVRAM 1
#endif
#if DEBUG_NVRAM
#define DBG(x...) verbose(x)
#define DBG(x...) printf(x)
#else
#define DBG(x...) msglog(x)
#endif
char*bnName;
EFI_GUID*ret = 0;
uint16_tbootOptionNumber = 0;
//msglog("NVRAM is not implemented yet\n");
int i, j;
//return;
BLESS_EFI_LOAD_OPTION* NextBoot =(BLESS_EFI_LOAD_OPTION*)gBootOrder;
DBG("NVRAM started with ModulesLoaded\n");
//bool UseNVRAM = FALSE;
bool ClearNVRAM = FALSE;
const char* buff;
TagPtrdictionary;
int cnt;
var = malloc(sizeof(variables)+1);
ClearNVRAM = getValueForKey(kClearNVRAM, &buff, &cnt, &bootInfo->bootConfig);
if (!ClearNVRAM) {
readNVRAM(var);
}
Node* optionsNode = DT__FindNode("/options", true);
for (i=0; i<32; i++) {
if (var[i].Name[0] == 0) {
break;
}
if (strcmp(var[i].Name, "efi-boot-device")==0) {
//XMLParseFile(var[i].Value, &dictionary);
//buff = XMLGetProperty(dictionary, "BLLastBSDName")->string;
verbose("Required boot device is %s\n", var[i].Value);
//NextBoot->FilePathListLength = 1;
//strcpy(NextBoot->Description, buff);
break;
}
}
Node* optionsNode = DT__FindNode("/fakenvram", true);
ffName = malloc(sizeof(PLATFORM_UUID)+1);
strcpy(ffName, PLATFORM_UUID);
ret = getSystemID();
*/
//
int i,j;
for (i=0; i<32; i++) {
DBG("NVRAM get a name %s\n", var[i].Name);
if (var[i].Name[0]) {
DBG("NVRAM add name=%s value=%s length=%d\n", var[i].Name, var[i].Value, j);
#endif
} else {
return;
break;
}
}
//Serialization?
bnName[0] = bnName[1] = 0;
DT__AddProperty(optionsNode, bnName, sizeof(uint32_t), (EFI_UINT32*)&STATIC_ZERO);
}
const char NVRAM_INF[] = "nvram.inf";
return -1;
}
close (fd);
if ((var = malloc(fsize)) == NULL) {
/*if ((var = malloc(fsize)) == NULL) {
DBG("[ERROR] alloc VAR memory failed\n");
return -1;
}
}*/
int i = 0;
char * onvr = nvr;
bool skipGUID;
while (*nvr) {
int j = 0;
skipGUID = false;
DBG("Name[%d]:", i);
while (*nvr != 9) {
//DBG("%c", *nvr);
if (*nvr == 4) {
skipGUID = true; //TODO this is GUID
}
var[i].Name[j++] = *nvr++;
nvr++;
} else
var[i].Name[j++] = *nvr++;
}
DBG("\n");
nvr++; //skip \09
var[i].Name[j] = 0; //end of c-string
if (skipGUID) {
//TODO this is GUID
DBG("skip GUID\n");
while (*nvr++ != 0x0A) {}
i--;
} else {
j = 0;
char c;
unsigned char c;
while (*nvr != 0x0A) {
c = *nvr++;
if (c == 0x25) { //TODO this is hex
k2 = k2 - 0x60 + 10;
}
c = (k1 << 4) + k2;
break;
//break;
}
var[i].Value[j++] = c;
}
nvr++;
DBG("Value[%d]:", i);
int m;
for (m=0; m<j; m++) {
//DBG("%02x ", var[i].Value[m]);
}
//DBG("Value[%d]:%s\n", i, var[i].Value);
DBG("\n");
}
i++;
if (i > fsize) {
if ((int)(nvr - onvr) > fsize) {
DBG("end of buffer\n");
break;
}
}
var[i].Name[0]=0;
var[i].Name[1]=0;
return 0;
}
branches/slice/i386/modules/ATI5000Enabler/ati5.c
1616
1717
1818
19
1920
2021
2122
......
106107
107108
108109
110
111
109112
110113
111114
......
139142
140143
141144
145
146
142147
143148
144149
......
343348
344349
345350
351
346352
353
347354
348355
349356
......
361368
362369
363370
371
364372
365373
366374
......
503511
504512
505513
514
506515
507516
508517
......
535544
536545
537546
547
538548
539549
540550
......
645655
646656
647657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
648678
649679
650680
......
10411071
10421072
10431073
1044
1074
10451075
10461076
10471077
#include "ati_reg.h"
#include "ati5.h"
#defineOFFSET_TO_GET_ATOMBIOS_STRINGS_START0x6e
#define Reg32(reg)(*(volatile uint32_t *)(card->mmio + reg))
#define RegRead32(reg)(Reg32(reg))
#define RegWrite32(reg, value)(Reg32(reg) = value)
{"Langur",3},
{"Megalodon",3},
{"Motmot",2},
{"Nomascus",5},
{"Orangutan",2},
{"Peregrine",2},
{"Quail",3},
{"Raven",3},
kLangur,
kMegalodon,
kMotmot,
kNomascus,
kOrangutan,
kPeregrine,
kQuail,
kRaven,
/* Evergreen */
{ 0x6898,0x032E1043,CHIP_FAMILY_CYPRESS,"ATI Radeon HD 5870",kUakari},
{ 0x6898,0xE140174B,CHIP_FAMILY_CYPRESS,"ATI Radeon HD 5870",kUakari},
{ 0x6898,0x29611682,CHIP_FAMILY_CYPRESS,"ATI Radeon HD 5870",kUakari},
{ 0x6898,0x0B001002,CHIP_FAMILY_CYPRESS,"ATI Radeon HD 5870",kZonalis},
{ 0x6898,0x00D0106B,CHIP_FAMILY_CYPRESS,"ATI Radeon HD 5870",kLangur},
{ 0x6899,0x21E41458,CHIP_FAMILY_CYPRESS,"ATI Radeon HD 5850",kUakari},
{ 0x6899,0x200A1787,CHIP_FAMILY_CYPRESS,"ATI Radeon HD 5850",kUakari},
{ 0x68B8,0x29911682,CHIP_FAMILY_JUNIPER,"ATI Radeon HD 5770",kVervet},
{ 0x68B8,0x200B1787,CHIP_FAMILY_JUNIPER,"ATI Radeon HD 5770",kVervet},
{ 0x68B8,0x22881787,CHIP_FAMILY_JUNIPER,"ATI Radeon HD 5770",kVervet},
{ 0x68B8,0x00CF106B,CHIP_FAMILY_JUNIPER,"ATI Radeon HD 5770",kHoolock},
{ 0x68D8,0x301117AF,CHIP_FAMILY_REDWOOD,"ATI Radeon HD 5690",kNull},
{ 0x68D8,0x301017AF,CHIP_FAMILY_REDWOOD,"ATI Radeon HD 5730",kNull},
bool get_conntype_val(value_t *val);
bool get_vrammemsize_val(value_t *val);
bool get_binimage_val(value_t *val);
bool get_romrevision_val(value_t *val);
bool get_deviceid_val(value_t *val);
bool get_mclk_val(value_t *val);
bool get_sclk_val(value_t *val);
//{FLAGTRUE,false,"AAPL,backlight-control",NULL,DWRVAL((uint32_t)0)},
{FLAGTRUE,false,"ATY,bin_image",get_binimage_val,NULVAL},
{FLAGTRUE,false,"ATY,Copyright",NULL,STRVAL("Copyright AMD Inc. All Rights Reserved. 2005-2010")},
{FLAGTRUE,false,"ATY,Card#",get_romrevision_val,NULVAL},
{FLAGTRUE,false,"ATY,VendorID",NULL,WRDVAL((uint16_t)0x1002)},
{FLAGTRUE,false,"ATY,DeviceID",get_deviceid_val,NULVAL},
return true;
}
bool get_romrevision_val(value_t *val)
{
uint8_t *rev;
if (!card->rom)
return false;
rev = card->rom + *(uint8_t *)(card->rom + OFFSET_TO_GET_ATOMBIOS_STRINGS_START);
val->type = kPtr;
val->size = strlen((char *)rev);
val->data = malloc(val->size);
if (!val->data)
return false;
memcpy(val->data, rev, val->size);
return true;
}
bool get_deviceid_val(value_t *val)
{
val->type = kCst;
get_vram_size();
getBoolForKey(kVBIOS, &add_vbios, &bootInfo->bootConfig);
getBoolForKey(kATYbinimage, &add_vbios, &bootInfo->bootConfig);
if (add_vbios)
if (!load_vbios_file(kUseAtiROM, pci_dev->vendor_id, pci_dev->device_id, pci_dev->subsys_id.subsys_id))
branches/slice/i386/modules/ATI5000Enabler/ati5.h
11
22
33
4
4
55
66
77
/*
* ATI injector
*
* Copyright (C) 2009 Jasmin Fazlic, iNDi, netkas
* Copyright (C) 2010 Kabyl
*
* ATI injector is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
branches/slice/revision
1
1
676:691
676:696
branches/slice/ChamMek/ChamMek.xcodeproj/slice.pbxuser
1212
1313
1414
15
16
17
18
19
20
21
22
23
24
25
26
27
28
1529
1630
1731
......
3145
3246
3347
34
48
3549
3650
3751
......
7690
7791
7892
79
80
93
94
8195
8296
8397
......
86100
87101
88102
89
90
91
103
104
92105
93106
94107
......
99112
100113
101114
115
102116
103
104117
105118
106119
107120
108121
109
110122
111123
112
113124
114125
115126
......
124135
125136
126137
138
139
127140
128141
129142
......
133146
134147
135148
136
137149
138
139
140150
141151
142152
143153
144154
145
146
147
148155
149156
157
158
150159
151160
152161
153162
163
154164
155165
156166
157167
158168
169
159170
160171
161172
......
175186
176187
177188
189
190
191
192
193
194
195
178196
179197
180198
......
284302
285303
286304
287
305
288306
289
290
291
292
307
308
309
310
293311
294
295
312
313
296314
297
298
299
300
301
302
303
304
315
305316
306
307
308
317
318
319
309320
310321
311
322
312323
313
314
315
316
324
325
326
327
317328
318
319
329
330
320331
321332
322333
334
323335
324336
325337
326338
339
340
341
342
343
344
345
327346
328347
329348
......
480499
481500
482501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
483519
484520
485521
......
497533
498534
499535
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517536
518537
519538
......
599618
600619
601620
602
603
604
605
606
607
608
609
610
611
612621
613622
614623
......
650659
651660
652661
653
654
655
656
657
658
659
660
661
662
663662
664663
665664
......
731730
732731
733732
734
735
736
737
738
739
740
741733
742734
743735
......
875867
876868
877869
870
871
872
873
874
875
876
878877
879878
880879
......
953952
954953
955954
956
955
956
957
958
959
960
961
962
963
964
965
957966
958967
959
960
968
969
961970
962
963
964
965
966
967971
972
973
974
975
976
977
978
979
980
981
968982
969983
970984
......
11061120
11071121
11081122
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
11261123
11271124
11281125
......
11471144
11481145
11491146
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
11841147
11851148
11861149
......
12731236
12741237
12751238
1276
1239
12771240
12781241
1279
1280
1242
1243
12811244
12821245
1283
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
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
13341246
13351247
13361248
......
13511263
13521264
13531265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
13541286
13551287
13561288
......
13811313
13821314
13831315
1384
1385
1386
1387
1388
13891316
13901317
13911318
......
14381365
14391366
14401367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
14411378
14421379
14431380
......
15231460
15241461
15251462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
15261479
15271480
15281481
......
16071560
16081561
16091562
1610
1611
1612
1613
1614
16151563
16161564
16171565
12C26D2E12B0DDF400AF7F4B /* ChamMek */,
);
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXBookmarksDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXBookmarksDataSource_NameID;
PBXFileTableDataSourceColumnWidthsKey = (
200,
200,
534.58349609375,
);
PBXFileTableDataSourceColumnsKey = (
PBXBookmarksDataSource_LocationID,
PBXBookmarksDataSource_NameID,
PBXBookmarksDataSource_CommentsID,
);
};
PBXConfiguration.PBXFileTableDataSource3.PBXExecutablesDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXExecutablesDataSource_NameID;
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
725,
505,
20,
48,
43,
PBXSymbolsDataSource_ReferenceNameID,
);
};
PBXPerProjectTemplateStateSaveDate = 315140248;
PBXWorkspaceStateSaveDate = 315140248;
PBXPerProjectTemplateStateSaveDate = 317053851;
PBXWorkspaceStateSaveDate = 317053851;
};
perUserProjectItems = {
120DFB1712BA3A4D00C7EAC8 /* PBXTextBookmark */ = 120DFB1712BA3A4D00C7EAC8 /* PBXTextBookmark */;
12121ED112B261EA00207E55 /* PBXTextBookmark */ = 12121ED112B261EA00207E55 /* PBXTextBookmark */;
1216139E12B65BB50019961E /* PBXTextBookmark */ = 1216139E12B65BB50019961E /* PBXTextBookmark */;
121613FF12B65D970019961E /* PBXTextBookmark */ = 121613FF12B65D970019961E /* PBXTextBookmark */;
123C5F8D12C8AB2C00DFC2D4 /* PBXTextBookmark */ = 123C5F8D12C8AB2C00DFC2D4 /* PBXTextBookmark */;
123C5F8E12C8AB2C00DFC2D4 /* PBXTextBookmark */ = 123C5F8E12C8AB2C00DFC2D4 /* PBXTextBookmark */;
123C5F9012C8AB2C00DFC2D4 /* PBXTextBookmark */ = 123C5F9012C8AB2C00DFC2D4 /* PBXTextBookmark */;
1223EF9012E5D63A0019EC66 /* PBXTextBookmark */ = 1223EF9012E5D63A0019EC66 /* PBXTextBookmark */;
12251A0412CE29EF00273689 /* PBXTextBookmark */ = 12251A0412CE29EF00273689 /* PBXTextBookmark */;
124C493212B8D846005AA276 /* PBXTextBookmark */ = 124C493212B8D846005AA276 /* PBXTextBookmark */;
124C493712B8D846005AA276 /* PBXTextBookmark */ = 124C493712B8D846005AA276 /* PBXTextBookmark */;
124C494212B8E8C2005AA276 /* PBXTextBookmark */ = 124C494212B8E8C2005AA276 /* PBXTextBookmark */;
1265C97712C7554E0050D02E /* PBXTextBookmark */ = 1265C97712C7554E0050D02E /* PBXTextBookmark */;
1267813012B7B13E00A25CED /* PBXTextBookmark */ = 1267813012B7B13E00A25CED /* PBXTextBookmark */;
12679BA312BE822E00E3637F /* PBXTextBookmark */ = 12679BA312BE822E00E3637F /* PBXTextBookmark */;
12783A9B12E5D46B0095C1BA /* PBXTextBookmark */ = 12783A9B12E5D46B0095C1BA /* PBXTextBookmark */;
1288318212C3608100EA4CB2 /* PBXTextBookmark */ = 1288318212C3608100EA4CB2 /* PBXTextBookmark */;
128835DC12C366AB00EA4CB2 /* PBXTextBookmark */ = 128835DC12C366AB00EA4CB2 /* PBXTextBookmark */;
128A97B712C2336000600556 /* PBXTextBookmark */ = 128A97B712C2336000600556 /* PBXTextBookmark */;
128A97B812C2336000600556 /* PBXTextBookmark */ = 128A97B812C2336000600556 /* PBXTextBookmark */;
128A9AF412C233CE00600556 /* PBXTextBookmark */ = 128A9AF412C233CE00600556 /* PBXTextBookmark */;
1299A51F12B3C328007ED516 /* PBXTextBookmark */ = 1299A51F12B3C328007ED516 /* PBXTextBookmark */;
1299A55612B3C4DF007ED516 /* PBXTextBookmark */ = 1299A55612B3C4DF007ED516 /* PBXTextBookmark */;
12A7376E12C854A600769789 /* PBXTextBookmark */ = 12A7376E12C854A600769789 /* PBXTextBookmark */;
12AB04BD12B663F5005A745F /* PBXTextBookmark */ = 12AB04BD12B663F5005A745F /* PBXTextBookmark */;
12AB04EC12B665EA005A745F /* PBXTextBookmark */ = 12AB04EC12B665EA005A745F /* PBXTextBookmark */;
12AD499312C7ADAB0082CD39 /* PBXTextBookmark */ = 12AD499312C7ADAB0082CD39 /* PBXTextBookmark */;
12AF764312BA614B003BBFD3 /* PBXTextBookmark */ = 12AF764312BA614B003BBFD3 /* PBXTextBookmark */;
12B46E6612B75631006C2B9C /* PBXTextBookmark */ = 12B46E6612B75631006C2B9C /* PBXTextBookmark */;
12B46E6812B75631006C2B9C /* PBXTextBookmark */ = 12B46E6812B75631006C2B9C /* PBXTextBookmark */;
12BF14DA12B3CF8E00D798FE /* PBXTextBookmark */ = 12BF14DA12B3CF8E00D798FE /* PBXTextBookmark */;
12C246F412C87C7C007E8339 /* PBXTextBookmark */ = 12C246F412C87C7C007E8339 /* PBXTextBookmark */;
12C2907612C8962900984F8F /* PBXTextBookmark */ = 12C2907612C8962900984F8F /* PBXTextBookmark */;
12C2B36812E5D8B600894A4E /* PBXTextBookmark */ = 12C2B36812E5D8B600894A4E /* PBXTextBookmark */;
12C5020712D8B82400EDCC4E /* PBXTextBookmark */ = 12C5020712D8B82400EDCC4E /* PBXTextBookmark */;
12C672F312C7C6BE0058B09B /* PBXTextBookmark */ = 12C672F312C7C6BE0058B09B /* PBXTextBookmark */;
12C672F512C7C6BE0058B09B /* PBXTextBookmark */ = 12C672F512C7C6BE0058B09B /* PBXTextBookmark */;
12C7009812B7BCE7006BD382 /* PBXTextBookmark */ = 12C7009812B7BCE7006BD382 /* PBXTextBookmark */;
12C7FC4E12B7BCD3006BD382 /* PlistBookmark */ = 12C7FC4E12B7BCD3006BD382 /* PlistBookmark */;
12C8CB6812B5529D003DA1E4 /* PBXTextBookmark */ = 12C8CB6812B5529D003DA1E4 /* PBXTextBookmark */;
12CC44C812B3947B007E0C76 /* PBXTextBookmark */ = 12CC44C812B3947B007E0C76 /* PBXTextBookmark */;
12D2040912C890B700CE318D /* PBXTextBookmark */ = 12D2040912C890B700CE318D /* PBXTextBookmark */;
12D331A312C61E950093EEDB /* PBXTextBookmark */ = 12D331A312C61E950093EEDB /* PBXTextBookmark */;
12D331BE12C621050093EEDB /* PBXTextBookmark */ = 12D331BE12C621050093EEDB /* PBXTextBookmark */;
12D331CC12C622FE0093EEDB /* PBXTextBookmark */ = 12D331CC12C622FE0093EEDB /* PBXTextBookmark */;
12D3321612C63DF20093EEDB /* PBXTextBookmark */ = 12D3321612C63DF20093EEDB /* PBXTextBookmark */;
12D3324112C63EB70093EEDB /* PBXTextBookmark */ = 12D3324112C63EB70093EEDB /* PBXTextBookmark */;
12D3329E12C669090093EEDB /* PBXTextBookmark */ = 12D3329E12C669090093EEDB /* PBXTextBookmark */;
12D332A512C669090093EEDB /* PBXTextBookmark */ = 12D332A512C669090093EEDB /* PBXTextBookmark */;
12D332AA12C669090093EEDB /* PBXTextBookmark */ = 12D332AA12C669090093EEDB /* PBXTextBookmark */;
12D378BF12C7F8F8000F1C6A /* PBXTextBookmark */ = 12D378BF12C7F8F8000F1C6A /* PBXTextBookmark */;
12D378C012C7F8F8000F1C6A /* PBXTextBookmark */ = 12D378C012C7F8F8000F1C6A /* PBXTextBookmark */;
12D37D3212C7FAB8000F1C6A /* PBXTextBookmark */ = 12D37D3212C7FAB8000F1C6A /* PBXTextBookmark */;
12D6232512BA5F380032F367 /* PBXTextBookmark */ = 12D6232512BA5F380032F367 /* PBXTextBookmark */;
12D6232612BA5F380032F367 /* PBXTextBookmark */ = 12D6232612BA5F380032F367 /* PBXTextBookmark */;
12D64B9F12D8EA0A00A1FE07 /* PBXTextBookmark */ = 12D64B9F12D8EA0A00A1FE07 /* PBXTextBookmark */;
12D7EC0512C8C5EA0021414C /* PBXTextBookmark */ = 12D7EC0512C8C5EA0021414C /* PBXTextBookmark */;
12DA422F12C52DAC009281B3 /* PBXTextBookmark */ = 12DA422F12C52DAC009281B3 /* PBXTextBookmark */;
12DCD38E12BBA5D600A20635 /* PBXTextBookmark */ = 12DCD38E12BBA5D600A20635 /* PBXTextBookmark */;
12E17AE612B2BA9B00607D8E /* PBXTextBookmark */ = 12E17AE612B2BA9B00607D8E /* PBXTextBookmark */;
12E6FB5712BB458400C2A021 /* PBXTextBookmark */ = 12E6FB5712BB458400C2A021 /* PBXTextBookmark */;
12E8842612D8F833004C76C8 /* PBXTextBookmark */ = 12E8842612D8F833004C76C8 /* PBXTextBookmark */;
12EFD98A12B510D9002A1712 /* PBXTextBookmark */ = 12EFD98A12B510D9002A1712 /* PBXTextBookmark */;
12EFE2FD12B51ED5002A1712 /* PBXTextBookmark */ = 12EFE2FD12B51ED5002A1712 /* PBXTextBookmark */;
12EFE65A12B547A7002A1712 /* PBXTextBookmark */ = 12EFE65A12B547A7002A1712 /* PBXTextBookmark */;
12EFE95E12B549B6002A1712 /* PBXTextBookmark */ = 12EFE95E12B549B6002A1712 /* PBXTextBookmark */;
12F1147112C7A41D0064D7EE /* PBXTextBookmark */ = 12F1147112C7A41D0064D7EE /* PBXTextBookmark */;
12F4456612E5DC0800121851 /* PBXTextBookmark */ = 12F4456612E5DC0800121851 /* PBXTextBookmark */;
12F7FF0012BB9F3200949DEC /* PBXTextBookmark */ = 12F7FF0012BB9F3200949DEC /* PBXTextBookmark */;
12FC0E7512BB4B5200E9CFA8 /* PBXTextBookmark */ = 12FC0E7512BB4B5200E9CFA8 /* PBXTextBookmark */;
12FC0E9412BB65A800E9CFA8 /* PBXTextBookmark */ = 12FC0E9412BB65A800E9CFA8 /* PBXTextBookmark */;
sepNavVisRange = "{0, 235}";
};
};
1201BC5312D8D9E8004F43CD /* saio_internal.h */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.h;
name = saio_internal.h;
path = /Users/slice/Projects/Chameleons/chameleon/branches/slice/i386/libsaio/saio_internal.h;
sourceTree = "<absolute>";
};
12078D9812BA5AF400A1C013 /* fake_efi.c */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.c;
path = /Users/slice/Projects/fakesmc/Chameleon/RC5m/i386/libsaio/smbios_patcher.c;
sourceTree = "<absolute>";
};
123C5F8D12C8AB2C00DFC2D4 /* PBXTextBookmark */ = {
1223EF9012E5D63A0019EC66 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 12C2907A12C8962900984F8F /* gui.c */;
name = "gui.c: 1957";
rLen = 16;
rLoc = 52932;
fRef = 1223EF9112E5D63A0019EC66 /* stringTable.c */;
name = "stringTable.c: 199";
rLen = 14;
rLoc = 3922;
rType = 0;
vrLen = 882;
vrLoc = 52522;
vrLen = 594;
vrLoc = 3596;
};
123C5F8E12C8AB2C00DFC2D4 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 123C5F8F12C8AB2C00DFC2D4 /* edid.h */;
rLen = 13;
rLoc = 5294;
rType = 0;
};
123C5F8F12C8AB2C00DFC2D4 /* edid.h */ = {
1223EF9112E5D63A0019EC66 /* stringTable.c */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.h;
name = edid.h;
path = /Users/slice/Projects/Chameleons/chameleon/branches/slice/i386/modules/Resolution/edid.h;
lastKnownFileType = sourcecode.c.c;
name = stringTable.c;
path = /Users/slice/Projects/Chameleons/chameleon/branches/slice/i386/libsaio/stringTable.c;
sourceTree = "<absolute>";
};
123C5F9012C8AB2C00DFC2D4 /* PBXTextBookmark */ = {
12251A0412CE29EF00273689 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 123C5F9112C8AB2C00DFC2D4 /* edid.h */;
name = "edid.h: 170";
rLen = 13;
rLoc = 5294;
fRef = 12436D8F12C9E14000F47D26 /* gui.c */;
name = "gui.c: 405";
rLen = 0;
rLoc = 11927;
rType = 0;
vrLen = 691;
vrLoc = 4662;
vrLen = 505;
vrLoc = 11479;
};
123C5F9112C8AB2C00DFC2D4 /* edid.h */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.h;
name = edid.h;
path = /Users/slice/Projects/Chameleons/chameleon/branches/slice/i386/modules/Resolution/edid.h;
sourceTree = "<absolute>";
};
12436D8F12C9E14000F47D26 /* gui.c */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.c;
name = gui.c;
path = /Users/slice/Projects/Chameleons/chameleon/branches/slice/i386/modules/GUI/gui.c;
sourceTree = "<absolute>";
};
124C492812B8C915005AA276 /* Memory.c */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.c;
vrLen = 894;
vrLoc = 14871;
};
12783A8D12E5D3620095C1BA /* boot.c */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.c;
name = boot.c;
path = /Users/slice/Projects/Chameleons/chameleon/branches/slice/i386/boot2/boot.c;
sourceTree = "<absolute>";
};
12783A9B12E5D46B0095C1BA /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 12783A8D12E5D3620095C1BA /* boot.c */;
name = "boot.c: 373";
rLen = 14;
rLoc = 10989;
rType = 0;
vrLen = 879;
vrLoc = 10251;
};
1279BD7512BF4D8700612F62 /* ACPIPatcher.c */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.c;
vrLen = 858;
vrLoc = 0;
};
1288318612C3608100EA4CB2 /* ati.h */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.h;
name = ati.h;
path = /Users/slice/Projects/Chameleons/chameleon/branches/slice/i386/modules/GraphicsEnabler/ati.h;
sourceTree = "<absolute>";
};
128835DC12C366AB00EA4CB2 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 1288318612C3608100EA4CB2 /* ati.h */;
name = "ati.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 1032;
vrLoc = 0;
};
128A97B712C2336000600556 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 1279BD7512BF4D8700612F62 /* ACPIPatcher.c */;
path = /Users/slice/Projects/fakesmc/Chameleon/RC5m/i386/boot2/modules.c;
sourceTree = "<absolute>";
};
12A7376E12C854A600769789 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 12D37D3612C7FAB8000F1C6A /* GUI_module.c */;
name = "GUI_module.c: 503";
rLen = 38;
rLoc = 11043;
rType = 0;
vrLen = 698;
vrLoc = 9616;
};
12A7377212C854A600769789 /* vbe.c */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.c;
vrLen = 400;
vrLoc = 3028;
};
12AD499312C7ADAB0082CD39 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 12B4E87B12C7A7E6005BEB1E /* NVRAM.c */;
name = "NVRAM.c: 69";
rLen = 13;
rLoc = 1876;
rType = 0;
vrLen = 604;
vrLoc = 1490;
};
12AD499712C7ADAB0082CD39 /* modules.h */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.h;
path = /Users/slice/Projects/fakesmc/Chameleon/RC5m/i386/libsaio/smbios_patcher.h;
sourceTree = "<absolute>";
};
12B4E87B12C7A7E6005BEB1E /* NVRAM.c */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.c;
name = NVRAM.c;
path = /Users/slice/Projects/Chameleons/chameleon/branches/slice/i386/modules/NVRAM/NVRAM.c;
sourceTree = "<absolute>";
};
12B903AB12B2A00E00FE287A /* platform.h */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.h;
path = /Users/slice/Projects/Chameleons/chameleon/branches/slice/i386/modules/GraphicsEnabler/nvidia.c;
sourceTree = "<absolute>";
};
12BD8A5312D8EEE10051EE43 /* sys.c */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.c;
name = sys.c;
path = /Users/slice/Projects/Chameleons/chameleon/branches/slice/i386/libsaio/sys.c;
sourceTree = "<absolute>";
};
12BF14DA12B3CF8E00D798FE /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 1299A55A12B3C4DF007ED516 /* Symbols.c */;
vrLen = 784;
vrLoc = 20063;
};
12C2907A12C8962900984F8F /* gui.c */ = {
12C2B36812E5D8B600894A4E /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 12C2B36912E5D8B600894A4E /* NVRAM.c */;
name = "NVRAM.c: 284";
rLen = 0;
rLoc = 7929;
rType = 0;
vrLen = 466;
vrLoc = 7692;
};
12C2B36912E5D8B600894A4E /* NVRAM.c */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.c;
name = gui.c;
path = /Users/slice/Projects/Chameleons/chameleon/branches/slice/i386/modules/GUI/gui.c;
name = NVRAM.c;
path = /Users/slice/Projects/Chameleons/chameleon/branches/slice/i386/modules/NVRAM/NVRAM.c;
sourceTree = "<absolute>";
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {903, 26559}}";
sepNavSelRange = "{52932, 16}";
sepNavVisRange = "{52522, 882}";
};
};
12C5020712D8B82400EDCC4E /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 12D52EA712D7377E00A23AEF /* resume.c */;
name = "resume.c: 114";
rLen = 15;
rLoc = 2532;
rType = 0;
vrLen = 698;
vrLoc = 2183;
};
12C672F312C7C6BE0058B09B /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 12AD499712C7ADAB0082CD39 /* modules.h */;
path = /Users/slice/Projects/fakesmc/Chameleon/RC5m/i386/libsaio/pci_setup.c;
sourceTree = "<absolute>";
};
12D170AB12BF114400B78E60 /* cpu.c */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.c;
name = cpu.c;
path = /Users/slice/Projects/Chameleons/chameleon/branches/slice/i386/libsaio/cpu.c;
sourceTree = "<absolute>";
};
12D2040912C890B700CE318D /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 12D4921B12C88EE6009975E9 /* boot.c */;
name = "boot.c: 657";
rLen = 12;
rLoc = 20109;
rType = 0;
vrLen = 821;
vrLoc = 19575;
};
12D2040D12C890B700CE318D /* graphics.c */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.c;
vrLen = 633;
vrLoc = 1150;
};
12D331A712C61E950093EEDB /* boot.h */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.h;
name = boot.h;
path = /System/Library/Frameworks/System.framework/PrivateHeaders/pexpert/pexpert/i386/boot.h;
sourceTree = "<absolute>";
};
12D331BE12C621050093EEDB /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 12D331A712C61E950093EEDB /* boot.h */;
name = "boot.h: 97";
rLen = 12;
rLoc = 2853;
rType = 0;
vrLen = 922;
vrLoc = 2332;
};
12D331C012C621050093EEDB /* acpi_patcher.c */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.c;
name = acpi_patcher.c;
path = /Users/slice/Projects/Chameleons/chameleon/branches/slice/i386/modules/ACPIPatcher/acpi_patcher.c;
sourceTree = "<absolute>";
};
12D331CC12C622FE0093EEDB /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 12D331C012C621050093EEDB /* acpi_patcher.c */;
name = "acpi_patcher.c: 683";
rLen = 15;
rLoc = 18749;
rType = 0;
vrLen = 1074;
vrLoc = 18246;
};
12D331EE12C63CB30093EEDB /* ati5.c */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.c;
path = /Users/slice/Projects/Chameleons/chameleon/branches/slice/i386/modules/GraphicsEnabler/gma.h;
sourceTree = "<absolute>";
};
12D378B312C7F861000F1C6A /* modules.c */ = {
12D52EA712D7377E00A23AEF /* resume.c */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.c;
name = modules.c;
path = /Users/slice/Projects/Chameleons/chameleon/branches/slice/i386/boot2/modules.c;
name = resume.c;
path = /Users/slice/Projects/Chameleons/chameleon/branches/slice/i386/boot2/resume.c;
sourceTree = "<absolute>";
};
12D378BF12C7F8F8000F1C6A /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 12D378B312C7F861000F1C6A /* modules.c */;
name = "modules.c: 231";
rLen = 17;
rLoc = 5480;
rType = 0;
vrLen = 723;
vrLoc = 5087;
};
12D378C012C7F8F8000F1C6A /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 12D170AB12BF114400B78E60 /* cpu.c */;
name = "cpu.c: 13";
rLen = 0;
rLoc = 269;
rType = 0;
vrLen = 1002;
vrLoc = 2849;
};
12D378C312C7F8F8000F1C6A /* cpu.h */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.h;
name = cpu.h;
path = /Users/slice/Projects/Chameleons/chameleon/branches/slice/i386/libsaio/cpu.h;
sourceTree = "<absolute>";
};
12D37D3212C7FAB8000F1C6A /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 12D378C312C7F8F8000F1C6A /* cpu.h */;
name = "cpu.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 802;
vrLoc = 2605;
};
12D37D3612C7FAB8000F1C6A /* GUI_module.c */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.c;
name = GUI_module.c;
path = /Users/slice/Projects/Chameleons/chameleon/branches/slice/i386/modules/GUI/GUI_module.c;
sourceTree = "<absolute>";
};
12D4921B12C88EE6009975E9 /* boot.c */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.c.c;
name = boot.c;
path = /Users/slice/Projects/Chameleons/chameleon/branches/slice/i386/boot2/boot.c;
sourceTree = "<absolute>";
};
12D6232512BA5F380032F367 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 12078D9812BA5AF400A1C013 /* fake_efi.c */;
vrLen = 419;
vrLoc = 398;
};
12D64B9F12D8EA0A00A1FE07 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 1201BC5312D8D9E8004F43CD /* saio_internal.h */;
name = "saio_internal.h: 202";
rLen = 15;
rLoc = 9325;
rType = 0;
vrLen = 1864;
vrLoc = 8297;
};
12D7EC0512C8C5EA0021414C /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 123C5F9112C8AB2C00DFC2D4 /* edid.h */;
name = "edid.h: 170";
rLen = 13;
rLoc = 5294;
rType = 0;
vrLen = 691;
vrLoc = 4662;
};
12D928BE12C7C8EB00269820 /* Makefile */ = {
isa = PBXFileReference;
lastKnownFileType = sourcecode.make;
name = edid.c;
path = /Users/slice/Projects/Chameleons/chameleon/branches/slice/i386/modules/Resolution/edid.c;
sourceTree = "<absolute>";
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1048, 5200}}";
sepNavSelRange = "{6812, 0}";
sepNavVisRange = "{8696, 1093}";
};
};
12DCD38E12BBA5D600A20635 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
path = /Users/slice/Projects/fakesmc/Chameleon/RC5m/i386/libsaio/load.c;
sourceTree = "<absolute>";
};
12E8842612D8F833004C76C8 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 12BD8A5312D8EEE10051EE43 /* sys.c */;
name = "sys.c: 822";
rLen = 14;
rLoc = 21356;
rType = 0;
vrLen = 763;
vrLoc = 20973;
};
12EFD98A12B510D9002A1712 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 129F6EF012B50BB6005A820E /* modules.c */;
vrLen = 991;
vrLoc = 0;
};
12F4456612E5DC0800121851 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 12F4456712E5DC0800121851 /* NVRAM.c */;
name = "NVRAM.c: 111";
rLen = 0;
rLoc = 2986;
rType = 0;
vrLen = 799;
vrLoc = 2442;
};
12F4456712E5DC0800121851 /* NVRAM.c */ = {
isa = PBXFileReference;
name = NVRAM.c;
path = /Users/slice/Projects/Chameleons/chameleon/branches/slice/i386/modules/NVRAM/NVRAM.c;
sourceTree = "<absolute>";
};
12F7FF0012BB9F3200949DEC /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 12FC25E812BB825300E9CFA8 /* drivers.c */;
name = 915resolution.c;
path = /Users/slice/Projects/Chameleons/chameleon/branches/slice/i386/modules/Resolution/915resolution.c;
sourceTree = "<absolute>";
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1048, 11999}}";
sepNavSelRange = "{5145, 36}";
sepNavVisRange = "{4459, 1188}";
};
};
12FE987912C7E281001B1702 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
branches/slice/ChamMek/ChamMek.xcodeproj/slice.mode1v3
274274
275275
276276
277
277
278278
279279
280280
281
281
282282
283283
284284
......
290290
291291
292292
293
293
294294
295295
296296
......
299299
300300
301301
302
302
303303
304304
305305
......
317317
318318
319319
320
320
321321
322322
323323
......
325325
326326
327327
328
328
329329
330330
331331
332
332
333333
334334
335335
......
385385
386386
387387
388
389388
390389
391
392
393390
394391
395392
......
398395
399396
400397
401
402398
403399
404400
405401
406402
407403
408
409
410
411
412404
413
414405
415
416
406
407
408
409
410
411
412
413
417414
418415
419416
......
425422
426423
427424
428
425
429426
430
427
431428
432429
433430
434431
435
432
436433
437434
438435
......
445442
446443
447444
448
445
449446
450
447
451448
452449
453450
454451
455
452
456453
457454
458455
459
456
460457
461458
462459
......
471468
472469
473470
474
471
475472
476
473
477474
478475
479476
......
611608
612609
613610
614
615611
616612
617613
618614
619
615
620616
621617
622618
......
693689
694690
695691
696
692
697693
698694
699695
......
815811
816812
817813
818
814
819815
820
821
822
823
824
816
817
818
819
820
825821
826822
827823
......
853849
854850
855851
856
852
857853
858854
859855
......
862858
863859
864860
865
861
866862
867863
868864
......
888884
889885
890886
891
887
892888
893889
894890
......
911907
912908
913909
914
915
910
911
916912
917913
918914
919915
920
916
921917
922918
923919
<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
<array>
<array>
<integer>27</integer>
<integer>0</integer>
</array>
</array>
<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
<string>{{0, 0}, {186, 635}}</string>
<string>{{0, 0}, {186, 636}}</string>
</dict>
<key>PBXTopSmartGroupGIDs</key>
<array/>
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 0}, {203, 653}}</string>
<string>{{0, 0}, {203, 654}}</string>
<key>GroupTreeTableConfiguration</key>
<array>
<string>SCMStatusColumn</string>
<real>164</real>
</array>
<key>RubberWindowFrame</key>
<string>172 181 1172 694 0 0 1440 878 </string>
<string>370 183 952 695 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXSmartGroupTreeModule</string>
<key>PBXProjectModuleGUID</key>
<string>1CE0B20306471E060097A5F4</string>
<key>PBXProjectModuleLabel</key>
<string>edid.h</string>
<string>NVRAM.c</string>
<key>PBXSplitModuleInNavigatorKey</key>
<dict>
<key>Split0</key>
<key>PBXProjectModuleGUID</key>
<string>1CE0B20406471E060097A5F4</string>
<key>PBXProjectModuleLabel</key>
<string>edid.h</string>
<string>NVRAM.c</string>
<key>_historyCapacity</key>
<integer>0</integer>
<key>bookmark</key>
<string>123C5F9012C8AB2C00DFC2D4</string>
<string>12F4456612E5DC0800121851</string>
<key>history</key>
<array>
<string>12121ED112B261EA00207E55</string>
<string>128A97B812C2336000600556</string>
<string>128A9AF412C233CE00600556</string>
<string>1288318212C3608100EA4CB2</string>
<string>128835DC12C366AB00EA4CB2</string>
<string>12DA422F12C52DAC009281B3</string>
<string>12D331A312C61E950093EEDB</string>
<string>12D331BE12C621050093EEDB</string>
<string>12D331CC12C622FE0093EEDB</string>
<string>12D3321612C63DF20093EEDB</string>
<string>12D3324112C63EB70093EEDB</string>
<string>12D3329E12C669090093EEDB</string>
<string>1265C97612C7554E0050D02E</string>
<string>1265C97712C7554E0050D02E</string>
<string>12F1147112C7A41D0064D7EE</string>
<string>12AD499312C7ADAB0082CD39</string>
<string>12C672F312C7C6BE0058B09B</string>
<string>12C672F512C7C6BE0058B09B</string>
<string>12FE983612C7CEEB001B1702</string>
<string>12FE984A12C7E11C001B1702</string>
<string>12FE987912C7E281001B1702</string>
<string>12FE987A12C7E281001B1702</string>
<string>12D378BF12C7F8F8000F1C6A</string>
<string>12D378C012C7F8F8000F1C6A</string>
<string>12D37D3212C7FAB8000F1C6A</string>
<string>12A7376E12C854A600769789</string>
<string>12C246F412C87C7C007E8339</string>
<string>12D2040912C890B700CE318D</string>
<string>12C2907612C8962900984F8F</string>
<string>123C5F8D12C8AB2C00DFC2D4</string>
<string>123C5F8E12C8AB2C00DFC2D4</string>
<string>12D7EC0512C8C5EA0021414C</string>
<string>12251A0412CE29EF00273689</string>
<string>12C5020712D8B82400EDCC4E</string>
<string>12D64B9F12D8EA0A00A1FE07</string>
<string>12E8842612D8F833004C76C8</string>
<string>12783A9B12E5D46B0095C1BA</string>
<string>1223EF9012E5D63A0019EC66</string>
<string>12C2B36812E5D8B600894A4E</string>
</array>
</dict>
<key>SplitCount</key>
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 0}, {964, 379}}</string>
<string>{{0, 0}, {744, 372}}</string>
<key>RubberWindowFrame</key>
<string>172 181 1172 694 0 0 1440 878 </string>
<string>370 183 952 695 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Proportion</key>
<string>379pt</string>
<string>372pt</string>
</dict>
<dict>
<key>ContentConfiguration</key>
<key>GeometryConfiguration</key>
<dict>
<key>Frame</key>
<string>{{0, 384}, {964, 269}}</string>
<string>{{0, 377}, {744, 277}}</string>
<key>RubberWindowFrame</key>
<string>172 181 1172 694 0 0 1440 878 </string>
<string>370 183 952 695 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>XCDetailModule</string>
<key>Proportion</key>
<string>269pt</string>
<string>277pt</string>
</dict>
</array>
<key>Proportion</key>
<string>964pt</string>
<string>744pt</string>
</dict>
</array>
<key>Name</key>
</array>
<key>TableOfContents</key>
<array>
<string>123C5F9212C8AB2C00DFC2D4</string>
<string>12F4456812E5DC0800121851</string>
<string>1CE0B1FE06471DED0097A5F4</string>
<string>123C5F9312C8AB2C00DFC2D4</string>
<string>12F4456912E5DC0800121851</string>
<string>1CE0B20306471E060097A5F4</string>
<string>1CE0B20506471E060097A5F4</string>
</array>
<integer>5</integer>
<key>WindowOrderList</key>
<array>
<string>1C530D57069F1CE1000CFCEE</string>
<string>12C26D3512B0DDFC00AF7F4B</string>
<string>/Users/slice/Projects/Chameleons/chameleon/branches/slice/ChamMek/ChamMek.xcodeproj</string>
</array>
<key>WindowString</key>
<string>172 181 1172 694 0 0 1440 878 </string>
<string>370 183 952 695 0 0 1440 878 </string>
<key>WindowToolsV3</key>
<array>
<dict>
<key>TableOfContents</key>
<array>
<string>12C26D3512B0DDFC00AF7F4B</string>
<string>123C5F8012C8AAFE00DFC2D4</string>
<string>12F4456A12E5DC0800121851</string>
<string>1CD0528F0623707200166675</string>
<string>XCMainBuildResultsModuleGUID</string>
</array>
<key>TableOfContents</key>
<array>
<string>1CD10A99069EF8BA00B06720</string>
<string>12FE988012C7E281001B1702</string>
<string>1278362312E5D3540095C1BA</string>
<string>1C162984064C10D400B95A72</string>
<string>12FE988112C7E281001B1702</string>
<string>12FE988212C7E281001B1702</string>
<string>12FE988312C7E281001B1702</string>
<string>12FE988412C7E281001B1702</string>
<string>12FE988512C7E281001B1702</string>
<string>1278362412E5D3540095C1BA</string>
<string>1278362512E5D3540095C1BA</string>
<string>1278362612E5D3540095C1BA</string>
<string>1278362712E5D3540095C1BA</string>
<string>1278362812E5D3540095C1BA</string>
</array>
<key>ToolbarConfiguration</key>
<string>xcode.toolbar.config.debugV3</string>
<key>PBXProjectModuleGUID</key>
<string>1CDD528C0622207200134675</string>
<key>PBXProjectModuleLabel</key>
<string>915resolution.c</string>
<string>stringTable.c</string>
<key>StatusBarVisibility</key>
<true/>
</dict>
<key>Frame</key>
<string>{{0, 0}, {1109, 510}}</string>
<key>RubberWindowFrame</key>
<string>316 62 1109 816 0 0 1440 878 </string>
<string>117 62 1109 816 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXNavigatorGroup</string>
<key>Frame</key>
<string>{{0, 515}, {1109, 260}}</string>
<key>RubberWindowFrame</key>
<string>316 62 1109 816 0 0 1440 878 </string>
<string>117 62 1109 816 0 0 1440 878 </string>
</dict>
<key>Module</key>
<string>PBXProjectFindModule</string>
<key>TableOfContents</key>
<array>
<string>1C530D57069F1CE1000CFCEE</string>
<string>123C5F8912C8AAFE00DFC2D4</string>
<string>123C5F8A12C8AAFE00DFC2D4</string>
<string>1223EF8E12E5D6370019EC66</string>
<string>1223EF8F12E5D6370019EC66</string>
<string>1CDD528C0622207200134675</string>
<string>1CD0528E0623707200166675</string>
</array>
<key>WindowString</key>
<string>316 62 1109 816 0 0 1440 878 </string>
<string>117 62 1109 816 0 0 1440 878 </string>
<key>WindowToolGUID</key>
<string>1C530D57069F1CE1000CFCEE</string>
<key>WindowToolIsVisible</key>

Archive Download the corresponding diff file

Revision: 708