mbed library sources. Supersedes mbed-src.

Dependents:   Nucleo_Hello_Encoder BLE_iBeaconScan AM1805_DEMO DISCO-F429ZI_ExportTemplate1 ... more

Committer:
AnnaBridge
Date:
Wed Feb 20 22:31:08 2019 +0000
Revision:
189:f392fc9709a3
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 189:f392fc9709a3 1 /* Copyright (c) 2017-2018 ARM Limited
AnnaBridge 189:f392fc9709a3 2 *
AnnaBridge 189:f392fc9709a3 3 * SPDX-License-Identifier: Apache-2.0
AnnaBridge 189:f392fc9709a3 4 *
AnnaBridge 189:f392fc9709a3 5 * Licensed under the Apache License, Version 2.0 (the "License");
AnnaBridge 189:f392fc9709a3 6 * you may not use this file except in compliance with the License.
AnnaBridge 189:f392fc9709a3 7 * You may obtain a copy of the License at
AnnaBridge 189:f392fc9709a3 8 *
AnnaBridge 189:f392fc9709a3 9 * http://www.apache.org/licenses/LICENSE-2.0
AnnaBridge 189:f392fc9709a3 10 *
AnnaBridge 189:f392fc9709a3 11 * Unless required by applicable law or agreed to in writing, software
AnnaBridge 189:f392fc9709a3 12 * distributed under the License is distributed on an "AS IS" BASIS,
AnnaBridge 189:f392fc9709a3 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
AnnaBridge 189:f392fc9709a3 14 * See the License for the specific language governing permissions and
AnnaBridge 189:f392fc9709a3 15 * limitations under the License.
AnnaBridge 189:f392fc9709a3 16 */
AnnaBridge 189:f392fc9709a3 17
AnnaBridge 189:f392fc9709a3 18
AnnaBridge 189:f392fc9709a3 19 /* -------------------------------------- Includes ----------------------------------- */
AnnaBridge 189:f392fc9709a3 20
AnnaBridge 189:f392fc9709a3 21 #include "cy_sysint.h"
AnnaBridge 189:f392fc9709a3 22 #include "spm_internal.h"
AnnaBridge 189:f392fc9709a3 23
AnnaBridge 189:f392fc9709a3 24 #ifdef PU_ENABLE
AnnaBridge 189:f392fc9709a3 25 #include "cyprotection_config.h"
AnnaBridge 189:f392fc9709a3 26 #endif // PU_ENABLE
AnnaBridge 189:f392fc9709a3 27
AnnaBridge 189:f392fc9709a3 28
AnnaBridge 189:f392fc9709a3 29 /* -------------------------------------- HAL API ------------------------------------ */
AnnaBridge 189:f392fc9709a3 30
AnnaBridge 189:f392fc9709a3 31 // These implementations are meant to be used only for SPM running on PSoC6 M0+ core.
AnnaBridge 189:f392fc9709a3 32
AnnaBridge 189:f392fc9709a3 33 void spm_hal_start_nspe(void)
AnnaBridge 189:f392fc9709a3 34 {
AnnaBridge 189:f392fc9709a3 35 Cy_SysEnableCM4(CY_CORTEX_M4_APPL_ADDR);
AnnaBridge 189:f392fc9709a3 36 }
AnnaBridge 189:f392fc9709a3 37
AnnaBridge 189:f392fc9709a3 38 void spm_hal_memory_protection_init(void)
AnnaBridge 189:f392fc9709a3 39 {
AnnaBridge 189:f392fc9709a3 40 #ifdef PU_ENABLE
AnnaBridge 189:f392fc9709a3 41 cy_en_prot_status_t status;
AnnaBridge 189:f392fc9709a3 42
AnnaBridge 189:f392fc9709a3 43 /* smpu */
AnnaBridge 189:f392fc9709a3 44 status = smpu_protect((cy_smpu_region_config_t *)flash_spm_smpu_config, sizeof(flash_spm_smpu_config) / sizeof(flash_spm_smpu_config[0]));
AnnaBridge 189:f392fc9709a3 45 CY_ASSERT(status == CY_PROT_SUCCESS); // TODO: Panic instead
AnnaBridge 189:f392fc9709a3 46 status = smpu_protect((cy_smpu_region_config_t *)sram_spm_smpu_config, sizeof(sram_spm_smpu_config) / sizeof(sram_spm_smpu_config[0]));
AnnaBridge 189:f392fc9709a3 47 CY_ASSERT(status == CY_PROT_SUCCESS); // TODO: Panic instead
AnnaBridge 189:f392fc9709a3 48
AnnaBridge 189:f392fc9709a3 49 /* fixed region ppu */
AnnaBridge 189:f392fc9709a3 50 status = ppu_fixed_rg_protect((cy_ppu_fixed_rg_cfg_t *)fixed_rg_pc0_ppu_config, sizeof(fixed_rg_pc0_ppu_config) / sizeof(fixed_rg_pc0_ppu_config[0]));
AnnaBridge 189:f392fc9709a3 51 CY_ASSERT(status == CY_PROT_SUCCESS); // TODO: Panic instead
AnnaBridge 189:f392fc9709a3 52 status = ppu_fixed_rg_protect((cy_ppu_fixed_rg_cfg_t *)fixed_rg_spm_ppu_config, sizeof(fixed_rg_spm_ppu_config) / sizeof(fixed_rg_spm_ppu_config[0]));
AnnaBridge 189:f392fc9709a3 53 CY_ASSERT(status == CY_PROT_SUCCESS); // TODO: Panic instead
AnnaBridge 189:f392fc9709a3 54 status = ppu_fixed_rg_protect((cy_ppu_fixed_rg_cfg_t *)fixed_rg_any_ppu_config, sizeof(fixed_rg_any_ppu_config) / sizeof(fixed_rg_any_ppu_config[0]));
AnnaBridge 189:f392fc9709a3 55 CY_ASSERT(status == CY_PROT_SUCCESS); // TODO: Panic instead
AnnaBridge 189:f392fc9709a3 56 /* fixed slave ppu */
AnnaBridge 189:f392fc9709a3 57 status = ppu_fixed_sl_protect((cy_ppu_fixed_sl_cfg_t *)fixed_sl_pc0_ppu_config, sizeof(fixed_sl_pc0_ppu_config) / sizeof(fixed_sl_pc0_ppu_config[0]));
AnnaBridge 189:f392fc9709a3 58 CY_ASSERT(status == CY_PROT_SUCCESS); // TODO: Panic instead
AnnaBridge 189:f392fc9709a3 59 status = ppu_fixed_sl_protect((cy_ppu_fixed_sl_cfg_t *)fixed_sl_spm_ppu_config, sizeof(fixed_sl_spm_ppu_config) / sizeof(fixed_sl_spm_ppu_config[0]));
AnnaBridge 189:f392fc9709a3 60 CY_ASSERT(status == CY_PROT_SUCCESS); // TODO: Panic instead
AnnaBridge 189:f392fc9709a3 61 status = ppu_fixed_sl_protect((cy_ppu_fixed_sl_cfg_t *)fixed_sl_any_ppu_config, sizeof(fixed_sl_any_ppu_config) / sizeof(fixed_sl_any_ppu_config[0]));
AnnaBridge 189:f392fc9709a3 62 CY_ASSERT(status == CY_PROT_SUCCESS); // TODO: Panic instead
AnnaBridge 189:f392fc9709a3 63 /* programmable ppu */
AnnaBridge 189:f392fc9709a3 64 status = ppu_prog_protect((cy_ppu_prog_cfg_t *)prog_pc0_ppu_config, sizeof(prog_pc0_ppu_config) / sizeof(prog_pc0_ppu_config[0]));
AnnaBridge 189:f392fc9709a3 65 CY_ASSERT(status == CY_PROT_SUCCESS); // TODO: Panic instead
AnnaBridge 189:f392fc9709a3 66 status = ppu_prog_protect((cy_ppu_prog_cfg_t *)prog_spm_ppu_config, sizeof(prog_spm_ppu_config) / sizeof(prog_spm_ppu_config[0]));
AnnaBridge 189:f392fc9709a3 67 CY_ASSERT(status == CY_PROT_SUCCESS); // TODO: Panic instead
AnnaBridge 189:f392fc9709a3 68 /* fixed group ppu */
AnnaBridge 189:f392fc9709a3 69 status = ppu_fixed_gr_protect((cy_ppu_fixed_gr_cfg_t *)fixed_gr_pc0_ppu_config, sizeof(fixed_gr_pc0_ppu_config) / sizeof(fixed_gr_pc0_ppu_config[0]));
AnnaBridge 189:f392fc9709a3 70 CY_ASSERT(status == CY_PROT_SUCCESS); // TODO: Panic instead
AnnaBridge 189:f392fc9709a3 71 status = ppu_fixed_gr_protect((cy_ppu_fixed_gr_cfg_t *)fixed_gr_spm_ppu_config, sizeof(fixed_gr_spm_ppu_config) / sizeof(fixed_gr_spm_ppu_config[0]));
AnnaBridge 189:f392fc9709a3 72 CY_ASSERT(status == CY_PROT_SUCCESS); // TODO: Panic instead
AnnaBridge 189:f392fc9709a3 73
AnnaBridge 189:f392fc9709a3 74 /* bus masters */
AnnaBridge 189:f392fc9709a3 75 status = bus_masters_protect((cy_bus_master_config_t *)bus_masters_config, sizeof(bus_masters_config) / sizeof(bus_masters_config[0]));
AnnaBridge 189:f392fc9709a3 76 CY_ASSERT(status == CY_PROT_SUCCESS); // TODO: Panic instead
AnnaBridge 189:f392fc9709a3 77 #endif // PU_ENABLE
AnnaBridge 189:f392fc9709a3 78 }