Index: tools/Makefile =================================================================== --- tools/Makefile (revision 12767) +++ tools/Makefile (working copy) @@ -10,7 +10,7 @@ LDFLAGS := -g CLEANALL := scramble descramble iriver sh2d bmp2rb rdf2binary convbdf \ - generate_rocklatin mkboot ipod_fw codepages uclpack mi4 gigabeat database + generate_rocklatin mkboot mkboot-x5 ipod_fw codepages uclpack mi4 gigabeat database all: @echo "Run make in your build directory!" @@ -35,6 +35,9 @@ mkboot: mkboot.c $(SILENT)$(CC) -g $+ -o $@ +mkboot-x5: mkboot-x5.c + $(SILENT)$(CC) -g $+ -o $@ + ipod_fw: ipod_fw.c $(SILENT)$(CC) -g $+ -o $@ Index: firmware/boot.lds =================================================================== --- firmware/boot.lds (revision 12767) +++ firmware/boot.lds (working copy) @@ -35,8 +35,8 @@ #define DRAMORIG 0x31000000 #define IRAMORIG 0x10000000 #define IRAMSIZE 0x20000 -#define FLASHORIG 0x00010000 -#define FLASHSIZE 4M +#define FLASHORIG 0x00150000 +#define FLASHSIZE 4M - FLASHORIG #elif CONFIG_CPU == PP5020 #define DRAMORIG 0x10000000 #define IRAMORIG 0x40000000 Index: tools/configure =================================================================== --- tools/configure (revision 13961) +++ tools/configure (working copy) @@ -538,7 +538,7 @@ # Toolsets for some target families: archosbitmaptools="$toolset scramble descramble sh2d uclpack bmp2rb" iriverbitmaptools="$toolset scramble descramble mkboot bmp2rb" - iaudiobitmaptools="$toolset scramble descramble mkboot bmp2rb" + iaudiobitmaptools="$toolset scramble descramble mkboot-x5 bmp2rb" ipodbitmaptools="$toolset scramble ipod_fw bmp2rb codepages" gigabeatbitmaptools="$toolset scramble descramble bmp2rb" # generic is used by IFP, H10, Sansa-e200 Index: firmware/target/coldfire/crt0.S =================================================================== --- firmware/target/coldfire/crt0.S (revision 13961) +++ firmware/target/coldfire/crt0.S (working copy) @@ -24,6 +24,55 @@ .global start start: +#if (defined(IAUDIO_X5) || defined(IAUDIO_M5)) && defined(BOOTLOADER) + + #if defined(IAUDIO_M5) + .equ sleep,0x3020eed0 + #endif + + #if defined(IAUDIO_X5) + .equ sleep,0x3020ef00 + #endif + + tst.b 0x30000000 + bne .loadoriginal + + move.l (0x80000000), %d1 /* GPIO_READ */ + btst #25, %d1 /* 0=Remote ON button */ + beq .remote_on_button + btst #26, %d1 /* 0=Main ON button */ + bne .loadrockbox + + pea (25).w + jsr sleep + addq.l #4, %sp + + btst #26, %d1 /* 0=Main ON button */ + beq .loadoriginal + bra .loadrockbox + +.remote_on_button: + pea (25).w + jsr sleep + addq.l #4, %sp + + move.l (0x80000000), %d1 /* GPIO_READ */ + btst #25, %d1 /* 0=Remote ON button */ + bne .loadrockbox + + .loadoriginal: + jmp 0x10010 + +.loadrockbox: + jmp .actualcrt0 + +.sleep: + + rts + +.actualcrt0: +#endif /* IAUDIO_X5 (M5) && BOOTLOADER */ + move.w #0x2700,%sr move.l #vectors,%d0