sphinx.addnodesdocument)}( rawsourcechildren](docutils.nodessubstitution_definition)}(h&.. |AArch32| replace:: :term:`AArch32`h]h pending_xref)}(h:term:`AArch32`h]h inline)}(hhh]h TextAArch32}(hhparenthuba attributes}(ids]classes](xrefstdstd-termenames]dupnames]backrefs]utagnamehh!hubah"}(h$]h&]h+]h-]h/]refdocprocess/coding-style refdomainh)reftypeterm refexplicitrefwarn reftargetAArch32uh1hsource lineKh!h ubah"}(h$]h&]h+]AArch32ah-]h/]uh1h hAhBhCKh!hhhubh )}(h&.. |AArch64| replace:: :term:`AArch64`h]h)}(h:term:`AArch64`h]h)}(hhQh]hAArch64}(hhh!hSubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!hOubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainh]reftypeterm refexplicitrefwarnh?AArch64uh1hhAhBhCKh!hKubah"}(h$]h&]h+]AArch64ah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |AMU| replace:: :term:`AMU`h]h)}(h :term:`AMU`h]h)}(hh|h]hAMU}(hhh!h~ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!hzubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainhreftypeterm refexplicitrefwarnh?AMUuh1hhAhBhCKh!hvubah"}(h$]h&]h+]AMUah-]h/]uh1h hAhBhCKh!hhhubh )}(h&.. |AMUs| replace:: :term:`AMUs `h]h)}(h:term:`AMUs `h]h)}(hhh]hAMUs}(hhh!hubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!hubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainhreftypeterm refexplicitrefwarnh?AMUuh1hhAhBhCKh!hubah"}(h$]h&]h+]AMUsah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |API| replace:: :term:`API`h]h)}(h :term:`API`h]h)}(hhh]hAPI}(hhh!hubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!hubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainhތreftypeterm refexplicitrefwarnh?APIuh1hhAhBhCKh!hubah"}(h$]h&]h+]APIah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |BTI| replace:: :term:`BTI`h]h)}(h :term:`BTI`h]h)}(hhh]hBTI}(hhh!hubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!hubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?BTIuh1hhAhBhCKh!hubah"}(h$]h&]h+]BTIah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |CoT| replace:: :term:`CoT`h]h)}(h :term:`CoT`h]h)}(hj(h]hCoT}(hhh!j*ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j&ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj4reftypeterm refexplicitrefwarnh?CoTuh1hhAhBhCKh!j"ubah"}(h$]h&]h+]CoTah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |COT| replace:: :term:`COT`h]h)}(h :term:`COT`h]h)}(hjSh]hCOT}(hhh!jUubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jQubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj_reftypeterm refexplicitrefwarnh?COTuh1hhAhBhCKh!jMubah"}(h$]h&]h+]COTah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |CSS| replace:: :term:`CSS`h]h)}(h :term:`CSS`h]h)}(hj~h]hCSS}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j|ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?CSSuh1hhAhBhCK h!jxubah"}(h$]h&]h+]CSSah-]h/]uh1h hAhBhCK h!hhhubh )}(h.. |CVE| replace:: :term:`CVE`h]h)}(h :term:`CVE`h]h)}(hjh]hCVE}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?CVEuh1hhAhBhCK h!jubah"}(h$]h&]h+]CVEah-]h/]uh1h hAhBhCK h!hhhubh )}(h.. |DTB| replace:: :term:`DTB`h]h)}(h :term:`DTB`h]h)}(hjh]hDTB}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?DTBuh1hhAhBhCK h!jubah"}(h$]h&]h+]DTBah-]h/]uh1h hAhBhCK h!hhhubh )}(h .. |DS-5| replace:: :term:`DS-5`h]h)}(h :term:`DS-5`h]h)}(hjh]hDS-5}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?DS-5uh1hhAhBhCK h!jubah"}(h$]h&]h+]DS-5ah-]h/]uh1h hAhBhCK h!hhhubh )}(h.. |DSU| replace:: :term:`DSU`h]h)}(h :term:`DSU`h]h)}(hj*h]hDSU}(hhh!j,ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j(ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj6reftypeterm refexplicitrefwarnh?DSUuh1hhAhBhCK h!j$ubah"}(h$]h&]h+]DSUah-]h/]uh1h hAhBhCK h!hhhubh )}(h.. |DT| replace:: :term:`DT`h]h)}(h :term:`DT`h]h)}(hjUh]hDT}(hhh!jWubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jSubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjareftypeterm refexplicitrefwarnh?DTuh1hhAhBhCKh!jOubah"}(h$]h&]h+]DTah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |EL| replace:: :term:`EL`h]h)}(h :term:`EL`h]h)}(hjh]hEL}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j~ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?ELuh1hhAhBhCKh!jzubah"}(h$]h&]h+]ELah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |EHF| replace:: :term:`EHF`h]h)}(h :term:`EHF`h]h)}(hjh]hEHF}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?EHFuh1hhAhBhCKh!jubah"}(h$]h&]h+]EHFah-]h/]uh1h hAhBhCKh!hhhubh )}(h".. |FCONF| replace:: :term:`FCONF`h]h)}(h :term:`FCONF`h]h)}(hjh]hFCONF}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?FCONFuh1hhAhBhCKh!jubah"}(h$]h&]h+]FCONFah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |FDT| replace:: :term:`FDT`h]h)}(h :term:`FDT`h]h)}(hjh]hFDT}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?FDTuh1hhAhBhCKh!jubah"}(h$]h&]h+]FDTah-]h/]uh1h hAhBhCKh!hhhubh )}(h .. |FF-A| replace:: :term:`FF-A`h]h)}(h :term:`FF-A`h]h)}(hj,h]hFF-A}(hhh!j.ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j*ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj8reftypeterm refexplicitrefwarnh?FF-Auh1hhAhBhCKh!j&ubah"}(h$]h&]h+]FF-Aah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |FIP| replace:: :term:`FIP`h]h)}(h :term:`FIP`h]h)}(hjWh]hFIP}(hhh!jYubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jUubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjcreftypeterm refexplicitrefwarnh?FIPuh1hhAhBhCKh!jQubah"}(h$]h&]h+]FIPah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |FVP| replace:: :term:`FVP`h]h)}(h :term:`FVP`h]h)}(hjh]hFVP}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?FVPuh1hhAhBhCKh!j|ubah"}(h$]h&]h+]FVPah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |FWU| replace:: :term:`FWU`h]h)}(h :term:`FWU`h]h)}(hjh]hFWU}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?FWUuh1hhAhBhCKh!jubah"}(h$]h&]h+]FWUah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |GIC| replace:: :term:`GIC`h]h)}(h :term:`GIC`h]h)}(hjh]hGIC}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?GICuh1hhAhBhCKh!jubah"}(h$]h&]h+]GICah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |ISA| replace:: :term:`ISA`h]h)}(h :term:`ISA`h]h)}(hjh]hISA}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?ISAuh1hhAhBhCKh!jubah"}(h$]h&]h+]ISAah-]h/]uh1h hAhBhCKh!hhhubh )}(h$.. |Linaro| replace:: :term:`Linaro`h]h)}(h:term:`Linaro`h]h)}(hj.h]hLinaro}(hhh!j0ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j,ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj:reftypeterm refexplicitrefwarnh?Linarouh1hhAhBhCKh!j(ubah"}(h$]h&]h+]Linaroah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |MMU| replace:: :term:`MMU`h]h)}(h :term:`MMU`h]h)}(hjYh]hMMU}(hhh!j[ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jWubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjereftypeterm refexplicitrefwarnh?MMUuh1hhAhBhCKh!jSubah"}(h$]h&]h+]MMUah-]h/]uh1h hAhBhCKh!hhhubh )}(h .. |MPAM| replace:: :term:`MPAM`h]h)}(h :term:`MPAM`h]h)}(hjh]hMPAM}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?MPAMuh1hhAhBhCKh!j~ubah"}(h$]h&]h+]MPAMah-]h/]uh1h hAhBhCKh!hhhubh )}(h .. |MPMM| replace:: :term:`MPMM`h]h)}(h :term:`MPMM`h]h)}(hjh]hMPMM}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?MPMMuh1hhAhBhCKh!jubah"}(h$]h&]h+]MPMMah-]h/]uh1h hAhBhCKh!hhhubh )}(h".. |MPIDR| replace:: :term:`MPIDR`h]h)}(h :term:`MPIDR`h]h)}(hjh]hMPIDR}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?MPIDRuh1hhAhBhCKh!jubah"}(h$]h&]h+]MPIDRah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |MTE| replace:: :term:`MTE`h]h)}(h :term:`MTE`h]h)}(hjh]hMTE}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?MTEuh1hhAhBhCKh!jubah"}(h$]h&]h+]MTEah-]h/]uh1h hAhBhCKh!hhhubh )}(h.. |OEN| replace:: :term:`OEN`h]h)}(h :term:`OEN`h]h)}(hj0h]hOEN}(hhh!j2ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j.ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj<reftypeterm refexplicitrefwarnh?OENuh1hhAhBhCKh!j*ubah"}(h$]h&]h+]OENah-]h/]uh1h hAhBhCKh!hhhubh )}(h$.. |OP-TEE| replace:: :term:`OP-TEE`h]h)}(h:term:`OP-TEE`h]h)}(hj[h]hOP-TEE}(hhh!j]ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jYubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjgreftypeterm refexplicitrefwarnh?OP-TEEuh1hhAhBhCK h!jUubah"}(h$]h&]h+]OP-TEEah-]h/]uh1h hAhBhCK h!hhhubh )}(h.. |OTE| replace:: :term:`OTE`h]h)}(h :term:`OTE`h]h)}(hjh]hOTE}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?OTEuh1hhAhBhCK!h!jubah"}(h$]h&]h+]OTEah-]h/]uh1h hAhBhCK!h!hhhubh )}(h.. |PDD| replace:: :term:`PDD`h]h)}(h :term:`PDD`h]h)}(hjh]hPDD}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?PDDuh1hhAhBhCK"h!jubah"}(h$]h&]h+]PDDah-]h/]uh1h hAhBhCK"h!hhhubh )}(h".. |PAUTH| replace:: :term:`PAUTH`h]h)}(h :term:`PAUTH`h]h)}(hjh]hPAUTH}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?PAUTHuh1hhAhBhCK#h!jubah"}(h$]h&]h+]PAUTHah-]h/]uh1h hAhBhCK#h!hhhubh )}(h.. |PMF| replace:: :term:`PMF`h]h)}(h :term:`PMF`h]h)}(hjh]hPMF}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?PMFuh1hhAhBhCK$h!jubah"}(h$]h&]h+]PMFah-]h/]uh1h hAhBhCK$h!hhhubh )}(h .. |PSCI| replace:: :term:`PSCI`h]h)}(h :term:`PSCI`h]h)}(hj2h]hPSCI}(hhh!j4ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j0ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj>reftypeterm refexplicitrefwarnh?PSCIuh1hhAhBhCK%h!j,ubah"}(h$]h&]h+]PSCIah-]h/]uh1h hAhBhCK%h!hhhubh )}(h.. |RAS| replace:: :term:`RAS`h]h)}(h :term:`RAS`h]h)}(hj]h]hRAS}(hhh!j_ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j[ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjireftypeterm refexplicitrefwarnh?RASuh1hhAhBhCK&h!jWubah"}(h$]h&]h+]RASah-]h/]uh1h hAhBhCK&h!hhhubh )}(h.. |ROT| replace:: :term:`ROT`h]h)}(h :term:`ROT`h]h)}(hjh]hROT}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?ROTuh1hhAhBhCK'h!jubah"}(h$]h&]h+]ROTah-]h/]uh1h hAhBhCK'h!hhhubh )}(h .. |SCMI| replace:: :term:`SCMI`h]h)}(h :term:`SCMI`h]h)}(hjh]hSCMI}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SCMIuh1hhAhBhCK(h!jubah"}(h$]h&]h+]SCMIah-]h/]uh1h hAhBhCK(h!hhhubh )}(h.. |SCP| replace:: :term:`SCP`h]h)}(h :term:`SCP`h]h)}(hjh]hSCP}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SCPuh1hhAhBhCK)h!jubah"}(h$]h&]h+]SCPah-]h/]uh1h hAhBhCK)h!hhhubh )}(h .. |SDEI| replace:: :term:`SDEI`h]h)}(h :term:`SDEI`h]h)}(hj h]hSDEI}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SDEIuh1hhAhBhCK*h!jubah"}(h$]h&]h+]SDEIah-]h/]uh1h hAhBhCK*h!hhhubh )}(h.. |SDS| replace:: :term:`SDS`h]h)}(h :term:`SDS`h]h)}(hj4h]hSDS}(hhh!j6ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j2ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj@reftypeterm refexplicitrefwarnh?SDSuh1hhAhBhCK+h!j.ubah"}(h$]h&]h+]SDSah-]h/]uh1h hAhBhCK+h!hhhubh )}(h.. |SEA| replace:: :term:`SEA`h]h)}(h :term:`SEA`h]h)}(hj_h]hSEA}(hhh!jaubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j]ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjkreftypeterm refexplicitrefwarnh?SEAuh1hhAhBhCK,h!jYubah"}(h$]h&]h+]SEAah-]h/]uh1h hAhBhCK,h!hhhubh )}(h.. |SiP| replace:: :term:`SiP`h]h)}(h :term:`SiP`h]h)}(hjh]hSiP}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SiPuh1hhAhBhCK-h!jubah"}(h$]h&]h+]SiPah-]h/]uh1h hAhBhCK-h!hhhubh )}(h.. |SIP| replace:: :term:`SIP`h]h)}(h :term:`SIP`h]h)}(hjh]hSIP}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SIPuh1hhAhBhCK.h!jubah"}(h$]h&]h+]SIPah-]h/]uh1h hAhBhCK.h!hhhubh )}(h.. |SMC| replace:: :term:`SMC`h]h)}(h :term:`SMC`h]h)}(hjh]hSMC}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SMCuh1hhAhBhCK/h!jubah"}(h$]h&]h+]SMCah-]h/]uh1h hAhBhCK/h!hhhubh )}(h".. |SMCCC| replace:: :term:`SMCCC`h]h)}(h :term:`SMCCC`h]h)}(hj h]hSMCCC}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SMCCCuh1hhAhBhCK0h!jubah"}(h$]h&]h+]SMCCCah-]h/]uh1h hAhBhCK0h!hhhubh )}(h.. |SoC| replace:: :term:`SoC`h]h)}(h :term:`SoC`h]h)}(hj6h]hSoC}(hhh!j8ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j4ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjBreftypeterm refexplicitrefwarnh?SoCuh1hhAhBhCK1h!j0ubah"}(h$]h&]h+]SoCah-]h/]uh1h hAhBhCK1h!hhhubh )}(h.. |SP| replace:: :term:`SP`h]h)}(h :term:`SP`h]h)}(hjah]hSP}(hhh!jcubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j_ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjmreftypeterm refexplicitrefwarnh?SPuh1hhAhBhCK2h!j[ubah"}(h$]h&]h+]SPah-]h/]uh1h hAhBhCK2h!hhhubh )}(h.. |SPD| replace:: :term:`SPD`h]h)}(h :term:`SPD`h]h)}(hjh]hSPD}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SPDuh1hhAhBhCK3h!jubah"}(h$]h&]h+]SPDah-]h/]uh1h hAhBhCK3h!hhhubh )}(h.. |SPM| replace:: :term:`SPM`h]h)}(h :term:`SPM`h]h)}(hjh]hSPM}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SPMuh1hhAhBhCK4h!jubah"}(h$]h&]h+]SPMah-]h/]uh1h hAhBhCK4h!hhhubh )}(h .. |SSBS| replace:: :term:`SSBS`h]h)}(h :term:`SSBS`h]h)}(hjh]hSSBS}(hhh!jubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjreftypeterm refexplicitrefwarnh?SSBSuh1hhAhBhCK5h!jubah"}(h$]h&]h+]SSBSah-]h/]uh1h hAhBhCK5h!hhhubh )}(h.. |SVE| replace:: :term:`SVE`h]h)}(h :term:`SVE`h]h)}(hj h]hSVE}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?SVEuh1hhAhBhCK6h!j ubah"}(h$]h&]h+]SVEah-]h/]uh1h hAhBhCK6h!hhhubh )}(h.. |TBB| replace:: :term:`TBB`h]h)}(h :term:`TBB`h]h)}(hj8 h]hTBB}(hhh!j: ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j6 ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjD reftypeterm refexplicitrefwarnh?TBBuh1hhAhBhCK7h!j2 ubah"}(h$]h&]h+]TBBah-]h/]uh1h hAhBhCK7h!hhhubh )}(h .. |TBBR| replace:: :term:`TBBR`h]h)}(h :term:`TBBR`h]h)}(hjc h]hTBBR}(hhh!je ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!ja ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjo reftypeterm refexplicitrefwarnh?TBBRuh1hhAhBhCK8h!j] ubah"}(h$]h&]h+]TBBRah-]h/]uh1h hAhBhCK8h!hhhubh )}(h.. |TEE| replace:: :term:`TEE`h]h)}(h :term:`TEE`h]h)}(hj h]hTEE}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?TEEuh1hhAhBhCK9h!j ubah"}(h$]h&]h+]TEEah-]h/]uh1h hAhBhCK9h!hhhubh )}(h .. |TF-A| replace:: :term:`TF-A`h]h)}(h :term:`TF-A`h]h)}(hj h]hTF-A}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?TF-Auh1hhAhBhCK:h!j ubah"}(h$]h&]h+]TF-Aah-]h/]uh1h hAhBhCK:h!hhhubh )}(h .. |TF-M| replace:: :term:`TF-M`h]h)}(h :term:`TF-M`h]h)}(hj h]hTF-M}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?TF-Muh1hhAhBhCK;h!j ubah"}(h$]h&]h+]TF-Mah-]h/]uh1h hAhBhCK;h!hhhubh )}(h.. |TLB| replace:: :term:`TLB`h]h)}(h :term:`TLB`h]h)}(hj h]hTLB}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?TLBuh1hhAhBhCKh!j_ ubah"}(h$]h&]h+]TRNGah-]h/]uh1h hAhBhCK>h!hhhubh )}(h.. |TSP| replace:: :term:`TSP`h]h)}(h :term:`TSP`h]h)}(hj h]hTSP}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?TSPuh1hhAhBhCK?h!j ubah"}(h$]h&]h+]TSPah-]h/]uh1h hAhBhCK?h!hhhubh )}(h.. |TZC| replace:: :term:`TZC`h]h)}(h :term:`TZC`h]h)}(hj h]hTZC}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?TZCuh1hhAhBhCK@h!j ubah"}(h$]h&]h+]TZCah-]h/]uh1h hAhBhCK@h!hhhubh )}(h".. |UBSAN| replace:: :term:`UBSAN`h]h)}(h :term:`UBSAN`h]h)}(hj h]hUBSAN}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?UBSANuh1hhAhBhCKAh!j ubah"}(h$]h&]h+]UBSANah-]h/]uh1h hAhBhCKAh!hhhubh )}(h .. |UEFI| replace:: :term:`UEFI`h]h)}(h :term:`UEFI`h]h)}(hj h]hUEFI}(hhh!j ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypeterm refexplicitrefwarnh?UEFIuh1hhAhBhCKBh!j ubah"}(h$]h&]h+]UEFIah-]h/]uh1h hAhBhCKBh!hhhubh )}(h .. |WDOG| replace:: :term:`WDOG`h]h)}(h :term:`WDOG`h]h)}(hj< h]hWDOG}(hhh!j> ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!j: ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjH reftypeterm refexplicitrefwarnh?WDOGuh1hhAhBhCKCh!j6 ubah"}(h$]h&]h+]WDOGah-]h/]uh1h hAhBhCKCh!hhhubh )}(h!.. |XLAT| replace:: :term:`XLAT` h]h)}(h :term:`XLAT`h]h)}(hjg h]hXLAT}(hhh!ji ubah"}(h$]h&](h(stdstd-termeh+]h-]h/]uh1hh!je ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainjs reftypeterm refexplicitrefwarnh?XLATuh1hhAhBhCKDh!ja ubah"}(h$]h&]h+]XLATah-]h/]uh1h hAhBhCKDh!hhhubh section)}(hhh](h title)}(h Coding Styleh]h Coding Style}(hj h!j hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!j hhhAU/home/test/workspace/code/optee_3.16/trusted-firmware-a/docs/process/coding-style.rsthCKubh paragraph)}(hThe following sections outline the |TF-A| coding style for *C* code. The style is based on the `Linux kernel coding style`_, with a few modifications.h](h#The following sections outline the }(h#The following sections outline the h!j hhhANhCNubh)}(hj h]h)}(hj h]hTF-A}(hhh!j ubah"}(h$]h&](h(j j eh+]h-]h/]uh1hhANhCNh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypej refexplicitrefwarn reftargetj uh1hhAhBhCK:h!j hhubh coding style for }(h coding style for h!j hhhANhCNubh emphasis)}(h*C*h]hC}(hhh!j ubah"}(h$]h&]h+]h-]h/]uh1j h!j ubh! code. The style is based on the }(h! code. The style is based on the h!j hhhANhCNubh reference)}(h`Linux kernel coding style`_h]hLinux kernel coding style}(hLinux kernel coding styleh!j ubah"}(h$]h&]h+]h-]h/]nameLinux kernel coding stylerefuri@https://www.kernel.org/doc/html/latest/process/coding-style.htmluh1j h!j resolvedKubh, with a few modifications.}(h, with a few modifications.h!j hhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!j hhubj )}(haThe style should not be considered *set in stone*. Feel free to provide feedback and suggestions.h](h#The style should not be considered }(h#The style should not be considered h!j hhhANhCNubj )}(h*set in stone*h]h set in stone}(hhh!j ubah"}(h$]h&]h+]h-]h/]uh1j h!j ubh0. Feel free to provide feedback and suggestions.}(h0. Feel free to provide feedback and suggestions.h!j hhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!j hhubh note)}(hYou will almost certainly find code in the |TF-A| repository that does not follow the style. The intent is for all code to do so eventually.h]j )}(hYou will almost certainly find code in the |TF-A| repository that does not follow the style. The intent is for all code to do so eventually.h](h+You will almost certainly find code in the }(h+You will almost certainly find code in the h!j, ubh)}(hj h]h)}(hj h]hTF-A}(hhh!j8 ubah"}(h$]h&](h(j j eh+]h-]h/]uh1hhANhCNh!j5 ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypej refexplicitrefwarn reftargetj uh1hhAhBhCK:h!j, ubh[ repository that does not follow the style. The intent is for all code to do so eventually.}(h[ repository that does not follow the style. The intent is for all code to do so eventually.h!j, ubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCK h!j( ubah"}(h$]h&]h+]h-]h/]uh1j& h!j hhhAj hCNubj )}(hhh](j )}(h File Encodingh]h File Encoding}(hjg h!je hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!jb hhhAj hCKubj )}(hThe source code must use the **UTF-8** character encoding. Comments and documentation may use non-ASCII characters when required (e.g. Greek letters used for units) but code itself is still limited to ASCII characters.h](hThe source code must use the }(hThe source code must use the h!js hhhANhCNubh strong)}(h **UTF-8**h]hUTF-8}(hhh!j~ ubah"}(h$]h&]h+]h-]h/]uh1j| h!js ubh character encoding. Comments and documentation may use non-ASCII characters when required (e.g. Greek letters used for units) but code itself is still limited to ASCII characters.}(h character encoding. Comments and documentation may use non-ASCII characters when required (e.g. Greek letters used for units) but code itself is still limited to ASCII characters.h!js hhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jb hhubj )}(hNewlines must be in **Unix** style, which means that only the Line Feed (``LF``) character is used to break a line and reset to the first column.h](hNewlines must be in }(hNewlines must be in h!j hhhANhCNubj} )}(h**Unix**h]hUnix}(hhh!j ubah"}(h$]h&]h+]h-]h/]uh1j| h!j ubh- style, which means that only the Line Feed (}(h- style, which means that only the Line Feed (h!j hhhANhCNubh literal)}(h``LF``h]hLF}(hhh!j ubah"}(h$]h&]h+]h-]h/]uh1j h!j ubhB) character is used to break a line and reset to the first column.}(hB) character is used to break a line and reset to the first column.h!j hhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jb hhubeh"}(h$] file-encodingah&]h+] file encodingah-]h/]uh1j h!j hhhAj hCKubj )}(hhh](j )}(hLanguageh]hLanguage}(hj h!j hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!j hhhAj hCKubj )}(hThe primary language for comments and naming must be International English. In cases where there is a conflict between the American English and British English spellings of a word, the American English spelling is used.h]hThe primary language for comments and naming must be International English. In cases where there is a conflict between the American English and British English spellings of a word, the American English spelling is used.}(hj h!j hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!j hhubj )}(hExceptions are made when referring directly to something that does not use international style, such as the name of a company. In these cases the existing name should be used as-is.h]hExceptions are made when referring directly to something that does not use international style, such as the name of a company. In these cases the existing name should be used as-is.}(hj h!j hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!j hhubeh"}(h$]languageah&]h+]languageah-]h/]uh1j h!j hhhAj hCKubj )}(hhh](j )}(hC Language Standardh]hC Language Standard}(hj h!j hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!j hhhAj hCK$ubj )}(hThe C language mode used for TF-A is *GNU99*. This is the "GNU dialect of ISO C99", which implies the *ISO C99* standard with GNU extensions.h](h%The C language mode used for TF-A is }(h%The C language mode used for TF-A is h!j hhhANhCNubj )}(h*GNU99*h]hGNU99}(hhh!j% ubah"}(h$]h&]h+]h-]h/]uh1j h!j ubh>. This is the “GNU dialect of ISO C99”, which implies the }(h:. This is the "GNU dialect of ISO C99", which implies the h!j hhhANhCNubj )}(h *ISO C99*h]hISO C99}(hhh!j8 ubah"}(h$]h&]h+]h-]h/]uh1j h!j ubh standard with GNU extensions.}(h standard with GNU extensions.h!j hhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCK&h!j hhubj )}(hBoth GCC and Clang compiler toolchains have support for *GNU99* mode, though Clang does lack support for a small number of GNU extensions. These missing extensions are rarely used, however, and should not pose a problem.h](h8Both GCC and Clang compiler toolchains have support for }(h8Both GCC and Clang compiler toolchains have support for h!jQ hhhANhCNubj )}(h*GNU99*h]hGNU99}(hhh!jZ ubah"}(h$]h&]h+]h-]h/]uh1j h!jQ ubh mode, though Clang does lack support for a small number of GNU extensions. These missing extensions are rarely used, however, and should not pose a problem.}(h mode, though Clang does lack support for a small number of GNU extensions. These missing extensions are rarely used, however, and should not pose a problem.h!jQ hhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCK)h!j hhubh target)}(h.. _misra-compliance:h]h"}(h$]h&]h+]h-]h/]refidmisra-complianceuh1js hCKrh!j hhhAj ubeh"}(h$]c-language-standardah&]h+]c language standardah-]h/]uh1j h!j hhhAj hCK$ubj )}(hhh](j )}(hMISRA Complianceh]hMISRA Compliance}(hj h!j hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!j hhhAj hCK0ubj )}(hTF-A attempts to comply with the `MISRA C:2012 Guidelines`_. Coverity Static Analysis is used to regularly generate a report of current MISRA defects and to prevent the addition of new ones.h](h!TF-A attempts to comply with the }(h!TF-A attempts to comply with the h!j hhhANhCNubj )}(h`MISRA C:2012 Guidelines`_h]hMISRA C:2012 Guidelines}(hMISRA C:2012 Guidelinesh!j ubah"}(h$]h&]h+]h-]h/]nameMISRA C:2012 Guidelinesj Ahttps://www.misra.org.uk/Activities/MISRAC/tabid/160/Default.aspxuh1j h!j j Kubh. Coverity Static Analysis is used to regularly generate a report of current MISRA defects and to prevent the addition of new ones.}(h. Coverity Static Analysis is used to regularly generate a report of current MISRA defects and to prevent the addition of new ones.h!j hhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCK2h!j hhubj )}(hIt is not possible for the project to follow all MISRA guidelines. We maintain `a spreadsheet`_ that lists all rules and directives and whether we aim to comply with them or not. A rationale is given for each deviation.h](hOIt is not possible for the project to follow all MISRA guidelines. We maintain }(hOIt is not possible for the project to follow all MISRA guidelines. We maintain h!j hhhANhCNubj )}(h`a spreadsheet`_h]h a spreadsheet}(h a spreadsheeth!j ubah"}(h$]h&]h+]h-]h/]name a spreadsheetj https://developer.trustedfirmware.org/file/download/lamajxif3w7c4mpjeoo5/PHID-FILE-fp7c7acszn6vliqomyhn/MISRA-and-TF-Analysis-v1.3.odsuh1j h!j j Kubh| that lists all rules and directives and whether we aim to comply with them or not. A rationale is given for each deviation.}(h| that lists all rules and directives and whether we aim to comply with them or not. A rationale is given for each deviation.h!j hhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCK6h!j hhubj' )}(hzEnforcing a rule does not mean that the codebase is free of defects of that rule, only that they would ideally be removed.h]j )}(hzEnforcing a rule does not mean that the codebase is free of defects of that rule, only that they would ideally be removed.h]hzEnforcing a rule does not mean that the codebase is free of defects of that rule, only that they would ideally be removed.}(hj h!j ubah"}(h$]h&]h+]h-]h/]uh1j hAj hCK;h!j ubah"}(h$]h&]h+]h-]h/]uh1j& h!j hhhAj hCNubj' )}(hThird-party libraries are not considered in our MISRA analysis and we do not intend to modify them to make them MISRA compliant.h]j )}(hThird-party libraries are not considered in our MISRA analysis and we do not intend to modify them to make them MISRA compliant.h]hThird-party libraries are not considered in our MISRA analysis and we do not intend to modify them to make them MISRA compliant.}(hjh!jubah"}(h$]h&]h+]h-]h/]uh1j hAj hCK?h!j ubah"}(h$]h&]h+]h-]h/]uh1j& h!j hhhAj hCNubeh"}(h$](j id1eh&]h+](misra compliancemisra-complianceeh-]h/]uh1j h!j hhhAj hCK0expect_referenced_by_name}jju sexpect_referenced_by_id}j ju subj )}(hhh](j )}(h Indentationh]h Indentation}(hj(h!j&hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!j#hhhAj hCKCubj )}(hUse **tabs** for indentation. The use of spaces for indentation is forbidden except in the case where a term is being indented to a boundary that cannot be achieved using tabs alone.h](hUse }(hUse h!j4hhhANhCNubj} )}(h**tabs**h]htabs}(hhh!j=ubah"}(h$]h&]h+]h-]h/]uh1j| h!j4ubh for indentation. The use of spaces for indentation is forbidden except in the case where a term is being indented to a boundary that cannot be achieved using tabs alone.}(h for indentation. The use of spaces for indentation is forbidden except in the case where a term is being indented to a boundary that cannot be achieved using tabs alone.h!j4hhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKEh!j#hhubj )}(h.Tab spacing should be set to **8 characters**.h](hTab spacing should be set to }(hTab spacing should be set to h!jVhhhANhCNubj} )}(h**8 characters**h]h 8 characters}(hhh!j_ubah"}(h$]h&]h+]h-]h/]uh1j| h!jVubh.}(h.h!jVhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKIh!j#hhubj )}(h7Trailing whitespace is not allowed and must be trimmed.h]h7Trailing whitespace is not allowed and must be trimmed.}(hjzh!jxhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKKh!j#hhubeh"}(h$] indentationah&]h+] indentationah-]h/]uh1j h!j hhhAj hCKCubj )}(hhh](j )}(hSpacingh]hSpacing}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCKNubj )}(h?Single spacing should be used around most operators, including:h]h?Single spacing should be used around most operators, including:}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKPh!jhhubh bullet_list)}(hhh](h list_item)}(h1Arithmetic operators (``+``, ``-``, ``/``, ``*``)h]j )}(hjh](hArithmetic operators (}(hArithmetic operators (h!jubj )}(h``+``h]h+}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh, }(h, h!jubj )}(h``-``h]h-}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh, }(h, h!jubj )}(h``/``h]h/}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh, }(hjh!jubj )}(h``*``h]h*}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh)}(h)h!jubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKRh!jubah"}(h$]h&]h+]h-]h/]uh1jh!jhhhAj hCNubj)}(h)Assignment operators (``=``, ``+=``, etc)h]j )}(hjh](hAssignment operators (}(hAssignment operators (h!jubj )}(h``=``h]h=}(hhh!j#ubah"}(h$]h&]h+]h-]h/]uh1j h!jubh, }(h, h!jubj )}(h``+=``h]h+=}(hhh!j6ubah"}(h$]h&]h+]h-]h/]uh1j h!jubh, etc)}(h, etc)h!jubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKSh!jubah"}(h$]h&]h+]h-]h/]uh1jh!jhhhAj hCNubj)}(h"Boolean operators (``&&``, ``||``)h]j )}(hjWh](hBoolean operators (}(hBoolean operators (h!jYubj )}(h``&&``h]h&&}(hhh!jaubah"}(h$]h&]h+]h-]h/]uh1j h!jYubh, }(h, h!jYubj )}(h``||``h]h||}(hhh!jtubah"}(h$]h&]h+]h-]h/]uh1j h!jYubh)}(hj h!jYubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKTh!jUubah"}(h$]h&]h+]h-]h/]uh1jh!jhhhAj hCNubj)}(h1Comparison operators (``<``, ``>``, ``==``, etc) h]j )}(h0Comparison operators (``<``, ``>``, ``==``, etc)h](hComparison operators (}(hComparison operators (h!jubj )}(h``<``h]h<}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh, }(h, h!jubj )}(h``>``h]h>}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh, }(hjh!jubj )}(h``==``h]h==}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh, etc)}(h, etc)h!jubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKUh!jubah"}(h$]h&]h+]h-]h/]uh1jh!jhhhAj hCNubeh"}(h$]h&]h+]h-]h/]bullet-uh1jhAj hCKRh!jhhubj )}(hA space should also be used to separate parentheses and braces when they are not already separated by a newline, such as for the ``if`` statement in the following example:h](hA space should also be used to separate parentheses and braces when they are not already separated by a newline, such as for the }(hA space should also be used to separate parentheses and braces when they are not already separated by a newline, such as for the h!jhhhANhCNubj )}(h``if``h]hif}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh$ statement in the following example:}(h$ statement in the following example:h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKWh!jhhubh literal_block)}(hKint function_foo(bool bar) { if (bar) { function_baz(); } }h]hKint function_foo(bool bar) { if (bar) { function_baz(); } }}(hhh!jubah"}(h$]h&]h+]h-]h/]forcehighlight_args} xml:spacepreservelanguagecuh1j hAj hCK[h!jhhubj )}(hYNote that there is no space between the name of a function and the following parentheses.h]hYNote that there is no space between the name of a function and the following parentheses.}(hj&h!j$hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKdh!jhhubj )}(hControl statements (``if``, ``for``, ``switch``, ``while``, etc) must be separated from the following open parenthesis by a single space. The previous example illustrates this for an ``if`` statement.h](hControl statements (}(hControl statements (h!j2hhhANhCNubj )}(h``if``h]hif}(hhh!j;ubah"}(h$]h&]h+]h-]h/]uh1j h!j2ubh, }(h, h!j2hhhANhCNubj )}(h``for``h]hfor}(hhh!jNubah"}(h$]h&]h+]h-]h/]uh1j h!j2ubh, }(h, h!j2ubj )}(h ``switch``h]hswitch}(hhh!jaubah"}(h$]h&]h+]h-]h/]uh1j h!j2ubh, }(hjMh!j2ubj )}(h ``while``h]hwhile}(hhh!jsubah"}(h$]h&]h+]h-]h/]uh1j h!j2ubh}, etc) must be separated from the following open parenthesis by a single space. The previous example illustrates this for an }(h}, etc) must be separated from the following open parenthesis by a single space. The previous example illustrates this for an h!j2hhhANhCNubj )}(h``if``h]hif}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!j2ubh statement.}(h statement.h!j2hhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKgh!jhhubeh"}(h$]spacingah&]h+]spacingah-]h/]uh1j h!j hhhAj hCKNubj )}(hhh](j )}(h Line Lengthh]h Line Length}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCKlubj )}(h}Line length *should* be at most **80 characters**. This limit does not include non-printing characters such as the line feed.h](h Line length }(h Line length h!jhhhANhCNubj )}(h*should*h]hshould}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh be at most }(h be at most h!jhhhANhCNubj} )}(h**80 characters**h]h 80 characters}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j| h!jubhL. This limit does not include non-printing characters such as the line feed.}(hL. This limit does not include non-printing characters such as the line feed.h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKnh!jhhubj )}(hThis rule is a *should*, not a must, and it is acceptable to exceed the limit **slightly** where the readability of the code would otherwise be significantly reduced. Use your judgement in these cases.h](hThis rule is a }(hThis rule is a h!jhhhANhCNubj )}(h*should*h]hshould}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh7, not a must, and it is acceptable to exceed the limit }(h7, not a must, and it is acceptable to exceed the limit h!jhhhANhCNubj} )}(h **slightly**h]hslightly}(hhh!j ubah"}(h$]h&]h+]h-]h/]uh1j| h!jubho where the readability of the code would otherwise be significantly reduced. Use your judgement in these cases.}(ho where the readability of the code would otherwise be significantly reduced. Use your judgement in these cases.h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKqh!jhhubeh"}(h$] line-lengthah&]h+] line lengthah-]h/]uh1j h!j hhhAj hCKlubj )}(hhh](j )}(h Blank Linesh]h Blank Lines}(hj/h!j-hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!j*hhhAj hCKvubj )}(hFunctions are usually separated by a single blank line. In certain cases it is acceptable to use additional blank lines for clarity, if required.h]hFunctions are usually separated by a single blank line. In certain cases it is acceptable to use additional blank lines for clarity, if required.}(hj=h!j;hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKxh!j*hhubj )}(hThe file must end with a single newline character. Many editors have the option to insert this automatically and to trim multiple blank lines at the end of the file.h]hThe file must end with a single newline character. Many editors have the option to insert this automatically and to trim multiple blank lines at the end of the file.}(hjKh!jIhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCK{h!j*hhubeh"}(h$] blank-linesah&]h+] blank linesah-]h/]uh1j h!j hhhAj hCKvubj )}(hhh](j )}(hBracesh]hBraces}(hjdh!jbhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!j_hhhAj hCKubj )}(hhh](j )}(hOpening Brace Placementh]hOpening Brace Placement}(hjuh!jshhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!jphhhAj hCKubj )}(hqBraces follow the **Kernighan and Ritchie (K&R)** style, where the opening brace is **not** placed on a new line.h](hBraces follow the }(hBraces follow the h!jhhhANhCNubj} )}(h**Kernighan and Ritchie (K&R)**h]hKernighan and Ritchie (K&R)}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j| h!jubh# style, where the opening brace is }(h# style, where the opening brace is h!jhhhANhCNubj} )}(h**not**h]hnot}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j| h!jubh placed on a new line.}(h placed on a new line.h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jphhubj )}(hExample for a ``while`` loop:h](hExample for a }(hExample for a h!jhhhANhCNubj )}(h ``while``h]hwhile}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh loop:}(h loop:h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jphhubj)}(h+while (condition) { foo(); bar(); }h]h+while (condition) { foo(); bar(); }}(hhh!jubah"}(h$]h&]h+]h-]h/]forcehighlight_args}j j!j"j#uh1j hAj hCKh!jphhubj )}(hThis style applies to all blocks except for functions which, following the Linux style, **do** place the opening brace on a new line.h](hXThis style applies to all blocks except for functions which, following the Linux style, }(hXThis style applies to all blocks except for functions which, following the Linux style, h!jhhhANhCNubj} )}(h**do**h]hdo}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j| h!jubh' place the opening brace on a new line.}(h' place the opening brace on a new line.h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jphhubj )}(hExample for a function:h]hExample for a function:}(hj h!j hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jphhubj)}(h>int my_function(void) { int a; a = 1; return a; }h]h>int my_function(void) { int a; a = 1; return a; }}(hhh!jubah"}(h$]h&]h+]h-]h/]forcehighlight_args}j j!j"j#uh1j hAj hCKh!jphhubeh"}(h$]opening-brace-placementah&]h+]opening brace placementah-]h/]uh1j h!j_hhhAj hCKubj )}(hhh](j )}(hConditional Statement Bodiesh]hConditional Statement Bodies}(hj7h!j5hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!j2hhhAj hCKubj )}(hWhere conditional statements (such as ``if``, ``for``, ``while`` and ``do``) are used, braces must be placed around the statements that form the body of the conditional. This is the case regardless of the number of statements in the body.h](h&Where conditional statements (such as }(h&Where conditional statements (such as h!jChhhANhCNubj )}(h``if``h]hif}(hhh!jLubah"}(h$]h&]h+]h-]h/]uh1j h!jCubh, }(h, h!jChhhANhCNubj )}(h``for``h]hfor}(hhh!j_ubah"}(h$]h&]h+]h-]h/]uh1j h!jCubh, }(hj^h!jCubj )}(h ``while``h]hwhile}(hhh!jqubah"}(h$]h&]h+]h-]h/]uh1j h!jCubh and }(h and h!jChhhANhCNubj )}(h``do``h]hdo}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jCubh) are used, braces must be placed around the statements that form the body of the conditional. This is the case regardless of the number of statements in the body.}(h) are used, braces must be placed around the statements that form the body of the conditional. This is the case regardless of the number of statements in the body.h!jChhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!j2hhubj' )}(hThis is a notable departure from the Linux coding style that has been adopted to follow MISRA guidelines more closely and to help prevent errors.h]j )}(hThis is a notable departure from the Linux coding style that has been adopted to follow MISRA guidelines more closely and to help prevent errors.h]hThis is a notable departure from the Linux coding style that has been adopted to follow MISRA guidelines more closely and to help prevent errors.}(hjh!jubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jubah"}(h$]h&]h+]h-]h/]uh1j& h!j2hhhAj hCNubj )}(h%For example, use the following style:h]h%For example, use the following style:}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!j2hhubj)}(hif (condition) { foo++; }h]hif (condition) { foo++; }}(hhh!jubah"}(h$]h&]h+]h-]h/]forcehighlight_args}j j!j"j#uh1j hAj hCKh!j2hhubj )}(hBinstead of omitting the optional braces around a single statement:h]hBinstead of omitting the optional braces around a single statement:}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!j2hhubj)}(hI/* This is violating MISRA C 2012: Rule 15.6 */ if (condition) foo++;h]hI/* This is violating MISRA C 2012: Rule 15.6 */ if (condition) foo++;}(hhh!jubah"}(h$]h&]h+]h-]h/]forcehighlight_args}j j!j"j#uh1j hAj hCKh!j2hhubj )}(hXThe reason for this is to prevent accidental changes to control flow when modifying the body of the conditional. For example, at a quick glance it is easy to think that the value of ``bar`` is only incremented if ``condition`` evaluates to ``true`` but this is not the case - ``bar`` will always be incremented regardless of the condition evaluation. If the developer forgets to add braces around the conditional body when adding the ``bar++;`` statement then the program execution will not proceed as intended.h](hThe reason for this is to prevent accidental changes to control flow when modifying the body of the conditional. For example, at a quick glance it is easy to think that the value of }(hThe reason for this is to prevent accidental changes to control flow when modifying the body of the conditional. For example, at a quick glance it is easy to think that the value of h!jhhhANhCNubj )}(h``bar``h]hbar}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh is only incremented if }(h is only incremented if h!jhhhANhCNubj )}(h ``condition``h]h condition}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh evaluates to }(h evaluates to h!jhhhANhCNubj )}(h``true``h]htrue}(hhh!j"ubah"}(h$]h&]h+]h-]h/]uh1j h!jubh but this is not the case - }(h but this is not the case - h!jhhhANhCNubj )}(h``bar``h]hbar}(hhh!j5ubah"}(h$]h&]h+]h-]h/]uh1j h!jubh will always be incremented regardless of the condition evaluation. If the developer forgets to add braces around the conditional body when adding the }(h will always be incremented regardless of the condition evaluation. If the developer forgets to add braces around the conditional body when adding the h!jhhhANhCNubj )}(h ``bar++;``h]hbar++;}(hhh!jHubah"}(h$]h&]h+]h-]h/]uh1j h!jubhC statement then the program execution will not proceed as intended.}(hC statement then the program execution will not proceed as intended.h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!j2hhubj)}(hT/* This is violating MISRA C 2012: Rule 15.6 */ if (condition) foo++; bar++;h]hT/* This is violating MISRA C 2012: Rule 15.6 */ if (condition) foo++; bar++;}(hhh!jaubah"}(h$]h&]h+]h-]h/]forcehighlight_args}j j!j"j#uh1j hAj hCKh!j2hhubeh"}(h$]conditional-statement-bodiesah&]h+]conditional statement bodiesah-]h/]uh1j h!j_hhhAj hCKubeh"}(h$]bracesah&]h+]bracesah-]h/]uh1j h!j hhhAj hCKubj )}(hhh](j )}(hNamingh]hNaming}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCKubj )}(hhh](j )}(h Functionsh]h Functions}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCKubj )}(hUse lowercase for function names, separating multiple words with an underscore character (``_``). This is sometimes referred to as *Snake Case*. An example is given below:h](hZUse lowercase for function names, separating multiple words with an underscore character (}(hZUse lowercase for function names, separating multiple words with an underscore character (h!jhhhANhCNubj )}(h``_``h]h_}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh$). This is sometimes referred to as }(h$). This is sometimes referred to as h!jhhhANhCNubj )}(h *Snake Case*h]h Snake Case}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh. An example is given below:}(h. An example is given below:h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jhhubj)}(h%void bl2_arch_setup(void) { ... }h]h%void bl2_arch_setup(void) { ... }}(hhh!jubah"}(h$]h&]h+]h-]h/]forcehighlight_args}j j!j"j#uh1j hAj hCKh!jhhubeh"}(h$] functionsah&]h+] functionsah-]h/]uh1j h!jhhhAj hCKubj )}(hhh](j )}(hLocal Variables and Parametersh]hLocal Variables and Parameters}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCKubj )}(hLocal variables and function parameters use the same format as function names: lowercase with underscore separation between multiple words. An example is given below:h]hLocal variables and function parameters use the same format as function names: lowercase with underscore separation between multiple words. An example is given below:}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jhhubj)}(hstatic void set_scr_el3_from_rm(uint32_t type, uint32_t interrupt_type_flags, uint32_t security_state) { uint32_t flag, bit_pos; ... }h]hstatic void set_scr_el3_from_rm(uint32_t type, uint32_t interrupt_type_flags, uint32_t security_state) { uint32_t flag, bit_pos; ... }}(hhh!jubah"}(h$]h&]h+]h-]h/]forcehighlight_args}j j!j"j#uh1j hAj hCKh!jhhubeh"}(h$]local-variables-and-parametersah&]h+]local variables and parametersah-]h/]uh1j h!jhhhAj hCKubj )}(hhh](j )}(hPreprocessor Macrosh]hPreprocessor Macros}(hj/h!j-hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!j*hhhAj hCKubj )}(hYIdentifiers that are defined using preprocessor macros are written in all uppercase text.h]hYIdentifiers that are defined using preprocessor macros are written in all uppercase text.}(hj=h!j;hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!j*hhubj)}(h#define BUFFER_SIZE_BYTES 64h]h#define BUFFER_SIZE_BYTES 64}(hhh!jIubah"}(h$]h&]h+]h-]h/]forcehighlight_args}j j!j"j#uh1j hAj hCKh!j*hhubeh"}(h$]preprocessor-macrosah&]h+]preprocessor macrosah-]h/]uh1j h!jhhhAj hCKubeh"}(h$]namingah&]h+]namingah-]h/]uh1j h!j hhhAj hCKubj )}(hhh](j )}(hFunction Attributesh]hFunction Attributes}(hjoh!jmhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!jjhhhAj hCKubj )}(hSPlace any function attributes after the function type and before the function name.h]hSPlace any function attributes after the function type and before the function name.}(hj}h!j{hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jjhhubj)}(h-void __init plat_arm_interconnect_init(void);h]h-void __init plat_arm_interconnect_init(void);}(hhh!jubah"}(h$]h&]h+]h-]h/]forcehighlight_args}j j!j"j#uh1j hAj hCKh!jjhhubeh"}(h$]function-attributesah&]h+]function attributesah-]h/]uh1j h!j hhhAj hCKubj )}(hhh](j )}(h Alignmenth]h Alignment}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCMubj )}(hXAlignment should be performed primarily with tabs, adding spaces if required to achieve a granularity that is smaller than the tab size. For example, with a tab size of eight columns it would be necessary to use one tab character and two spaces to indent text by ten columns.h]hXAlignment should be performed primarily with tabs, adding spaces if required to achieve a granularity that is smaller than the tab size. For example, with a tab size of eight columns it would be necessary to use one tab character and two spaces to indent text by ten columns.}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!jhhubj )}(hhh](j )}(hSwitch Statement Alignmenth]hSwitch Statement Alignment}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCM ubj )}(hxWhen using ``switch`` statements, align each ``case`` statement with the ``switch`` so that they are in the same column.h](h When using }(h When using h!jhhhANhCNubj )}(h ``switch``h]hswitch}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh statements, align each }(h statements, align each h!jhhhANhCNubj )}(h``case``h]hcase}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh statement with the }(h statement with the h!jhhhANhCNubj )}(h ``switch``h]hswitch}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh% so that they are in the same column.}(h% so that they are in the same column.h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!jhhubj)}(hPswitch (condition) { case A: foo(); case B: bar(); default: baz(); }h]hPswitch (condition) { case A: foo(); case B: bar(); default: baz(); }}(hhh!jubah"}(h$]h&]h+]h-]h/]forcehighlight_args}j j!j"j#uh1j hAj hCMh!jhhubeh"}(h$]switch-statement-alignmentah&]h+]switch statement alignmentah-]h/]uh1j h!jhhhAj hCM ubj )}(hhh](j )}(hPointer Alignmenth]hPointer Alignment}(hj8h!j6hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!j3hhhAj hCMubj )}(hThe reference and dereference operators (ampersand and *pointer star*) must be aligned with the name of the object on which they are operating, as opposed to the type of the object.h](h7The reference and dereference operators (ampersand and }(h7The reference and dereference operators (ampersand and h!jDhhhANhCNubj )}(h*pointer star*h]h pointer star}(hhh!jMubah"}(h$]h&]h+]h-]h/]uh1j h!jDubhp) must be aligned with the name of the object on which they are operating, as opposed to the type of the object.}(hp) must be aligned with the name of the object on which they are operating, as opposed to the type of the object.h!jDhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!j3hhubj)}(huint8_t *foo; foo = &bar;h]huint8_t *foo; foo = &bar;}(hhh!jfubah"}(h$]h&]h+]h-]h/]forcehighlight_args}j j!j"j#uh1j hAj hCM#h!j3hhubeh"}(h$]pointer-alignmentah&]h+]pointer alignmentah-]h/]uh1j h!jhhhAj hCMubeh"}(h$] alignmentah&]h+] alignmentah-]h/]uh1j h!j hhhAj hCMubj )}(hhh](j )}(hCommentsh]hComments}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCM+ubj )}(hThe general rule for comments is that the double-slash style of comment (``//``) is not allowed. Examples of the allowed comment formats are shown below:h](hIThe general rule for comments is that the double-slash style of comment (}(hIThe general rule for comments is that the double-slash style of comment (h!jhhhANhCNubj )}(h``//``h]h//}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubhJ) is not allowed. Examples of the allowed comment formats are shown below:}(hJ) is not allowed. Examples of the allowed comment formats are shown below:h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCM-h!jhhubj)}(h/* * This example illustrates the first allowed style for multi-line comments. * * Blank lines within multi-lines are allowed when they add clarity or when * they separate multiple contexts. * */h]h/* * This example illustrates the first allowed style for multi-line comments. * * Blank lines within multi-lines are allowed when they add clarity or when * they separate multiple contexts. * */Z}(hhh!jubah"}(h$]h&]h+]h-]h/]forcehighlight_args}j j!j"j#uh1j hAj hCM0h!jhhubj)}(hX/************************************************************************** * This is the second allowed style for multi-line comments. * * In this style, the first and last lines use asterisks that run the full * width of the comment at its widest point. * * This style can be used for additional emphasis. * *************************************************************************/h]hX/************************************************************************** * This is the second allowed style for multi-line comments. * * In this style, the first and last lines use asterisks that run the full * width of the comment at its widest point. * * This style can be used for additional emphasis. * *************************************************************************/}(hhh!jubah"}(h$]h&]h+]h-]h/]forcehighlight_args}j j!j"j#uh1j hAj hCM:h!jhhubj)}(h./* Single line comments can use this format */h]h./* Single line comments can use this format */}(hhh!jubah"}(h$]h&]h+]h-]h/]forcehighlight_args}j j!j"j#uh1j hAj hCMFh!jhhubj)}(h/*************************************************************************** * This alternative single-line comment style can also be used for emphasis. **************************************************************************/h]h/*************************************************************************** * This alternative single-line comment style can also be used for emphasis. **************************************************************************/}(hhh!jubah"}(h$]h&]h+]h-]h/]forcehighlight_args}j j!j"j#uh1j hAj hCMJh!jhhubeh"}(h$]commentsah&]h+]commentsah-]h/]uh1j h!j hhhAj hCM+ubj )}(hhh](j )}(hHeaders and inclusionh]hHeaders and inclusion}(hj h!j hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCMQubj )}(hhh](j )}(h Header guardsh]h Header guards}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCMTubj )}(hEFor a header file called "some_driver.h" the style used by |TF-A| is:h](h?For a header file called “some_driver.h” the style used by }(h;For a header file called "some_driver.h" the style used by h!j(hhhANhCNubh)}(hj h]h)}(hj h]hTF-A}(hhh!j4ubah"}(h$]h&](h(j j eh+]h-]h/]uh1hhANhCNh!j1ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypej refexplicitrefwarn reftargetj uh1hhAhBhCK:h!j(hhubh is:}(h is:h!j(hhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCMVh!jhhubj)}(hY#ifndef SOME_DRIVER_H #define SOME_DRIVER_H
#endif /* SOME_DRIVER_H */h]hY#ifndef SOME_DRIVER_H #define SOME_DRIVER_H
#endif /* SOME_DRIVER_H */}(hhh!jXubah"}(h$]h&]h+]h-]h/]forcehighlight_args}j j!j"j#uh1j hAj hCMXh!jhhubeh"}(h$] header-guardsah&]h+] header guardsah-]h/]uh1j h!jhhhAj hCMTubj )}(hhh](j )}(hInclude statement orderingh]hInclude statement ordering}(hjvh!jthhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!jqhhhAj hCMbubj )}(hAll header files that are included by a source file must use the following, grouped ordering. This is to improve readability (by making it easier to quickly read through the list of headers) and maintainability.h]hAll header files that are included by a source file must use the following, grouped ordering. This is to improve readability (by making it easier to quickly read through the list of headers) and maintainability.}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCMdh!jqhhubh enumerated_list)}(hhh](j)}(hf*System* includes: Header files from the standard *C* library, such as ``stddef.h`` and ``string.h``. h]j )}(he*System* includes: Header files from the standard *C* library, such as ``stddef.h`` and ``string.h``.h](j )}(h*System*h]hSystem}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh* includes: Header files from the standard }(h* includes: Header files from the standard h!jubj )}(h*C*h]hC}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh library, such as }(h library, such as h!jubj )}(h ``stddef.h``h]hstddef.h}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh and }(h and h!jubj )}(h ``string.h``h]hstring.h}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh.}(hjqh!jubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCMhh!jubah"}(h$]h&]h+]h-]h/]uh1jh!jhhhAj hCNubj)}(hh*Project* includes: Header files under the ``include/`` directory within |TF-A| are *project* includes. h]j )}(hg*Project* includes: Header files under the ``include/`` directory within |TF-A| are *project* includes.h](j )}(h *Project*h]hProject}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh" includes: Header files under the }(h" includes: Header files under the h!jubj )}(h ``include/``h]hinclude/}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh directory within }(h directory within h!jubh)}(hj h]h)}(hj h]hTF-A}(hhh!j%ubah"}(h$]h&](h(j j eh+]h-]h/]uh1hhANhCNh!j"ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypej refexplicitrefwarn reftargetj uh1hhAhBhCK:h!jubh are }(h are h!jubj )}(h *project*h]hproject}(hhh!jCubah"}(h$]h&]h+]h-]h/]uh1j h!jubh includes.}(h includes.h!jubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCMkh!jubah"}(h$]h&]h+]h-]h/]uh1jh!jhhhAj hCNubj)}(h*Platform* includes: Header files relating to a single, specific platform, and which are located under the ``plat/`` directory within |TF-A|, are *platform* includes. h]j )}(h*Platform* includes: Header files relating to a single, specific platform, and which are located under the ``plat/`` directory within |TF-A|, are *platform* includes.h](j )}(h *Platform*h]hPlatform}(hhh!jjubah"}(h$]h&]h+]h-]h/]uh1j h!jfubha includes: Header files relating to a single, specific platform, and which are located under the }(ha includes: Header files relating to a single, specific platform, and which are located under the h!jfubj )}(h``plat/``h]hplat/}(hhh!j}ubah"}(h$]h&]h+]h-]h/]uh1j h!jfubh directory within }(h directory within h!jfubh)}(hj h]h)}(hj h]hTF-A}(hhh!jubah"}(h$]h&](h(j j eh+]h-]h/]uh1hhANhCNh!jubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypej refexplicitrefwarn reftargetj uh1hhAhBhCK:h!jfubh, are }(h, are h!jfubj )}(h *platform*h]hplatform}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jfubh includes.}(h includes.h!jfubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCMnh!jbubah"}(h$]h&]h+]h-]h/]uh1jh!jhhhAj hCNubeh"}(h$]h&]h+]h-]h/]enumtypearabicprefixhsuffixjquh1jh!jqhhhAj hCMhubj )}(hWithin each group, ``#include`` statements must be in alphabetical order, taking both the file and directory names into account.h](hWithin each group, }(hWithin each group, h!jhhhANhCNubj )}(h ``#include``h]h#include}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubha statements must be in alphabetical order, taking both the file and directory names into account.}(ha statements must be in alphabetical order, taking both the file and directory names into account.h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCMrh!jqhhubj )}(h #include #include #include #include #include "a_header.h"h]h#include #include #include #include #include #include "a_header.h"}(hhh!jubah"}(h$]h&]h+]h-]h/]forcehighlight_args}j j!j"j#uh1j hAj hCMzh!jqhhubeh"}(h$]include-statement-orderingah&]h+]include statement orderingah-]h/]uh1j h!jhhhAj hCMbubj )}(hhh](j )}(hInclude statement variantsh]hInclude statement variants}(hj6h!j4hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!j1hhhAj hCMubj )}(hXTwo variants of the ``#include`` directive are acceptable in the |TF-A| codebase. Correct use of the two styles improves readability by suggesting the location of the included header and reducing ambiguity in cases where generic and platform-specific headers share a name.h](hTwo variants of the }(hTwo variants of the h!jBhhhANhCNubj )}(h ``#include``h]h#include}(hhh!jKubah"}(h$]h&]h+]h-]h/]uh1j h!jBubh! directive are acceptable in the }(h! directive are acceptable in the h!jBhhhANhCNubh)}(hj h]h)}(hj h]hTF-A}(hhh!jaubah"}(h$]h&](h(j j eh+]h-]h/]uh1hhANhCNh!j^ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftypej refexplicitrefwarn reftargetj uh1hhAhBhCK:h!jBhhubh codebase. Correct use of the two styles improves readability by suggesting the location of the included header and reducing ambiguity in cases where generic and platform-specific headers share a name.}(h codebase. Correct use of the two styles improves readability by suggesting the location of the included header and reducing ambiguity in cases where generic and platform-specific headers share a name.h!jBhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!j1hhubj )}(huFor header files that are in the same directory as the source file that is including them, use the ``"..."`` variant.h](hcFor header files that are in the same directory as the source file that is including them, use the }(hcFor header files that are in the same directory as the source file that is including them, use the h!jhhhANhCNubj )}(h ``"..."``h]h"..."}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh variant.}(h variant.h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!j1hhubj )}(h}For header files that are **not** in the same directory as the source file that is including them, use the ``<...>`` variant.h](hFor header files that are }(hFor header files that are h!jhhhANhCNubj} )}(h**not**h]hnot}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j| h!jubhJ in the same directory as the source file that is including them, use the }(hJ in the same directory as the source file that is including them, use the h!jhhhANhCNubj )}(h ``<...>``h]h<...>}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh variant.}(h variant.h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!j1hhubj )}(hExample (bl1_fwu.c):h]hExample (bl1_fwu.c):}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!j1hhubj)}(hT#include #include #include #include "bl1_private.h"h]hT#include #include #include #include "bl1_private.h"}(hhh!jubah"}(h$]h&]h+]h-]h/]forcehighlight_args}j j!j"j#uh1j hAj hCMh!j1hhubeh"}(h$]include-statement-variantsah&]h+]include statement variantsah-]h/]uh1j h!jhhhAj hCMubeh"}(h$]headers-and-inclusionah&]h+]headers and inclusionah-]h/]uh1j h!j hhhAj hCMQubj )}(hhh](j )}(hTypedefsh]hTypedefs}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!j hhhAj hCMubj )}(hhh](j )}(h4Avoid anonymous typedefs of structs/enums in headersh]h4Avoid anonymous typedefs of structs/enums in headers}(hj!h!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCMubj )}(h&For example, the following definition:h]h&For example, the following definition:}(hj/h!j-hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!jhhubj)}(hCtypedef struct { int arg1; int arg2; } my_struct_t;h]hCtypedef struct { int arg1; int arg2; } my_struct_t;}(hhh!j;ubah"}(h$]h&]h+]h-]h/]forcehighlight_args}j j!j"j#uh1j hAj hCMh!jhhubj )}(his better written as:h]his better written as:}(hjNh!jLhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!jhhubj)}(h9struct my_struct { int arg1; int arg2; };h]h9struct my_struct { int arg1; int arg2; };}(hhh!jZubah"}(h$]h&]h+]h-]h/]forcehighlight_args}j j!j"j#uh1j hAj hCMh!jhhubj )}(hThis allows function declarations in other header files that depend on the struct/enum to forward declare the struct/enum instead of including the entire header:h]hThis allows function declarations in other header files that depend on the struct/enum to forward declare the struct/enum instead of including the entire header:}(hjmh!jkhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!jhhubj)}(h6struct my_struct; void my_func(struct my_struct *arg);h]h6struct my_struct; void my_func(struct my_struct *arg);}(hhh!jyubah"}(h$]h&]h+]h-]h/]forcehighlight_args}j j!j"j#uh1j hAj hCMh!jhhubj )}(h instead of:h]h instead of:}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!jhhubj)}(h6#include void my_func(my_struct_t *arg);h]h6#include void my_func(my_struct_t *arg);}(hhh!jubah"}(h$]h&]h+]h-]h/]forcehighlight_args}j j!j"j#uh1j hAj hCMh!jhhubj )}(hXSome TF definitions use both a struct/enum name **and** a typedef name. This is discouraged for new definitions as it makes it difficult for TF to comply with MISRA rule 8.3, which states that "All declarations of an object or function shall use the same names and type qualifiers".h](h0Some TF definitions use both a struct/enum name }(h0Some TF definitions use both a struct/enum name h!jhhhANhCNubj} )}(h**and**h]hand}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j| h!jubh a typedef name. This is discouraged for new definitions as it makes it difficult for TF to comply with MISRA rule 8.3, which states that “All declarations of an object or function shall use the same names and type qualifiers”.}(h a typedef name. This is discouraged for new definitions as it makes it difficult for TF to comply with MISRA rule 8.3, which states that "All declarations of an object or function shall use the same names and type qualifiers".h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!jhhubj )}(h`The Linux coding standards also discourage new typedefs and checkpatch emits a warning for this.h]h`The Linux coding standards also discourage new typedefs and checkpatch emits a warning for this.}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!jhhubj )}(h5Existing typedefs will be retained for compatibility.h]h5Existing typedefs will be retained for compatibility.}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!jhhubh transition)}(h--------------h]h"}(h$]h&]h+]h-]h/]uh1jhAj hCMh!jhhubj )}(h7*Copyright (c) 2020, Arm Limited. All rights reserved.*h]j )}(hjh]h5Copyright (c) 2020, Arm Limited. All rights reserved.}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubah"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!jhhubjt )}(ha.. _`Linux kernel coding style`: https://www.kernel.org/doc/html/latest/process/coding-style.htmlh]h"}(h$]linux-kernel-coding-styleah&]h+]linux kernel coding styleah-]h/]j j uh1js hCMh!jhhhAj referencedKubjt )}(h`.. _`MISRA C:2012 Guidelines`: https://www.misra.org.uk/Activities/MISRAC/tabid/160/Default.aspxh]h"}(h$]misra-c-2012-guidelinesah&]h+]misra c:2012 guidelinesah-]h/]j j uh1js hCMh!jhhhAj jKubjt )}(h.. _`a spreadsheet`: https://developer.trustedfirmware.org/file/download/lamajxif3w7c4mpjeoo5/PHID-FILE-fp7c7acszn6vliqomyhn/MISRA-and-TF-Analysis-v1.3.odsh]h"}(h$] a-spreadsheetah&]h+] a spreadsheetah-]h/]j j uh1js hCMh!jhhhAj jKubeh"}(h$]4avoid-anonymous-typedefs-of-structs-enums-in-headersah&]h+]4avoid anonymous typedefs of structs/enums in headersah-]h/]uh1j h!j hhhAj hCMubeh"}(h$]typedefsah&]h+]typedefsah-]h/]uh1j h!j hhhAj hCMubeh"}(h$] coding-styleah&]h+] coding styleah-]h/]uh1j h!hhhhAj hCKubeh"}(h$]h&]h+]h-]h/]sourcej uh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(j N generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerjjerror_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourcej _destinationN _config_files]pep_referencesN pep_base_url https://www.python.org/dev/peps/pep_file_url_templatepep-%04drfc_referencesN rfc_base_urlhttps://tools.ietf.org/html/ tab_widthKtrim_footnote_reference_spacefile_insertion_enabled raw_enabledKsyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xformembed_stylesheetcloak_email_addressesenvNubreporterNindirect_targets]substitution_defs}(hHh hshKhhvhhhhjhjJj"jujMjjxjjjjj!jjLj$jwjOjjzjjjjj#jjNj&jyjQjj|jjjjj%jjPj(j{jSjj~jjjjj'jjRj*j}jUjjjjjjj)jjTj,jjWjjjjjjj+jjVj.jjYjjjjjjj-jjXj0jj[jjjjj jj/ j jZ j2 j j] j j j j j j j1 j j\ j4 j j_ j j j j j j j3 j j^ j6 j ja usubstitution_names}(aarch32hHaarch64hsamuhamushɌapihbtijcotjucssjcvejdtbjds-5j!dsujLdtjweljehfjfconfjfdtj#ff-ajNfipjyfvpjfwujgicjisaj%linarojPmmuj{mpamjmpmmjmpidrjmtej'oenjRop-teej}otejpddjpauthjpmfj)pscijTrasjrotjscmijscpjsdeij+sdsjVseajsipjsmcjsmcccj-socjXspjspdjspmjssbsj svej/ tbbjZ tbbrj teej tf-aj tf-mj tlbj1 tlkj\ trngj tspj tzcj ubsanj uefij3 wdogj^ xlatj urefnames}(linux kernel coding style]j amisra c:2012 guidelines]j a a spreadsheet]j aurefids}j ]ju asnameids}(jDjAj j j j j j jj jjjjjjj'j$j\jYjj|j/j,jwjtjgjdjjj'j$j_j\jjjjj0j-j|jyjjjjjnjkj.j+jjj<j9j4j1jjj jj,j)u nametypes}(jDNj Nj Nj NjjNjNjNj'Nj\NjNj/NjwNjgNjNj'Nj_NjNjNj0Nj|NjNjNjnNj.NjNj<Nj4Njj j,uh$}(jAj j jb j j j j j j jj jj#jjj$jjYj*j|j_j,jpjtj2jdjjjj$jj\j*jjjjjj-jjyj3jjjjjkjj+jqjj1j9j j1jjj jjj)j#u footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}jxKsRparse_messages]transform_messages]h system_message)}(hhh]j )}(hhh]h6Hyperlink target "misra-compliance" is not referenced.}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubah"}(h$]h&]h+]h-]h/]levelKtypeINFOsourcej lineKruh1juba transformerN decorationNhhub.