summaryrefslogtreecommitdiff
path: root/firmware/target/arm/system-arm.h
diff options
context:
space:
mode:
Diffstat (limited to 'firmware/target/arm/system-arm.h')
-rw-r--r--firmware/target/arm/system-arm.h27
1 files changed, 27 insertions, 0 deletions
diff --git a/firmware/target/arm/system-arm.h b/firmware/target/arm/system-arm.h
index ffce77a176..719ec82f1b 100644
--- a/firmware/target/arm/system-arm.h
+++ b/firmware/target/arm/system-arm.h
@@ -347,4 +347,31 @@ static inline uint32_t swaw32_hw(uint32_t value)
347 347
348} 348}
349 349
350#if defined(CPU_TCC780X) || defined(CPU_TCC77X) /* Single core only for now */ \
351|| CONFIG_CPU == IMX31L || CONFIG_CPU == DM320 || CONFIG_CPU == AS3525 \
352|| CONFIG_CPU == S3C2440 || CONFIG_CPU == S5L8701 || CONFIG_CPU == AS3525v2 \
353|| CONFIG_CPU == S5L8702
354/* Use the generic ARMv4/v5/v6 wait for IRQ */
355static inline void core_sleep(void)
356{
357 asm volatile (
358 "mcr p15, 0, %0, c7, c0, 4 \n" /* Wait for interrupt */
359#if CONFIG_CPU == IMX31L
360 "nop\n nop\n nop\n nop\n nop\n" /* Clean out the pipes */
361#endif
362 : : "r"(0)
363 );
364 enable_irq();
365}
366#else
367/* Skip this if special code is required and implemented */
368#if !(defined(CPU_PP)) && CONFIG_CPU != RK27XX && CONFIG_CPU != IMX233
369static inline void core_sleep(void)
370{
371 /* TODO: core_sleep not implemented, battery life will be decreased */
372 enable_irq();
373}
374#endif /* CPU_PP */
375#endif
376
350#endif /* SYSTEM_ARM_H */ 377#endif /* SYSTEM_ARM_H */