Commit 73308618 authored by Antonio Nino Diaz's avatar Antonio Nino Diaz
Browse files

Minor changes to documentation and comments



Fix some typos and clarify some sentences.

Change-Id: Id276d1ced9a991b4eddc5c47ad9a825e6b29ef74
Signed-off-by: default avatarAntonio Nino Diaz <antonio.ninodiaz@arm.com>
parent 1baa28bb
...@@ -90,7 +90,7 @@ void bl31_setup(u_register_t arg0, u_register_t arg1, u_register_t arg2, ...@@ -90,7 +90,7 @@ void bl31_setup(u_register_t arg0, u_register_t arg1, u_register_t arg2,
* function calls runtime_svc_init() which initializes all registered runtime * function calls runtime_svc_init() which initializes all registered runtime
* services. The run time services would setup enough context for the core to * services. The run time services would setup enough context for the core to
* switch to the next exception level. When this function returns, the core will * switch to the next exception level. When this function returns, the core will
* switch to the programmed exception level via. an ERET. * switch to the programmed exception level via an ERET.
******************************************************************************/ ******************************************************************************/
void bl31_main(void) void bl31_main(void)
{ {
......
...@@ -314,9 +314,9 @@ static void *ehf_entering_normal_world(const void *arg) ...@@ -314,9 +314,9 @@ static void *ehf_entering_normal_world(const void *arg)
/* /*
* Program Priority Mask to the original Non-secure priority such that * Program Priority Mask to the original Non-secure priority such that
* Non-secure interrupts may preempt Secure execution, viz. during Yielding SMC * Non-secure interrupts may preempt Secure execution (for example, during
* calls. The 'preempt_ret_code' parameter indicates the Yielding SMC's return * Yielding SMC calls). The 'preempt_ret_code' parameter indicates the Yielding
* value in case the call was preempted. * SMC's return value in case the call was preempted.
* *
* This API is expected to be invoked before delegating a yielding SMC to Secure * This API is expected to be invoked before delegating a yielding SMC to Secure
* EL1. I.e. within the window of secure execution after Non-secure context is * EL1. I.e. within the window of secure execution after Non-secure context is
...@@ -360,7 +360,7 @@ void ehf_allow_ns_preemption(uint64_t preempt_ret_code) ...@@ -360,7 +360,7 @@ void ehf_allow_ns_preemption(uint64_t preempt_ret_code)
/* /*
* Return whether Secure execution has explicitly allowed Non-secure interrupts * Return whether Secure execution has explicitly allowed Non-secure interrupts
* to preempt itself, viz. during Yielding SMC calls. * to preempt itself (for example, during Yielding SMC calls).
*/ */
unsigned int ehf_is_ns_preemption_allowed(void) unsigned int ehf_is_ns_preemption_allowed(void)
{ {
......
...@@ -4,7 +4,7 @@ Arm SiP Service ...@@ -4,7 +4,7 @@ Arm SiP Service
This document enumerates and describes the Arm SiP (Silicon Provider) services. This document enumerates and describes the Arm SiP (Silicon Provider) services.
SiP services are non-standard, platform-specific services offered by the silicon SiP services are non-standard, platform-specific services offered by the silicon
implementer or platform provider. They are accessed via. ``SMC`` ("SMC calls") implementer or platform provider. They are accessed via ``SMC`` ("SMC calls")
instruction executed from Exception Levels below EL3. SMC calls for SiP instruction executed from Exception Levels below EL3. SMC calls for SiP
services: services:
......
...@@ -233,7 +233,7 @@ Note: ...@@ -233,7 +233,7 @@ Note:
The ``ARRAY_SIZE()`` macro therefore should be used to determine the size of The ``ARRAY_SIZE()`` macro therefore should be used to determine the size of
array. array.
Finally, this array of descriptors is exposed to |EHF| via. the Finally, this array of descriptors is exposed to |EHF| via the
``EHF_REGISTER_PRIORITIES()`` macro. ``EHF_REGISTER_PRIORITIES()`` macro.
Refer to the `Interrupt handling example`_ for usage. See also: `Interrupt Refer to the `Interrupt handling example`_ for usage. See also: `Interrupt
...@@ -379,8 +379,8 @@ Activating and Deactivating priorities ...@@ -379,8 +379,8 @@ Activating and Deactivating priorities
A priority level is said to be *active* when an exception of that priority is A priority level is said to be *active* when an exception of that priority is
being handled: for interrupts, this is implied when the interrupt is being handled: for interrupts, this is implied when the interrupt is
acknowledged; for non-interrupt exceptions, viz. SErrors or `SDEI explicit acknowledged; for non-interrupt exceptions, such as SErrors or `SDEI explicit
dispatches`__, this has to be done via. calling ``ehf_activate_priority()``. See dispatches`__, this has to be done via calling ``ehf_activate_priority()``. See
`Run-time flow`_. `Run-time flow`_.
.. __: sdei.rst#explicit-dispatch-of-events .. __: sdei.rst#explicit-dispatch-of-events
...@@ -388,7 +388,7 @@ dispatches`__, this has to be done via. calling ``ehf_activate_priority()``. See ...@@ -388,7 +388,7 @@ dispatches`__, this has to be done via. calling ``ehf_activate_priority()``. See
Conversely, when the dispatcher has reached a logical resolution for the cause Conversely, when the dispatcher has reached a logical resolution for the cause
of the exception, the corresponding priority level ought to be deactivated. As of the exception, the corresponding priority level ought to be deactivated. As
above, for interrupts, this is implied when the interrupt is EOId in the GIC; above, for interrupts, this is implied when the interrupt is EOId in the GIC;
for other exceptions, this has to be done via. calling for other exceptions, this has to be done via calling
``ehf_deactivate_priority()``. ``ehf_deactivate_priority()``.
Thanks to `different provisions`__ for exception delegation, there are Thanks to `different provisions`__ for exception delegation, there are
...@@ -405,7 +405,7 @@ potentially more than one work flow for deactivation: ...@@ -405,7 +405,7 @@ potentially more than one work flow for deactivation:
- The dispatcher has to delegate the execution to lower ELs, and the cause of - The dispatcher has to delegate the execution to lower ELs, and the cause of
the exception can be considered resolved only when the lower EL returns the exception can be considered resolved only when the lower EL returns
signals complete (via. an ``SMC``) at a future point in time. The following signals complete (via an ``SMC``) at a future point in time. The following
sequence ensues: sequence ensues:
#. The dispatcher calls ``setjmp()`` to setup a jump point, and arranges to #. The dispatcher calls ``setjmp()`` to setup a jump point, and arranges to
...@@ -414,7 +414,7 @@ potentially more than one work flow for deactivation: ...@@ -414,7 +414,7 @@ potentially more than one work flow for deactivation:
#. Through the ensuing ``ERET`` from runtime firmware, execution is delegated #. Through the ensuing ``ERET`` from runtime firmware, execution is delegated
to a lower EL. to a lower EL.
#. The lower EL completes its execution, and signals completion via. an #. The lower EL completes its execution, and signals completion via an
``SMC``. ``SMC``.
#. The ``SMC`` is handled by the same dispatcher that handled the exception #. The ``SMC`` is handled by the same dispatcher that handled the exception
...@@ -597,7 +597,7 @@ world ones. The platform further assigns relative priorities amongst Secure ...@@ -597,7 +597,7 @@ world ones. The platform further assigns relative priorities amongst Secure
dispatchers through |EHF|. dispatchers through |EHF|.
As mentioned in `Partitioning priority levels`_, interrupts targeting distinct As mentioned in `Partitioning priority levels`_, interrupts targeting distinct
dispatchers fall in distinct priority levels. Because they're routed via. the dispatchers fall in distinct priority levels. Because they're routed via the
GIC, interrupt delivery to the PE is subject to GIC prioritisation rules. In GIC, interrupt delivery to the PE is subject to GIC prioritisation rules. In
particular, when an interrupt is being handled by the PE (i.e., the interrupt is particular, when an interrupt is being handled by the PE (i.e., the interrupt is
in *Active* state), only interrupts of higher priority are signalled to the PE, in *Active* state), only interrupts of higher priority are signalled to the PE,
......
...@@ -1282,9 +1282,9 @@ interrupt configuration during the driver initialisation. ...@@ -1282,9 +1282,9 @@ interrupt configuration during the driver initialisation.
Secure interrupt configuration are specified in an array of secure interrupt Secure interrupt configuration are specified in an array of secure interrupt
properties. In this scheme, in both GICv2 and GICv3 driver data structures, the properties. In this scheme, in both GICv2 and GICv3 driver data structures, the
``interrupt_props`` member points to an array of interrupt properties. Each ``interrupt_props`` member points to an array of interrupt properties. Each
element of the array specifies the interrupt number and its configuration, viz. element of the array specifies the interrupt number and its attributes
priority, group, configuration. Each element of the array shall be populated by (priority, group, configuration). Each element of the array shall be populated
the macro ``INTR_PROP_DESC()``. The macro takes the following arguments: by the macro ``INTR_PROP_DESC()``. The macro takes the following arguments:
- 10-bit interrupt number, - 10-bit interrupt number,
...@@ -1439,7 +1439,7 @@ C run time. Therefore it must follow AAPCS, and must not use stack. ...@@ -1439,7 +1439,7 @@ C run time. Therefore it must follow AAPCS, and must not use stack.
CPU drivers that apply errata workaround can optionally implement an assembly CPU drivers that apply errata workaround can optionally implement an assembly
function that report the status of errata workarounds pertaining to that CPU. function that report the status of errata workarounds pertaining to that CPU.
For a driver that registers the CPU, for example, ``cpux`` via. ``declare_cpu_ops`` For a driver that registers the CPU, for example, ``cpux`` via ``declare_cpu_ops``
macro, the errata reporting function, if it exists, must be named macro, the errata reporting function, if it exists, must be named
``cpux_errata_report``. This function will always be called with MMU enabled; it ``cpux_errata_report``. This function will always be called with MMU enabled; it
must follow AAPCS and may use stack. must follow AAPCS and may use stack.
......
...@@ -22,7 +22,7 @@ Function: unsigned int plat_ic_get_running_priority(void); [optional] ...@@ -22,7 +22,7 @@ Function: unsigned int plat_ic_get_running_priority(void); [optional]
This API should return the priority of the interrupt the PE is currently This API should return the priority of the interrupt the PE is currently
servicing. This must be be called only after an interrupt has already been servicing. This must be be called only after an interrupt has already been
acknowledged via. ``plat_ic_acknowledge_interrupt``. acknowledged via ``plat_ic_acknowledge_interrupt``.
In the case of Arm standard platforms using GIC, the *Running Priority Register* In the case of Arm standard platforms using GIC, the *Running Priority Register*
is read to determine the priority of the interrupt. is read to determine the priority of the interrupt.
......
...@@ -1936,7 +1936,7 @@ handler (if present) is called for the CPU power domain. ...@@ -1936,7 +1936,7 @@ handler (if present) is called for the CPU power domain.
The ``power-state`` parameter of a PSCI ``CPU_SUSPEND`` call can be used to The ``power-state`` parameter of a PSCI ``CPU_SUSPEND`` call can be used to
describe composite power states specific to a platform. The PSCI implementation describe composite power states specific to a platform. The PSCI implementation
defines a generic representation of the power-state parameter viz which is an defines a generic representation of the power-state parameter, which is an
array of local power states where each index corresponds to a power domain array of local power states where each index corresponds to a power domain
level. Each entry contains the local power state the power domain at that power level. Each entry contains the local power state the power domain at that power
level could enter. It depends on the ``validate_power_state()`` handler to level could enter. It depends on the ``validate_power_state()`` handler to
......
...@@ -15,10 +15,10 @@ Serviceability (RAS) extensions. RAS is a mandatory extension for Armv8.2 and ...@@ -15,10 +15,10 @@ Serviceability (RAS) extensions. RAS is a mandatory extension for Armv8.2 and
later CPUs, and also an optional extension to the base Armv8.0 architecture. later CPUs, and also an optional extension to the base Armv8.0 architecture.
In conjunction with the |EHF|, support for RAS extension enables firmware-first In conjunction with the |EHF|, support for RAS extension enables firmware-first
paradigm for handling platform errors, in which exceptions resulting from paradigm for handling platform errors: exceptions resulting from errors are
errors—viz. Synchronous External Abort (SEA), Asynchronous External Abort routed to and handled in EL3. Said errors are Synchronous External Abort (SEA),
(signalled as SErrors), Fault Handling and Error Recovery interrupts are routed Asynchronous External Abort (signalled as SErrors), Fault Handling and Error
to and handled in EL3. The |EHF| document mentions various `error handling Recovery interrupts. The |EHF| document mentions various `error handling
use-cases`__. use-cases`__.
.. __: exception-handling.rst#delegation-use-cases .. __: exception-handling.rst#delegation-use-cases
...@@ -66,7 +66,7 @@ through one one of the notification mechanisms—SEAs, SErrors, or interrupts. R ...@@ -66,7 +66,7 @@ through one one of the notification mechanisms—SEAs, SErrors, or interrupts. R
nodes contain one or more error records, which are registers through which the nodes contain one or more error records, which are registers through which the
nodes advertise various properties of the signalled error. Arm recommends that nodes advertise various properties of the signalled error. Arm recommends that
error records are implemented in the Standard Error Record format. The RAS error records are implemented in the Standard Error Record format. The RAS
architecture allows for error records to be accessible via. system or architecture allows for error records to be accessible via system or
memory-mapped registers. memory-mapped registers.
The platform should enumerate the error records providing for each of them: The platform should enumerate the error records providing for each of them:
...@@ -121,7 +121,7 @@ The error handler must have the following prototype: ...@@ -121,7 +121,7 @@ The error handler must have the following prototype:
int probe_data, const struct err_handler_data *const data); int probe_data, const struct err_handler_data *const data);
The ``data`` constant parameter describes the various properties of the error, The ``data`` constant parameter describes the various properties of the error,
viz. the reason for the error, exception syndrome, and also ``flags``, including the reason for the error, exception syndrome, and also ``flags``,
``cookie``, and ``handle`` parameters from the `top-level exception handler`__. ``cookie``, and ``handle`` parameters from the `top-level exception handler`__.
.. __: interrupt-framework-design.rst#el3-interrupts .. __: interrupt-framework-design.rst#el3-interrupts
......
...@@ -142,7 +142,7 @@ Event flags describe the properties of the event. They are bit maps that can be ...@@ -142,7 +142,7 @@ Event flags describe the properties of the event. They are bit maps that can be
.. __: `Defining events`_ .. __: `Defining events`_
- ``SDEI_MAPF_DYNAMIC``: Marks the event as dynamic. Dynamic events can be - ``SDEI_MAPF_DYNAMIC``: Marks the event as dynamic. Dynamic events can be
bound to (or released from) any Non-secure interrupt at runtime via. the bound to (or released from) any Non-secure interrupt at runtime via the
``SDEI_INTERRUPT_BIND`` and ``SDEI_INTERRUPT_RELEASE`` calls. ``SDEI_INTERRUPT_BIND`` and ``SDEI_INTERRUPT_RELEASE`` calls.
- ``SDEI_MAPF_BOUND``: Marks the event as statically bound to an interrupt. - ``SDEI_MAPF_BOUND``: Marks the event as statically bound to an interrupt.
...@@ -226,7 +226,7 @@ Explicit dispatch of events ...@@ -226,7 +226,7 @@ Explicit dispatch of events
Typically, an SDEI event dispatch is caused by the PE receiving interrupts that Typically, an SDEI event dispatch is caused by the PE receiving interrupts that
are bound to an SDEI event. However, there are cases where the Secure world are bound to an SDEI event. However, there are cases where the Secure world
requires dispatch of an SDEI event as a direct or indirect result of a past requires dispatch of an SDEI event as a direct or indirect result of a past
activity, viz. receiving a Secure interrupt or an exception. activity, such as receiving a Secure interrupt or an exception.
The SDEI dispatcher implementation provides ``sdei_dispatch_event()`` API for The SDEI dispatcher implementation provides ``sdei_dispatch_event()`` API for
this purpose. The API has the following signature: this purpose. The API has the following signature:
......
...@@ -548,13 +548,13 @@ Common build options ...@@ -548,13 +548,13 @@ Common build options
- ``KEY_ALG``: This build flag enables the user to select the algorithm to be - ``KEY_ALG``: This build flag enables the user to select the algorithm to be
used for generating the PKCS keys and subsequent signing of the certificate. used for generating the PKCS keys and subsequent signing of the certificate.
It accepts 3 values viz. ``rsa``, ``rsa_1_5``, ``ecdsa``. The ``rsa_1_5`` is It accepts 3 values: ``rsa``, ``rsa_1_5`` and ``ecdsa``. The option
the legacy PKCS#1 RSA 1.5 algorithm which is not TBBR compliant and is ``rsa_1_5`` is the legacy PKCS#1 RSA 1.5 algorithm which is not TBBR
retained only for compatibility. The default value of this flag is ``rsa`` compliant and is retained only for compatibility. The default value of this
which is the TBBR compliant PKCS#1 RSA 2.1 scheme. flag is ``rsa`` which is the TBBR compliant PKCS#1 RSA 2.1 scheme.
- ``HASH_ALG``: This build flag enables the user to select the secure hash - ``HASH_ALG``: This build flag enables the user to select the secure hash
algorithm. It accepts 3 values viz. ``sha256``, ``sha384``, ``sha512``. algorithm. It accepts 3 values: ``sha256``, ``sha384`` and ``sha512``.
The default value of this flag is ``sha256``. The default value of this flag is ``sha256``.
- ``LDFLAGS``: Extra user options appended to the linkers' command line in - ``LDFLAGS``: Extra user options appended to the linkers' command line in
...@@ -619,14 +619,14 @@ Common build options ...@@ -619,14 +619,14 @@ Common build options
does not need to be implemented in this case. does not need to be implemented in this case.
- ``PSCI_EXTENDED_STATE_ID``: As per PSCI1.0 Specification, there are 2 formats - ``PSCI_EXTENDED_STATE_ID``: As per PSCI1.0 Specification, there are 2 formats
possible for the PSCI power-state parameter viz original and extended possible for the PSCI power-state parameter: original and extended State-ID
State-ID formats. This flag if set to 1, configures the generic PSCI layer formats. This flag if set to 1, configures the generic PSCI layer to use the
to use the extended format. The default value of this flag is 0, which extended format. The default value of this flag is 0, which means by default
means by default the original power-state format is used by the PSCI the original power-state format is used by the PSCI implementation. This flag
implementation. This flag should be specified by the platform makefile should be specified by the platform makefile and it governs the return value
and it governs the return value of PSCI_FEATURES API for CPU_SUSPEND of PSCI_FEATURES API for CPU_SUSPEND smc function id. When this option is
smc function id. When this option is enabled on Arm platforms, the enabled on Arm platforms, the option ``ARM_RECOM_STATE_ID_ENC`` needs to be
option ``ARM_RECOM_STATE_ID_ENC`` needs to be set to 1 as well. set to 1 as well.
- ``RAS_EXTENSION``: When set to ``1``, enable Armv8.2 RAS features. RAS features - ``RAS_EXTENSION``: When set to ``1``, enable Armv8.2 RAS features. RAS features
are an optional extension for pre-Armv8.2 CPUs, but are mandatory for Armv8.2 are an optional extension for pre-Armv8.2 CPUs, but are mandatory for Armv8.2
......
...@@ -169,7 +169,7 @@ void scpi_set_css_power_state(unsigned int mpidr, ...@@ -169,7 +169,7 @@ void scpi_set_css_power_state(unsigned int mpidr,
* In response to the query, SCP returns power states of all CPUs in all * In response to the query, SCP returns power states of all CPUs in all
* clusters of the system. The returned response is then filtered based on the * clusters of the system. The returned response is then filtered based on the
* supplied MPIDR. Power states of requested cluster and CPUs within are updated * supplied MPIDR. Power states of requested cluster and CPUs within are updated
* via. supplied non-NULL pointer arguments. * via supplied non-NULL pointer arguments.
* *
* Returns 0 on success, or -1 on errors. * Returns 0 on success, or -1 on errors.
*/ */
...@@ -223,7 +223,7 @@ int scpi_get_css_power_state(unsigned int mpidr, unsigned int *cpu_state_p, ...@@ -223,7 +223,7 @@ int scpi_get_css_power_state(unsigned int mpidr, unsigned int *cpu_state_p,
if (CLUSTER_ID(power_state) != cluster) if (CLUSTER_ID(power_state) != cluster)
goto exit; goto exit;
/* Update power state via. pointers */ /* Update power state via pointers */
if (cluster_state_p) if (cluster_state_p)
*cluster_state_p = CLUSTER_POWER_STATE(power_state); *cluster_state_p = CLUSTER_POWER_STATE(power_state);
if (cpu_state_p) if (cpu_state_p)
......
...@@ -279,8 +279,8 @@ unsigned int gicv2_get_running_priority(void) ...@@ -279,8 +279,8 @@ unsigned int gicv2_get_running_priority(void)
/******************************************************************************* /*******************************************************************************
* This function sets the GICv2 target mask pattern for the current PE. The PE * This function sets the GICv2 target mask pattern for the current PE. The PE
* target mask is used to translate linear PE index (returned by platform core * target mask is used to translate linear PE index (returned by platform core
* position) to a bit mask used when targeting interrupts to a PE, viz. when * position) to a bit mask used when targeting interrupts to a PE (for example
* raising SGIs and routing SPIs. * when raising SGIs and routing SPIs).
******************************************************************************/ ******************************************************************************/
void gicv2_set_pe_target_mask(unsigned int proc_num) void gicv2_set_pe_target_mask(unsigned int proc_num)
{ {
......
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
/* /*
* Have the function func called back when the specified event happens. This * Have the function func called back when the specified event happens. This
* macro places the function address into the pubsub section, which is picked up * macro places the function address into the pubsub section, which is picked up
* and invoked by the invoke_pubsubs() function via. the PUBLISH_EVENT* macros. * and invoked by the invoke_pubsubs() function via the PUBLISH_EVENT* macros.
* *
* The extern declaration is there to satisfy MISRA C-2012 rule 8.4. * The extern declaration is there to satisfy MISRA C-2012 rule 8.4.
*/ */
......
...@@ -106,7 +106,7 @@ struct err_handler_data { ...@@ -106,7 +106,7 @@ struct err_handler_data {
*/ */
uint32_t syndrome; uint32_t syndrome;
/* For errors signalled via. interrupt, the raw interrupt ID; otherwise, 0. */ /* For errors signalled via interrupt, the raw interrupt ID; otherwise, 0. */
unsigned int interrupt; unsigned int interrupt;
}; };
...@@ -129,7 +129,7 @@ struct err_record_info { ...@@ -129,7 +129,7 @@ struct err_record_info {
union { union {
struct { struct {
/* /*
* For a group accessed via. memory-mapped register, * For a group accessed via memory-mapped register,
* base address of the page hosting error records, and * base address of the page hosting error records, and
* the size of the record group. * the size of the record group.
*/ */
...@@ -141,7 +141,7 @@ struct err_record_info { ...@@ -141,7 +141,7 @@ struct err_record_info {
struct { struct {
/* /*
* For error records accessed via. system register, index of * For error records accessed via system register, index of
* the error record. * the error record.
*/ */
unsigned int idx_start; unsigned int idx_start;
......
...@@ -456,7 +456,7 @@ func restore_gp_registers ...@@ -456,7 +456,7 @@ func restore_gp_registers
endfunc restore_gp_registers endfunc restore_gp_registers
/* ----------------------------------------------------- /* -----------------------------------------------------
* Restore general purpose registers (including x30), and exit EL3 via. ERET to * Restore general purpose registers (including x30), and exit EL3 via ERET to
* a lower exception level. * a lower exception level.
* ----------------------------------------------------- * -----------------------------------------------------
*/ */
......
...@@ -140,8 +140,7 @@ PL011_GENERIC_UART := 0 ...@@ -140,8 +140,7 @@ PL011_GENERIC_UART := 0
# The platform Makefile is free to override this value. # The platform Makefile is free to override this value.
PROGRAMMABLE_RESET_ADDRESS := 0 PROGRAMMABLE_RESET_ADDRESS := 0
# Flag used to choose the power state format viz Extended State-ID or the # Flag used to choose the power state format: Extended State-ID or Original
# Original format.
PSCI_EXTENDED_STATE_ID := 0 PSCI_EXTENDED_STATE_ID := 0
# Enable RAS support # Enable RAS support
......
...@@ -14,13 +14,13 @@ ...@@ -14,13 +14,13 @@
.weak plat_set_my_stack .weak plat_set_my_stack
/* --------------------------------------------------------------------- /* ---------------------------------------------------------------------
* When the compatility layer is disabled, the new platform APIs * When the compatility layer is disabled, the platform APIs
* viz plat_get_my_stack() and plat_set_my_stack() are * plat_get_my_stack() and plat_set_my_stack() are supported by the
* supported by the platform and the previous APIs platform_get_stack() * platform and the previous APIs platform_get_stack() and
* and platform_set_stack() are defined in terms of new APIs making use * platform_set_stack() are defined in terms of new APIs making use of
* of the fact that they are only ever invoked for the current CPU. * the fact that they are only ever invoked for the current CPU. This
* This is to enable components of Trusted Firmware like SPDs using the * is to enable components of Trusted Firmware like SPDs using the old
* old platform APIs to continue to work. * platform APIs to continue to work.
* -------------------------------------------------------------------- * --------------------------------------------------------------------
*/ */
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment