1 /* 2 * Copyright (c) 2014-2017, ARM Limited and Contributors. All rights reserved. 3 * 4 * SPDX-License-Identifier: BSD-3-Clause 5 */ 6 7 #include <arch_helpers.h> 8 #include <assert.h> 9 #include <console.h> 10 #include <platform.h> 11 #include <xlat_mmu_helpers.h> 12 13 /* 14 * The following platform setup functions are weakly defined. They 15 * provide typical implementations that may be re-used by multiple 16 * platforms but may also be overridden by a platform if required. 17 */ 18 #pragma weak bl31_plat_enable_mmu 19 #pragma weak bl32_plat_enable_mmu 20 #pragma weak bl31_plat_runtime_setup 21 #if !ERROR_DEPRECATED 22 #pragma weak plat_get_syscnt_freq2 23 #endif /* ERROR_DEPRECATED */ 24 25 #if SDEI_SUPPORT 26 #pragma weak plat_sdei_handle_masked_trigger 27 #pragma weak plat_sdei_validate_entry_point 28 #endif 29 30 void bl31_plat_enable_mmu(uint32_t flags) 31 { 32 enable_mmu_el3(flags); 33 } 34 35 void bl32_plat_enable_mmu(uint32_t flags) 36 { 37 enable_mmu_el1(flags); 38 } 39 40 void bl31_plat_runtime_setup(void) 41 { 42 #if MULTI_CONSOLE_API 43 console_switch_state(CONSOLE_FLAG_RUNTIME); 44 #else 45 console_uninit(); 46 #endif 47 } 48 49 #if !ENABLE_PLAT_COMPAT 50 /* 51 * Helper function for platform_get_pos() when platform compatibility is 52 * disabled. This is to enable SPDs using the older platform API to continue 53 * to work. 54 */ 55 unsigned int platform_core_pos_helper(unsigned long mpidr) 56 { 57 int idx = plat_core_pos_by_mpidr(mpidr); 58 assert(idx >= 0); 59 return idx; 60 } 61 #endif 62 63 64 #if !ERROR_DEPRECATED 65 unsigned int plat_get_syscnt_freq2(void) 66 { 67 unsigned long long freq = plat_get_syscnt_freq(); 68 69 assert(freq >> 32 == 0); 70 71 return (unsigned int)freq; 72 } 73 #endif /* ERROR_DEPRECATED */ 74 75 #if SDEI_SUPPORT 76 /* 77 * Function that handles spurious SDEI interrupts while events are masked. 78 */ 79 void plat_sdei_handle_masked_trigger(uint64_t mpidr, unsigned int intr) 80 { 81 WARN("Spurious SDEI interrupt %u on masked PE %lx\n", intr, mpidr); 82 } 83 84 /* 85 * Default Function to validate SDEI entry point, which returns success. 86 * Platforms may override this with their own validation mechanism. 87 */ 88 int plat_sdei_validate_entry_point(uintptr_t ep, unsigned int client_mode) 89 { 90 return 0; 91 } 92 #endif 93