@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/]refdoc,components/platform-interrupt-controller-API 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!Platform Interrupt Controller APIh]h!Platform Interrupt Controller API}(hj h!j hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!j hhhAm/home/test/workspace/code/optee_3.16/trusted-firmware-a/docs/components/platform-interrupt-controller-API.rsthCKubh paragraph)}(hXThis document lists the optional platform interrupt controller API that abstracts the runtime configuration and control of interrupt controller from the generic code. The mandatory APIs are described in the :ref:`Porting Guide `.h](hThis document lists the optional platform interrupt controller API that abstracts the runtime configuration and control of interrupt controller from the generic code. The mandatory APIs are described in the }(hThis document lists the optional platform interrupt controller API that abstracts the runtime configuration and control of interrupt controller from the generic code. The mandatory APIs are described in the h!j hhhANhCNubh)}(h0:ref:`Porting Guide `h]h)}(hj h]h Porting Guide}(hhh!j ubah"}(h$]h&](h(stdstd-refeh+]h-]h/]uh1hh!j ubah"}(h$]h&]h+]h-]h/]refdoch9 refdomainj reftyperef refexplicitrefwarnh?porting_guide_imf_in_bl31uh1hhAj hCKh!j ubh.}(h.h!j hhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!j hhubj )}(hhh](j )}(hEFunction: unsigned int plat_ic_get_running_priority(void); [optional]h]hEFunction: unsigned int plat_ic_get_running_priority(void); [optional]}(hj h!j hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!j hhhAj hCK ubh literal_block)}(h'Argument : void Return : unsigned inth]h'Argument : void Return : unsigned int}(hhh!j ubah"}(h$]h&]h+]h-]h/] xml:spacepreserveuh1j hAj hCKh!j hhubj )}(hThis 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 acknowledged via ``plat_ic_acknowledge_interrupt``.h](hThis 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 acknowledged via }(hThis 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 acknowledged via h!j hhhANhCNubh literal)}(h!``plat_ic_acknowledge_interrupt``h]hplat_ic_acknowledge_interrupt}(hhh!j ubah"}(h$]h&]h+]h-]h/]uh1j h!j ubh.}(hj h!j hhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!j hhubj )}(hIn the case of Arm standard platforms using GIC, the *Running Priority Register* is read to determine the priority of the interrupt.h](h5In the case of Arm standard platforms using GIC, the }(h5In the case of Arm standard platforms using GIC, the h!j hhhANhCNubh emphasis)}(h*Running Priority Register*h]hRunning Priority Register}(hhh!j) ubah"}(h$]h&]h+]h-]h/]uh1j' h!j ubh4 is read to determine the priority of the interrupt.}(h4 is read to determine the priority of the interrupt.h!j hhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!j hhubeh"}(h$]@function-unsigned-int-plat-ic-get-running-priority-void-optionalah&]h+]Efunction: unsigned int plat_ic_get_running_priority(void); [optional]ah-]h/]uh1j h!j hhhAj hCK ubj )}(hhh](j )}(h9Function: int plat_ic_is_spi(unsigned int id); [optional]h]h9Function: int plat_ic_is_spi(unsigned int id); [optional]}(hjO h!jM hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!jJ hhhAj hCKubj )}(h&Argument : unsigned int Return : inth]h&Argument : unsigned int Return : int}(hhh!j[ ubah"}(h$]h&]h+]h-]h/]j j uh1j hAj hCKh!jJ hhubj )}(hThe API should return whether the interrupt ID (first parameter) is categorized as a Shared Peripheral Interrupt. Shared Peripheral Interrupts are typically associated to system-wide peripherals, and these interrupts can target any PE in the system.h]hThe API should return whether the interrupt ID (first parameter) is categorized as a Shared Peripheral Interrupt. Shared Peripheral Interrupts are typically associated to system-wide peripherals, and these interrupts can target any PE in the system.}(hjk h!ji hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCK h!jJ hhubeh"}(h$]4function-int-plat-ic-is-spi-unsigned-int-id-optionalah&]h+]9function: int plat_ic_is_spi(unsigned int id); [optional]ah-]h/]uh1j h!j hhhAj hCKubj )}(hhh](j )}(h9Function: int plat_ic_is_ppi(unsigned int id); [optional]h]h9Function: int plat_ic_is_ppi(unsigned int id); [optional]}(hj h!j hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!j hhhAj hCK&ubj )}(h&Argument : unsigned int Return : inth]h&Argument : unsigned int Return : int}(hhh!j ubah"}(h$]h&]h+]h-]h/]j j uh1j hAj hCK*h!j hhubj )}(hXThe API should return whether the interrupt ID (first parameter) is categorized as a Private Peripheral Interrupt. Private Peripheral Interrupts are typically associated with peripherals that are private to each PE. Interrupts from private peripherals target to that PE only.h]hXThe API should return whether the interrupt ID (first parameter) is categorized as a Private Peripheral Interrupt. Private Peripheral Interrupts are typically associated with peripherals that are private to each PE. Interrupts from private peripherals target to that PE only.}(hj h!j hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCK-h!j hhubeh"}(h$]4function-int-plat-ic-is-ppi-unsigned-int-id-optionalah&]h+]9function: int plat_ic_is_ppi(unsigned int id); [optional]ah-]h/]uh1j h!j hhhAj hCK&ubj )}(hhh](j )}(h9Function: int plat_ic_is_sgi(unsigned int id); [optional]h]h9Function: int plat_ic_is_sgi(unsigned int id); [optional]}(hj h!j hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!j hhhAj hCK3ubj )}(h&Argument : unsigned int Return : inth]h&Argument : unsigned int Return : int}(hhh!j ubah"}(h$]h&]h+]h-]h/]j j uh1j hAj hCK7h!j hhubj )}(hX-The API should return whether the interrupt ID (first parameter) is categorized as a Software Generated Interrupt. Software Generated Interrupts are raised by explicit programming by software, and are typically used in inter-PE communication. Secure SGIs are reserved for use by Secure world software.h]hX-The API should return whether the interrupt ID (first parameter) is categorized as a Software Generated Interrupt. Software Generated Interrupts are raised by explicit programming by software, and are typically used in inter-PE communication. Secure SGIs are reserved for use by Secure world software.}(hj h!j hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCK:h!j hhubeh"}(h$]4function-int-plat-ic-is-sgi-unsigned-int-id-optionalah&]h+]9function: int plat_ic_is_sgi(unsigned int id); [optional]ah-]h/]uh1j h!j hhhAj hCK3ubj )}(hhh](j )}(hPFunction: unsigned int plat_ic_get_interrupt_active(unsigned int id); [optional]h]hPFunction: unsigned int plat_ic_get_interrupt_active(unsigned int id); [optional]}(hj h!j hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!j hhhAj hCK@ubj )}(h&Argument : unsigned int Return : inth]h&Argument : unsigned int Return : int}(hhh!j ubah"}(h$]h&]h+]h-]h/]j j uh1j hAj hCKDh!j hhubj )}(hhThis API should return the *active* status of the interrupt ID specified by the first parameter, ``id``.h](hThis API should return the }(hThis API should return the h!j hhhANhCNubj( )}(h*active*h]hactive}(hhh!j ubah"}(h$]h&]h+]h-]h/]uh1j' h!j ubh> status of the interrupt ID specified by the first parameter, }(h> status of the interrupt ID specified by the first parameter, h!j hhhANhCNubj )}(h``id``h]hid}(hhh!j$ ubah"}(h$]h&]h+]h-]h/]uh1j h!j ubh.}(hj h!j hhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKGh!j hhubj )}(hIn case of Arm standard platforms using GIC, the implementation of the API reads the GIC *Set Active Register* to read and return the active status of the interrupt.h](hYIn case of Arm standard platforms using GIC, the implementation of the API reads the GIC }(hYIn case of Arm standard platforms using GIC, the implementation of the API reads the GIC h!j< hhhANhCNubj( )}(h*Set Active Register*h]hSet Active Register}(hhh!jE ubah"}(h$]h&]h+]h-]h/]uh1j' h!j< ubh7 to read and return the active status of the interrupt.}(h7 to read and return the active status of the interrupt.h!j< hhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKJh!j hhubeh"}(h$]Kfunction-unsigned-int-plat-ic-get-interrupt-active-unsigned-int-id-optionalah&]h+]Pfunction: unsigned int plat_ic_get_interrupt_active(unsigned int id); [optional]ah-]h/]uh1j h!j hhhAj hCK@ubj )}(hhh](j )}(hDFunction: void plat_ic_enable_interrupt(unsigned int id); [optional]h]hDFunction: void plat_ic_enable_interrupt(unsigned int id); [optional]}(hjk h!ji hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!jf hhhAj hCKOubj )}(h'Argument : unsigned int Return : voidh]h'Argument : unsigned int Return : void}(hhh!jw ubah"}(h$]h&]h+]h-]h/]j j uh1j hAj hCKSh!jf hhubj )}(hThis API should enable the interrupt ID specified by the first parameter, ``id``. PEs in the system are expected to receive only enabled interrupts.h](hJThis API should enable the interrupt ID specified by the first parameter, }(hJThis API should enable the interrupt ID specified by the first parameter, h!j hhhANhCNubj )}(h``id``h]hid}(hhh!j ubah"}(h$]h&]h+]h-]h/]uh1j h!j ubhD. PEs in the system are expected to receive only enabled interrupts.}(hD. PEs in the system are expected to receive only enabled interrupts.h!j hhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKVh!jf hhubj )}(hIn case of Arm standard platforms using GIC, the implementation of the API inserts barrier to make memory updates visible before enabling interrupt, and then writes to GIC *Set Enable Register* to enable the interrupt.h](hIn case of Arm standard platforms using GIC, the implementation of the API inserts barrier to make memory updates visible before enabling interrupt, and then writes to GIC }(hIn case of Arm standard platforms using GIC, the implementation of the API inserts barrier to make memory updates visible before enabling interrupt, and then writes to GIC h!j hhhANhCNubj( )}(h*Set Enable Register*h]hSet Enable Register}(hhh!j ubah"}(h$]h&]h+]h-]h/]uh1j' h!j ubh to enable the interrupt.}(h to enable the interrupt.h!j hhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKYh!jf hhubeh"}(h$]?function-void-plat-ic-enable-interrupt-unsigned-int-id-optionalah&]h+]Dfunction: void plat_ic_enable_interrupt(unsigned int id); [optional]ah-]h/]uh1j h!j hhhAj hCKOubj )}(hhh](j )}(hEFunction: void plat_ic_disable_interrupt(unsigned int id); [optional]h]hEFunction: void plat_ic_disable_interrupt(unsigned int id); [optional]}(hj h!j hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!j hhhAj hCK^ubj )}(h'Argument : unsigned int Return : voidh]h'Argument : unsigned int Return : void}(hhh!j ubah"}(h$]h&]h+]h-]h/]j j uh1j hAj hCKbh!j hhubj )}(hThis API should disable the interrupt ID specified by the first parameter, ``id``. PEs in the system are not expected to receive disabled interrupts.h](hKThis API should disable the interrupt ID specified by the first parameter, }(hKThis API should disable the interrupt ID specified by the first parameter, h!j hhhANhCNubj )}(h``id``h]hid}(hhh!j ubah"}(h$]h&]h+]h-]h/]uh1j h!j ubhD. PEs in the system are not expected to receive disabled interrupts.}(hD. PEs in the system are not expected to receive disabled interrupts.h!j hhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKeh!j hhubj )}(hIn case of Arm standard platforms using GIC, the implementation of the API writes to GIC *Clear Enable Register* to disable the interrupt, and inserts barrier to make memory updates visible afterwards.h](hYIn case of Arm standard platforms using GIC, the implementation of the API writes to GIC }(hYIn case of Arm standard platforms using GIC, the implementation of the API writes to GIC h!jhhhANhCNubj( )}(h*Clear Enable Register*h]hClear Enable Register}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j' h!jubhY to disable the interrupt, and inserts barrier to make memory updates visible afterwards.}(hY to disable the interrupt, and inserts barrier to make memory updates visible afterwards.h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKhh!j hhubeh"}(h$]@function-void-plat-ic-disable-interrupt-unsigned-int-id-optionalah&]h+]Efunction: void plat_ic_disable_interrupt(unsigned int id); [optional]ah-]h/]uh1j h!j hhhAj hCK^ubj )}(hhh](j )}(haFunction: void plat_ic_set_interrupt_priority(unsigned int id, unsigned int priority); [optional]h]haFunction: void plat_ic_set_interrupt_priority(unsigned int id, unsigned int priority); [optional]}(hjAh!j?hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!j<hhhAj hCKmubj )}(h?Argument : unsigned int Argument : unsigned int Return : voidh]h?Argument : unsigned int Argument : unsigned int Return : void}(hhh!jMubah"}(h$]h&]h+]h-]h/]j j uh1j hAj hCKqh!j<hhubj )}(hThis API should set the priority of the interrupt specified by first parameter ``id`` to the value set by the second parameter ``priority``.h](hOThis API should set the priority of the interrupt specified by first parameter }(hOThis API should set the priority of the interrupt specified by first parameter h!j[hhhANhCNubj )}(h``id``h]hid}(hhh!jdubah"}(h$]h&]h+]h-]h/]uh1j h!j[ubh* to the value set by the second parameter }(h* to the value set by the second parameter h!j[hhhANhCNubj )}(h ``priority``h]hpriority}(hhh!jwubah"}(h$]h&]h+]h-]h/]uh1j h!j[ubh.}(hj h!j[hhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKuh!j<hhubj )}(hIn case of Arm standard platforms using GIC, the implementation of the API writes to GIC *Priority Register* set interrupt priority.h](hYIn case of Arm standard platforms using GIC, the implementation of the API writes to GIC }(hYIn case of Arm standard platforms using GIC, the implementation of the API writes to GIC h!jhhhANhCNubj( )}(h*Priority Register*h]hPriority Register}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j' h!jubh set interrupt priority.}(h set interrupt priority.h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKxh!j<hhubeh"}(h$][function-void-plat-ic-set-interrupt-priority-unsigned-int-id-unsigned-int-priority-optionalah&]h+]afunction: void plat_ic_set_interrupt_priority(unsigned int id, unsigned int priority); [optional]ah-]h/]uh1j h!j hhhAj hCKmubj )}(hhh](j )}(hGFunction: int plat_ic_has_interrupt_type(unsigned int type); [optional]h]hGFunction: int plat_ic_has_interrupt_type(unsigned int type); [optional]}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCK|ubj )}(h&Argument : unsigned int Return : inth]h&Argument : unsigned int Return : int}(hhh!jubah"}(h$]h&]h+]h-]h/]j j uh1j hAj hCKh!jhhubj )}(hThis API should return whether the platform supports a given interrupt type. The parameter ``type`` shall be one of ``INTR_TYPE_EL3``, ``INTR_TYPE_S_EL1``, or ``INTR_TYPE_NS``.h](h[This API should return whether the platform supports a given interrupt type. The parameter }(h[This API should return whether the platform supports a given interrupt type. The parameter h!jhhhANhCNubj )}(h``type``h]htype}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh shall be one of }(h shall be one of h!jhhhANhCNubj )}(h``INTR_TYPE_EL3``h]h INTR_TYPE_EL3}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh, }(h, h!jhhhANhCNubj )}(h``INTR_TYPE_S_EL1``h]hINTR_TYPE_S_EL1}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh, or }(h, or h!jhhhANhCNubj )}(h``INTR_TYPE_NS``h]h INTR_TYPE_NS}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh.}(hj h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jhhubj )}(hsIn case of Arm standard platforms using GICv3, the implementation of the API returns ``1`` for all interrupt types.h](hUIn case of Arm standard platforms using GICv3, the implementation of the API returns }(hUIn case of Arm standard platforms using GICv3, the implementation of the API returns h!j2hhhANhCNubj )}(h``1``h]h1}(hhh!j;ubah"}(h$]h&]h+]h-]h/]uh1j h!j2ubh for all interrupt types.}(h for all interrupt types.h!j2hhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jhhubj )}(hIn case of Arm standard platforms using GICv2, the API always return ``1`` for ``INTR_TYPE_NS``. Return value for other types depends on the value of build option ``GICV2_G0_FOR_EL3``:h](hEIn case of Arm standard platforms using GICv2, the API always return }(hEIn case of Arm standard platforms using GICv2, the API always return h!jThhhANhCNubj )}(h``1``h]h1}(hhh!j]ubah"}(h$]h&]h+]h-]h/]uh1j h!jTubh for }(h for h!jThhhANhCNubj )}(h``INTR_TYPE_NS``h]h INTR_TYPE_NS}(hhh!jpubah"}(h$]h&]h+]h-]h/]uh1j h!jTubhD. Return value for other types depends on the value of build option }(hD. Return value for other types depends on the value of build option h!jThhhANhCNubj )}(h``GICV2_G0_FOR_EL3``h]hGICV2_G0_FOR_EL3}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jTubh:}(h:h!jThhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jhhubh bullet_list)}(hhh](h list_item)}(hFor interrupt type ``INTR_TYPE_EL3``: - When ``GICV2_G0_FOR_EL3`` is ``0``, it returns ``0``, indicating no support for EL3 interrupts. - When ``GICV2_G0_FOR_EL3`` is ``1``, it returns ``1``, indicating support for EL3 interrupts. h](j )}(h%For interrupt type ``INTR_TYPE_EL3``:h](hFor interrupt type }(hFor interrupt type h!jubj )}(h``INTR_TYPE_EL3``h]h INTR_TYPE_EL3}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh:}(hjh!jubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jubj)}(hhh](j)}(h`When ``GICV2_G0_FOR_EL3`` is ``0``, it returns ``0``, indicating no support for EL3 interrupts. h]j )}(h_When ``GICV2_G0_FOR_EL3`` is ``0``, it returns ``0``, indicating no support for EL3 interrupts.h](hWhen }(hWhen h!jubj )}(h``GICV2_G0_FOR_EL3``h]hGICV2_G0_FOR_EL3}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh is }(h is h!jubj )}(h``0``h]h0}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh , it returns }(h , it returns h!jubj )}(h``0``h]h0}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh+, indicating no support for EL3 interrupts.}(h+, indicating no support for EL3 interrupts.h!jubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jubah"}(h$]h&]h+]h-]h/]uh1jh!jubj)}(h]When ``GICV2_G0_FOR_EL3`` is ``1``, it returns ``1``, indicating support for EL3 interrupts. h]j )}(h\When ``GICV2_G0_FOR_EL3`` is ``1``, it returns ``1``, indicating support for EL3 interrupts.h](hWhen }(hWhen h!j!ubj )}(h``GICV2_G0_FOR_EL3``h]hGICV2_G0_FOR_EL3}(hhh!j*ubah"}(h$]h&]h+]h-]h/]uh1j h!j!ubh is }(h is h!j!ubj )}(h``1``h]h1}(hhh!j=ubah"}(h$]h&]h+]h-]h/]uh1j h!j!ubh , it returns }(h , it returns h!j!ubj )}(h``1``h]h1}(hhh!jPubah"}(h$]h&]h+]h-]h/]uh1j h!j!ubh(, indicating support for EL3 interrupts.}(h(, indicating support for EL3 interrupts.h!j!ubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jubah"}(h$]h&]h+]h-]h/]uh1jh!jubeh"}(h$]h&]h+]h-]h/]bullet-uh1jhAj hCKh!jubeh"}(h$]h&]h+]h-]h/]uh1jh!jhhhANhCNubj)}(hFor interrupt type ``INTR_TYPE_S_EL1``: - When ``GICV2_G0_FOR_EL3`` is ``0``, it returns ``1``, indicating support for Secure EL1 interrupts. - When ``GICV2_G0_FOR_EL3`` is ``1``, it returns ``0``, indicating no support for Secure EL1 interrupts. h](j )}(h'For interrupt type ``INTR_TYPE_S_EL1``:h](hFor interrupt type }(hFor interrupt type h!jubj )}(h``INTR_TYPE_S_EL1``h]hINTR_TYPE_S_EL1}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh:}(hjh!jubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!j}ubj)}(hhh](j)}(hdWhen ``GICV2_G0_FOR_EL3`` is ``0``, it returns ``1``, indicating support for Secure EL1 interrupts. h]j )}(hcWhen ``GICV2_G0_FOR_EL3`` is ``0``, it returns ``1``, indicating support for Secure EL1 interrupts.h](hWhen }(hWhen h!jubj )}(h``GICV2_G0_FOR_EL3``h]hGICV2_G0_FOR_EL3}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh is }(h is h!jubj )}(h``0``h]h0}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh , it returns }(h , it returns h!jubj )}(h``1``h]h1}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh/, indicating support for Secure EL1 interrupts.}(h/, indicating support for Secure EL1 interrupts.h!jubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jubah"}(h$]h&]h+]h-]h/]uh1jh!jubj)}(hgWhen ``GICV2_G0_FOR_EL3`` is ``1``, it returns ``0``, indicating no support for Secure EL1 interrupts. h]j )}(hfWhen ``GICV2_G0_FOR_EL3`` is ``1``, it returns ``0``, indicating no support for Secure EL1 interrupts.h](hWhen }(hWhen h!jubj )}(h``GICV2_G0_FOR_EL3``h]hGICV2_G0_FOR_EL3}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh is }(h is h!jubj )}(h``1``h]h1}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh , it returns }(h , it returns h!jubj )}(h``0``h]h0}(hhh!j*ubah"}(h$]h&]h+]h-]h/]uh1j h!jubh2, indicating no support for Secure EL1 interrupts.}(h2, indicating no support for Secure EL1 interrupts.h!jubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jubah"}(h$]h&]h+]h-]h/]uh1jh!jubeh"}(h$]h&]h+]h-]h/]jujvuh1jhAj hCKh!j}ubeh"}(h$]h&]h+]h-]h/]uh1jh!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]jujvuh1jhAj hCKh!jhhubeh"}(h$]Bfunction-int-plat-ic-has-interrupt-type-unsigned-int-type-optionalah&]h+]Gfunction: int plat_ic_has_interrupt_type(unsigned int type); [optional]ah-]h/]uh1j h!j hhhAj hCK|ubj )}(hhh](j )}(hYFunction: void plat_ic_set_interrupt_type(unsigned int id, unsigned int type); [optional]h]hYFunction: void plat_ic_set_interrupt_type(unsigned int id, unsigned int type); [optional]}(hjhh!jfhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!jchhhAj hCKubj )}(h?Argument : unsigned int Argument : unsigned int Return : voidh]h?Argument : unsigned int Argument : unsigned int Return : void}(hhh!jtubah"}(h$]h&]h+]h-]h/]j j uh1j hAj hCKh!jchhubj )}(hThis API should set the interrupt specified by first parameter ``id`` to the type specified by second parameter ``type``. The ``type`` parameter can be one of:h](h?This API should set the interrupt specified by first parameter }(h?This API should set the interrupt specified by first parameter h!jhhhANhCNubj )}(h``id``h]hid}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh+ to the type specified by second parameter }(h+ to the type specified by second parameter h!jhhhANhCNubj )}(h``type``h]htype}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh. The }(h. The h!jhhhANhCNubj )}(h``type``h]htype}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh parameter can be one of:}(h parameter can be one of:h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jchhubj)}(hhh](j)}(hM``INTR_TYPE_NS``: interrupt is meant to be consumed by the Non-secure world. h]j )}(hL``INTR_TYPE_NS``: interrupt is meant to be consumed by the Non-secure world.h](j )}(h``INTR_TYPE_NS``h]h INTR_TYPE_NS}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh<: interrupt is meant to be consumed by the Non-secure world.}(h<: interrupt is meant to be consumed by the Non-secure world.h!jubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jubah"}(h$]h&]h+]h-]h/]uh1jh!jhhhAj hCNubj)}(hF``INTR_TYPE_S_EL1``: interrupt is meant to be consumed by Secure EL1. h]j )}(hE``INTR_TYPE_S_EL1``: interrupt is meant to be consumed by Secure EL1.h](j )}(h``INTR_TYPE_S_EL1``h]hINTR_TYPE_S_EL1}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh2: interrupt is meant to be consumed by Secure EL1.}(h2: interrupt is meant to be consumed by Secure EL1.h!jubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jubah"}(h$]h&]h+]h-]h/]uh1jh!jhhhAj hCNubj)}(h=``INTR_TYPE_EL3``: interrupt is meant to be consumed by EL3. h]j )}(h<``INTR_TYPE_EL3``: interrupt is meant to be consumed by EL3.h](j )}(h``INTR_TYPE_EL3``h]h INTR_TYPE_EL3}(hhh!j#ubah"}(h$]h&]h+]h-]h/]uh1j h!jubh+: interrupt is meant to be consumed by EL3.}(h+: interrupt is meant to be consumed by EL3.h!jubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jubah"}(h$]h&]h+]h-]h/]uh1jh!jhhhAj hCNubeh"}(h$]h&]h+]h-]h/]jujvuh1jhAj hCKh!jchhubj )}(hIn case of Arm standard platforms using GIC, the implementation of the API writes to the GIC *Group Register* and *Group Modifier Register* (only GICv3) to assign the interrupt to the right group.h](h]In case of Arm standard platforms using GIC, the implementation of the API writes to the GIC }(h]In case of Arm standard platforms using GIC, the implementation of the API writes to the GIC h!jHhhhANhCNubj( )}(h*Group Register*h]hGroup Register}(hhh!jQubah"}(h$]h&]h+]h-]h/]uh1j' h!jHubh and }(h and h!jHhhhANhCNubj( )}(h*Group Modifier Register*h]hGroup Modifier Register}(hhh!jdubah"}(h$]h&]h+]h-]h/]uh1j' h!jHubh9 (only GICv3) to assign the interrupt to the right group.}(h9 (only GICv3) to assign the interrupt to the right group.h!jHhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jchhubj )}(h For GICv3:h]h For GICv3:}(hjh!j}hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jchhubj)}(hhh](j)}(h,``INTR_TYPE_NS`` maps to Group 1 interrupt. h]j )}(h+``INTR_TYPE_NS`` maps to Group 1 interrupt.h](j )}(h``INTR_TYPE_NS``h]h INTR_TYPE_NS}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh maps to Group 1 interrupt.}(h maps to Group 1 interrupt.h!jubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jubah"}(h$]h&]h+]h-]h/]uh1jh!jhhhAj hCNubj)}(h6``INTR_TYPE_S_EL1`` maps to Secure Group 1 interrupt. h]j )}(h5``INTR_TYPE_S_EL1`` maps to Secure Group 1 interrupt.h](j )}(h``INTR_TYPE_S_EL1``h]hINTR_TYPE_S_EL1}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh" maps to Secure Group 1 interrupt.}(h" maps to Secure Group 1 interrupt.h!jubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jubah"}(h$]h&]h+]h-]h/]uh1jh!jhhhAj hCNubj)}(h4``INTR_TYPE_EL3`` maps to Secure Group 0 interrupt. h]j )}(h3``INTR_TYPE_EL3`` maps to Secure Group 0 interrupt.h](j )}(h``INTR_TYPE_EL3``h]h INTR_TYPE_EL3}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh" maps to Secure Group 0 interrupt.}(h" maps to Secure Group 0 interrupt.h!jubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jubah"}(h$]h&]h+]h-]h/]uh1jh!jhhhAj hCNubeh"}(h$]h&]h+]h-]h/]jujvuh1jhAj hCKh!jchhubj )}(h For GICv2:h]h For GICv2:}(hj h!j hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jchhubj)}(hhh](j)}(h,``INTR_TYPE_NS`` maps to Group 1 interrupt. h]j )}(h+``INTR_TYPE_NS`` maps to Group 1 interrupt.h](j )}(h``INTR_TYPE_NS``h]h INTR_TYPE_NS}(hhh!j"ubah"}(h$]h&]h+]h-]h/]uh1j h!jubh maps to Group 1 interrupt.}(h maps to Group 1 interrupt.h!jubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jubah"}(h$]h&]h+]h-]h/]uh1jh!jhhhAj hCNubj)}(hWhen the build option ``GICV2_G0_FOR_EL3`` is set to ``0`` (the default), ``INTR_TYPE_S_EL1`` maps to Group 0. Otherwise, ``INTR_TYPE_EL3`` maps to Group 0 interrupt. h]j )}(hWhen the build option ``GICV2_G0_FOR_EL3`` is set to ``0`` (the default), ``INTR_TYPE_S_EL1`` maps to Group 0. Otherwise, ``INTR_TYPE_EL3`` maps to Group 0 interrupt.h](hWhen the build option }(hWhen the build option h!jEubj )}(h``GICV2_G0_FOR_EL3``h]hGICV2_G0_FOR_EL3}(hhh!jNubah"}(h$]h&]h+]h-]h/]uh1j h!jEubh is set to }(h is set to h!jEubj )}(h``0``h]h0}(hhh!jaubah"}(h$]h&]h+]h-]h/]uh1j h!jEubh (the default), }(h (the default), h!jEubj )}(h``INTR_TYPE_S_EL1``h]hINTR_TYPE_S_EL1}(hhh!jtubah"}(h$]h&]h+]h-]h/]uh1j h!jEubh maps to Group 0. Otherwise, }(h maps to Group 0. Otherwise, h!jEubj )}(h``INTR_TYPE_EL3``h]h INTR_TYPE_EL3}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jEubh maps to Group 0 interrupt.}(h maps to Group 0 interrupt.h!jEubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jAubah"}(h$]h&]h+]h-]h/]uh1jh!jhhhAj hCNubeh"}(h$]h&]h+]h-]h/]jujvuh1jhAj hCKh!jchhubeh"}(h$]Sfunction-void-plat-ic-set-interrupt-type-unsigned-int-id-unsigned-int-type-optionalah&]h+]Yfunction: void plat_ic_set_interrupt_type(unsigned int id, unsigned int type); [optional]ah-]h/]uh1j h!j hhhAj hCKubj )}(hhh](j )}(hRFunction: void plat_ic_raise_el3_sgi(int sgi_num, u_register_t target); [optional]h]hRFunction: void plat_ic_raise_el3_sgi(int sgi_num, u_register_t target); [optional]}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCKubj )}(h6Argument : int Argument : u_register_t Return : voidh]h6Argument : int Argument : u_register_t Return : void}(hhh!jubah"}(h$]h&]h+]h-]h/]j j uh1j hAj hCKh!jhhubj )}(hThis API should raise an EL3 SGI. The first parameter, ``sgi_num``, specifies the ID of the SGI. The second parameter, ``target``, must be the MPIDR of the target PE.h](h7This API should raise an EL3 SGI. The first parameter, }(h7This API should raise an EL3 SGI. The first parameter, h!jhhhANhCNubj )}(h ``sgi_num``h]hsgi_num}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh5, specifies the ID of the SGI. The second parameter, }(h5, specifies the ID of the SGI. The second parameter, h!jhhhANhCNubj )}(h ``target``h]htarget}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh%, must be the MPIDR of the target PE.}(h%, must be the MPIDR of the target PE.h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jhhubj )}(hIn case of Arm standard platforms using GIC, the implementation of the API inserts barrier to make memory updates visible before raising SGI, then writes to appropriate *SGI Register* in order to raise the EL3 SGI.h](hIn case of Arm standard platforms using GIC, the implementation of the API inserts barrier to make memory updates visible before raising SGI, then writes to appropriate }(hIn case of Arm standard platforms using GIC, the implementation of the API inserts barrier to make memory updates visible before raising SGI, then writes to appropriate h!jhhhANhCNubj( )}(h*SGI Register*h]h SGI Register}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j' h!jubh in order to raise the EL3 SGI.}(h in order to raise the EL3 SGI.h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jhhubeh"}(h$]Lfunction-void-plat-ic-raise-el3-sgi-int-sgi-num-u-register-t-target-optionalah&]h+]Rfunction: void plat_ic_raise_el3_sgi(int sgi_num, u_register_t target); [optional]ah-]h/]uh1j h!j hhhAj hCKubj )}(hhh](j )}(hrFunction: void plat_ic_set_spi_routing(unsigned int id, unsigned int routing_mode, u_register_t mpidr); [optional]h]hrFunction: void plat_ic_set_spi_routing(unsigned int id, unsigned int routing_mode, u_register_t mpidr); [optional]}(hj7h!j5hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!j2hhhAj hCKubj )}(hWArgument : unsigned int Argument : unsigned int Argument : u_register_t Return : voidh]hWArgument : unsigned int Argument : unsigned int Argument : u_register_t Return : void}(hhh!jCubah"}(h$]h&]h+]h-]h/]j j uh1j hAj hCKh!j2hhubj )}(hThis API should set the routing mode of Share Peripheral Interrupt (SPI) specified by first parameter ``id`` to that specified by the second parameter ``routing_mode``.h](hfThis API should set the routing mode of Share Peripheral Interrupt (SPI) specified by first parameter }(hfThis API should set the routing mode of Share Peripheral Interrupt (SPI) specified by first parameter h!jQhhhANhCNubj )}(h``id``h]hid}(hhh!jZubah"}(h$]h&]h+]h-]h/]uh1j h!jQubh+ to that specified by the second parameter }(h+ to that specified by the second parameter h!jQhhhANhCNubj )}(h``routing_mode``h]h routing_mode}(hhh!jmubah"}(h$]h&]h+]h-]h/]uh1j h!jQubh.}(hj h!jQhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!j2hhubj )}(h-The ``routing_mode`` parameter can be one of:h](hThe }(hThe h!jhhhANhCNubj )}(h``routing_mode``h]h routing_mode}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh parameter can be one of:}(h parameter can be one of:h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!j2hhubj)}(hhh](j)}(h``INTR_ROUTING_MODE_ANY`` means the interrupt can be routed to any PE in the system. The ``mpidr`` parameter is ignored in this case. h]j )}(h``INTR_ROUTING_MODE_ANY`` means the interrupt can be routed to any PE in the system. The ``mpidr`` parameter is ignored in this case.h](j )}(h``INTR_ROUTING_MODE_ANY``h]hINTR_ROUTING_MODE_ANY}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh@ means the interrupt can be routed to any PE in the system. The }(h@ means the interrupt can be routed to any PE in the system. The h!jubj )}(h ``mpidr``h]hmpidr}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh# parameter is ignored in this case.}(h# parameter is ignored in this case.h!jubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jubah"}(h$]h&]h+]h-]h/]uh1jh!jhhhAj hCNubj)}(h|``INTR_ROUTING_MODE_PE`` means the interrupt is routed to the PE whose MPIDR value is specified by the parameter ``mpidr``. h]j )}(h{``INTR_ROUTING_MODE_PE`` means the interrupt is routed to the PE whose MPIDR value is specified by the parameter ``mpidr``.h](j )}(h``INTR_ROUTING_MODE_PE``h]hINTR_ROUTING_MODE_PE}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubhY means the interrupt is routed to the PE whose MPIDR value is specified by the parameter }(hY means the interrupt is routed to the PE whose MPIDR value is specified by the parameter h!jubj )}(h ``mpidr``h]hmpidr}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh.}(hj h!jubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!jubah"}(h$]h&]h+]h-]h/]uh1jh!jhhhAj hCNubeh"}(h$]h&]h+]h-]h/]jujvuh1jhAj hCKh!j2hhubj )}(hIn case of Arm standard platforms using GIC, the implementation of the API writes to the GIC *Target Register* (GICv2) or *Route Register* (GICv3) to set the routing.h](h]In case of Arm standard platforms using GIC, the implementation of the API writes to the GIC }(h]In case of Arm standard platforms using GIC, the implementation of the API writes to the GIC h!j#hhhANhCNubj( )}(h*Target Register*h]hTarget Register}(hhh!j,ubah"}(h$]h&]h+]h-]h/]uh1j' h!j#ubh (GICv2) or }(h (GICv2) or h!j#hhhANhCNubj( )}(h*Route Register*h]hRoute Register}(hhh!j?ubah"}(h$]h&]h+]h-]h/]uh1j' h!j#ubh (GICv3) to set the routing.}(h (GICv3) to set the routing.h!j#hhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!j2hhubeh"}(h$]kfunction-void-plat-ic-set-spi-routing-unsigned-int-id-unsigned-int-routing-mode-u-register-t-mpidr-optionalah&]h+]rfunction: void plat_ic_set_spi_routing(unsigned int id, unsigned int routing_mode, u_register_t mpidr); [optional]ah-]h/]uh1j h!j hhhAj hCKubj )}(hhh](j )}(hIFunction: void plat_ic_set_interrupt_pending(unsigned int id); [optional]h]hIFunction: void plat_ic_set_interrupt_pending(unsigned int id); [optional]:5}(hjeh!jchhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!j`hhhAj hCKubj )}(h'Argument : unsigned int Return : voidh]h'Argument : unsigned int Return : void}(hhh!jqubah"}(h$]h&]h+]h-]h/]j j uh1j hAj hCKh!j`hhubj )}(hSThis API should set the interrupt specified by first parameter ``id`` to *Pending*.h](h?This API should set the interrupt specified by first parameter }(h?This API should set the interrupt specified by first parameter h!jhhhANhCNubj )}(h``id``h]hid}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh to }(h to h!jhhhANhCNubj( )}(h *Pending*h]hPending}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j' h!jubh.}(hj h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!j`hhubj )}(hIn case of Arm standard platforms using GIC, the implementation of the API inserts barrier to make memory updates visible before setting interrupt pending, and writes to the GIC *Set Pending Register* to set the interrupt pending status.h](hIn case of Arm standard platforms using GIC, the implementation of the API inserts barrier to make memory updates visible before setting interrupt pending, and writes to the GIC }(hIn case of Arm standard platforms using GIC, the implementation of the API inserts barrier to make memory updates visible before setting interrupt pending, and writes to the GIC h!jhhhANhCNubj( )}(h*Set Pending Register*h]hSet Pending Register}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j' h!jubh% to set the interrupt pending status.}(h% to set the interrupt pending status.h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCKh!j`hhubeh"}(h$]Dfunction-void-plat-ic-set-interrupt-pending-unsigned-int-id-optionalah&]h+]Ifunction: void plat_ic_set_interrupt_pending(unsigned int id); [optional]ah-]h/]uh1j h!j hhhAj hCKubj )}(hhh](j )}(hKFunction: void plat_ic_clear_interrupt_pending(unsigned int id); [optional]h]hKFunction: void plat_ic_clear_interrupt_pending(unsigned int id); [optional]}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCMubj )}(h'Argument : unsigned int Return : voidh]h'Argument : unsigned int Return : void}(hhh!jubah"}(h$]h&]h+]h-]h/]j j uh1j hAj hCMh!jhhubj )}(h`This API should clear the *Pending* status of the interrupt specified by first parameter ``id``.h](hThis API should clear the }(hThis API should clear the h!jhhhANhCNubj( )}(h *Pending*h]hPending}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j' h!jubh6 status of the interrupt specified by first parameter }(h6 status of the interrupt specified by first parameter h!jhhhANhCNubj )}(h``id``h]hid}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh.}(hj h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!jhhubj )}(hIn case of Arm standard platforms using GIC, the implementation of the API writes to the GIC *Clear Pending Register* to clear the interrupt pending status, and inserts barrier to make memory updates visible afterwards.h](h]In case of Arm standard platforms using GIC, the implementation of the API writes to the GIC }(h]In case of Arm standard platforms using GIC, the implementation of the API writes to the GIC h!j0hhhANhCNubj( )}(h*Clear Pending Register*h]hClear Pending Register}(hhh!j9ubah"}(h$]h&]h+]h-]h/]uh1j' h!j0ubhf to clear the interrupt pending status, and inserts barrier to make memory updates visible afterwards.}(hf to clear the interrupt pending status, and inserts barrier to make memory updates visible afterwards.h!j0hhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCM h!jhhubeh"}(h$]Ffunction-void-plat-ic-clear-interrupt-pending-unsigned-int-id-optionalah&]h+]Kfunction: void plat_ic_clear_interrupt_pending(unsigned int id); [optional]ah-]h/]uh1j h!j hhhAj hCMubj )}(hhh](j )}(hMFunction: unsigned int plat_ic_set_priority_mask(unsigned int id); [optional]h]hMFunction: unsigned int plat_ic_set_priority_mask(unsigned int id); [optional]}(hj_h!j]hhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!jZhhhAj hCMubj )}(h&Argument : unsigned int Return : inth]h&Argument : unsigned int Return : int}(hhh!jkubah"}(h$]h&]h+]h-]h/]j j uh1j hAj hCMh!jZhhubj )}(hThis API should set the priority mask (first parameter) in the interrupt controller such that only interrupts of higher priority than the supplied one may be signalled to the PE. The API should return the current priority value that it's overwriting.h]hThis API should set the priority mask (first parameter) in the interrupt controller such that only interrupts of higher priority than the supplied one may be signalled to the PE. The API should return the current priority value that it’s overwriting.}(hj{h!jyhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!jZhhubj )}(hXIn case of Arm standard platforms using GIC, the implementation of the API inserts to order memory updates before updating mask, then writes to the GIC *Priority Mask Register*, and make sure memory updates are visible before potential trigger due to mask update.h](hIn case of Arm standard platforms using GIC, the implementation of the API inserts to order memory updates before updating mask, then writes to the GIC }(hIn case of Arm standard platforms using GIC, the implementation of the API inserts to order memory updates before updating mask, then writes to the GIC h!jhhhANhCNubj( )}(h*Priority Mask Register*h]hPriority Mask Register}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j' h!jubhW, and make sure memory updates are visible before potential trigger due to mask update.}(hW, and make sure memory updates are visible before potential trigger due to mask update.h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCMh!jZhhubh target)}(h.. _plat_ic_get_interrupt_id:h]h"}(h$]h&]h+]h-]h/]refidplat-ic-get-interrupt-iduh1jhCMfh!jZhhhAj ubeh"}(h$]Hfunction-unsigned-int-plat-ic-set-priority-mask-unsigned-int-id-optionalah&]h+]Mfunction: unsigned int plat_ic_set_priority_mask(unsigned int id); [optional]ah-]h/]uh1j h!j hhhAj hCMubj )}(hhh](j )}(hMFunction: unsigned int plat_ic_get_interrupt_id(unsigned int raw); [optional]h]hMFunction: unsigned int plat_ic_get_interrupt_id(unsigned int raw); [optional]}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j h!jhhhAj hCM$ubj )}(h/Argument : unsigned int Return : unsigned inth]h/Argument : unsigned int Return : unsigned int}(hhh!jubah"}(h$]h&]h+]h-]h/]j j uh1j hAj hCM(h!jhhubj )}(hThis API should extract and return the interrupt number from the raw value obtained by the acknowledging the interrupt (read using ``plat_ic_acknowledge_interrupt()``). If the interrupt ID is invalid, this API should return ``INTR_ID_UNAVAILABLE``.h](hThis API should extract and return the interrupt number from the raw value obtained by the acknowledging the interrupt (read using }(hThis API should extract and return the interrupt number from the raw value obtained by the acknowledging the interrupt (read using h!jhhhANhCNubj )}(h#``plat_ic_acknowledge_interrupt()``h]hplat_ic_acknowledge_interrupt()}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh:). If the interrupt ID is invalid, this API should return }(h:). If the interrupt ID is invalid, this API should return h!jhhhANhCNubj )}(h``INTR_ID_UNAVAILABLE``h]hINTR_ID_UNAVAILABLE}(hhh!jubah"}(h$]h&]h+]h-]h/]uh1j h!jubh.}(hj h!jhhhANhCNubeh"}(h$]h&]h+]h-]h/]uh1j hAj hCM+h!jhhubj )}(hIn case of Arm standard platforms using GIC, the implementation of the API masks out the interrupt ID field from the acknowledged value from GIC.h]hIn case of Arm standard platforms using GIC, the implementation of the API masks out the interrupt ID field from the acknowledged value from GIC.}(hjh!jhhhANhCNubah"}(h$]h&]h+]h-]h/]uh1j hAj hCM0h!jhhubh transition)}(h--------------h]h"}(h$]h&]h+]h-]h/]uh1j hAj hCM3h!jhhubj )}(hM*Copyright (c) 2017-2019, Arm Limited and Contributors. All rights reserved.*h]j( )}(hj.h]hKCopyright (c) 2017-2019, Arm Limited and Contributors. All rights reserved.}(hhh!j0ubah"}(h$]h&]h+]h-]h/]uh1j' h!j,ubah"}(h$]h&]h+]h-]h/]uh1j hAj hCM5h!jhhubeh"}(h$](Hfunction-unsigned-int-plat-ic-get-interrupt-id-unsigned-int-raw-optionaljeh&]h+](Mfunction: unsigned int plat_ic_get_interrupt_id(unsigned int raw); [optional]plat_ic_get_interrupt_ideh-]h/]uh1j h!j hhhAj hCM$expect_referenced_by_name}jIjsexpect_referenced_by_id}jjsubeh"}(h$]!platform-interrupt-controller-apiah&]h+]!platform interrupt controller apiah-]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_handlerj{error_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}refids}j]jasnameids}(jUjRjG jD j| jy j j j j jc j` j j j9j6jjj`j]jjj/j,j]jZjjjWjTjjjIjjHjEu nametypes}(jUNjG Nj| Nj Nj Njc Nj Nj9NjNj`NjNj/Nj]NjNjWNjNjIjHNuh$}(jRj jD j jy jJ j j j j j` j j jf j6j jj<j]jjjcj,jjZj2jj`jTjjjZjjjEju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages]h system_message)}(hhh]j )}(hhh]h>Hyperlink target "plat-ic-get-interrupt-id" is not referenced.}(hhh!j"ubah"}(h$]h&]h+]h-]h/]uh1j h!jubah"}(h$]h&]h+]h-]h/]levelKtypeINFOsourcej lineMfuh1juba transformerN decorationNhhub.