Add Test Secure Payload (BL3-2) image
This patch adds a simple TSP as the BL3-2 image. The secure payload
executes in S-EL1. It paves the way for the addition of the TSP
dispatcher runtime service to BL3-1. The TSP and the dispatcher service
will serve as an example of the runtime firmware's ability to toggle
execution between the non-secure and secure states in response to SMC
request from the non-secure state.  The TSP will be replaced by a
Trusted OS in a real system.

The TSP also exports a set of handlers which should be called in
response to a PSCI power management event e.g a cpu being suspended or
turned off. For now it runs out of Secure DRAM on the ARM FVP port and
will be moved to Secure SRAM later. The default translation table setup
code assumes that the caller is executing out of secure SRAM. Hence the
TSP exports its own translation table setup function.

The TSP only services Fast SMCs, is non-reentrant and non-interruptible.
It does arithmetic operations on two sets of four operands, one set
supplied by the non-secure client, and the other supplied by the TSP
dispatcher in EL3. It returns the result according to the Secure Monitor
Calling convention standard.

This TSP has two functional entry points:

- An initial, one-time entry point through which the TSP is initialized
  and prepares for receiving further requests from secure
  monitor/dispatcher

- A fast SMC service entry point through which the TSP dispatcher
  requests secure services on behalf of the non-secure client

Change-Id: I24377df53399307e2560a025eb2c82ce98ab3931
Co-authored-by: Jeenu Viswambharan <jeenu.viswambharan@arm.com>
1 parent 0a9f747 commit 7c88f3f633288856dd691dfda222e60092e4dab9
@Achin Gupta Achin Gupta authored on 18 Feb 2014
Dan Handley committed on 20 Feb 2014
Showing 10 changed files
View
bl32/tsp/aarch64/tsp_entrypoint.S 0 → 100644
View
bl32/tsp/aarch64/tsp_request.S 0 → 100644
View
bl32/tsp/tsp-fvp.mk 0 → 100644
View
bl32/tsp/tsp.ld.S 0 → 100644
View
bl32/tsp/tsp.mk 0 → 100644
View
bl32/tsp/tsp_main.c 0 → 100644
View
include/bl32.h 0 → 100644
View
include/tsp.h 0 → 100644
View
plat/fvp/aarch64/bl32_setup_xlat.c 0 → 100644
View
plat/fvp/bl32_plat_setup.c 0 → 100644