Index: branches/slice/i386/libsaio/sys.c =================================================================== --- branches/slice/i386/libsaio/sys.c (revision 707) +++ branches/slice/i386/libsaio/sys.c (revision 708) @@ -806,19 +806,23 @@ #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); } Index: branches/slice/i386/libsaio/platform.c =================================================================== --- branches/slice/i386/libsaio/platform.c (revision 707) +++ branches/slice/i386/libsaio/platform.c (revision 708) @@ -11,6 +11,7 @@ #include "platform.h" #include "cpu.h" #include "modules.h" +#include "efi.h" #ifndef DEBUG_PLATFORM #define DEBUG_PLATFORM 0 @@ -22,9 +23,8 @@ #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) { @@ -49,6 +49,10 @@ 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 ... Index: branches/slice/i386/libsaio/cpu.c =================================================================== --- branches/slice/i386/libsaio/cpu.c (revision 707) +++ branches/slice/i386/libsaio/cpu.c (revision 708) @@ -14,7 +14,7 @@ #endif #if DEBUG_CPU -#define DBG(x...) verbose(x) +#define DBG(x...) printf(x) #else #define DBG(x...) msglog(x) #endif @@ -97,12 +97,25 @@ { PlatformInfo_t *p = Platform; int i = 0; + uint8_t turbo; uint64_t tscFrequency, fsbFrequency, cpuFrequency; uint64_t msr; //, flex_ratio; uint8_t maxcoef, 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++) { @@ -177,7 +190,34 @@ 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); @@ -201,6 +241,9 @@ (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); @@ -260,13 +303,15 @@ 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; @@ -478,7 +523,7 @@ */ - p->CPU.MaxCoef = maxcoef; + p->CPU.MaxCoef = turbo; p->CPU.MaxDiv = maxdiv; p->CPU.MinCoef = mindiv; p->CPU.CurrCoef = currcoef; @@ -489,7 +534,7 @@ 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); Index: branches/slice/i386/libsaio/cpu.h =================================================================== --- branches/slice/i386/libsaio/cpu.h (revision 707) +++ branches/slice/i386/libsaio/cpu.h (revision 708) @@ -17,14 +17,110 @@ 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" +#define CPUID_VID_INTEL "GenuineIntel" +#define CPUID_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: + */ +#define CPUID_FEATURE_FPU _Bit(0) /* Floating point unit on-chip */ +#define CPUID_FEATURE_VME _Bit(1) /* Virtual Mode Extension */ +#define CPUID_FEATURE_DE _Bit(2) /* Debugging Extension */ +#define CPUID_FEATURE_PSE _Bit(3) /* Page Size Extension */ +#define CPUID_FEATURE_TSC _Bit(4) /* Time Stamp Counter */ +#define CPUID_FEATURE_MSR _Bit(5) /* Model Specific Registers */ +#define CPUID_FEATURE_PAE _Bit(6) /* Physical Address Extension */ +#define CPUID_FEATURE_MCE _Bit(7) /* Machine Check Exception */ +#define CPUID_FEATURE_CX8 _Bit(8) /* CMPXCHG8B */ +#define CPUID_FEATURE_APIC _Bit(9) /* On-chip APIC */ +#define CPUID_FEATURE_SEP _Bit(11) /* Fast System Call */ +#define CPUID_FEATURE_MTRR _Bit(12) /* Memory Type Range Register */ +#define CPUID_FEATURE_PGE _Bit(13) /* Page Global Enable */ +#define CPUID_FEATURE_MCA _Bit(14) /* Machine Check Architecture */ +#define CPUID_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 */ + +#define CPUID_CACHE_SIZE 16 /* 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_ID 0x0017 #define MSR_P4_EBC_FREQUENCY_ID 0x002C +#define MSR_CORE_THREAD_COUNT 0x0035 #define MSR_IA32_PERF_STATUS 0x0198 #define MSR_IA32_PERF_CONTROL 0x0199 #define MSR_IA32_EXT_CONFIG 0x00EE @@ -75,6 +171,110 @@ #define CALIBRATE_TIME_MSEC 30 /* 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 char value; /* 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 { + char cpuid_vendor[16]; + char cpuid_brand_string[48]; + const char *cpuid_model_string; + + cpu_type_t cpuid_type; /* this is *not* a cpu_type_t in our */ + uint8_t cpuid_family; + uint8_t cpuid_model; + uint8_t cpuid_extmodel; + uint8_t cpuid_extfamily; + uint8_t cpuid_stepping; + uint64_t cpuid_features; + uint64_t cpuid_extfeatures; + uint32_t cpuid_signature; + uint8_t cpuid_brand; + + uint32_t cache_size[LCACHE_MAX]; + uint32_t cache_linesize; + + uint8_t cache_info[64]; /* list of cache descriptors */ + + uint32_t cpuid_cores_per_package; + uint32_t cpuid_logical_per_package; + uint32_t cache_sharing[LCACHE_MAX]; + uint32_t cache_partitions[LCACHE_MAX]; + + cpu_type_t cpuid_cpu_type; /* */ + cpu_subtype_t cpuid_cpu_subtype; /* */ + + /* Monitor/mwait Leaf: */ + uint32_t cpuid_mwait_linesize_min; + uint32_t cpuid_mwait_linesize_max; + uint32_t cpuid_mwait_extensions; + uint32_t cpuid_mwait_sub_Cstates; + + /* Thermal and Power Management Leaf: */ + boolean_t cpuid_thermal_sensor; + boolean_t cpuid_thermal_dynamic_acceleration; + uint32_t cpuid_thermal_thresholds; + boolean_t cpuid_thermal_ACNT_MCNT; + + /* Architectural Performance Monitoring Leaf: */ + uint8_t cpuid_arch_perf_version; + uint8_t cpuid_arch_perf_number; + uint8_t cpuid_arch_perf_width; + uint8_t cpuid_arch_perf_events_number; + uint32_t cpuid_arch_perf_events; + uint8_t cpuid_arch_perf_fixed_number; + uint8_t cpuid_arch_perf_fixed_width; + + /* Cache details: */ + uint32_t cpuid_cache_linesize; + uint32_t cpuid_cache_L2_associativity; + uint32_t cpuid_cache_size; + + /* Virtual and physical address aize: */ + uint32_t cpuid_address_bits_physical; + uint32_t cpuid_address_bits_virtual; + + uint32_t cpuid_microcode_version; + + /* Numbers of tlbs per processor [i|d, small|large, level0|level1] */ + uint32_t cpuid_tlb[2][2][2]; +#define TLB_INST 0 +#define TLB_DATA 1 +#define TLB_SMALL 0 +#define TLB_LARGE 1 + uint32_t cpuid_stlb; + + uint32_t core_count; + uint32_t thread_count; + + /* Max leaf ids available from CPUID */ + uint32_t cpuid_max_basic; + uint32_t cpuid_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; @@ -182,4 +382,170 @@ 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 */ Index: branches/slice/i386/libsaio/fake_efi.c =================================================================== --- branches/slice/i386/libsaio/fake_efi.c (revision 707) +++ branches/slice/i386/libsaio/fake_efi.c (revision 708) @@ -24,6 +24,7 @@ #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); @@ -750,6 +751,9 @@ //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); @@ -800,10 +804,11 @@ 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 } Index: branches/slice/i386/boot2/boot.c =================================================================== --- branches/slice/i386/boot2/boot.c (revision 707) +++ branches/slice/i386/boot2/boot.c (revision 708) @@ -74,6 +74,7 @@ char gMacOSVersion[8]; void *gRootPCIDev; void *gPlatform; +void *gBootOrder; void *gSMBIOS; int gDualLink; #ifndef OPTION_ROM @@ -374,9 +375,9 @@ #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 Index: branches/slice/i386/boot2/modules.c =================================================================== --- branches/slice/i386/boot2/modules.c (revision 707) +++ branches/slice/i386/boot2/modules.c (revision 708) @@ -119,6 +119,9 @@ 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); @@ -163,7 +166,7 @@ if(fh < 0) { DBG("Unable to locate module %s\n", modString); - getc(); + //getc(); return 0; } Index: branches/slice/i386/boot2/boot.h =================================================================== --- branches/slice/i386/boot2/boot.h (revision 707) +++ branches/slice/i386/boot2/boot.h (revision 708) @@ -36,6 +36,7 @@ extern int bvCount; extern void *gRootPCIDev; extern void* gPlatform; +extern void* gBootOrder; /* @@ -68,6 +69,8 @@ /* 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 */ Index: branches/slice/i386/modules/NVRAM/NVRAM.c =================================================================== --- branches/slice/i386/modules/NVRAM/NVRAM.c (revision 707) +++ branches/slice/i386/modules/NVRAM/NVRAM.c (revision 708) @@ -11,13 +11,14 @@ #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 @@ -81,9 +82,9 @@ char* bnName; EFI_GUID* ret = 0; uint16_t bootOptionNumber = 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"); @@ -92,14 +93,29 @@ // bool UseNVRAM = FALSE; bool ClearNVRAM = FALSE; const char* buff; + TagPtr dictionary; 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(); @@ -157,7 +173,7 @@ */ // - int i,j; + for (i=0; i<32; i++) { DBG("NVRAM get a name %s\n", var[i].Name); if (var[i].Name[0]) { @@ -172,10 +188,13 @@ 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"; @@ -205,31 +224,37 @@ 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 @@ -248,16 +273,27 @@ 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 fsize) { + if ((int)(nvr - onvr) > fsize) { + DBG("end of buffer\n"); break; } } - + var[i].Name[0]=0; + var[i].Name[1]=0; + return 0; } \ No newline at end of file Index: branches/slice/i386/modules/ATI5000Enabler/ati5.c =================================================================== --- branches/slice/i386/modules/ATI5000Enabler/ati5.c (revision 707) +++ branches/slice/i386/modules/ATI5000Enabler/ati5.c (revision 708) @@ -16,6 +16,7 @@ #include "ati_reg.h" #include "ati5.h" +#define OFFSET_TO_GET_ATOMBIOS_STRINGS_START 0x6e #define Reg32(reg) (*(volatile uint32_t *)(card->mmio + reg)) #define RegRead32(reg) (Reg32(reg)) #define RegWrite32(reg, value) (Reg32(reg) = value) @@ -106,6 +107,8 @@ {"Langur", 3}, {"Megalodon", 3}, {"Motmot", 2}, + {"Nomascus", 5}, + {"Orangutan", 2}, {"Peregrine", 2}, {"Quail", 3}, {"Raven", 3}, @@ -139,6 +142,8 @@ kLangur, kMegalodon, kMotmot, + kNomascus, + kOrangutan, kPeregrine, kQuail, kRaven, @@ -343,7 +348,9 @@ /* 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 }, @@ -361,6 +368,7 @@ { 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 }, @@ -503,6 +511,7 @@ 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); @@ -535,6 +544,7 @@ // {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 }, @@ -645,6 +655,26 @@ 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; @@ -1041,7 +1071,7 @@ 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)) Index: branches/slice/i386/modules/ATI5000Enabler/ati5.h =================================================================== --- branches/slice/i386/modules/ATI5000Enabler/ati5.h (revision 707) +++ branches/slice/i386/modules/ATI5000Enabler/ati5.h (revision 708) @@ -1,7 +1,7 @@ /* * 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 Index: branches/slice/revision =================================================================== --- branches/slice/revision (revision 707) +++ branches/slice/revision (revision 708) @@ -1 +1 @@ -676:691 \ No newline at end of file +676:696 \ No newline at end of file Index: branches/slice/ChamMek/ChamMek.xcodeproj/slice.pbxuser =================================================================== --- branches/slice/ChamMek/ChamMek.xcodeproj/slice.pbxuser (revision 707) +++ branches/slice/ChamMek/ChamMek.xcodeproj/slice.pbxuser (revision 708) @@ -12,6 +12,20 @@ 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; @@ -31,7 +45,7 @@ PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID; PBXFileTableDataSourceColumnWidthsKey = ( 20, - 725, + 505, 20, 48, 43, @@ -76,8 +90,8 @@ PBXSymbolsDataSource_ReferenceNameID, ); }; - PBXPerProjectTemplateStateSaveDate = 315140248; - PBXWorkspaceStateSaveDate = 315140248; + PBXPerProjectTemplateStateSaveDate = 317053851; + PBXWorkspaceStateSaveDate = 317053851; }; perUserProjectItems = { 120DFB1712BA3A4D00C7EAC8 /* PBXTextBookmark */ = 120DFB1712BA3A4D00C7EAC8 /* PBXTextBookmark */; @@ -86,9 +100,8 @@ 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 */; @@ -99,17 +112,15 @@ 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 */; @@ -124,6 +135,8 @@ 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 */; @@ -133,29 +146,27 @@ 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 */; @@ -175,6 +186,13 @@ 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 = ""; + }; 12078D9812BA5AF400A1C013 /* fake_efi.c */ = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; @@ -284,46 +302,47 @@ path = /Users/slice/Projects/fakesmc/Chameleon/RC5m/i386/libsaio/smbios_patcher.c; sourceTree = ""; }; - 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 = ""; }; - 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 = ""; }; + 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 = ""; + }; 124C492812B8C915005AA276 /* Memory.c */ = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.c; @@ -480,6 +499,23 @@ 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 = ""; + }; + 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; @@ -497,23 +533,6 @@ 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 = ""; - }; - 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 */; @@ -599,16 +618,6 @@ path = /Users/slice/Projects/fakesmc/Chameleon/RC5m/i386/boot2/modules.c; sourceTree = ""; }; - 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; @@ -650,16 +659,6 @@ 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; @@ -731,13 +730,6 @@ path = /Users/slice/Projects/fakesmc/Chameleon/RC5m/i386/libsaio/smbios_patcher.h; sourceTree = ""; }; - 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 = ""; - }; 12B903AB12B2A00E00FE287A /* platform.h */ = { isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; @@ -875,6 +867,13 @@ path = /Users/slice/Projects/Chameleons/chameleon/branches/slice/i386/modules/GraphicsEnabler/nvidia.c; sourceTree = ""; }; + 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 = ""; + }; 12BF14DA12B3CF8E00D798FE /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 1299A55A12B3C4DF007ED516 /* Symbols.c */; @@ -953,18 +952,33 @@ 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 = ""; - 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 */; @@ -1106,23 +1120,6 @@ path = /Users/slice/Projects/fakesmc/Chameleon/RC5m/i386/libsaio/pci_setup.c; sourceTree = ""; }; - 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 = ""; - }; - 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; @@ -1147,40 +1144,6 @@ 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 = ""; - }; - 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 = ""; - }; - 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; @@ -1273,64 +1236,13 @@ path = /Users/slice/Projects/Chameleons/chameleon/branches/slice/i386/modules/GraphicsEnabler/gma.h; sourceTree = ""; }; - 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 = ""; }; - 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 = ""; - }; - 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 = ""; - }; - 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 = ""; - }; 12D6232512BA5F380032F367 /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 12078D9812BA5AF400A1C013 /* fake_efi.c */; @@ -1351,6 +1263,26 @@ 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; @@ -1381,11 +1313,6 @@ name = edid.c; path = /Users/slice/Projects/Chameleons/chameleon/branches/slice/i386/modules/Resolution/edid.c; sourceTree = ""; - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1048, 5200}}"; - sepNavSelRange = "{6812, 0}"; - sepNavVisRange = "{8696, 1093}"; - }; }; 12DCD38E12BBA5D600A20635 /* PBXTextBookmark */ = { isa = PBXTextBookmark; @@ -1438,6 +1365,16 @@ path = /Users/slice/Projects/fakesmc/Chameleon/RC5m/i386/libsaio/load.c; sourceTree = ""; }; + 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 */; @@ -1523,6 +1460,22 @@ 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 = ""; + }; 12F7FF0012BB9F3200949DEC /* PBXTextBookmark */ = { isa = PBXTextBookmark; fRef = 12FC25E812BB825300E9CFA8 /* drivers.c */; @@ -1607,11 +1560,6 @@ name = 915resolution.c; path = /Users/slice/Projects/Chameleons/chameleon/branches/slice/i386/modules/Resolution/915resolution.c; sourceTree = ""; - uiCtxt = { - sepNavIntBoundsRect = "{{0, 0}, {1048, 11999}}"; - sepNavSelRange = "{5145, 36}"; - sepNavVisRange = "{4459, 1188}"; - }; }; 12FE987912C7E281001B1702 /* PBXTextBookmark */ = { isa = PBXTextBookmark; Index: branches/slice/ChamMek/ChamMek.xcodeproj/slice.mode1v3 =================================================================== --- branches/slice/ChamMek/ChamMek.xcodeproj/slice.mode1v3 (revision 707) +++ branches/slice/ChamMek/ChamMek.xcodeproj/slice.mode1v3 (revision 708) @@ -274,11 +274,11 @@ PBXSmartGroupTreeModuleOutlineStateSelectionKey - 27 + 0 PBXSmartGroupTreeModuleOutlineStateVisibleRectKey - {{0, 0}, {186, 635}} + {{0, 0}, {186, 636}} PBXTopSmartGroupGIDs @@ -290,7 +290,7 @@ GeometryConfiguration Frame - {{0, 0}, {203, 653}} + {{0, 0}, {203, 654}} GroupTreeTableConfiguration SCMStatusColumn @@ -299,7 +299,7 @@ 164 RubberWindowFrame - 172 181 1172 694 0 0 1440 878 + 370 183 952 695 0 0 1440 878 Module PBXSmartGroupTreeModule @@ -317,7 +317,7 @@ PBXProjectModuleGUID 1CE0B20306471E060097A5F4 PBXProjectModuleLabel - edid.h + NVRAM.c PBXSplitModuleInNavigatorKey Split0 @@ -325,11 +325,11 @@ PBXProjectModuleGUID 1CE0B20406471E060097A5F4 PBXProjectModuleLabel - edid.h + NVRAM.c _historyCapacity 0 bookmark - 123C5F9012C8AB2C00DFC2D4 + 12F4456612E5DC0800121851 history 12121ED112B261EA00207E55 @@ -385,11 +385,8 @@ 128A97B812C2336000600556 128A9AF412C233CE00600556 1288318212C3608100EA4CB2 - 128835DC12C366AB00EA4CB2 12DA422F12C52DAC009281B3 12D331A312C61E950093EEDB - 12D331BE12C621050093EEDB - 12D331CC12C622FE0093EEDB 12D3321612C63DF20093EEDB 12D3324112C63EB70093EEDB 12D3329E12C669090093EEDB @@ -398,22 +395,22 @@ 1265C97612C7554E0050D02E 1265C97712C7554E0050D02E 12F1147112C7A41D0064D7EE - 12AD499312C7ADAB0082CD39 12C672F312C7C6BE0058B09B 12C672F512C7C6BE0058B09B 12FE983612C7CEEB001B1702 12FE984A12C7E11C001B1702 12FE987912C7E281001B1702 12FE987A12C7E281001B1702 - 12D378BF12C7F8F8000F1C6A - 12D378C012C7F8F8000F1C6A - 12D37D3212C7FAB8000F1C6A - 12A7376E12C854A600769789 12C246F412C87C7C007E8339 - 12D2040912C890B700CE318D 12C2907612C8962900984F8F - 123C5F8D12C8AB2C00DFC2D4 - 123C5F8E12C8AB2C00DFC2D4 + 12D7EC0512C8C5EA0021414C + 12251A0412CE29EF00273689 + 12C5020712D8B82400EDCC4E + 12D64B9F12D8EA0A00A1FE07 + 12E8842612D8F833004C76C8 + 12783A9B12E5D46B0095C1BA + 1223EF9012E5D63A0019EC66 + 12C2B36812E5D8B600894A4E SplitCount @@ -425,14 +422,14 @@ GeometryConfiguration Frame - {{0, 0}, {964, 379}} + {{0, 0}, {744, 372}} RubberWindowFrame - 172 181 1172 694 0 0 1440 878 + 370 183 952 695 0 0 1440 878 Module PBXNavigatorGroup Proportion - 379pt + 372pt ContentConfiguration @@ -445,18 +442,18 @@ GeometryConfiguration Frame - {{0, 384}, {964, 269}} + {{0, 377}, {744, 277}} RubberWindowFrame - 172 181 1172 694 0 0 1440 878 + 370 183 952 695 0 0 1440 878 Module XCDetailModule Proportion - 269pt + 277pt Proportion - 964pt + 744pt Name @@ -471,9 +468,9 @@ TableOfContents - 123C5F9212C8AB2C00DFC2D4 + 12F4456812E5DC0800121851 1CE0B1FE06471DED0097A5F4 - 123C5F9312C8AB2C00DFC2D4 + 12F4456912E5DC0800121851 1CE0B20306471E060097A5F4 1CE0B20506471E060097A5F4 @@ -611,12 +608,11 @@ 5 WindowOrderList - 1C530D57069F1CE1000CFCEE 12C26D3512B0DDFC00AF7F4B /Users/slice/Projects/Chameleons/chameleon/branches/slice/ChamMek/ChamMek.xcodeproj WindowString - 172 181 1172 694 0 0 1440 878 + 370 183 952 695 0 0 1440 878 WindowToolsV3 @@ -693,7 +689,7 @@ TableOfContents 12C26D3512B0DDFC00AF7F4B - 123C5F8012C8AAFE00DFC2D4 + 12F4456A12E5DC0800121851 1CD0528F0623707200166675 XCMainBuildResultsModuleGUID @@ -815,13 +811,13 @@ TableOfContents 1CD10A99069EF8BA00B06720 - 12FE988012C7E281001B1702 + 1278362312E5D3540095C1BA 1C162984064C10D400B95A72 - 12FE988112C7E281001B1702 - 12FE988212C7E281001B1702 - 12FE988312C7E281001B1702 - 12FE988412C7E281001B1702 - 12FE988512C7E281001B1702 + 1278362412E5D3540095C1BA + 1278362512E5D3540095C1BA + 1278362612E5D3540095C1BA + 1278362712E5D3540095C1BA + 1278362812E5D3540095C1BA ToolbarConfiguration xcode.toolbar.config.debugV3 @@ -853,7 +849,7 @@ PBXProjectModuleGUID 1CDD528C0622207200134675 PBXProjectModuleLabel - 915resolution.c + stringTable.c StatusBarVisibility @@ -862,7 +858,7 @@ Frame {{0, 0}, {1109, 510}} RubberWindowFrame - 316 62 1109 816 0 0 1440 878 + 117 62 1109 816 0 0 1440 878 Module PBXNavigatorGroup @@ -888,7 +884,7 @@ Frame {{0, 515}, {1109, 260}} RubberWindowFrame - 316 62 1109 816 0 0 1440 878 + 117 62 1109 816 0 0 1440 878 Module PBXProjectFindModule @@ -911,13 +907,13 @@ TableOfContents 1C530D57069F1CE1000CFCEE - 123C5F8912C8AAFE00DFC2D4 - 123C5F8A12C8AAFE00DFC2D4 + 1223EF8E12E5D6370019EC66 + 1223EF8F12E5D6370019EC66 1CDD528C0622207200134675 1CD0528E0623707200166675 WindowString - 316 62 1109 816 0 0 1440 878 + 117 62 1109 816 0 0 1440 878 WindowToolGUID 1C530D57069F1CE1000CFCEE WindowToolIsVisible