SPU provides support for the definition of non-secure callable (NSC) sub-regions to allow non-secure to secure function calls.
A non-secure callable sub-region can only exist within an existing secure region. It is defined by the following registers:
- RAMNSC[n].REGION, used to select the secure region that will contain the NSC sub-region
- RAMNSC[n].SIZE, used to define the size of the NSC sub-region within the secure region
The NSC sub-region will be defined starting with the highest address in that region and descending. The following figure shows the NSC sub-regions and the registers used for their definition.
The NSC sub-region will only be defined when the following are true:
- RAMNSC[i].SIZE value is non zero
- RAMNSC[i].REGION defines a secure region
If RAMNSC[i].REGION and RAMNSC[j].REGION have the same value, there is only one sub-region defined as NSC, with the size given by the maximum of RAMNSC[i].SIZE and RAMNSC[j].SIZE.
If RAMNSC[i].REGION defines a non-secure region, then there is no non-secure callable region defined and the selected region stays non-secure.