Index: trunk/i386/libsaio/spd.c =================================================================== --- trunk/i386/libsaio/spd.c (revision 2860) +++ trunk/i386/libsaio/spd.c (revision 2861) @@ -85,7 +85,7 @@ /** Read one byte from the intel i2c, used for reading SPD on intel chipsets only. */ -unsigned char smb_read_byte_intel(uint32_t base, uint8_t adr, uint8_t cmd) +static unsigned char smb_read_byte_intel(uint32_t base, uint8_t adr, uint8_t cmd) { int l1, h1, l2, h2; unsigned long long t; @@ -137,7 +137,7 @@ // Get Vendor Name from spd, 2 cases handled DDR3 and DDR2, // have different formats, always return a valid ptr. -const char *getVendorName(RamSlotInfo_t *slot, uint32_t base, int slot_num) +static const char *getVendorName(RamSlotInfo_t *slot, uint32_t base, int slot_num) { uint8_t bank = 0; uint8_t code = 0; @@ -190,7 +190,7 @@ } /* Get Default Memory Module Speed (no overclocking handled) */ -int getDDRspeedMhz(const char * spd) +static int getDDRspeedMhz(const char * spd) { if ((spd[SPD_MEMORY_TYPE] == SPD_MEMORY_TYPE_SDRAM_DDR2) || (spd[SPD_MEMORY_TYPE] == SPD_MEMORY_TYPE_SDRAM_DDR)) @@ -232,7 +232,7 @@ #define SLST(a) ((uint8_t)(spd[a] & 0x0f)) /* Get DDR3 or DDR2 serial number, 0 most of the times, always return a valid ptr */ -const char *getDDRSerial(const char *spd) +static const char *getDDRSerial(const char *spd) { static char asciiSerial[17]; @@ -253,7 +253,7 @@ } /* Get DDR3 or DDR2 Part Number, always return a valid ptr */ -const char *getDDRPartNum(char *spd, uint32_t base, int slot) +static const char *getDDRPartNum(char *spd, uint32_t base, int slot) { int i, start = 0, index = 0; char c; Index: trunk/i386/libsaio/memvendors.h =================================================================== --- trunk/i386/libsaio/memvendors.h (revision 2860) +++ trunk/i386/libsaio/memvendors.h (revision 2861) @@ -887,6 +887,7 @@ { 6, 0xf2, "Muscle Power"}, { 6, 0x73, "Energy Micro"}, { 6, 0xf4, "Innofidei"}, + { 0x85, 0x9B, "Crucial Technology"}, { 9, 0xff, ""} }; Index: trunk/i386/libsaio/nvidia.c =================================================================== --- trunk/i386/libsaio/nvidia.c (revision 2860) +++ trunk/i386/libsaio/nvidia.c (revision 2861) @@ -1924,10 +1924,10 @@ { if (nvidia_card_generic[i].device == device_id) { - return nvidia_card_generic[i].name; + return nvidia_card_generic[i].name_model; } } - return nvidia_card_generic[0].name; + return nvidia_card_generic[0].name_model; } // Then check the exceptions table @@ -1937,7 +1937,7 @@ { if ((nvidia_card_exceptions[i].device == device_id) && (nvidia_card_exceptions[i].subdev == subsys_id)) { - return nvidia_card_exceptions[i].name; + return nvidia_card_exceptions[i].name_model; } } } @@ -1954,15 +1954,15 @@ if (nvidia_card_vendors[j].device == (subsys_id & 0xffff0000)) { snprintf(generic_name, 128, "%s %s", // sizeof(generic_name), "%s %s", - nvidia_card_vendors[j].name, nvidia_card_generic[i].name); + nvidia_card_vendors[j].name_model, nvidia_card_generic[i].name_model); return &generic_name[0]; } } } - return nvidia_card_generic[i].name; + return nvidia_card_generic[i].name_model; } } - return nvidia_card_generic[0].name; + return nvidia_card_generic[0].name_model; } static int devprop_add_nvidia_template(DevPropDevice *device) @@ -2143,7 +2143,7 @@ break; } - DBG("mem_detected %ld\n", vram_size); + DBG("mem_detected %ldMb\n", (vram_size >> 20)); return vram_size; } Index: trunk/i386/libsaio/nvidia.h =================================================================== --- trunk/i386/libsaio/nvidia.h (revision 2860) +++ trunk/i386/libsaio/nvidia.h (revision 2861) @@ -55,14 +55,14 @@ struct nvidia_pci_info_t; typedef struct { uint32_t device; // VendorID + DeviceID - char *name; + char *name_model; } nvidia_pci_info_t; struct nvidia_card_info_t; typedef struct { uint32_t device; // VendorID + DeviceID uint32_t subdev; // SubdeviceID + SubvendorID - char *name; + char *name_model; //bool kEnableHDMIAudio // HDMi //VRAM } nvidia_card_info_t; Index: trunk/i386/libsaio/msdos.c =================================================================== --- trunk/i386/libsaio/msdos.c (revision 2860) +++ trunk/i386/libsaio/msdos.c (revision 2861) @@ -807,7 +807,7 @@ } // Calculate a fake timestamp using modification date and time values. - *time = ((dirp->deMDate & 0x7FFF) << 16) + dirp->deMTime; + *time = (dirp->deMDate & 0x7FFF) << (16 + dirp->deMTime); if (infoValid) { Index: trunk/i386/libsaio/fake_efi.c =================================================================== --- trunk/i386/libsaio/fake_efi.c (revision 2860) +++ trunk/i386/libsaio/fake_efi.c (revision 2861) @@ -473,6 +473,26 @@ static EFI_UINT8 const STARTUP_POWER_EVENTS[] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; static EFI_UINT8 const COMPAT_MODE[] = { 0x01, 0x00, 0x00, 0x00 }; +// Pike R. Alpha +static EFI_UINT8 const BOOT_DEVICE_PATH[] = +{ + 0x02, 0x01, 0x0C, 0x00, 0xD0, 0x41, 0x08, 0x0A, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x06, 0x00, + 0x02, 0x1F, 0x03, 0x12, 0x0A, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x01, 0x2A, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x28, 0x40, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x0B, 0x63, 0x34, + 0x00, 0x00, 0x00, 0x00, 0x65, 0x8C, 0x53, 0x3F, 0x1B, 0xCA, 0x83, 0x38, 0xA9, 0xD0, 0xF0, 0x46, + 0x19, 0x14, 0x8E, 0x31, 0x02, 0x02, 0x7F, 0xFF, 0x04, 0x00 +}; +// Pike R. Alpha +static EFI_UINT8 const BOOT_FILE_PATH[] = +{ + 0x04, 0x04, 0x50, 0x00, 0x5c, 0x00, 0x53, 0x00, 0x79, 0x00, 0x73, 0x00, 0x74, 0x00, 0x65, 0x00, + 0x6d, 0x00, 0x5c, 0x00, 0x4c, 0x00, 0x69, 0x00, 0x62, 0x00, 0x72, 0x00, 0x61, 0x00, 0x72, 0x00, + 0x79, 0x00, 0x5c, 0x00, 0x43, 0x00, 0x6f, 0x00, 0x72, 0x00, 0x65, 0x00, 0x53, 0x00, 0x65, 0x00, + 0x72, 0x00, 0x76, 0x00, 0x69, 0x00, 0x63, 0x00, 0x65, 0x00, 0x73, 0x00, 0x5c, 0x00, 0x62, 0x00, + 0x6f, 0x00, 0x6f, 0x00, 0x74, 0x00, 0x2e, 0x00, 0x65, 0x00, 0x66, 0x00, 0x69, 0x00, 0x00, 0x00, + 0x7f, 0xff, 0x04, 0x00 +}; + /* * Get an smbios option string option to convert to EFI_CHAR16 string */ @@ -672,9 +692,10 @@ // Adding the default kernel name (mach_kernel) for kextcache. DT__AddProperty(chosenNode, "boot-file", sizeof(bootInfo->bootFile), bootInfo->bootFile); -// DT__AddProperty(chosenNode, "boot-device-path", bootDPsize, gBootDP); + DT__AddProperty(chosenNode, "boot-file-path", sizeof(BOOT_FILE_PATH), (EFI_UINT8 *) &BOOT_FILE_PATH); -// DT__AddProperty(chosenNode, "boot-file-path", bootFPsize, gBootFP); + // Adding the root path for kextcache. + DT__AddProperty(chosenNode, "boot-device-path", sizeof(BOOT_DEVICE_PATH), (EFI_UINT8 *) &BOOT_DEVICE_PATH); DT__AddProperty(chosenNode, "boot-kernelcache-adler32", sizeof(unsigned long), &adler32); Index: trunk/doc/BootHelp.txt =================================================================== --- trunk/doc/BootHelp.txt (revision 2860) +++ trunk/doc/BootHelp.txt (revision 2861) @@ -165,15 +165,6 @@ if smbios.plist doesn't exist, factory values are kept. - - KERNELPlist= Use an alternate kernel.plist file - (default path: /Extra/Kernel.plist - bt(0,0)/Extra/kernel.plist). - - KEXTPlist= Use an alternate kext.plist file - (default path: /Extra/Kext.plist - bt(0,0)/Extra/kext.plist). - "Scan Single Drive" Scan the drive only where the booter got loaded from. =Yes|No Fix rescan issues when using a DVD reader in AHCI mode. Rescan=Yes Enable CD-ROM rescan mode.