Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
arm
mach-shmobile
hotplug.c
Go to the documentation of this file.
1
/*
2
* SMP support for R-Mobile / SH-Mobile
3
*
4
* Copyright (C) 2010 Magnus Damm
5
*
6
* Based on realview, Copyright (C) 2002 ARM Ltd, All Rights Reserved
7
*
8
* This program is free software; you can redistribute it and/or modify
9
* it under the terms of the GNU General Public License version 2 as
10
* published by the Free Software Foundation.
11
*/
12
#include <linux/kernel.h>
13
#include <linux/errno.h>
14
#include <
linux/smp.h
>
15
#include <
linux/cpumask.h
>
16
#include <
linux/delay.h
>
17
#include <
linux/of.h
>
18
#include <mach/common.h>
19
#include <
mach/r8a7779.h
>
20
#include <
mach/emev2.h
>
21
#include <asm/cacheflush.h>
22
#include <
asm/mach-types.h
>
23
24
static
cpumask_t
dead_cpus;
25
26
void
shmobile_cpu_die
(
unsigned
int
cpu
)
27
{
28
/* hardware shutdown code running on the CPU that is being offlined */
29
flush_cache_all
();
30
dsb
();
31
32
/* notify platform_cpu_kill() that hardware shutdown is finished */
33
cpumask_set_cpu(cpu, &dead_cpus);
34
35
/* wait for SoC code in platform_cpu_kill() to shut off CPU core
36
* power. CPU bring up starts from the reset vector.
37
*/
38
while
(1) {
39
/*
40
* here's the WFI
41
*/
42
asm
(
".word 0xe320f003\n"
43
:
44
:
45
:
"memory"
,
"cc"
);
46
}
47
}
48
49
int
shmobile_cpu_disable
(
unsigned
int
cpu
)
50
{
51
cpumask_clear_cpu(cpu, &dead_cpus);
52
/*
53
* we don't allow CPU 0 to be shutdown (it is still too special
54
* e.g. clock tick interrupts)
55
*/
56
return
cpu == 0 ? -
EPERM
: 0;
57
}
58
59
int
shmobile_cpu_is_dead
(
unsigned
int
cpu
)
60
{
61
return
cpumask_test_cpu
(cpu, &dead_cpus);
62
}
Generated on Thu Jan 10 2013 12:58:56 for Linux Kernel by
1.8.2