# New Cpu Feature

> Add support for a new A-profile architectural CPU feature that adds functionality at EL3.

- Skill: `arm-software/new-cpu-feature` (Agent Skill)
- Install (CLI): `npx skillmds@latest add arm-software/new-cpu-feature`
- Raw SKILL.md: https://api.skillmd.com/api/skills/arm-software/new-cpu-feature/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- License: BSD-3-Clause
- Author: arm-software (https://skillmd.com/u/arm-software)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/arm-software/new-cpu-feature

---


# TF-A CPU Feature

Start by reading:

- `docs/architecture_features.rst`
- The Arm ARM entry for the feature

Treat `docs/architecture_features.rst` as the status ledger and the generic
upstream checklist. Adapt it to the current tree before editing anything.

Keep in mind that ``FEAT_ABC`` stands for the feature you're implementing.

# Before you begin

Ask the user for the path to a local copy of the XML of the Architecture. Also
ask for the PDF of the Arm ARM. Use them for searching the architecture.

# Adding tests to TFTF

Ask the user for the path to the local copy of TFTF. Add a test for any
functionality that has EL3 involvement like a trap to an instruction. Add the
test like for other CPU features in the cpu-extensions test group. If the
feature requires it, register it with
tftf/tests/runtime_services/arm_arch_svc/smccc_feature_availability.c.

# Enabling the feature in CI

Ask the user for the path to the local copy of the CI scripts. If the feature is
always optional, add it to the list in model/base-aemva-common.sh. To determine
if a feature is always optional you can assume that EL2 and EL3 and AArch64 are
always implemented. If the feature has a dependency on other features that are
already enabled do not enable it. Use the command `FVP_Base_RevC-2xAEMvA -l` to
determine what flag to give to the model.

