blob: 470a417d135122a3cfbbca267ba5543e6f829de0 [file] [log] [blame]
Nicolas Pitree8db2882012-04-12 02:45:22 -04001/*
2 * arch/arm/include/asm/mcpm.h
3 *
4 * Created by: Nicolas Pitre, April 2012
5 * Copyright: (C) 2012-2013 Linaro Limited
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 */
11
12#ifndef MCPM_H
13#define MCPM_H
14
15/*
16 * Maximum number of possible clusters / CPUs per cluster.
17 *
18 * This should be sufficient for quite a while, while keeping the
19 * (assembly) code simpler. When this starts to grow then we'll have
20 * to consider dynamic allocation.
21 */
22#define MAX_CPUS_PER_CLUSTER 4
23#define MAX_NR_CLUSTERS 2
24
25#ifndef __ASSEMBLY__
26
27/*
28 * Platform specific code should use this symbol to set up secondary
29 * entry location for processors to use when released from reset.
30 */
31extern void mcpm_entry_point(void);
32
33/*
34 * This is used to indicate where the given CPU from given cluster should
35 * branch once it is ready to re-enter the kernel using ptr, or NULL if it
36 * should be gated. A gated CPU is held in a WFE loop until its vector
37 * becomes non NULL.
38 */
39void mcpm_set_entry_vector(unsigned cpu, unsigned cluster, void *ptr);
40
41#endif /* ! __ASSEMBLY__ */
42#endif