Glossary
========

This glossary provides definitions for terms and abbreviations used in the TF-A
documentation.

You can find additional definitions in the `Arm Glossary`_.

.. glossary::
   :sorted:

   AArch32
      32-bit execution state of the ARMv8 ISA

   AArch64
      64-bit execution state of the ARMv8 ISA

   AMU
      Activity Monitor Unit, a hardware monitoring unit introduced by FEAT_AMUv1
      that exposes CPU core runtime metrics as a set of counter registers.

   API
      Application Programming Interface

   AT
      Address Translation

   BTI
      Branch Target Identification. An Armv8.5 extension providing additional
      control flow integrity around indirect branches and their targets.

   CoT
   COT
      Chain of Trust

   CSS
      Compute Sub-System

   CVE
      Common Vulnerabilities and Exposures. A CVE document is commonly used to
      describe a publicly-known security vulnerability.

   DS-5
      Arm Development Studio 5

   DSU
      DynamIQ Shared Unit

   DT
      Device Tree

   DTB
      Device Tree Blob

   EL
      Exception Level

   EHF
      Exception Handling Framework

   FCONF
      Firmware Configuration Framework

   FDT
      Flattened Device Tree

   FF-A
      Firmware Framework for Arm A-profile

   FIP
      Firmware Image Package

   FVP
      Fixed Virtual Platform

   FWU
      FirmWare Update

   GIC
      Generic Interrupt Controller

   ISA
      Instruction Set Architecture

   Linaro
      A collaborative engineering organization consolidating
      and optimizing open source software and tools for the Arm architecture.

   MMU
      Memory Management Unit

   MPAM
      Memory Partitioning And Monitoring. An optional Armv8.4 extension.

   MPIDR
      Multiprocessor Affinity Register

   MTE
      Memory Tagging Extension. An optional Armv8.5 extension that enables
      hardware-assisted memory tagging.

   OEN
      Owning Entity Number

   OP-TEE
      Open Portable Trusted Execution Environment. An example of a :term:`TEE`

   OTE
      Open-source Trusted Execution Environment

   PDD
      Platform Design Document

   PAUTH
      Pointer Authentication. An optional extension introduced in Armv8.3.

   PMF
      Performance Measurement Framework

   PSA
      Platform Security Architecture

   PSCI
      Power State Coordination Interface

   RAS
      Reliability, Availability, and Serviceability extensions. A mandatory
      extension for the Armv8.2 architecture and later. An optional extension to
      the base Armv8 architecture.

   ROT
      Root of Trust

   SCMI
      System Control and Management Interface

   SCP
      System Control Processor

   SDEI
      Software Delegated Exception Interface

   SDS
      Shared Data Storage

   SEA
      Synchronous External Abort

   SiP
   SIP
      Silicon Provider

   SMC
      Secure Monitor Call

   SMCCC
      :term:`SMC` Calling Convention

   SoC
      System on Chip

   SP
      Secure Partition

   SPD
      Secure Payload Dispatcher

   SPM
      Secure Partition Manager

   SSBS
      Speculative Store Bypass Safe. Introduced in Armv8.5, this configuration
      bit can be set by software to allow or prevent the hardware from
      performing speculative operations.

   SVE
      Scalable Vector Extension

   TBB
      Trusted Board Boot

   TBBR
      Trusted Board Boot Requirements

   TEE
      Trusted Execution Environment

   TF-A
      Trusted Firmware-A

   TF-M
      Trusted Firmware-M

   TLB
      Translation Lookaside Buffer

   TLK
      Trusted Little Kernel. A Trusted OS from NVIDIA.

   TRNG
      True Randon Number Generator (hardware based)

   TSP
      Test Secure Payload

   TZC
      TrustZone Controller

   UBSAN
      Undefined Behavior Sanitizer

   UEFI
      Unified Extensible Firmware Interface

   WDOG
      Watchdog

   XLAT
      Translation (abbr.). For example, "XLAT table".

.. _`Arm Glossary`: https://developer.arm.com/support/arm-glossary
