diff options
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | bl31/bl31.mk | 4 | ||||
-rw-r--r-- | services/psci/psci_afflvl_off.c (renamed from common/psci/psci_afflvl_off.c) | 1 | ||||
-rw-r--r-- | services/psci/psci_afflvl_on.c (renamed from common/psci/psci_afflvl_on.c) | 2 | ||||
-rw-r--r-- | services/psci/psci_afflvl_suspend.c (renamed from common/psci/psci_afflvl_suspend.c) | 9 | ||||
-rw-r--r-- | services/psci/psci_common.c (renamed from common/psci/psci_common.c) | 0 | ||||
-rw-r--r-- | services/psci/psci_entry.S (renamed from common/psci/psci_entry.S) | 0 | ||||
-rw-r--r-- | services/psci/psci_main.c (renamed from common/psci/psci_main.c) | 0 | ||||
-rw-r--r-- | services/psci/psci_private.h (renamed from common/psci/psci_private.h) | 0 | ||||
-rw-r--r-- | services/psci/psci_setup.c (renamed from common/psci/psci_setup.c) | 0 |
10 files changed, 15 insertions, 3 deletions
@@ -131,7 +131,7 @@ INCLUDES += -Ilib/include/ \ -Iinclude/${ARCH}/ \ -Iinclude/ \ -Iarch/system/gic \ - -Icommon/psci \ + -Iservices/psci \ -Iinclude/stdlib \ -Iinclude/stdlib/sys \ -Iplat/${PLAT} \ diff --git a/bl31/bl31.mk b/bl31/bl31.mk index fec8ebe..1522b83 100644 --- a/bl31/bl31.mk +++ b/bl31/bl31.mk @@ -33,13 +33,13 @@ vpath %.c common \ arch/system/gic \ plat/${PLAT} \ arch/${ARCH} \ - common/psci \ + services/psci \ lib/sync/locks/bakery \ plat/${PLAT}/${ARCH} \ ${PLAT_BL31_C_VPATH} vpath %.S lib/arch/${ARCH} \ - common/psci \ + services/psci \ include \ plat/${PLAT}/${ARCH} \ lib/sync/locks/exclusive \ diff --git a/common/psci/psci_afflvl_off.c b/services/psci/psci_afflvl_off.c index 1d8f291..72557aa 100644 --- a/common/psci/psci_afflvl_off.c +++ b/services/psci/psci_afflvl_off.c @@ -31,6 +31,7 @@ #include <stdio.h> #include <string.h> #include <assert.h> +#include <debug.h> #include <arch_helpers.h> #include <console.h> #include <platform.h> diff --git a/common/psci/psci_afflvl_on.c b/services/psci/psci_afflvl_on.c index 14f524c..d22904c 100644 --- a/common/psci/psci_afflvl_on.c +++ b/services/psci/psci_afflvl_on.c @@ -31,11 +31,13 @@ #include <stdio.h> #include <string.h> #include <assert.h> +#include <debug.h> #include <arch_helpers.h> #include <console.h> #include <platform.h> #include <psci.h> #include <psci_private.h> +#include <context_mgmt.h> typedef int (*afflvl_on_handler)(unsigned long, aff_map_node *, diff --git a/common/psci/psci_afflvl_suspend.c b/services/psci/psci_afflvl_suspend.c index c12ad43..4391580 100644 --- a/common/psci/psci_afflvl_suspend.c +++ b/services/psci/psci_afflvl_suspend.c @@ -31,6 +31,7 @@ #include <stdio.h> #include <string.h> #include <assert.h> +#include <debug.h> #include <arch_helpers.h> #include <console.h> #include <platform.h> @@ -87,6 +88,7 @@ static int psci_afflvl0_suspend(unsigned long mpidr, { unsigned int index, plat_state; unsigned long psci_entrypoint, sctlr = read_sctlr(); + el3_state *saved_el3_state; int rc = PSCI_E_SUCCESS; /* Sanity check to safeguard against data corruption */ @@ -112,6 +114,13 @@ static int psci_afflvl0_suspend(unsigned long mpidr, cm_el3_sysregs_context_save(NON_SECURE); rc = PSCI_E_SUCCESS; + /* + * The EL3 state to PoC since it will be accessed after a + * reset with the caches turned off + */ + saved_el3_state = get_el3state_ctx(cm_get_context(mpidr, NON_SECURE)); + flush_dcache_range((uint64_t) saved_el3_state, sizeof(*saved_el3_state)); + /* Set the secure world (EL3) re-entry point after BL1 */ psci_entrypoint = (unsigned long) psci_aff_suspend_finish_entry; diff --git a/common/psci/psci_common.c b/services/psci/psci_common.c index 214db78..214db78 100644 --- a/common/psci/psci_common.c +++ b/services/psci/psci_common.c diff --git a/common/psci/psci_entry.S b/services/psci/psci_entry.S index 15e074c..15e074c 100644 --- a/common/psci/psci_entry.S +++ b/services/psci/psci_entry.S diff --git a/common/psci/psci_main.c b/services/psci/psci_main.c index 67f189d..67f189d 100644 --- a/common/psci/psci_main.c +++ b/services/psci/psci_main.c diff --git a/common/psci/psci_private.h b/services/psci/psci_private.h index 3d7ae74..3d7ae74 100644 --- a/common/psci/psci_private.h +++ b/services/psci/psci_private.h diff --git a/common/psci/psci_setup.c b/services/psci/psci_setup.c index 8d7903c..8d7903c 100644 --- a/common/psci/psci_setup.c +++ b/services/psci/psci_setup.c |