Index: branches/cparm/doc/ModuleHelp.txt =================================================================== --- branches/cparm/doc/ModuleHelp.txt (revision 1141) +++ branches/cparm/doc/ModuleHelp.txt (revision 1142) @@ -103,17 +103,24 @@ EnableAcpiModule=Yes|No Fully enable/disable the Acpipatcher module (Enabled by default, if the module is installed) - RestartFix=Yes|No Enable/Disable internal restart fix patch(Enabled by default, only available for intel platform). - + RestartFix=Yes|No Enable/Disable internal restart fix patch (Enabled by default, only available for intel platform). + + ResetType=0|1 0 : PCI reset (Default) + 1 : keyboard reset + EnableSpeedStep=Yes|No Enable/Disable GenerateCStates & GeneratePStates (Disabled by default). GeneratePStates=Yes|No Enable/Disable Generate P-states SSDT table (Disabled by default). GenerateCStates=Yes|No Enable/Disable Generate C-states SSDT table (Disabled by default). EnableC4State=Yes|No Enable C4 state in C-states SSDT table, GenerateCStates=Yes is needed (Disabled by default). - P-States= P-States fine tuning method, see usage below(GeneratePStates=Yes is needed). + IntelFADTSpec=Yes|No Enable/Disable Intel recommendations for the FADT table (Enabled by default). + Warning : When enabled, this setting disable the C2 and C3 C-states, but be aware that these are the Intel's recommendations for the newest CPU, + if you really need those c-states please disable IntelFADTSpec. + + P-States= P-States fine tuning method, see usage below(GeneratePStates=Yes is needed). ACPIDropTables= drop acpi table(s) method (can drop any unwanted tables), see usage below. - C-States= C-States fine tuning method, see usage below(GenerateCStates=Yes is needed). + C-States= C-States fine tuning method, see usage below(GenerateCStates=Yes is needed). UpdateACPI=Yes|No Enable/Disable ACPI version update(Disabled by default). Index: branches/cparm/doc/README =================================================================== --- branches/cparm/doc/README (revision 1141) +++ branches/cparm/doc/README (revision 1142) @@ -19,6 +19,7 @@ - Apple Software RAID support. - stage2 loader (boot) can be placed as a regular file in the boot partition's root folder. + - Modules Installation @@ -49,23 +50,23 @@ No need to use startupfiletool anymore! IMPORTANT NOTE ABOUT THE MODULES: PLEASE NOTE THAT ALL MODULES ARE NOT NECESSARILY NEEDED TO BE INSTALLED, YOU JUST HAVE TO INSTALL WHAT YOU NEED, -FOR EXEMPLE: - - IF YOU DON'T PLAN TO USE A RAMDISK (PREBBOT.DMG OR POSTBOOT.IMG), YOU WILL SURELY NOT NEED TO INSTALL THE RAMDISKLOADER MODULE, +FOR EXAMPLE: + - IF YOU DON'T PLAN TO USE A RAMDISK (PREBOOT.DMG OR POSTBOOT.IMG), YOU WILL SURELY NOT NEED TO INSTALL THE RAMDISKLOADER MODULE, - IF YOU DON'T PLAN TO BOOT FROM AN HIBERNATE IMAGE YOU WILL SURELY NOT NEED TO INSTALL THE HIBERNATEENABLER MODULE, - IF YOUR MACHINE IS NOT A NETBOOK, YOU WILL SURELY NOT NEED TO INSTALL THE NETBOOKINSTALLER MODULE, - IF YOU DON'T NEED TO PATCH THE KERNEL ON THE FLY, PLEASE DO NOT INSTALL THE KERNELPATCHER MODULE, - - ETC,ETC,ETC,É + - ETC,ETC,ETC -PLEASE DO NOT USE ACPIPATCHER AND ACPICODEC TOGETHER, THEY DO THE SAME THING BUT IN A DIFFERENT WAY, YOU HAVE TO CHOOSE ONE OF THEM (ACPICODEC IS RECOMMENDED), THIS ISSUE WILL BE FIXED WITH THE BUNDLED MODULE VERSION -PLEASE DO NOT USE SMBIOSGETTERS AND SMBIOSPATCHER TOGETHER, THEY DO THE SAME THING BUT IN A DIFFERENT WAY, YOU HAVE TO CHOOSE ONE OF THEM (SMBIOSGETTERS IS RECOMMENDED), THIS ISSUE WILL BE FIXED WITH THE BUNDLED MODULE VERSION +PLEASE DO NOT USE ACPIPATCHER AND ACPICODEC TOGETHER, THEY DO THE SAME THING BUT IN A DIFFERENT WAY, YOU HAVE TO CHOOSE ONE OF THEM (ACPICODEC IS RECOMMENDED), THIS ISSUE WILL BE FIXED WITH THE BUNDLED MODULES +PLEASE DO NOT USE SMBIOSGETTERS AND SMBIOSPATCHER TOGETHER, THEY DO THE SAME THING BUT IN A DIFFERENT WAY, YOU HAVE TO CHOOSE ONE OF THEM (SMBIOSGETTERS IS RECOMMENDED), THIS ISSUE WILL BE FIXED WITH THE BUNDLED MODULES HERE IS ONE OF THE MOST COMMON USAGE: -- ACPICODEC (FOR ACPI FIXES, AND IF YOU DON'T HAVE A ALREADY PATCHED BIOS) -- GRAPGHICENABLER (IF YOU HAVE NOT FIXED THIS BY THE DSDT, THIS MODULE CAN ADD THE EFI STING FOR YOUR GRAPHIC CARD) +- ACPICODEC (FOR ACPI FIXES, AND IF YOU DON'T HAVE AN ALREADY PATCHED BIOS) +- GRAPGHICENABLER (IF YOU HAVE NOT FIXED THIS BY THE DSDT, THIS MODULE CAN ADD THE EFI STRING FOR YOUR GRAPHIC CARD) - GUI (IF YOU WANT A GUI) - KEYMAPPER (IF YOU WANT TO REMAP YOUR KEYBOARD (AN AZERTY PRESET IS AVAILABLE), SEE MODULEHELP.TXT FOR USAGE) -- SMBIOSGETTERS (FOR SMBIOS FIXES, AND IF YOU DON'T HAVE A ALREADY PATCHED BIOS) +- SMBIOSGETTERS (FOR SMBIOS FIXES, AND IF YOU DON'T HAVE AN ALREADY PATCHED BIOS) - MEMORY (FOR RAM DETECTION, THIS MODULE IS ACTUALLY A PLUGIN FOR SMBIOSGETTERS OR SMBIOSPATCHER, AND IT WILL NOT WORK WITHOUT ONE OF THEM, IT WILL BE MORE CLEAR WITH THE BUNDLED MODULES) - SYMBOLS IS ABSOLUTELY NEEDED IF YOU USE AT LEAST ONE OTHER MODULE Index: branches/cparm/CHANGES =================================================================== --- branches/cparm/CHANGES (revision 1141) +++ branches/cparm/CHANGES (revision 1142) @@ -1,3 +1,4 @@ +- Fixed an issue with kernelPatcher, it seems that kernelPatcher is unable to patch the kernelCache - Applied some fix from the trunk - Applied many under the hood fix - Added Andy Vandijck Server spoof Index: branches/cparm/i386/boot2/boot.c =================================================================== --- branches/cparm/i386/boot2/boot.c (revision 1141) +++ branches/cparm/i386/boot2/boot.c (revision 1142) @@ -107,6 +107,7 @@ static bool getOSVersion(char *str); static void getRootDevice(); +void getKernelCachePath(); #ifdef NBP_SUPPORT static bool gUnloadPXEOnExit = false; @@ -300,29 +301,18 @@ if (gMacOSVersion[3] <= '6') reserveKernLegacyBootStruct(); - - //uint8_t Pic1,Pic2; - - //Pic1 = inb(0x21); /* Save all interrupts Pic1 */ - //Pic2 = inb(0xa1); /* Save all interrupts Pic2 */ - - - execute_hook("Kernel Start", (void*)kernelEntry, (void*)bootArgs, NULL, NULL, NULL, NULL); // Notify modules that the kernel is about to be started -//#if UNUSED +#if UNUSED turnOffFloppy(); -//#endif -//#if BETA +#endif +#if BETA #include "smp.h" #include "apic.h" IMPS_LAPIC_WRITE(LAPIC_LVT1, LAPIC_ICR_DM_NMI); -//#endif +#endif - if (gMacOSVersion[3] <= '6') { + if (gMacOSVersion[3] <= '6') { - //outb(0x21, Pic1); /* Restore all interrupts Pic1 */ - //outb(0xa1, Pic2); /* Restore all interrupts Pic2 */ - // Jump to kernel's entry point. There's no going back now. XXX LEGACY OS XXX startprog( kernelEntry, bootArgsLegacy ); } @@ -564,7 +554,7 @@ if (!getValueForBootKey(bootArgs->CommandLine, kIgnorePrelinkKern, &val, &len)) { - if(gMacOSVersion[3] == '7'){ + /*if(gMacOSVersion[3] == '7'){ sprintf(gBootKernelCacheFile, "%s", kDefaultCachePath); } else if(gMacOSVersion[3] <= '6') @@ -624,7 +614,8 @@ sprintf(gBootKernelCacheFile, "%s_%s.%08lX", kDefaultCachePath, (archCpuType == CPU_TYPE_I386) ? "i386" : "x86_64", bootInfo->adler32); //Snow Leopard - } + }*/ + getKernelCachePath(); } @@ -769,6 +760,74 @@ #endif } +void getKernelCachePath() +{ + long flags, cachetime; + int ret = -1; + + if(gMacOSVersion[3] == '7'){ + sprintf(gBootKernelCacheFile, "%s", kDefaultCachePath); + } + else if(gMacOSVersion[3] <= '6') + { + + PlatformInfo *platformInfo = malloc(sizeof(PlatformInfo)); + if (platformInfo) { + + bzero(platformInfo, sizeof(PlatformInfo)); + + if (gPlatformName) + strlcpy(platformInfo->platformName,gPlatformName, sizeof(platformInfo->platformName)+1); + + if (gRootDevice) { + char *rootPath_p = platformInfo->rootPath; + int len = strlen(gRootDevice) + 1; + if ((unsigned)len > sizeof(platformInfo->rootPath)) { + len = sizeof(platformInfo->rootPath); + } + memcpy(rootPath_p, gRootDevice,len); + + rootPath_p += len; + + len = strlen(bootInfo->bootFile); + + if ((unsigned)(rootPath_p - platformInfo->rootPath + len) >= + sizeof(platformInfo->rootPath)) { + + len = sizeof(platformInfo->rootPath) - + (rootPath_p - platformInfo->rootPath); + } + memcpy(rootPath_p, bootInfo->bootFile, len); + + } + + if (!platformInfo->platformName[0] || !platformInfo->rootPath[0]) { + platformInfo->platformName[0] = platformInfo->rootPath[0] = 0; + } + //memcpy(gRootPath,platformInfo->rootPath, sizeof(platformInfo->rootPath)); + + + bootInfo->adler32 = OSSwapHostToBigInt32(local_adler32((unsigned char *)platformInfo, sizeof(*platformInfo))); + + free(platformInfo); + } + + DBG("Adler32: %08lX\n",bootInfo->adler32); + + if (gMacOSVersion[3] < '6') { + sprintf(gBootKernelCacheFile, "%s.%08lX", "/System/Library/Caches/com.apple.kernelcaches/kernelcache",bootInfo->adler32); + ret = GetFileInfo(NULL, gBootKernelCacheFile, &flags, &cachetime); + if ((ret != 0) || ((flags & kFileTypeMask) != kFileTypeFlat)) { + bootInfo->adler32 = 0; + sprintf(gBootKernelCacheFile, "%s", "/System/Library/Caches/com.apple.kernelcaches/kernelcache"); + } + } else + sprintf(gBootKernelCacheFile, "%s_%s.%08lX", kDefaultCachePath, (archCpuType == CPU_TYPE_I386) ? "i386" : "x86_64", bootInfo->adler32); //Snow Leopard + + + } +} + // Maximum config table value size #define VALUE_SIZE 2048 static void getRootDevice() Index: branches/cparm/i386/boot2/modules.c =================================================================== --- branches/cparm/i386/boot2/modules.c (revision 1141) +++ branches/cparm/i386/boot2/modules.c (revision 1142) @@ -339,7 +339,7 @@ } else { - printf("Invalid mach magic\n"); + printf("Modules: Invalid mach magic\n"); getc(); return NULL; } @@ -1238,6 +1238,8 @@ /* Nedded to divide 64bit numbers correctly. TODO: look into why modules need this * And why it isn't needed when compiled into boot2 + * + * In the next versions, this will be surely replaced by the Apple's libcc_kext or the meklort's klibc */ uint64_t __udivdi3(uint64_t numerator, uint64_t denominator) Index: branches/cparm/i386/boot2/Makefile =================================================================== --- branches/cparm/i386/boot2/Makefile (revision 1141) +++ branches/cparm/i386/boot2/Makefile (revision 1142) @@ -129,7 +129,6 @@ -compatibility_version 1.0.0 \ -final_output Symbols \ -exported_symbols_list ${OBJROOT}/Symbols.save \ - "/usr/lib/gcc/i686-apple-darwin10/4.2.1/libcc_kext.a" \ ${OBJROOT}/Symbols.o \ -o $(SYMROOT)/${SYMBOLS_MODULE} Index: branches/cparm/i386/modules/NetbookInstaller/Makefile =================================================================== --- branches/cparm/i386/modules/NetbookInstaller/Makefile (revision 1141) +++ branches/cparm/i386/modules/NetbookInstaller/Makefile (revision 1142) @@ -70,7 +70,6 @@ -no_uuid \ -current_version $(MODULE_VERSION) -compatibility_version $(MODULE_COMPAT_VERSION) \ -final_output $(MODULE_NAME) \ - "/usr/lib/gcc/i686-apple-darwin10/4.2.1/libcc_kext.a" \ $(OBJROOT)/*.o \ -weak_library $(SYMROOT)/Symbols.dylib \ -o $(SYMROOT)/$(MODULE_NAME).dylib Index: branches/cparm/i386/modules/KextPatcher/Makefile =================================================================== --- branches/cparm/i386/modules/KextPatcher/Makefile (revision 1141) +++ branches/cparm/i386/modules/KextPatcher/Makefile (revision 1142) @@ -70,7 +70,6 @@ -no_uuid \ -current_version $(MODULE_VERSION) -compatibility_version $(MODULE_COMPAT_VERSION) \ -final_output $(MODULE_NAME) \ - "/usr/lib/gcc/i686-apple-darwin10/4.2.1/libcc_kext.a" \ $(OBJROOT)/*.o \ -weak_library $(SYMROOT)/Symbols.dylib \ -o $(SYMROOT)/$(MODULE_NAME).dylib Index: branches/cparm/i386/modules/GUI/Makefile =================================================================== --- branches/cparm/i386/modules/GUI/Makefile (revision 1141) +++ branches/cparm/i386/modules/GUI/Makefile (revision 1142) @@ -81,7 +81,6 @@ -no_uuid \ -current_version $(MODULE_VERSION) -compatibility_version $(MODULE_COMPAT_VERSION) \ -final_output $(MODULE_NAME) \ - "/usr/lib/gcc/i686-apple-darwin10/4.2.1/libcc_kext.a" \ $(OBJROOT)/rand.o \ $(OBJROOT)/GUI_module.o \ $(OBJROOT)/gui.o \ Index: branches/cparm/i386/modules/KernelPatcher/kernel_patcher.c =================================================================== --- branches/cparm/i386/modules/KernelPatcher/kernel_patcher.c (revision 1141) +++ branches/cparm/i386/modules/KernelPatcher/kernel_patcher.c (revision 1142) @@ -12,7 +12,9 @@ patchRoutine_t* patches = NULL; kernSymbols_t* kernelSymbols = NULL; +void kernel_patcher_ignore_cache(void* arg1, void* arg2, void* arg3, void *arg4, void* arg5, void* arg6){} + void KernelPatcher_start() { register_kernel_patch(patch_cpuid_set_info_all, KERNEL_ANY, CPUID_MODEL_UNKNOWN); @@ -46,6 +48,9 @@ register_hook_callback("ExecKernel", &patch_kernel); + + replace_function("_getKernelCachePath", &kernel_patcher_ignore_cache); + } /* Index: branches/cparm/i386/modules/KernelPatcher/Makefile =================================================================== --- branches/cparm/i386/modules/KernelPatcher/Makefile (revision 1141) +++ branches/cparm/i386/modules/KernelPatcher/Makefile (revision 1142) @@ -69,7 +69,6 @@ -no_uuid \ -current_version $(MODULE_VERSION) -compatibility_version $(MODULE_COMPAT_VERSION) \ -final_output $(MODULE_NAME) \ - "/usr/lib/gcc/i686-apple-darwin10/4.2.1/libcc_kext.a" \ $(OBJROOT)/*.o \ -weak_library $(SYMROOT)/Symbols.dylib \ -o $(SYMROOT)/$(MODULE_NAME).dylib Index: branches/cparm/i386/modules/GraphicsEnabler/Makefile =================================================================== --- branches/cparm/i386/modules/GraphicsEnabler/Makefile (revision 1141) +++ branches/cparm/i386/modules/GraphicsEnabler/Makefile (revision 1142) @@ -70,7 +70,6 @@ -no_uuid \ -current_version $(MODULE_VERSION) -compatibility_version $(MODULE_COMPAT_VERSION) \ -final_output $(MODULE_NAME) \ - "/usr/lib/gcc/i686-apple-darwin10/4.2.1/libcc_kext.a" \ $(OBJROOT)/ati.o \ $(OBJROOT)/nvidia.o \ $(OBJROOT)/gma.o \ Index: branches/cparm/i386/modules/SMBiosGetters/Makefile =================================================================== --- branches/cparm/i386/modules/SMBiosGetters/Makefile (revision 1141) +++ branches/cparm/i386/modules/SMBiosGetters/Makefile (revision 1142) @@ -70,7 +70,6 @@ -no_uuid \ -current_version $(MODULE_VERSION) -compatibility_version $(MODULE_COMPAT_VERSION) \ -final_output $(MODULE_NAME) \ - "/usr/lib/gcc/i686-apple-darwin10/4.2.1/libcc_kext.a" \ $(OBJROOT)/SMBiosGetters.o \ $(OBJROOT)/mysmbios.o \ $(OBJROOT)/smbios_getters.o \ Index: branches/cparm/i386/modules/Keymapper/Makefile =================================================================== --- branches/cparm/i386/modules/Keymapper/Makefile (revision 1141) +++ branches/cparm/i386/modules/Keymapper/Makefile (revision 1142) @@ -69,7 +69,6 @@ -no_uuid \ -current_version $(MODULE_VERSION) -compatibility_version $(MODULE_COMPAT_VERSION) \ -final_output $(MODULE_NAME) \ - "/usr/lib/gcc/i686-apple-darwin10/4.2.1/libcc_kext.a" \ $(OBJROOT)/Keymapper.o \ -o $(SYMROOT)/$(MODULE_NAME).dylib Index: branches/cparm/i386/modules/USBFix/Makefile =================================================================== --- branches/cparm/i386/modules/USBFix/Makefile (revision 1141) +++ branches/cparm/i386/modules/USBFix/Makefile (revision 1142) @@ -70,7 +70,6 @@ -no_uuid \ -current_version $(MODULE_VERSION) -compatibility_version $(MODULE_COMPAT_VERSION) \ -final_output $(MODULE_NAME) \ - "/usr/lib/gcc/i686-apple-darwin10/4.2.1/libcc_kext.a" \ $(OBJROOT)/USBFix.o \ $(OBJROOT)/usb.o \ -o $(SYMROOT)/$(MODULE_NAME).dylib Index: branches/cparm/i386/modules/SMBiosPatcher/Makefile =================================================================== --- branches/cparm/i386/modules/SMBiosPatcher/Makefile (revision 1141) +++ branches/cparm/i386/modules/SMBiosPatcher/Makefile (revision 1142) @@ -70,7 +70,6 @@ -no_uuid \ -current_version $(MODULE_VERSION) -compatibility_version $(MODULE_COMPAT_VERSION) \ -final_output $(MODULE_NAME) \ - "/usr/lib/gcc/i686-apple-darwin10/4.2.1/libcc_kext.a" \ $(OBJROOT)/SMBiosPatcher.o \ $(OBJROOT)/smbios_patcher.o \ -o $(SYMROOT)/$(MODULE_NAME).dylib Index: branches/cparm/i386/modules/Resolution/Makefile =================================================================== --- branches/cparm/i386/modules/Resolution/Makefile (revision 1141) +++ branches/cparm/i386/modules/Resolution/Makefile (revision 1142) @@ -69,7 +69,6 @@ -no_uuid \ -current_version $(MODULE_VERSION) -compatibility_version $(MODULE_COMPAT_VERSION) \ -final_output $(MODULE_NAME) \ - "/usr/lib/gcc/i686-apple-darwin10/4.2.1/libcc_kext.a" \ $(OBJROOT)/edid.o \ $(OBJROOT)/915resolution.o \ $(OBJROOT)/Resolution.o \ Index: branches/cparm/i386/modules/Memory/Makefile =================================================================== --- branches/cparm/i386/modules/Memory/Makefile (revision 1141) +++ branches/cparm/i386/modules/Memory/Makefile (revision 1142) @@ -70,7 +70,6 @@ -no_uuid \ -current_version $(MODULE_VERSION) -compatibility_version $(MODULE_COMPAT_VERSION) \ -final_output $(MODULE_NAME) \ - "/usr/lib/gcc/i686-apple-darwin10/4.2.1/libcc_kext.a" \ $(OBJROOT)/dram_controllers.o \ $(OBJROOT)/mem.o \ $(OBJROOT)/spd.o \ Index: branches/cparm/i386/modules/ACPICodec/Makefile =================================================================== --- branches/cparm/i386/modules/ACPICodec/Makefile (revision 1141) +++ branches/cparm/i386/modules/ACPICodec/Makefile (revision 1142) @@ -70,7 +70,6 @@ -no_uuid \ -current_version $(MODULE_VERSION) -compatibility_version $(MODULE_COMPAT_VERSION) \ -final_output $(MODULE_NAME) \ - "/usr/lib/gcc/i686-apple-darwin10/4.2.1/libcc_kext.a" \ $(OBJROOT)/acpicode.o \ $(OBJROOT)/acpidecode.o \ $(OBJROOT)/ACPICodec.o \ Index: branches/cparm/i386/modules/HelloWorld/Makefile =================================================================== --- branches/cparm/i386/modules/HelloWorld/Makefile (revision 1141) +++ branches/cparm/i386/modules/HelloWorld/Makefile (revision 1142) @@ -70,7 +70,6 @@ -no_uuid \ -current_version $(MODULE_VERSION) -compatibility_version $(MODULE_COMPAT_VERSION) \ -final_output $(MODULE_NAME) \ - "/usr/lib/gcc/i686-apple-darwin10/4.2.1/libcc_kext.a" \ $(OBJROOT)/HelloWorld.o -o $(SYMROOT)/$(MODULE_NAME).dylib