diff options
author | davidcunado-arm <david.cunado@arm.com> | 2018-01-25 00:07:06 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-25 00:07:06 +0000 |
commit | 8253eb57e25a1a5e0233fe609216a3883d38aba2 (patch) | |
tree | 659186f701117067afd609682bdaabd3c3054385 /plat/hisilicon | |
parent | d95eb476d564f888eed2759bca7666b04096fed4 (diff) | |
parent | b79f7ed03ac0654a479e23bc72a05ab4736ce159 (diff) |
Merge pull request #1231 from Leo-Yan/hikey960_enable_fiq_handling
Hikey960: Enable invalid FIQ handling
Diffstat (limited to 'plat/hisilicon')
-rw-r--r-- | plat/hisilicon/hikey960/hikey960_bl31_setup.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/plat/hisilicon/hikey960/hikey960_bl31_setup.c b/plat/hisilicon/hikey960/hikey960_bl31_setup.c index f685f9cf..f0d15a35 100644 --- a/plat/hisilicon/hikey960/hikey960_bl31_setup.c +++ b/plat/hisilicon/hikey960/hikey960_bl31_setup.c @@ -16,6 +16,8 @@ #include <gicv2.h> #include <hi3660.h> #include <hisi_ipc.h> +#include <interrupt_mgmt.h> +#include <platform.h> #include <platform_def.h> #include "hikey960_def.h" @@ -167,6 +169,37 @@ void bl31_platform_setup(void) hisi_ipc_init(); } +#ifdef SPD_none +static uint64_t hikey_debug_fiq_handler(uint32_t id, + uint32_t flags, + void *handle, + void *cookie) +{ + int intr, intr_raw; + + /* Acknowledge interrupt */ + intr_raw = plat_ic_acknowledge_interrupt(); + intr = plat_ic_get_interrupt_id(intr_raw); + ERROR("Invalid interrupt: intr=%d\n", intr); + console_flush(); + panic(); + + return 0; +} +#endif + void bl31_plat_runtime_setup(void) { +#ifdef SPD_none + uint32_t flags; + int32_t rc; + + flags = 0; + set_interrupt_rm_flag(flags, NON_SECURE); + rc = register_interrupt_type_handler(INTR_TYPE_S_EL1, + hikey_debug_fiq_handler, + flags); + if (rc != 0) + panic(); +#endif } |