/* * Copyright (c) 2021 Arm Limited. All rights reserved. * * SPDX-License-Identifier: Apache-2.0 * * Licensed under the Apache License, Version 2.0 (the License); you may * not use this file except in compliance with the License. * You may obtain a copy of the License at * * www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an AS IS BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #ifndef TRUSTZONE_H_ #define TRUSTZONE_H_ /* For the I-/DTCM memory the S/NS gating is handled by the I-/DTGU block. * The block defines a block size depending on the size of the memory. * The slice between secure and nonsecure has to be on a block boundary * to be able to map whole respective region to its security state. * For MPS3 with SSE300 + U55 the block size is 0x2000. */ #define TZ_S_ITCM_START 0x10000000 #define TZ_S_ITCM_SIZE 0x0007c000 #define TZ_S_BRAM_START 0x11000000 #define TZ_S_BRAM_SIZE 0x001fc000 #define TZ_S_DTCM_START 0x30000000 #define TZ_S_DTCM_SIZE 0x00040000 #define TZ_S_SRAM_START 0x31000000 #define TZ_S_SRAM_SIZE 0x00100000 #define TZ_S_STACK_HEAP 0x30040000 #define TZ_NSC_START 0x111fb000 #define TZ_NSC_SIZE 0x00001000 #define TZ_NS_ITCM_START 0x0007c000 #define TZ_NS_ITCM_SIZE 0x00004000 #define TZ_NS_BRAM_START 0x011fc000 #define TZ_NS_BRAM_SIZE 0x00004000 #define TZ_NS_DTCM_START 0x20040000 #define TZ_NS_DTCM_SIZE 0x00040000 #define TZ_NS_SRAM_START 0x21100000 #define TZ_NS_SRAM_SIZE 0x00100000 #define TZ_NS_STACK_HEAP 0x20080000 /* Add separate definition for secure world to use for booting * non secure world. */ #define TZ_NS_START_VECTOR TZ_NS_ITCM_START #ifdef TRUSTZONE_SECURE #define ITCM_START TZ_S_ITCM_START #define ITCM_SIZE TZ_S_ITCM_SIZE #define BRAM_START TZ_S_BRAM_START #define BRAM_SIZE TZ_S_BRAM_SIZE #define DTCM_START TZ_S_DTCM_START #define DTCM_SIZE TZ_S_DTCM_SIZE #define SRAM_START TZ_S_SRAM_START #define SRAM_SIZE TZ_S_SRAM_SIZE #define STACK_HEAP TZ_S_STACK_HEAP #else #define ITCM_START TZ_NS_ITCM_START #define ITCM_SIZE TZ_NS_ITCM_SIZE #define BRAM_START TZ_NS_BRAM_START #define BRAM_SIZE TZ_NS_BRAM_SIZE #define DTCM_START TZ_NS_DTCM_START #define DTCM_SIZE TZ_NS_DTCM_SIZE #define SRAM_START TZ_NS_SRAM_START #define SRAM_SIZE TZ_NS_SRAM_SIZE #define STACK_HEAP TZ_NS_STACK_HEAP #endif #define LR_START ITCM_START #define LR_SIZE ITCM_SIZE #define ITCM_TOTAL_SIZE 0x00080000 #define ITCM_ITGU 0xE001E500 #define DTCM_TOTAL_SIZE 0x00080000 #define DTCM_DTGU 0xE001E600 #define BRAM_BASE_S 0x11000000 #define BRAM_BASE_NS 0x01000000 #define BRAM_TOTAL_SIZE 0x00200000 #define BRAM_MPC 0x57000000 #define SRAM0_BASE_S 0x31000000 #define SRAM0_BASE_NS 0x21000000 #define SRAM0_SIZE 0x00200000 #define SRAM0_MPC 0x50083000 #define DDR0_BASE_S 0x70000000 #define DDR0_BASE_NS 0x60000000 #define DDR0_SIZE 0x02000000 #ifdef TRUSTZONE_BUILD #define DDR_START DDR0_BASE_S #else #define DDR_START DDR0_BASE_NS #endif /* Separate DDRs for secure and nonsecure */ #define DDR_SIZE DDR0_SIZE #if (S_TZ_ITCM_SIZE + TZ_NS_ITCM_SIZE) > ITCM_TOTAL_SIZE #error Missconfigured ITCM memory #endif #if (S_TZ_DTCM_SIZE + TZ_NS_DTCM_SIZE) > DTCM_TOTAL_SIZE #error Missconfigured ITCM memory #endif #endif // TRUSTZONE_H_