8.4.2 Core Security Extensions Overview

The purpose of the security extensions is to enable the construction of a secure software environment.

When the Cortex-A7 processor is executing in Non-secure state, the processor performs translation table look-ups using the Non-secure versions of the translation table base registers. In this situation, any virtual address (VA) can only translate into a Non-secure physical address (PA). In Secure state, the Cortex-A7 processor performs translation table look-ups using the Secure versions of the translation table base registers. In this situation, the security state of any VA is determined by the NS bit of the translation table descriptors for that address.

Following is an example of the address manipulation that occurs when the Cortex-A7 processor requests an instruction:

  1. The Cortex-A7 processor issues the instruction VA as a Secure or Non-secure VA.
  2. The instruction cache is indexed by the VA bits. The MMU performs the translation table look-up in parallel with the cache access. If the processor is in the Secure state it uses the Secure translation tables, otherwise it uses the Non-secure translation tables.
  3. If the protection check carried out by the MMU on the VA does not abort and the PA tag is in the instruction cache, the instruction data is returned to the processor.
  4. If there is a cache miss, the MMU passes the PA to the AXI bus interface to perform an external access. The external access is always Non-secure when the core is in the Non-secure state. In the Secure state, the external access is Secure or Non-secure according to the NS attribute value in the selected translation table entry. In Secure state, both L1 and L2 translation table walk accesses are marked as Secure, even if the first level descriptor is marked as NS.

Refer to the Arm Architecture Reference Manual, Arm v7-A and Arm v7-R edition for details on security extensions.