Anti-red?
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@14899 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
da55251a35
commit
3e7d4f0d14
3 changed files with 17 additions and 14 deletions
|
@ -13,9 +13,7 @@ logf.c
|
||||||
profile.c
|
profile.c
|
||||||
#endif /* RB_PROFILE */
|
#endif /* RB_PROFILE */
|
||||||
kernel.c
|
kernel.c
|
||||||
#ifndef BOOTLOADER
|
|
||||||
rolo.c
|
rolo.c
|
||||||
#endif /* BOOTLOADER */
|
|
||||||
thread.c
|
thread.c
|
||||||
timer.c
|
timer.c
|
||||||
#endif /* SIMULATOR */
|
#endif /* SIMULATOR */
|
||||||
|
|
|
@ -364,7 +364,11 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Dual core support - not yet working on the 1G/2G and 3G iPod */
|
/* Dual core support - not yet working on the 1G/2G and 3G iPod */
|
||||||
#if defined(CPU_PP) && CONFIG_CPU != PP5002 && !defined(BOOTLOADER)
|
#if defined(CPU_PP)
|
||||||
|
#define IDLE_STACK_SIZE 0x80
|
||||||
|
#define IDLE_STACK_WORDS 0x20
|
||||||
|
|
||||||
|
#if !defined(BOOTLOADER) && CONFIG_CPU != PP5002
|
||||||
#define NUM_CORES 2
|
#define NUM_CORES 2
|
||||||
#define CURRENT_CORE current_core()
|
#define CURRENT_CORE current_core()
|
||||||
/* Hopefully at some point we will learn how to mark areas of main memory as
|
/* Hopefully at some point we will learn how to mark areas of main memory as
|
||||||
|
@ -373,18 +377,17 @@
|
||||||
#define NOCACHEDATA_ATTR IDATA_ATTR
|
#define NOCACHEDATA_ATTR IDATA_ATTR
|
||||||
|
|
||||||
#define IF_COP(...) __VA_ARGS__
|
#define IF_COP(...) __VA_ARGS__
|
||||||
|
#endif /* !defined(BOOTLOADER) && CONFIG_CPU != PP5002 */
|
||||||
|
#endif /* CPU_PP */
|
||||||
|
|
||||||
#define IDLE_STACK_SIZE 0x80
|
#ifndef NUM_CORES
|
||||||
#define IDLE_STACK_WORDS 0x20
|
/* Default to single core */
|
||||||
|
|
||||||
#else
|
|
||||||
#define NUM_CORES 1
|
#define NUM_CORES 1
|
||||||
#define CURRENT_CORE CPU
|
#define CURRENT_CORE CPU
|
||||||
#define NOCACHEBSS_ATTR
|
#define NOCACHEBSS_ATTR
|
||||||
#define NOCACHEDATA_ATTR
|
#define NOCACHEDATA_ATTR
|
||||||
|
|
||||||
#define IF_COP(...)
|
#define IF_COP(...)
|
||||||
|
#endif /* NUM_CORES */
|
||||||
|
|
||||||
#endif /* Processor specific */
|
#endif /* __CONFIG_H__ */
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
|
@ -51,11 +51,10 @@
|
||||||
* TODO: Use the mailboxes built into the PP processor for this
|
* TODO: Use the mailboxes built into the PP processor for this
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#if NUM_CORES > 1
|
||||||
volatile unsigned char IDATA_ATTR cpu_message = 0;
|
volatile unsigned char IDATA_ATTR cpu_message = 0;
|
||||||
volatile unsigned char IDATA_ATTR cpu_reply = 0;
|
volatile unsigned char IDATA_ATTR cpu_reply = 0;
|
||||||
#if NUM_CORES > 1
|
|
||||||
extern int cop_idlestackbegin[];
|
extern int cop_idlestackbegin[];
|
||||||
#endif
|
|
||||||
|
|
||||||
void rolo_restart_cop(void) ICODE_ATTR;
|
void rolo_restart_cop(void) ICODE_ATTR;
|
||||||
void rolo_restart_cop(void)
|
void rolo_restart_cop(void)
|
||||||
|
@ -92,7 +91,8 @@ void rolo_restart_cop(void)
|
||||||
"mov pc, r0 \n"
|
"mov pc, r0 \n"
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
#endif
|
#endif /* NUM_CORES > 1 */
|
||||||
|
#endif /* CPU_PP */
|
||||||
|
|
||||||
static void rolo_error(const char *text)
|
static void rolo_error(const char *text)
|
||||||
{
|
{
|
||||||
|
@ -154,11 +154,13 @@ void rolo_restart(const unsigned char* source, unsigned char* dest,
|
||||||
for (i=0;i<8;i++)
|
for (i=0;i<8;i++)
|
||||||
memmapregs[i]=0;
|
memmapregs[i]=0;
|
||||||
|
|
||||||
|
#if NUM_CORES > 1
|
||||||
/* Tell the COP it's safe to continue rebooting */
|
/* Tell the COP it's safe to continue rebooting */
|
||||||
cpu_message = 1;
|
cpu_message = 1;
|
||||||
|
|
||||||
/* Wait for the COP to tell us it is rebooting */
|
/* Wait for the COP to tell us it is rebooting */
|
||||||
while(cpu_reply != 2);
|
while(cpu_reply != 2);
|
||||||
|
#endif
|
||||||
|
|
||||||
asm volatile(
|
asm volatile(
|
||||||
"mov r0, #0x10000000 \n"
|
"mov r0, #0x10000000 \n"
|
||||||
|
@ -226,7 +228,7 @@ int rolo_load(const char* filename)
|
||||||
file_checksum = betoh32(file_checksum);
|
file_checksum = betoh32(file_checksum);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CPU_PP
|
#if defined(CPU_PP) && NUM_CORES > 1
|
||||||
lcd_puts(0, 2, "Waiting for coprocessor...");
|
lcd_puts(0, 2, "Waiting for coprocessor...");
|
||||||
lcd_update();
|
lcd_update();
|
||||||
rolo_restart_cop();
|
rolo_restart_cop();
|
||||||
|
|
Loading…
Reference in a new issue