diff options
author | Michael Sevakis <jethead71@rockbox.org> | 2007-04-14 11:15:43 +0000 |
---|---|---|
committer | Michael Sevakis <jethead71@rockbox.org> | 2007-04-14 11:15:43 +0000 |
commit | 036168cbf96d455eea927bcf1701627e81e68a3a (patch) | |
tree | 8bf88a49aacccc8807241837a62ea4d1ebf56ffe /firmware/target/arm | |
parent | 0b7bb31453762f354af30210d1981f5dec3cdc19 (diff) | |
download | rockbox-036168cbf96d455eea927bcf1701627e81e68a3a.tar.gz rockbox-036168cbf96d455eea927bcf1701627e81e68a3a.zip |
PP5020/PP5024: Add ASM optimized inline current_core.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@13155 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/target/arm')
-rw-r--r-- | firmware/target/arm/system-target.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/firmware/target/arm/system-target.h b/firmware/target/arm/system-target.h index 2b72e9293e..0dd02a8704 100644 --- a/firmware/target/arm/system-target.h +++ b/firmware/target/arm/system-target.h | |||
@@ -36,7 +36,27 @@ static inline void udelay(unsigned usecs) | |||
36 | while (TIME_BEFORE(USEC_TIMER, stop)); | 36 | while (TIME_BEFORE(USEC_TIMER, stop)); |
37 | } | 37 | } |
38 | 38 | ||
39 | #if CONFIG_CPU == PP5020 || CONFIG_CPU == PP5024 | ||
40 | static inline unsigned int current_core(void) | ||
41 | { | ||
42 | /* | ||
43 | * PROCESSOR_ID seems to be 32-bits: | ||
44 | * CPU = 0x55555555 = |01010101|01010101|01010101|01010101| | ||
45 | * COP = 0xaaaaaaaa = |10101010|10101010|10101010|10101010| | ||
46 | * ^ | ||
47 | */ | ||
48 | unsigned int core; | ||
49 | asm volatile ( | ||
50 | "ldr %0, =0x60000000 \r\n" /* PROCESSOR_ID */ | ||
51 | "ldrb %0, [%0] \r\n" /* Just load the LSB */ | ||
52 | "mov %0, %0, lsr #7 \r\n" /* Bit 7 => index */ | ||
53 | : "=&r"(core) /* CPU=0, COP=1 */ | ||
54 | ); | ||
55 | return core; | ||
56 | } | ||
57 | #else | ||
39 | unsigned int current_core(void); | 58 | unsigned int current_core(void); |
59 | #endif | ||
40 | 60 | ||
41 | #if CONFIG_CPU != PP5002 | 61 | #if CONFIG_CPU != PP5002 |
42 | 62 | ||