blob: 9f145c3f82593e103bf507f60cbb6d2c8b196b9b [file] [log] [blame]
/*
* 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_