summaryrefslogtreecommitdiff
path: root/firmware/target/arm
diff options
context:
space:
mode:
authorDaniel Ankers <dan@weirdo.org.uk>2007-03-04 20:06:41 +0000
committerDaniel Ankers <dan@weirdo.org.uk>2007-03-04 20:06:41 +0000
commit82f9056988331572e01231d70fadc64b7ab76c6f (patch)
tree9f1d33b904516fd5eeac2067e4afb32ce5e990df /firmware/target/arm
parent74e572c9d600247ee795b206da3715f6af442a25 (diff)
downloadrockbox-82f9056988331572e01231d70fadc64b7ab76c6f.tar.gz
rockbox-82f9056988331572e01231d70fadc64b7ab76c6f.zip
Dual core support for PP502x players (iPod G4 and later, iriver h10, Sansa - iPod G3 will be coming soon.) This allows threads to be run on either core provided that all communications between the cores is done using uncached memory. There should be no significant change in battery life from doing this. Documentation (on the RockboxKernel wiki page) will follow shortly.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@12601 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm')
-rw-r--r--firmware/target/arm/crt0-pp.S17
-rw-r--r--firmware/target/arm/sandisk/sansa-e200/ata-e200.c3
2 files changed, 19 insertions, 1 deletions
diff --git a/firmware/target/arm/crt0-pp.S b/firmware/target/arm/crt0-pp.S
index e0d1034f74..bbeace1b60 100644
--- a/firmware/target/arm/crt0-pp.S
+++ b/firmware/target/arm/crt0-pp.S
@@ -222,6 +222,19 @@ cop_init:
222 strhi r4, [r2], #4 222 strhi r4, [r2], #4
223 bhi 2b 223 bhi 2b
224 224
225 /* Set up stack for IRQ mode */
226 msr cpsr_c, #0xd2
227 ldr sp, =cop_irq_stack
228 /* Set up stack for FIQ mode */
229 msr cpsr_c, #0xd1
230 ldr sp, =fiq_stack
231
232 /* Let abort and undefined modes use IRQ stack */
233 msr cpsr_c, #0xd7
234 ldr sp, =cop_irq_stack
235 msr cpsr_c, #0xdb
236 ldr sp, =cop_irq_stack
237
225 ldr sp, =cop_stackend 238 ldr sp, =cop_stackend
226 239
227 /* Run cop_main() in apps/main.c */ 240 /* Run cop_main() in apps/main.c */
@@ -307,6 +320,10 @@ UIE:
307 .space 256*4 320 .space 256*4
308irq_stack: 321irq_stack:
309 322
323/* 256 words of COP IRQ stack */
324 .space 256*4
325cop_irq_stack:
326
310/* 256 words of FIQ stack */ 327/* 256 words of FIQ stack */
311 .space 256*4 328 .space 256*4
312fiq_stack: 329fiq_stack:
diff --git a/firmware/target/arm/sandisk/sansa-e200/ata-e200.c b/firmware/target/arm/sandisk/sansa-e200/ata-e200.c
index cf05397a78..73a67d1ee6 100644
--- a/firmware/target/arm/sandisk/sansa-e200/ata-e200.c
+++ b/firmware/target/arm/sandisk/sansa-e200/ata-e200.c
@@ -687,7 +687,8 @@ int ata_init(void)
687 { 687 {
688 queue_init(&sd_queue, true); 688 queue_init(&sd_queue, true);
689 create_thread(sd_thread, sd_stack, 689 create_thread(sd_thread, sd_stack,
690 sizeof(sd_stack), sd_thread_name IF_PRIO(, PRIORITY_SYSTEM)); 690 sizeof(sd_stack), sd_thread_name IF_PRIO(, PRIORITY_SYSTEM)
691 IF_COP(, CPU, false));
691 initialized = true; 692 initialized = true;
692 } 693 }
693 694