diff options
author | Thomas Martitz <kugel@rockbox.org> | 2012-01-04 18:07:21 +0100 |
---|---|---|
committer | Thomas Martitz <kugel@rockbox.org> | 2012-01-22 18:46:44 +0100 |
commit | 991ae1e39553172a7dd6cd8c634aebfce892e261 (patch) | |
tree | 672a4583af663def399c4fefdbad060605397fbc /firmware/target/mips/ingenic_jz47xx/system-target.h | |
parent | eaa83bd64775b87e943d345e2810deed44408776 (diff) | |
download | rockbox-991ae1e39553172a7dd6cd8c634aebfce892e261.tar.gz rockbox-991ae1e39553172a7dd6cd8c634aebfce892e261.zip |
Create fimrware/asm directory for assembly optimized stuff.
This dir is suitable for stuff that doesn't fit the target tree, e.g. because
it also builds on hosted or otherwise. It also has a generic subfolder for
fallback C implementations so that not all archs need to provide asm files.
SOURCES should only contain "foo.c" where foo.c includes the specific
<arch>/foo.c files from the subdirs using the preprocessor. This way automatic
selection of asm versions or generic C verion is possible.
For the start, the thread support files are moved, since ASM threads can
be used on hosted platforms as well. Since core_sleep() remains platform
specific it's moved to the corresponding system.h headers.
Change-Id: Iebff272f3407a6eaafeb7656ceb0ae9eca3f7cb9
Diffstat (limited to 'firmware/target/mips/ingenic_jz47xx/system-target.h')
-rw-r--r-- | firmware/target/mips/ingenic_jz47xx/system-target.h | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/firmware/target/mips/ingenic_jz47xx/system-target.h b/firmware/target/mips/ingenic_jz47xx/system-target.h index caf1733158..1c2e7d7173 100644 --- a/firmware/target/mips/ingenic_jz47xx/system-target.h +++ b/firmware/target/mips/ingenic_jz47xx/system-target.h | |||
@@ -97,4 +97,28 @@ void dma_disable(void); | |||
97 | #define DMA_IRQ(n) (IRQ_DMA_0 + (n)) | 97 | #define DMA_IRQ(n) (IRQ_DMA_0 + (n)) |
98 | #define GPIO_IRQ(n) (IRQ_GPIO_0 + (n)) | 98 | #define GPIO_IRQ(n) (IRQ_GPIO_0 + (n)) |
99 | 99 | ||
100 | /*--------------------------------------------------------------------------- | ||
101 | * Put core in a power-saving state. | ||
102 | *--------------------------------------------------------------------------- | ||
103 | */ | ||
104 | static inline void core_sleep(void) | ||
105 | { | ||
106 | #if CONFIG_CPU == JZ4732 | ||
107 | __cpm_idle_mode(); | ||
108 | #endif | ||
109 | asm volatile(".set mips32r2 \n" | ||
110 | "mfc0 $8, $12 \n" /* mfc t0, $12 */ | ||
111 | "move $9, $8 \n" /* move t1, t0 */ | ||
112 | "la $10, 0x8000000 \n" /* la t2, 0x8000000 */ | ||
113 | "or $8, $8, $10 \n" /* Enable reduced power mode */ | ||
114 | "mtc0 $8, $12 \n" /* mtc t0, $12 */ | ||
115 | "wait \n" | ||
116 | "mtc0 $9, $12 \n" /* mtc t1, $12 */ | ||
117 | ".set mips0 \n" | ||
118 | ::: "t0", "t1", "t2" | ||
119 | ); | ||
120 | enable_irq(); | ||
121 | } | ||
122 | |||
123 | |||
100 | #endif /* __SYSTEM_TARGET_H_ */ | 124 | #endif /* __SYSTEM_TARGET_H_ */ |