aboutsummaryrefslogtreecommitdiff
path: root/common/psci/psci_private.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/psci/psci_private.h')
-rw-r--r--common/psci/psci_private.h31
1 files changed, 13 insertions, 18 deletions
diff --git a/common/psci/psci_private.h b/common/psci/psci_private.h
index 7545167..8016ad2 100644
--- a/common/psci/psci_private.h
+++ b/common/psci/psci_private.h
@@ -31,6 +31,7 @@
#ifndef __PSCI_PRIVATE_H__
#define __PSCI_PRIVATE_H__
+#include <arch.h>
#include <bakery_lock.h>
#ifndef __ASSEMBLY__
@@ -51,23 +52,6 @@ typedef struct {
} ns_entry_info;
/*******************************************************************************
- *
- *
- ******************************************************************************/
-typedef struct {
- unsigned long sctlr;
- unsigned long scr;
- unsigned long cptr;
- unsigned long cpacr;
- unsigned long cntfrq;
- unsigned long mair;
- unsigned long tcr;
- unsigned long ttbr;
- unsigned long vbar;
- unsigned long pstate;
-} secure_context;
-
-/*******************************************************************************
* The following two data structures hold the topology tree which in turn tracks
* the state of the all the affinity instances supported by the platform.
******************************************************************************/
@@ -84,6 +68,17 @@ typedef struct {
int max;
} aff_limits_node;
+/*******************************************************************************
+ * This data structure holds secure world context that needs to be preserved
+ * across cpu_suspend calls which enter the power down state.
+ ******************************************************************************/
+typedef struct {
+ /* Align the suspend level to allow per-cpu lockless access */
+ int suspend_level
+ __attribute__((__aligned__(CACHE_WRITEBACK_GRANULE)));
+ sysregs_context sec_sysregs;
+} suspend_context;
+
typedef aff_map_node *mpidr_aff_map_nodes[MPIDR_MAX_AFFLVL];
typedef unsigned int (*afflvl_power_on_finisher)(unsigned long,
aff_map_node *);
@@ -91,7 +86,7 @@ typedef unsigned int (*afflvl_power_on_finisher)(unsigned long,
/*******************************************************************************
* Data prototypes
******************************************************************************/
-extern secure_context psci_secure_context[PSCI_NUM_AFFS];
+extern suspend_context psci_suspend_context[PSCI_NUM_AFFS];
extern ns_entry_info psci_ns_entry_info[PSCI_NUM_AFFS];
extern unsigned int psci_ns_einfo_idx;
extern aff_limits_node psci_aff_limits[MPIDR_MAX_AFFLVL + 1];