summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2009-01-04 17:52:23 +0000
committerMike Frysinger <vapier@gentoo.org>2009-01-04 17:52:23 +0000
commit7e3c4c8ee923be509e16beae737d63491636ded1 (patch)
tree27c20f5f3bdc6bd88a11da74aadb29c7fa202622 /sys-boot
parentold (diff)
downloadgentoo-2-7e3c4c8ee923be509e16beae737d63491636ded1.tar.gz
gentoo-2-7e3c4c8ee923be509e16beae737d63491636ded1.tar.bz2
gentoo-2-7e3c4c8ee923be509e16beae737d63491636ded1.zip
Move large patch to mirrors #249014.
(Portage version: 2.2_rc20/cvs/Linux 2.6.28 x86_64)
Diffstat (limited to 'sys-boot')
-rw-r--r--sys-boot/cromwell/ChangeLog8
-rw-r--r--sys-boot/cromwell/cromwell-2.40-r3.ebuild11
-rw-r--r--sys-boot/cromwell/files/cromwell-2.40-r3-cvs-fixes.patch704
3 files changed, 12 insertions, 711 deletions
diff --git a/sys-boot/cromwell/ChangeLog b/sys-boot/cromwell/ChangeLog
index b3f3a1f557b0..d753a98ff1b4 100644
--- a/sys-boot/cromwell/ChangeLog
+++ b/sys-boot/cromwell/ChangeLog
@@ -1,6 +1,10 @@
# ChangeLog for sys-boot/cromwell
-# Copyright 1999-2008 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-boot/cromwell/ChangeLog,v 1.10 2008/06/07 15:27:08 vapier Exp $
+# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2
+# $Header: /var/cvsroot/gentoo-x86/sys-boot/cromwell/ChangeLog,v 1.11 2009/01/04 17:52:23 vapier Exp $
+
+ 04 Jan 2009; Mike Frysinger <vapier@gentoo.org>
+ -files/cromwell-2.40-r3-cvs-fixes.patch, cromwell-2.40-r3.ebuild:
+ Move large patch to mirrors #249014.
*cromwell-2.40-r3 (07 Jun 2008)
diff --git a/sys-boot/cromwell/cromwell-2.40-r3.ebuild b/sys-boot/cromwell/cromwell-2.40-r3.ebuild
index ddc410c4ca01..ed24e0dafc3f 100644
--- a/sys-boot/cromwell/cromwell-2.40-r3.ebuild
+++ b/sys-boot/cromwell/cromwell-2.40-r3.ebuild
@@ -1,16 +1,17 @@
-# Copyright 1999-2008 Gentoo Foundation
+# Copyright 1999-2009 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/sys-boot/cromwell/cromwell-2.40-r3.ebuild,v 1.1 2008/06/07 15:27:08 vapier Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-boot/cromwell/cromwell-2.40-r3.ebuild,v 1.2 2009/01/04 17:52:23 vapier Exp $
inherit eutils mount-boot
DESCRIPTION="Xbox boot loader"
HOMEPAGE="http://www.xbox-linux.org/wiki/Cromwell"
-SRC_URI="mirror://gentoo/${P}.tar.bz2"
+SRC_URI="mirror://gentoo/${P}.tar.bz2
+ mirror://gentoo/${PF}-cvs-fixes.patch.lzma"
LICENSE="GPL-2"
SLOT="0"
-KEYWORDS="-* ~x86"
+KEYWORDS="-* x86"
IUSE=""
RESTRICT="strip"
@@ -20,7 +21,7 @@ PROVIDE="virtual/bootloader"
src_unpack() {
unpack ${A}
cd "${S}"
- epatch "${FILESDIR}"/${P}-r3-cvs-fixes.patch
+ epatch "${WORKDIR}"/${PF}-cvs-fixes.patch
}
src_compile() {
diff --git a/sys-boot/cromwell/files/cromwell-2.40-r3-cvs-fixes.patch b/sys-boot/cromwell/files/cromwell-2.40-r3-cvs-fixes.patch
deleted file mode 100644
index 2160f2047772..000000000000
--- a/sys-boot/cromwell/files/cromwell-2.40-r3-cvs-fixes.patch
+++ /dev/null
@@ -1,704 +0,0 @@
---- cromwell-2.40/boot/LoadLinux.c
-+++ cromwell-2.40/boot/LoadLinux.c
-@@ -33,10 +33,12 @@
-
-
- void ExittoLinux(CONFIGENTRY *config);
--void startLinux(void* initrdStart, unsigned long initrdSize, const char* appendLine);
-+void startLinux(void* initrdStart, unsigned long initrdSize, const char* appendLine, unsigned int entry);
- void setup(void* KernelPos, void* PhysInitrdPos, unsigned long InitrdSize, const char* kernel_cmdline);
- void I2CRebootSlow(void);
-
-+void try_elf_boot (char* data, int len);
-+
-
- void BootPrintConfig(CONFIGENTRY *config) {
- int CharsProcessed=0, CharsSinceNewline=0, Length=0;
-@@ -69,6 +71,10 @@
- unsigned int nSizeHeader=((*(kernelOrg + 0x01f1))+1)*512;
- memcpy((u8 *)KERNEL_SETUP, kernelOrg, nSizeHeader);
- memcpy((u8 *)KERNEL_PM_CODE,(kernelOrg+nSizeHeader),kernelSize-nSizeHeader);
-+
-+ /* Try to execute a pure ELF binary here, using the etherboot
-+ * code. This is required for ELF kernels, such as FreeBSD */
-+ try_elf_boot ((char*)kernelOrg, kernelSize);
- }
-
-
-@@ -313,9 +319,15 @@
- configLoaded=1;
- break;
- }
-+ dwConfigSize = BootIso9660GetFile(cdromId,"/linuxboot.cfg", (u8 *)KERNEL_SETUP, 0x800);
-+ if (dwConfigSize>0) {
-+ configLoaded=1;
-+ break;
-+ }
- wait_ms(250);
- }
-
-+ //We couldn't read the disk, so we eject the drive so the user can insert one.
- if (!configLoaded) {
- //Needs to be changed for non-xbox drives, which don't have an eject line
- //Need to send ATA eject command.
-@@ -326,20 +338,29 @@
- printk("\2Please insert CD and press Button A\n\n");
-
- while(1) {
-+ // Make button 'A' close the DVD tray
- if (risefall_xpad_BUTTON(TRIGGER_XPAD_KEY_A) == 1) {
-- I2CTransmitWord(0x10, 0x0c01); // close DVD tray
-+ I2CTransmitWord(0x10, 0x0c01);
- wait_ms(500);
- break;
- }
-- wait_ms(10);
--
-- //Keep trying to read, in case somebody puts the tray in manually, without pressing A
-- dwConfigSize = BootIso9660GetFile(cdromId,"/linuxboo.cfg", (u8 *)KERNEL_SETUP, 0x800);
-- if (dwConfigSize>0) {
-- configLoaded=1;
-+ else if (DVD_TRAY_STATE == DVD_CLOSING) {
-+ //It's an xbox drive, and somebody pushed the tray in manually
-+ wait_ms(500);
- break;
- }
-- }
-+ else if (BootIso9660GetFile(cdromId,"/linuxboo.cfg", (u8 *)KERNEL_SETUP, 0x800)>0) {
-+ //It isnt an xbox drive, and somebody pushed the tray in manually, and
-+ //the cd is valid.
-+ break;
-+ }
-+ else if (BootIso9660GetFile(cdromId,"/linuxboot.cfg", (u8 *)KERNEL_SETUP, 0x800)>0) {
-+ break;
-+ }
-+ wait_ms(10);
-+ }
-+
-+ wait_ms(250);
-
- VIDEO_ATTR=0xffffffff;
-
-@@ -351,6 +372,11 @@
- configLoaded=1;
- break;
- }
-+ dwConfigSize = BootIso9660GetFile(cdromId,"/linuxboot.cfg", (u8 *)KERNEL_SETUP, 0x800);
-+ if (dwConfigSize>0) {
-+ configLoaded=1;
-+ break;
-+ }
- wait_ms(250);
- }
- }
-@@ -423,7 +449,7 @@
- //Try for 4 seconds.
- I2CTransmitWord(0x10, 0x0c01); // close DVD tray
- for (n=0;n<16;++n) {
-- if((BootIso9660GetFile(cdromId,"/image.bin", (u8 *)KERNEL_SETUP, 0x10)) >=0 ) {
-+ if((BootIso9660GetFile(cdromId,"/image.bin", (u8 *)KERNEL_PM_CODE, 0x10)) >=0 ) {
- cdPresent=1;
- break;
- }
-@@ -454,7 +480,7 @@
-
- // wait until the media is readable
- while(1) {
-- if((BootIso9660GetFile(cdromId,"/image.bin", (u8 *)KERNEL_SETUP, 0x10)) >=0 ) {
-+ if((BootIso9660GetFile(cdromId,"/image.bin", (u8 *)KERNEL_PM_CODE, 0x10)) >=0 ) {
- break;
- }
- wait_ms(200);
-@@ -462,7 +488,7 @@
- }
- printk("CDROM: ");
- printk("Loading bios image from CDROM:/image.bin. \n");
-- dwConfigSize=BootIso9660GetFile(cdromId, "/image.bin", (u8 *)KERNEL_PM_CODE, 256*1024);
-+ dwConfigSize=BootIso9660GetFile(cdromId, "/image.bin", (u8 *)KERNEL_PM_CODE, 256*1024);
-
- if( dwConfigSize < 0 ) { //It's not there
- printk("image.bin not found on CDROM... Halting\n");
-@@ -508,12 +534,12 @@
- VIDEO_ATTR=0xff9f9fbf;
- printk(sz);
- }
-- I2cSetFrontpanelLed(I2C_LED_RED0 | I2C_LED_RED1 | I2C_LED_RED2 | I2C_LED_RED3 );
-- startLinux((void*)INITRD_START, dwInitrdSize, config->szAppend);
-+ setLED("rrrr");
-+ startLinux((void*)INITRD_START, dwInitrdSize, config->szAppend, 0x100000);
- }
-
-
--void startLinux(void* initrdStart, unsigned long initrdSize, const char* appendLine)
-+void startLinux(void* initrdStart, unsigned long initrdSize, const char* appendLine, unsigned int entry)
- {
- int nAta=0;
- // turn off USB
-@@ -535,10 +561,7 @@
- BootIdeSetTransferMode(1, 0x40 | nAta);
-
- // orange, people seem to like that colour
-- I2cSetFrontpanelLed(
-- I2C_LED_GREEN0 | I2C_LED_GREEN1 | I2C_LED_GREEN2 | I2C_LED_GREEN3 |
-- I2C_LED_RED0 | I2C_LED_RED1 | I2C_LED_RED2 | I2C_LED_RED3
-- );
-+ setLED("oooo");
-
- // Set framebuffer address to final location (for vesafb driver)
- (*(unsigned int*)0xFD600800) = (0xf0000000 | ((xbox_ram*0x100000) - FB_SIZE));
-@@ -549,6 +572,8 @@
- // clear idt area
- memset((void*)IDT_LOC,0x0,1024*8);
-
-+ __asm__ ("movl %0,%%ebx" : : "a" (entry)); /* ebx = entry */
-+
- __asm __volatile__ (
- "wbinvd\n"
-
-@@ -597,13 +622,15 @@
- // Set the stack pointer to give us a valid stack
- "movl $0x03BFFFFC, %esp \n"
-
-- "xor %ebx, %ebx \n"
- "xor %eax, %eax \n"
- "xor %ecx, %ecx \n"
- "xor %edx, %edx \n"
- "xor %edi, %edi \n"
- "movl $0x90000, %esi\n" // kernel setup area
-- "ljmp $0x10, $0x100000\n" // Jump to Kernel protected mode entry
-+ "pushl $0x10\n"
-+ "pushl %ebx\n" // 0x10:ebx is the entry point
-+ "xor %ebx,%ebx\n" // clean leftover ebx (held entry point)
-+ ".byte 0xcb\n " // retf
- );
-
- // We are not longer here, we are already in the Linux loader, we never come back here
---- cromwell-2.40/boot_rom/bootrom.ld
-+++ cromwell-2.40/boot_rom/bootrom.ld
-@@ -45,6 +45,7 @@
- .rodata ( RAM_CODE + SIZEOF(.text) + SIZEOF(.data) ) : AT ( SIZEOF(.low_rom) + SIZEOF(.text) + SIZEOF(.data)) {
- *(.rodata);
- *(.rodata.str1.1);
-+ *(.rodata.str1.4);
- *(.rodata.str1.32);
- *(.rodata.cst4);
- *(.rodata.cst8);
---- cromwell-2.40/drivers/ide/BootHddKey.c
-+++ cromwell-2.40/drivers/ide/BootHddKey.c
-@@ -5,13 +5,8 @@
- #include <stdarg.h>
- //#include <string.h>
-
--
--
- void HMAC_hdd_calculation(int version,unsigned char *HMAC_result, ... );
-
--extern size_t strlen(const char * s);
--
--
- int copy_swap_trim(unsigned char *dst, unsigned char *src, int len)
- {
- unsigned char tmp;
---- cromwell-2.40/drivers/video/encoder.h
-+++ cromwell-2.40/drivers/video/encoder.h
-@@ -21,13 +21,13 @@
- #define NUM_CONEXANT_REGS 0x69
- #define MAX_ENCODER_REGS 256
-
--#define u8 unsigned char
- #define U032 long
- #ifndef encoder_h
- #define encoder_h
-
- //#include <linux/xboxfbctl.h>
- #include "VideoInitialization.h"
-+#include "boot.h"
-
- typedef struct {
- double m_dHzBurstFrequency;
---- cromwell-2.40/drivers/video/focus.c
-+++ cromwell-2.40/drivers/video/focus.c
-@@ -13,6 +13,7 @@
- */
- #include "focus.h"
- #include "encoder.h"
-+#include "boot.h"
-
- typedef struct _focus_pll_settings{
- long dotclock;
---- cromwell-2.40/etherboot/core/Makefile
-+++ cromwell-2.40/etherboot/core/Makefile
-@@ -1,4 +1,4 @@
-
--O_TARGET := nfs.o nic.o osloader.o proto_tftm.o xbox_misc.o xbox_pci.o etherboot_config.o xbox_main.o
-+O_TARGET := nfs.o nic.o osloader.o proto_tftm.o xbox_misc.o xbox_pci.o etherboot_config.o xbox_main.o exec_elf.o
-
- include $(TOPDIR)/Rules.make
---- cromwell-2.40/etherboot/core/exec_elf.c
-+++ cromwell-2.40/etherboot/core/exec_elf.c
-@@ -0,0 +1,22 @@
-+#include "etherboot.h"
-+
-+/*
-+ * This is a helper function; it tries to execute an ELF image using
-+ * the Etherboot code. This is because *BSD kernels are raw ELF files,
-+ * which are unsupported when booting from CD-ROM or disk.
-+ */
-+void
-+try_elf_boot (char* image, int len)
-+{
-+ os_download_t os_download;
-+
-+ /* do nothing if the ELF magic mismatches */
-+ if (*(int*)image != 0x464c457f)
-+ return;
-+
-+ os_download = probe_image (image, len);
-+ if (os_download == 0)
-+ return;
-+
-+ os_download (image, len, 1);
-+}
---- cromwell-2.40/fs/cdrom/iso9660.c
-+++ cromwell-2.40/fs/cdrom/iso9660.c
-@@ -10,7 +10,11 @@
- 2004-07-22 "Edgar Hucek"<hostmaster@ed-soft.at> Created
- */
-
-+#ifndef STANDALONE
- #include "boot.h"
-+#else
-+# define printk printf
-+#endif
- #include "iso_fs.h"
-
- int isupper( int ch )
-@@ -96,25 +100,31 @@
- sprintf(newfilename, "%s/",filename);
- iso9660_name_translate(newfilename + strlen(newfilename),
- dir->name, (unsigned char)dir->name_len[0]);
--// printk("Read : Sector %d Filename %s %d\n",
--// *((unsigned long *)(dir->extent)), newfilename,
--// (unsigned char)dir->ext_attr_length[0]);
-+#ifdef DEBUG_ISO
-+ printk("Read : Sector %d Filename %s %d\n",
-+ *((unsigned long *)(dir->extent)), newfilename,
-+ (unsigned char)dir->ext_attr_length[0]);
-+#endif
- }
-
- if(strlen(newfilename) <= strlen(search)) {
- if(memcmp(newfilename, search, strlen(search)) == 0) {
- sect = *((unsigned long *)(dir->extent));
- memcpy(dir_found, dir, sizeof(struct iso_directory_record));
--// printk("Found : Sector %d Directory %s Filename %s %d %d \n",
--// sect, newfilename, search,
--// strlen(newfilename), strlen(search));
-+#ifdef DEBUG_ISO
-+ printk("Found : Sector %d Directory %s Filename %s %d %d \n",
-+ sect, newfilename, search,
-+ strlen(newfilename), strlen(search));
-+#endif
- // free(newfilename);
- // free(buffer);
- return sect;
- }
- }
- if((*((char *)(dir->flags)) & IS_DIR) && (*((unsigned char *)(dir->name_len)) > 1)) {
--// printk("Directory %s Filename %s\n", newfilename, search);
-+#ifdef DEBUG_ISO
-+ printk("Directory %s Filename %s\n", newfilename, search);
-+#endif
- if (strlen(newfilename) < strlen(search) && !memcmp(search,newfilename,
- strlen(newfilename)) && search[strlen(newfilename)]=='/') {
- sect = read_dir(driveId, dir, search, newfilename, dir_found);
-@@ -131,35 +141,46 @@
- return sect;
- }
-
--void read_file(int driveId, struct iso_directory_record *dir_read, char *buffer) {
-+unsigned long read_file(int driveId, struct iso_directory_record *dir_read, char *buffer, unsigned int max_bytes_to_read) {
- unsigned long read_size;
-+ unsigned long bytes_read;
- unsigned long offset;
- int i;
- char *tmpbuff;
-
-+
- offset = *((unsigned long *)(dir_read->extent));
- tmpbuff = (char *) malloc(ISO_BLOCKSIZE);
-+
-+ if (max_bytes_to_read > *((unsigned int *)(dir_read->size)) ) {
-+ read_size = *(unsigned long *)dir_read->size;
-+ }
-+ else read_size = *(unsigned long *)max_bytes_to_read;
-+
-+ bytes_read = read_size;
-
-- read_size = *((unsigned long *)(dir_read->size));
- if(read_size <= ISO_BLOCKSIZE) {
- read_size = ISO_BLOCKSIZE;
- } else {
- read_size+=(ISO_BLOCKSIZE - (read_size % ISO_BLOCKSIZE));
- }
-
--// printk(" read_file sector %d %d\n", offset, read_size);
--
-+#ifdef DEBUG_ISO
-+ printk(" read_file sector %d %d\n", offset, read_size);
-+#endif
- for(i = 0; i < (read_size >> ISOFS_BLOCK_BITS) ; i++) {
- memset(tmpbuff, 0x0, ISO_BLOCKSIZE);
- BootIdeReadSector(driveId, tmpbuff, offset , 0, ISO_BLOCKSIZE);
- offset++;
- if(((i+1) * ISO_BLOCKSIZE) > read_size) {
-- memcpy(&buffer[i * ISO_BLOCKSIZE], tmpbuff, (i * ISO_BLOCKSIZE) - *((unsigned long *)(dir_read->size)));
-+ memcpy(&buffer[i * ISO_BLOCKSIZE], tmpbuff, (i * ISO_BLOCKSIZE) - read_size);
- } else {
- memcpy(&buffer[i * ISO_BLOCKSIZE], tmpbuff, ISO_BLOCKSIZE);
- }
- }
- free(tmpbuff);
-+
-+ return bytes_read;
- }
-
- int BootIso9660GetFile(int driveId, char *szcPath, unsigned char *pbaFile, unsigned int dwFileLengthMax) {
-@@ -177,7 +198,9 @@
- memset(dir,0x0,sizeof(struct iso_directory_record));
-
- if(BootIdeReadSector(driveId, pvd, 16 , 0, ISO_BLOCKSIZE)) {
--// printk("BootIso9660GetFile : Error read Sector\n");
-+#ifdef DEBUG_ISO
-+ printk("BootIso9660GetFile : Error read Sector\n");
-+#endif
- free(pvd);
- free(dir);
- return -1;
-@@ -187,14 +210,9 @@
- offset = read_dir(driveId, rootd, szcPath, "", dir);
-
- if(offset > 0) {
-- if(*((unsigned long *)(dir->size)) > dwFileLengthMax) {
-- free(pvd);
-- free(dir);
-- return -1;
-- }
-- read_file(driveId, dir, pbaFile);
-- return *((unsigned long *)(dir->size));
-+ return read_file(driveId, dir, pbaFile, dwFileLengthMax);
- } else {
-+ //Not found
- free(pvd);
- free(dir);
- return -1;
---- cromwell-2.40/fs/grub/fsys_ext2fs.c
-+++ cromwell-2.40/fs/grub/fsys_ext2fs.c
-@@ -16,6 +16,7 @@
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
-+#include "boot.h"
-
- #ifdef FSYS_EXT2FS
-
---- cromwell-2.40/fs/grub/fsys_reiserfs.c
-+++ cromwell-2.40/fs/grub/fsys_reiserfs.c
-@@ -17,7 +17,7 @@
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
--
-+#include "boot.h"
- #ifdef FSYS_REISERFS
- #include "shared.h"
- #include "filesys.h"
-@@ -367,7 +367,7 @@
-
-
- static __inline__ unsigned long
--log2 (unsigned long word)
-+reiser_log2 (unsigned long word)
- {
- __asm__ ("bsfl %1,%0"
- : "=r" (word)
-@@ -609,7 +609,7 @@
-
- INFO->version = super.s_version;
- INFO->blocksize = super.s_blocksize;
-- INFO->fullblocksize_shift = log2 (super.s_blocksize);
-+ INFO->fullblocksize_shift = reiser_log2 (super.s_blocksize);
- INFO->blocksize_shift = INFO->fullblocksize_shift - SECTOR_BITS;
- INFO->cached_slots =
- (FSYSREISER_CACHE_SIZE >> INFO->fullblocksize_shift) - 1;
---- cromwell-2.40/include/boot.h
-+++ cromwell-2.40/include/boot.h
-@@ -331,8 +331,12 @@
- unsigned char *text1, int text1_length,
- unsigned char *text2, int text2_length );
-
--char *HelpGetLine(char *ptr);
--void HelpGetParm(char *szBuffer, char *szOrig);
- char *strrchr0(char *string, char ch);
-
-+void setLED(void *pattern);
-+
-+int strlen(const char * s);
-+int sprintf(char * buf, const char *fmt, ...);
-+char * strncpy(char * dest,const char *src,int count);
-+char * strstr(const char * s1,const char * s2);
- #endif // _Boot_H_
---- cromwell-2.40/include/config.h
-+++ cromwell-2.40/include/config.h
-@@ -1,7 +1,7 @@
- ////////////////////// compile-time options ////////////////////////////////
-
- //Cromwell version number
--#define VERSION "2.40"
-+#define VERSION "2.40-r3"
-
- // selects between the supported video modes, see boot.h for enum listing those available
- //#define VIDEO_PREFERRED_MODE VIDEO_MODE_800x600
---- cromwell-2.40/lib/gzip/misc.c
-+++ cromwell-2.40/lib/gzip/misc.c
-@@ -29,8 +29,6 @@
- *
- * Incomprehensible are the ways of bootloaders.
- */
--static void* memset(void *, int, size_t);
--static void* memcpy(void *, __const void *, size_t);
- #define memzero(s, n) memset ((s), 0, (n))
-
- typedef unsigned char uch;
-@@ -138,25 +136,6 @@
- free_mem_ptr = (long) *ptr;
- }
-
--static void* memset(void* s, int c, size_t n)
--{
-- int i;
-- char *ss = (char*)s;
--
-- for (i=0;i<n;i++) ss[i] = c;
-- return s;
--}
--
--static void* memcpy(void* __dest, __const void* __src,
-- size_t __n)
--{
-- int i;
-- char *d = (char *)__dest, *s = (char *)__src;
--
-- for (i=0;i<__n;i++) d[i] = s[i];
-- return __dest;
--}
--
- /* ===========================================================================
- * Fill the input buffer. This is called only when the buffer is empty
- * and at least one byte is really needed.
---- cromwell-2.40/lib/misc/BootLibrary.c
-+++ cromwell-2.40/lib/misc/BootLibrary.c
-@@ -36,7 +36,7 @@
- }
-
-
--size_t strlen(const char * s)
-+int strlen(const char * s)
- {
- int d0;
- register int __res;
-@@ -99,7 +99,7 @@
- return dest;
- }
-
--char * strncpy(char * dest,const char *src,size_t count)
-+char * strncpy(char * dest,const char *src,int count)
- {
- int d0, d1, d2, d3;
- __asm__ __volatile__(
---- cromwell-2.40/lib/misc/LED.c
-+++ cromwell-2.40/lib/misc/LED.c
-@@ -0,0 +1,52 @@
-+/**
-+ * Xbox LED Pattern setting for Cromwell.
-+ * Copyright (C) Thomas "ShALLaX" Pedley (gentoox@shallax.com)
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License as published by
-+ * the Free Software Foundation; either version 2 of the License, or
-+ * (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ */
-+
-+// Set the pattern of the LED.
-+// The pattern must be 4 characters long and must consist
-+// only of 'r', 'g', 'o' and 'x'.
-+//
-+// r = Red
-+// g = Green
-+// o = Orange
-+// x = Off
-+//
-+// E.g. rgog will cycle through red, green, orange, green and then loop.
-+
-+void setLED(char *pattern) {
-+ int i, r, g;
-+ r = g = 0;
-+
-+ for (i=0; i<4; ++i) {
-+ switch (pattern[i]) {
-+ case 'r':
-+ r++;
-+ break;
-+ case 'g':
-+ g++;
-+ break;
-+ case 'o':
-+ r++;
-+ g++;
-+ break;
-+ }
-+ r *= 2;
-+ g *= 2;
-+ }
-+ I2cSetFrontpanelLed(((r<<4) & 0xF0) + (g & 0xF));
-+}
---- cromwell-2.40/lib/misc/Makefile
-+++ cromwell-2.40/lib/misc/Makefile
-@@ -1,4 +1,4 @@
-
--O_TARGET := BootLibrary.o BootParser.o setup.o vsprintf.o
-+O_TARGET := BootLibrary.o BootParser.o setup.o vsprintf.o LED.o
-
- include $(TOPDIR)/Rules.make
---- cromwell-2.40/menu/iconmenu/IconMenuInit.c
-+++ cromwell-2.40/menu/iconmenu/IconMenuInit.c
-@@ -26,7 +26,7 @@
- if (tsaHarddiskInfo[i].m_fAtapi) {
- char *driveName=malloc(sizeof(char)*14);
- sprintf(driveName,"CD-ROM (hd%c)",i ? 'b':'a');
-- iconPtr = (ICON *)malloc(sizeof(ICON));
-+ iconPtr = malloc(sizeof(ICON));
- iconPtr->iconSlot = ICON_SOURCE_SLOT2;
- iconPtr->szCaption = driveName;
- iconPtr->functionPtr = BootFromCD;
-@@ -41,7 +41,7 @@
-
- #ifdef ETHERBOOT
- //Etherboot icon - if it's compiled in, it's always available.
-- iconPtr = (ICON *)malloc(sizeof(ICON));
-+ iconPtr = malloc(sizeof(ICON));
- iconPtr->iconSlot = ICON_SOURCE_SLOT3;
- iconPtr->szCaption = "Etherboot";
- iconPtr->functionPtr = BootFromEtherboot;
-@@ -49,7 +49,7 @@
- #endif
-
- #ifdef ADVANCED_MENU
-- iconPtr = (ICON *)malloc(sizeof(ICON));
-+ iconPtr = malloc(sizeof(ICON));
- iconPtr->iconSlot = ICON_SOURCE_SLOT0;
- iconPtr->szCaption = "Advanced";
- iconPtr->functionPtr = AdvancedMenu;
-@@ -74,7 +74,7 @@
- CONFIGENTRY *entry = (CONFIGENTRY*)LoadConfigFatX();
- if (entry !=NULL) {
- //There is a config file present.
-- iconPtr = (ICON *)malloc(sizeof(ICON));
-+ iconPtr = malloc(sizeof(ICON));
- iconPtr->iconSlot = ICON_SOURCE_SLOT4;
- iconPtr->szCaption="FatX (E:)";
- iconPtr->functionPtr = DrawBootMenu;
-@@ -101,10 +101,10 @@
- memset(ba,0x00,512);
- BootIdeReadSector(driveId, ba, 0, 0, 512);
-
-- //See if there is an MBR - no MBR means no native boot options.
-- if( !(ba[0x1fe]==0x55) || !(ba[0x1ff]==0xaa)) return;
-+ //See if there is an MBR - no MBR means no native boot options for this drive.
-+ if( !(ba[0x1fe]==0x55) || !(ba[0x1ff]==0xaa)) continue;
-
-- (volatile u8 *)pb=&ba[0x1be];
-+ pb=&ba[0x1be];
- //Check the primary partitions
- for (n=0; n<4; n++,pb+=16) {
- if(pb[0]&0x80) {
-@@ -113,10 +113,10 @@
- if (entry!=NULL) {
- //There is a valid config file here.
- //Add an icon for this partition
-- iconPtr = (ICON *)malloc(sizeof(ICON));
-+ iconPtr = malloc(sizeof(ICON));
- iconPtr->iconSlot = ICON_SOURCE_SLOT1;
- iconPtr->szCaption=malloc(10);
-- sprintf(iconPtr->szCaption, "hd%c%d", driveId+'a', n);
-+ sprintf(iconPtr->szCaption, "hd%c%d", driveId+'a', n+1);
- iconPtr->functionPtr = DrawBootMenu;
- iconPtr->functionDataPtr = (void *)entry;
- AddIcon(iconPtr);
---- cromwell-2.40/Makefile
-+++ cromwell-2.40/Makefile
-@@ -10,11 +10,15 @@
- -I$(TOPDIR)/startuploader -I$(TOPDIR)/drivers/cpu \
- -I$(TOPDIR)/lib/jpeg/
-
--CFLAGS = -O2 -mcpu=pentium -Werror $(INCLUDE) -Wstrict-prototypes -fomit-frame-pointer -pipe
-+#These are intended to be non-overridable.
-+CROM_CFLAGS=$(INCLUDE)
-
--# add the option for gcc 3.3 only
-+#You can override these if you wish.
-+CFLAGS= -O2 -g -march=pentium -pipe -fomit-frame-pointer -Wstrict-prototypes
-+
-+# add the option for gcc 3.3 only, again, non-overridable
- ifeq ($(GCC_3.3), 1)
--CFLAGS += -fno-zero-initialized-in-bss
-+CROM_CFLAGS += -fno-zero-initialized-in-bss
- endif
-
- LD = ld
-@@ -27,9 +31,9 @@
- #### Etherboot specific stuff
- ifeq ($(ETHERBOOT), yes)
- ETH_SUBDIRS = etherboot
--CFLAGS += -DETHERBOOT
-+CROM_CFLAGS += -DETHERBOOT
- ETH_INCLUDE = -I$(TOPDIR)/etherboot/include -I$(TOPDIR)/etherboot/arch/i386/include
--ETH_CFLAGS = -O2 -mcpu=pentium -Werror $(ETH_INCLUDE) -Wstrict-prototypes -fomit-frame-pointer -pipe -Ui386
-+ETH_CFLAGS = -O2 -march=pentium -Werror $(ETH_INCLUDE) -Wstrict-prototypes -fomit-frame-pointer -pipe -Ui386
- endif
-
- LDFLAGS-ROM = -s -S -T $(TOPDIR)/scripts/ldscript-crom.ld
-@@ -107,6 +111,7 @@
- OBJECTS-CROM += $(TOPDIR)/obj/BootEEPROM.o
- OBJECTS-CROM += $(TOPDIR)/obj/BootParser.o
- OBJECTS-CROM += $(TOPDIR)/obj/BootFATX.o
-+OBJECTS-CROM += $(TOPDIR)/obj/LED.o
- #USB
- OBJECTS-CROM += $(TOPDIR)/obj/config.o
- OBJECTS-CROM += $(TOPDIR)/obj/hcd-pci.o
-@@ -137,6 +142,7 @@
- OBJECTS-CROM += $(TOPDIR)/obj/etherboot_config.o
- OBJECTS-CROM += $(TOPDIR)/obj/xbox_main.o
- OBJECTS-CROM += $(TOPDIR)/obj/elf.o
-+OBJECTS-CROM += $(TOPDIR)/obj/exec_elf.o
- endif
-
- RESOURCES = $(TOPDIR)/obj/backdrop.elf
-@@ -159,7 +165,7 @@
-
- cromsubdirs: $(patsubst %, _dir_%, $(SUBDIRS))
- $(patsubst %, _dir_%, $(SUBDIRS)) : dummy
-- $(MAKE) CFLAGS="$(CFLAGS)" -C $(patsubst _dir_%, %, $@)
-+ $(MAKE) CFLAGS="$(CFLAGS) $(CROM_CFLAGS)" -C $(patsubst _dir_%, %, $@)
-
- dummy:
-