sleep.S (14cd8fd574bce1cfbe510ccb1f73c7c1024d770f) sleep.S (2c74a0cefa463a7a483b07ba4d2ea8e4ec7b996c)
1#include <linux/linkage.h>
2#include <linux/threads.h>
3#include <asm/asm-offsets.h>
4#include <asm/assembler.h>
5#include <asm/glue-cache.h>
6#include <asm/glue-proc.h>
7#include <asm/system.h>
8 .text
9
10/*
11 * Save CPU state for a suspend
12 * r1 = v:p offset
13 * r2 = suspend function arg0
14 * r3 = suspend function
15 * Note: does not return until system resumes
16 */
1#include <linux/linkage.h>
2#include <linux/threads.h>
3#include <asm/asm-offsets.h>
4#include <asm/assembler.h>
5#include <asm/glue-cache.h>
6#include <asm/glue-proc.h>
7#include <asm/system.h>
8 .text
9
10/*
11 * Save CPU state for a suspend
12 * r1 = v:p offset
13 * r2 = suspend function arg0
14 * r3 = suspend function
15 * Note: does not return until system resumes
16 */
17ENTRY(cpu_suspend)
17ENTRY(__cpu_suspend)
18 stmfd sp!, {r4 - r11, lr}
19#ifdef MULTI_CPU
20 ldr r10, =processor
21 ldr r5, [r10, #CPU_SLEEP_SIZE] @ size of CPU sleep state
22 ldr ip, [r10, #CPU_DO_RESUME] @ virtual resume function
23#else
24 ldr r5, =cpu_suspend_size
25 ldr ip, =cpu_do_resume

--- 25 unchanged lines hidden (view full) ---

51#ifdef MULTI_CACHE
52 ldr r10, =cpu_cache
53 mov lr, pc
54 ldr pc, [r10, #CACHE_FLUSH_KERN_ALL]
55#else
56 bl __cpuc_flush_kern_all
57#endif
58 ldmfd sp!, {r0, pc} @ call suspend fn
18 stmfd sp!, {r4 - r11, lr}
19#ifdef MULTI_CPU
20 ldr r10, =processor
21 ldr r5, [r10, #CPU_SLEEP_SIZE] @ size of CPU sleep state
22 ldr ip, [r10, #CPU_DO_RESUME] @ virtual resume function
23#else
24 ldr r5, =cpu_suspend_size
25 ldr ip, =cpu_do_resume

--- 25 unchanged lines hidden (view full) ---

51#ifdef MULTI_CACHE
52 ldr r10, =cpu_cache
53 mov lr, pc
54 ldr pc, [r10, #CACHE_FLUSH_KERN_ALL]
55#else
56 bl __cpuc_flush_kern_all
57#endif
58 ldmfd sp!, {r0, pc} @ call suspend fn
59ENDPROC(cpu_suspend)
59ENDPROC(__cpu_suspend)
60 .ltorg
61
62/*
63 * r0 = control register value
64 * r1 = v:p offset (preserved by cpu_do_resume)
65 * r2 = phys page table base
66 * r3 = L1 section flags
67 */

--- 58 unchanged lines hidden ---
60 .ltorg
61
62/*
63 * r0 = control register value
64 * r1 = v:p offset (preserved by cpu_do_resume)
65 * r2 = phys page table base
66 * r3 = L1 section flags
67 */

--- 58 unchanged lines hidden ---