1
0
Fork 0
forked from len0rd/rockbox

Kill some D2 yellows with a simplistic Rolo implementation and NAND driver cleanup. Correct some comments in crt0.s and remove two erroneous null words from rockbox.bin

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@17127 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Rob Purchase 2008-04-15 20:02:24 +00:00
parent b36d3c0be2
commit d88c5667d9
3 changed files with 19 additions and 10 deletions

View file

@ -167,6 +167,15 @@ void rolo_restart(const unsigned char* source, unsigned char* dest,
"mov r0, #0x10000000 \n" "mov r0, #0x10000000 \n"
"mov pc, r0 \n" "mov pc, r0 \n"
); );
#elif defined(CPU_TCC780X)
/* Flush cache */
flush_icache();
asm volatile(
"mov pc, %0 \n"
: : "r"(dest)
);
#endif #endif
} }
#endif #endif
@ -216,7 +225,8 @@ int rolo_load(const char* filename)
length = filesize(fd) - FIRMWARE_OFFSET_FILE_DATA; length = filesize(fd) - FIRMWARE_OFFSET_FILE_DATA;
#if defined(CPU_COLDFIRE) || defined(CPU_PP) || (CONFIG_CPU==DM320) #if defined(CPU_COLDFIRE) || defined(CPU_PP) || (CONFIG_CPU==DM320) \
|| defined(CPU_TCC780X)
/* Read and save checksum */ /* Read and save checksum */
lseek(fd, FIRMWARE_OFFSET_FILE_CRC, SEEK_SET); lseek(fd, FIRMWARE_OFFSET_FILE_CRC, SEEK_SET);
if (read(fd, &file_checksum, 4) != 4) { if (read(fd, &file_checksum, 4) != 4) {

View file

@ -39,9 +39,6 @@ long last_disk_activity = -1;
/** static, private data **/ /** static, private data **/
static bool initialized = false; static bool initialized = false;
static long next_yield = 0;
#define MIN_YIELD_PERIOD 2000
static struct mutex ata_mtx SHAREDBSS_ATTR; static struct mutex ata_mtx SHAREDBSS_ATTR;
#define SECTOR_SIZE 512 #define SECTOR_SIZE 512
@ -740,7 +737,11 @@ int ata_read_sectors(IF_MV2(int drive,) unsigned long start, int incount,
int ata_write_sectors(IF_MV2(int drive,) unsigned long start, int count, int ata_write_sectors(IF_MV2(int drive,) unsigned long start, int count,
const void* outbuf) const void* outbuf)
{ {
#warning function not implemented #ifdef HAVE_MULTIVOLUME
(void)drive; /* unused for now */
#endif
/* TODO: Learn more about TNFTL and implement this one day... */
(void)start; (void)start;
(void)count; (void)count;
(void)outbuf; (void)outbuf;

View file

@ -35,18 +35,16 @@
start: start:
#ifdef TCCBOOT #ifdef TCCBOOT
#ifdef BOOTLOADER
/* Add -DTCCBOOT to EXTRA_DEFINES in the bootloader Makefile to /* Add -DTCCBOOT to EXTRA_DEFINES in the bootloader Makefile to
enable building the bootloader to be appended to the end of the enable building the bootloader to be appended to the end of the
original firmware, dual-booting based on a key-press. original firmware, dual-booting based on a key-press.
NB: On the D2 TCCBOOT currently only works in USB boot mode (via tcctool)
When flashed to the device, the OF will boot as normal - but holding a
key to boot Rockbox results in a blank screen and crashed player.
The following two values are filled in by mktccboot. The following two values are filled in by mktccboot.
*/ */
.word 0 /* Saved entrypoint of original firmware*/ .word 0 /* Saved entrypoint of original firmware*/
.word 0 /* Location in RAM of the start of our bootloader */ .word 0 /* Location in RAM of the start of our bootloader */
#endif
#else #else
ldr pc, =start_loc /* jump to the main entry point */ ldr pc, =start_loc /* jump to the main entry point */
@ -79,7 +77,7 @@ start_loc:
#error No bootup key detection implemented for this target #error No bootup key detection implemented for this target
#endif #endif
/* Copy bootloader to safe area - 0x21000000 (DRAM) */ /* Copy bootloader to safe area - 0x21F00000 (end of DRAM) */
/* TODO: Adjust this for other targets - DRAM + DRAMSIZE - 0x100000 */ /* TODO: Adjust this for other targets - DRAM + DRAMSIZE - 0x100000 */
ldr r0, [pc, #-28] ldr r0, [pc, #-28]
mov r1, #0x22000000 mov r1, #0x22000000