summaryrefslogtreecommitdiff
path: root/bl31
diff options
context:
space:
mode:
authorAndrew Thoelke <andrew.thoelke@arm.com>2014-06-02 12:38:12 +0100
committerAndrew Thoelke <andrew.thoelke@arm.com>2014-06-17 11:20:00 +0100
commitee94cc6fa6dc11229a53c3b66d2ce3487bb3b08f (patch)
tree2d6c57c937294183bd284706aca62d47aa3022f7 /bl31
parent5e910074245fa180cfbe70d3c8bceeff1eaa026e (diff)
Remove early_exceptions from BL3-1
The crash reporting support and early initialisation of the cpu_data allow the runtime_exception vectors to be used from the start in BL3-1, removing the need for the additional early_exception vectors and 2KB of code from BL3-1. Change-Id: I5f8997dabbaafd8935a7455910b7db174a25d871
Diffstat (limited to 'bl31')
-rw-r--r--bl31/aarch64/bl31_entrypoint.S8
-rw-r--r--bl31/bl31.mk3
-rw-r--r--bl31/bl31_main.c12
3 files changed, 7 insertions, 16 deletions
diff --git a/bl31/aarch64/bl31_entrypoint.S b/bl31/aarch64/bl31_entrypoint.S
index 2e7476a1..e4dfea43 100644
--- a/bl31/aarch64/bl31_entrypoint.S
+++ b/bl31/aarch64/bl31_entrypoint.S
@@ -72,11 +72,13 @@ func bl31_entrypoint
isb
/* ---------------------------------------------
- * Set the exception vector to something sane.
+ * Set the exception vector and zero tpidr_el3
+ * until the crash reporting is set up
* ---------------------------------------------
*/
- adr x1, early_exceptions
+ adr x1, runtime_exceptions
msr vbar_el3, x1
+ msr tpidr_el3, xzr
/* ---------------------------------------------------------------------
* The initial state of the Architectural feature trap register
@@ -134,10 +136,10 @@ func bl31_entrypoint
* Initialise cpu_data and crash reporting
* ---------------------------------------------
*/
- bl init_cpu_data_ptr
#if CRASH_REPORTING
bl init_crash_reporting
#endif
+ bl init_cpu_data_ptr
/* ---------------------------------------------
* Use SP_EL0 for the C runtime stack.
diff --git a/bl31/bl31.mk b/bl31/bl31.mk
index 4602e411..5555c319 100644
--- a/bl31/bl31.mk
+++ b/bl31/bl31.mk
@@ -38,8 +38,7 @@ BL31_SOURCES += bl31/bl31_main.c \
bl31/aarch64/context.S \
bl31/aarch64/cpu_data.S \
bl31/aarch64/runtime_exceptions.S \
- bl31/aarch64/crash_reporting.S \
- common/aarch64/early_exceptions.S \
+ bl31/aarch64/crash_reporting.S \
lib/aarch64/cpu_helpers.S \
lib/locks/bakery/bakery_lock.c \
lib/locks/exclusive/spinlock.S \
diff --git a/bl31/bl31_main.c b/bl31/bl31_main.c
index 5bb11ba3..6f88e656 100644
--- a/bl31/bl31_main.c
+++ b/bl31/bl31_main.c
@@ -71,7 +71,6 @@ void bl31_lib_init()
******************************************************************************/
void bl31_main(void)
{
-
/* Perform remaining generic architectural setup from EL3 */
bl31_arch_setup();
@@ -89,16 +88,7 @@ void bl31_main(void)
/* Clean caches before re-entering normal world */
dcsw_op_all(DCCSW);
- /*
- * Use the more complex exception vectors now that context
- * management is setup. SP_EL3 should point to a 'cpu_context'
- * structure which has an exception stack allocated. The PSCI
- * service should have set the context.
- */
- assert(cm_get_context(NON_SECURE));
- cm_set_next_eret_context(NON_SECURE);
- write_vbar_el3((uint64_t) runtime_exceptions);
- isb();
+ /* By default run the non-secure BL3-3 image next */
next_image_type = NON_SECURE;
/*