aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-tegra/sleep.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm/mach-tegra/sleep.S')
-rw-r--r--arch/arm/mach-tegra/sleep.S29
1 files changed, 29 insertions, 0 deletions
diff --git a/arch/arm/mach-tegra/sleep.S b/arch/arm/mach-tegra/sleep.S
index 08e9481c049..91548a77dd9 100644
--- a/arch/arm/mach-tegra/sleep.S
+++ b/arch/arm/mach-tegra/sleep.S
@@ -25,9 +25,38 @@
25#include <linux/linkage.h> 25#include <linux/linkage.h>
26 26
27#include <asm/assembler.h> 27#include <asm/assembler.h>
28#include <asm/cp15.h>
28 29
29#include "iomap.h" 30#include "iomap.h"
30 31
31#include "flowctrl.h" 32#include "flowctrl.h"
32#include "sleep.h" 33#include "sleep.h"
33 34
35#ifdef CONFIG_PM_SLEEP
36/*
37 * tegra_disable_clean_inv_dcache
38 *
39 * disable, clean & invalidate the D-cache
40 *
41 * Corrupted registers: r1-r3, r6, r8, r9-r11
42 */
43ENTRY(tegra_disable_clean_inv_dcache)
44 stmfd sp!, {r0, r4-r5, r7, r9-r11, lr}
45 dmb @ ensure ordering
46
47 /* Disable the D-cache */
48 mrc p15, 0, r2, c1, c0, 0
49 bic r2, r2, #CR_C
50 mcr p15, 0, r2, c1, c0, 0
51 isb
52
53 /* Flush the D-cache */
54 bl v7_flush_dcache_louis
55
56 /* Trun off coherency */
57 exit_smp r4, r5
58
59 ldmfd sp!, {r0, r4-r5, r7, r9-r11, pc}
60ENDPROC(tegra_disable_clean_inv_dcache)
61
62#endif