Achin Gupta | 4f6ad66 | 2013-10-25 09:08:21 +0100 | [diff] [blame] | 1 | /* |
Antonio Nino Diaz | e3887a9 | 2019-01-30 20:29:50 +0000 | [diff] [blame] | 2 | * Copyright (c) 2013-2019, ARM Limited and Contributors. All rights reserved. |
Achin Gupta | 4f6ad66 | 2013-10-25 09:08:21 +0100 | [diff] [blame] | 3 | * |
dp-arm | fa3cf0b | 2017-05-03 09:38:09 +0100 | [diff] [blame] | 4 | * SPDX-License-Identifier: BSD-3-Clause |
Achin Gupta | 4f6ad66 | 2013-10-25 09:08:21 +0100 | [diff] [blame] | 5 | */ |
| 6 | |
Sandrine Bailleux | c10bd2c | 2013-11-12 16:41:16 +0000 | [diff] [blame] | 7 | #include <arch.h> |
Sandrine Bailleux | acde8b0 | 2015-05-19 11:54:45 +0100 | [diff] [blame] | 8 | #include <el3_common_macros.S> |
Achin Gupta | 4f6ad66 | 2013-10-25 09:08:21 +0100 | [diff] [blame] | 9 | |
Jeenu Viswambharan | 2a30a75 | 2014-03-11 11:06:45 +0000 | [diff] [blame] | 10 | .globl bl1_entrypoint |
Achin Gupta | 4f6ad66 | 2013-10-25 09:08:21 +0100 | [diff] [blame] | 11 | |
| 12 | |
Achin Gupta | 4f6ad66 | 2013-10-25 09:08:21 +0100 | [diff] [blame] | 13 | /* ----------------------------------------------------- |
Jeenu Viswambharan | 2a30a75 | 2014-03-11 11:06:45 +0000 | [diff] [blame] | 14 | * bl1_entrypoint() is the entry point into the trusted |
Achin Gupta | 4f6ad66 | 2013-10-25 09:08:21 +0100 | [diff] [blame] | 15 | * firmware code when a cpu is released from warm or |
| 16 | * cold reset. |
| 17 | * ----------------------------------------------------- |
| 18 | */ |
| 19 | |
Andrew Thoelke | 38bde41 | 2014-03-18 13:46:55 +0000 | [diff] [blame] | 20 | func bl1_entrypoint |
Sandrine Bailleux | 449dbd5 | 2015-06-02 17:19:43 +0100 | [diff] [blame] | 21 | /* --------------------------------------------------------------------- |
| 22 | * If the reset address is programmable then bl1_entrypoint() is |
| 23 | * executed only on the cold boot path. Therefore, we can skip the warm |
| 24 | * boot mailbox mechanism. |
| 25 | * --------------------------------------------------------------------- |
| 26 | */ |
Sandrine Bailleux | acde8b0 | 2015-05-19 11:54:45 +0100 | [diff] [blame] | 27 | el3_entrypoint_common \ |
David Cunado | fee8653 | 2017-04-13 22:38:29 +0100 | [diff] [blame] | 28 | _init_sctlr=1 \ |
Sandrine Bailleux | 449dbd5 | 2015-06-02 17:19:43 +0100 | [diff] [blame] | 29 | _warm_boot_mailbox=!PROGRAMMABLE_RESET_ADDRESS \ |
Sandrine Bailleux | b21b02f | 2015-10-30 15:05:17 +0000 | [diff] [blame] | 30 | _secondary_cold_boot=!COLD_BOOT_SINGLE_CPU \ |
Sandrine Bailleux | acde8b0 | 2015-05-19 11:54:45 +0100 | [diff] [blame] | 31 | _init_memory=1 \ |
| 32 | _init_c_runtime=1 \ |
| 33 | _exception_vectors=bl1_exceptions |
Vikram Kanigiri | 9637745 | 2014-04-24 11:02:16 +0100 | [diff] [blame] | 34 | |
Antonio Nino Diaz | e3887a9 | 2019-01-30 20:29:50 +0000 | [diff] [blame] | 35 | /* -------------------------------------------------------------------- |
| 36 | * Perform BL1 setup |
| 37 | * -------------------------------------------------------------------- |
Achin Gupta | 4f6ad66 | 2013-10-25 09:08:21 +0100 | [diff] [blame] | 38 | */ |
Antonio Nino Diaz | e3887a9 | 2019-01-30 20:29:50 +0000 | [diff] [blame] | 39 | bl bl1_setup |
Achin Gupta | 4f6ad66 | 2013-10-25 09:08:21 +0100 | [diff] [blame] | 40 | |
Antonio Nino Diaz | e3887a9 | 2019-01-30 20:29:50 +0000 | [diff] [blame] | 41 | /* -------------------------------------------------------------------- |
| 42 | * Enable pointer authentication |
| 43 | * -------------------------------------------------------------------- |
| 44 | */ |
| 45 | #if ENABLE_PAUTH |
| 46 | mrs x0, sctlr_el3 |
| 47 | orr x0, x0, #SCTLR_EnIA_BIT |
| 48 | msr sctlr_el3, x0 |
| 49 | isb |
| 50 | #endif /* ENABLE_PAUTH */ |
| 51 | |
| 52 | /* -------------------------------------------------------------------- |
Vikram Kanigiri | 9637745 | 2014-04-24 11:02:16 +0100 | [diff] [blame] | 53 | * Initialize platform and jump to our c-entry point |
Yatharth Kochar | a65be2f | 2015-10-09 18:06:13 +0100 | [diff] [blame] | 54 | * for this type of reset. |
Antonio Nino Diaz | e3887a9 | 2019-01-30 20:29:50 +0000 | [diff] [blame] | 55 | * -------------------------------------------------------------------- |
Vikram Kanigiri | 9637745 | 2014-04-24 11:02:16 +0100 | [diff] [blame] | 56 | */ |
| 57 | bl bl1_main |
Yatharth Kochar | a65be2f | 2015-10-09 18:06:13 +0100 | [diff] [blame] | 58 | |
Antonio Nino Diaz | e3887a9 | 2019-01-30 20:29:50 +0000 | [diff] [blame] | 59 | /* -------------------------------------------------------------------- |
| 60 | * Disable pointer authentication before jumping to BL31 or that will |
| 61 | * cause an authentication failure during the early platform init. |
| 62 | * -------------------------------------------------------------------- |
| 63 | */ |
| 64 | #if ENABLE_PAUTH |
| 65 | mrs x0, sctlr_el3 |
| 66 | bic x0, x0, #SCTLR_EnIA_BIT |
| 67 | msr sctlr_el3, x0 |
| 68 | isb |
| 69 | #endif /* ENABLE_PAUTH */ |
| 70 | |
Yatharth Kochar | a65be2f | 2015-10-09 18:06:13 +0100 | [diff] [blame] | 71 | /* -------------------------------------------------- |
| 72 | * Do the transition to next boot image. |
| 73 | * -------------------------------------------------- |
| 74 | */ |
| 75 | b el3_exit |
Kévin Petit | a877c25 | 2015-03-24 14:03:57 +0000 | [diff] [blame] | 76 | endfunc bl1_entrypoint |