1895 lines
125 KiB
C
1895 lines
125 KiB
C
|
// This file is part of AsmJit project <https://asmjit.com>
|
||
|
//
|
||
|
// See asmjit.h or LICENSE.md for license and copyright information
|
||
|
// SPDX-License-Identifier: Zlib
|
||
|
|
||
|
#ifndef ASMJIT_ARM_A64GLOBALS_H_INCLUDED
|
||
|
#define ASMJIT_ARM_A64GLOBALS_H_INCLUDED
|
||
|
|
||
|
#include "../arm/armglobals.h"
|
||
|
|
||
|
//! \namespace asmjit::a64
|
||
|
//! \ingroup asmjit_a64
|
||
|
//!
|
||
|
//! AArch64 backend.
|
||
|
|
||
|
ASMJIT_BEGIN_SUB_NAMESPACE(a64)
|
||
|
|
||
|
// a64 uses everything from arm namespace and adds into it.
|
||
|
using namespace arm;
|
||
|
|
||
|
//! \addtogroup asmjit_a64
|
||
|
//! \{
|
||
|
|
||
|
//! AArch64 instruction.
|
||
|
//!
|
||
|
//! \note Only used to hold ARM-specific enumerations and static functions.
|
||
|
struct Inst {
|
||
|
//! Instruction id.
|
||
|
enum Id : uint32_t {
|
||
|
// ${InstId:Begin}
|
||
|
kIdNone = 0, //!< Instruction ''.
|
||
|
kIdAdc, //!< Instruction 'adc'.
|
||
|
kIdAdcs, //!< Instruction 'adcs'.
|
||
|
kIdAdd, //!< Instruction 'add'.
|
||
|
kIdAddg, //!< Instruction 'addg'.
|
||
|
kIdAdds, //!< Instruction 'adds'.
|
||
|
kIdAdr, //!< Instruction 'adr'.
|
||
|
kIdAdrp, //!< Instruction 'adrp'.
|
||
|
kIdAnd, //!< Instruction 'and'.
|
||
|
kIdAnds, //!< Instruction 'ands'.
|
||
|
kIdAsr, //!< Instruction 'asr'.
|
||
|
kIdAsrv, //!< Instruction 'asrv'.
|
||
|
kIdAt, //!< Instruction 'at'.
|
||
|
kIdAutda, //!< Instruction 'autda'.
|
||
|
kIdAutdza, //!< Instruction 'autdza'.
|
||
|
kIdAutdb, //!< Instruction 'autdb'.
|
||
|
kIdAutdzb, //!< Instruction 'autdzb'.
|
||
|
kIdAutia, //!< Instruction 'autia'.
|
||
|
kIdAutia1716, //!< Instruction 'autia1716'.
|
||
|
kIdAutiasp, //!< Instruction 'autiasp'.
|
||
|
kIdAutiaz, //!< Instruction 'autiaz'.
|
||
|
kIdAutib, //!< Instruction 'autib'.
|
||
|
kIdAutib1716, //!< Instruction 'autib1716'.
|
||
|
kIdAutibsp, //!< Instruction 'autibsp'.
|
||
|
kIdAutibz, //!< Instruction 'autibz'.
|
||
|
kIdAutiza, //!< Instruction 'autiza'.
|
||
|
kIdAutizb, //!< Instruction 'autizb'.
|
||
|
kIdAxflag, //!< Instruction 'axflag'.
|
||
|
kIdB, //!< Instruction 'b'.
|
||
|
kIdBfc, //!< Instruction 'bfc'.
|
||
|
kIdBfi, //!< Instruction 'bfi'.
|
||
|
kIdBfm, //!< Instruction 'bfm'.
|
||
|
kIdBfxil, //!< Instruction 'bfxil'.
|
||
|
kIdBic, //!< Instruction 'bic'.
|
||
|
kIdBics, //!< Instruction 'bics'.
|
||
|
kIdBl, //!< Instruction 'bl'.
|
||
|
kIdBlr, //!< Instruction 'blr'.
|
||
|
kIdBr, //!< Instruction 'br'.
|
||
|
kIdBrk, //!< Instruction 'brk'.
|
||
|
kIdCas, //!< Instruction 'cas'.
|
||
|
kIdCasa, //!< Instruction 'casa'.
|
||
|
kIdCasab, //!< Instruction 'casab'.
|
||
|
kIdCasah, //!< Instruction 'casah'.
|
||
|
kIdCasal, //!< Instruction 'casal'.
|
||
|
kIdCasalb, //!< Instruction 'casalb'.
|
||
|
kIdCasalh, //!< Instruction 'casalh'.
|
||
|
kIdCasb, //!< Instruction 'casb'.
|
||
|
kIdCash, //!< Instruction 'cash'.
|
||
|
kIdCasl, //!< Instruction 'casl'.
|
||
|
kIdCaslb, //!< Instruction 'caslb'.
|
||
|
kIdCaslh, //!< Instruction 'caslh'.
|
||
|
kIdCasp, //!< Instruction 'casp'.
|
||
|
kIdCaspa, //!< Instruction 'caspa'.
|
||
|
kIdCaspal, //!< Instruction 'caspal'.
|
||
|
kIdCaspl, //!< Instruction 'caspl'.
|
||
|
kIdCbnz, //!< Instruction 'cbnz'.
|
||
|
kIdCbz, //!< Instruction 'cbz'.
|
||
|
kIdCcmn, //!< Instruction 'ccmn'.
|
||
|
kIdCcmp, //!< Instruction 'ccmp'.
|
||
|
kIdCfinv, //!< Instruction 'cfinv'.
|
||
|
kIdCinc, //!< Instruction 'cinc'.
|
||
|
kIdCinv, //!< Instruction 'cinv'.
|
||
|
kIdClrex, //!< Instruction 'clrex'.
|
||
|
kIdCls, //!< Instruction 'cls'.
|
||
|
kIdClz, //!< Instruction 'clz'.
|
||
|
kIdCmn, //!< Instruction 'cmn'.
|
||
|
kIdCmp, //!< Instruction 'cmp'.
|
||
|
kIdCmpp, //!< Instruction 'cmpp'.
|
||
|
kIdCneg, //!< Instruction 'cneg'.
|
||
|
kIdCrc32b, //!< Instruction 'crc32b'.
|
||
|
kIdCrc32cb, //!< Instruction 'crc32cb'.
|
||
|
kIdCrc32ch, //!< Instruction 'crc32ch'.
|
||
|
kIdCrc32cw, //!< Instruction 'crc32cw'.
|
||
|
kIdCrc32cx, //!< Instruction 'crc32cx'.
|
||
|
kIdCrc32h, //!< Instruction 'crc32h'.
|
||
|
kIdCrc32w, //!< Instruction 'crc32w'.
|
||
|
kIdCrc32x, //!< Instruction 'crc32x'.
|
||
|
kIdCsdb, //!< Instruction 'csdb'.
|
||
|
kIdCsel, //!< Instruction 'csel'.
|
||
|
kIdCset, //!< Instruction 'cset'.
|
||
|
kIdCsetm, //!< Instruction 'csetm'.
|
||
|
kIdCsinc, //!< Instruction 'csinc'.
|
||
|
kIdCsinv, //!< Instruction 'csinv'.
|
||
|
kIdCsneg, //!< Instruction 'csneg'.
|
||
|
kIdDc, //!< Instruction 'dc'.
|
||
|
kIdDcps1, //!< Instruction 'dcps1'.
|
||
|
kIdDcps2, //!< Instruction 'dcps2'.
|
||
|
kIdDcps3, //!< Instruction 'dcps3'.
|
||
|
kIdDgh, //!< Instruction 'dgh'.
|
||
|
kIdDmb, //!< Instruction 'dmb'.
|
||
|
kIdDrps, //!< Instruction 'drps'.
|
||
|
kIdDsb, //!< Instruction 'dsb'.
|
||
|
kIdEon, //!< Instruction 'eon'.
|
||
|
kIdEor, //!< Instruction 'eor'.
|
||
|
kIdEsb, //!< Instruction 'esb'.
|
||
|
kIdExtr, //!< Instruction 'extr'.
|
||
|
kIdEret, //!< Instruction 'eret'.
|
||
|
kIdGmi, //!< Instruction 'gmi'.
|
||
|
kIdHint, //!< Instruction 'hint'.
|
||
|
kIdHlt, //!< Instruction 'hlt'.
|
||
|
kIdHvc, //!< Instruction 'hvc'.
|
||
|
kIdIc, //!< Instruction 'ic'.
|
||
|
kIdIsb, //!< Instruction 'isb'.
|
||
|
kIdLdadd, //!< Instruction 'ldadd'.
|
||
|
kIdLdadda, //!< Instruction 'ldadda'.
|
||
|
kIdLdaddab, //!< Instruction 'ldaddab'.
|
||
|
kIdLdaddah, //!< Instruction 'ldaddah'.
|
||
|
kIdLdaddal, //!< Instruction 'ldaddal'.
|
||
|
kIdLdaddalb, //!< Instruction 'ldaddalb'.
|
||
|
kIdLdaddalh, //!< Instruction 'ldaddalh'.
|
||
|
kIdLdaddb, //!< Instruction 'ldaddb'.
|
||
|
kIdLdaddh, //!< Instruction 'ldaddh'.
|
||
|
kIdLdaddl, //!< Instruction 'ldaddl'.
|
||
|
kIdLdaddlb, //!< Instruction 'ldaddlb'.
|
||
|
kIdLdaddlh, //!< Instruction 'ldaddlh'.
|
||
|
kIdLdar, //!< Instruction 'ldar'.
|
||
|
kIdLdarb, //!< Instruction 'ldarb'.
|
||
|
kIdLdarh, //!< Instruction 'ldarh'.
|
||
|
kIdLdaxp, //!< Instruction 'ldaxp'.
|
||
|
kIdLdaxr, //!< Instruction 'ldaxr'.
|
||
|
kIdLdaxrb, //!< Instruction 'ldaxrb'.
|
||
|
kIdLdaxrh, //!< Instruction 'ldaxrh'.
|
||
|
kIdLdclr, //!< Instruction 'ldclr'.
|
||
|
kIdLdclra, //!< Instruction 'ldclra'.
|
||
|
kIdLdclrab, //!< Instruction 'ldclrab'.
|
||
|
kIdLdclrah, //!< Instruction 'ldclrah'.
|
||
|
kIdLdclral, //!< Instruction 'ldclral'.
|
||
|
kIdLdclralb, //!< Instruction 'ldclralb'.
|
||
|
kIdLdclralh, //!< Instruction 'ldclralh'.
|
||
|
kIdLdclrb, //!< Instruction 'ldclrb'.
|
||
|
kIdLdclrh, //!< Instruction 'ldclrh'.
|
||
|
kIdLdclrl, //!< Instruction 'ldclrl'.
|
||
|
kIdLdclrlb, //!< Instruction 'ldclrlb'.
|
||
|
kIdLdclrlh, //!< Instruction 'ldclrlh'.
|
||
|
kIdLdeor, //!< Instruction 'ldeor'.
|
||
|
kIdLdeora, //!< Instruction 'ldeora'.
|
||
|
kIdLdeorab, //!< Instruction 'ldeorab'.
|
||
|
kIdLdeorah, //!< Instruction 'ldeorah'.
|
||
|
kIdLdeoral, //!< Instruction 'ldeoral'.
|
||
|
kIdLdeoralb, //!< Instruction 'ldeoralb'.
|
||
|
kIdLdeoralh, //!< Instruction 'ldeoralh'.
|
||
|
kIdLdeorb, //!< Instruction 'ldeorb'.
|
||
|
kIdLdeorh, //!< Instruction 'ldeorh'.
|
||
|
kIdLdeorl, //!< Instruction 'ldeorl'.
|
||
|
kIdLdeorlb, //!< Instruction 'ldeorlb'.
|
||
|
kIdLdeorlh, //!< Instruction 'ldeorlh'.
|
||
|
kIdLdg, //!< Instruction 'ldg'.
|
||
|
kIdLdgm, //!< Instruction 'ldgm'.
|
||
|
kIdLdlar, //!< Instruction 'ldlar'.
|
||
|
kIdLdlarb, //!< Instruction 'ldlarb'.
|
||
|
kIdLdlarh, //!< Instruction 'ldlarh'.
|
||
|
kIdLdnp, //!< Instruction 'ldnp'.
|
||
|
kIdLdp, //!< Instruction 'ldp'.
|
||
|
kIdLdpsw, //!< Instruction 'ldpsw'.
|
||
|
kIdLdr, //!< Instruction 'ldr'.
|
||
|
kIdLdraa, //!< Instruction 'ldraa'.
|
||
|
kIdLdrab, //!< Instruction 'ldrab'.
|
||
|
kIdLdrb, //!< Instruction 'ldrb'.
|
||
|
kIdLdrh, //!< Instruction 'ldrh'.
|
||
|
kIdLdrsb, //!< Instruction 'ldrsb'.
|
||
|
kIdLdrsh, //!< Instruction 'ldrsh'.
|
||
|
kIdLdrsw, //!< Instruction 'ldrsw'.
|
||
|
kIdLdset, //!< Instruction 'ldset'.
|
||
|
kIdLdseta, //!< Instruction 'ldseta'.
|
||
|
kIdLdsetab, //!< Instruction 'ldsetab'.
|
||
|
kIdLdsetah, //!< Instruction 'ldsetah'.
|
||
|
kIdLdsetal, //!< Instruction 'ldsetal'.
|
||
|
kIdLdsetalb, //!< Instruction 'ldsetalb'.
|
||
|
kIdLdsetalh, //!< Instruction 'ldsetalh'.
|
||
|
kIdLdsetb, //!< Instruction 'ldsetb'.
|
||
|
kIdLdseth, //!< Instruction 'ldseth'.
|
||
|
kIdLdsetl, //!< Instruction 'ldsetl'.
|
||
|
kIdLdsetlb, //!< Instruction 'ldsetlb'.
|
||
|
kIdLdsetlh, //!< Instruction 'ldsetlh'.
|
||
|
kIdLdsmax, //!< Instruction 'ldsmax'.
|
||
|
kIdLdsmaxa, //!< Instruction 'ldsmaxa'.
|
||
|
kIdLdsmaxab, //!< Instruction 'ldsmaxab'.
|
||
|
kIdLdsmaxah, //!< Instruction 'ldsmaxah'.
|
||
|
kIdLdsmaxal, //!< Instruction 'ldsmaxal'.
|
||
|
kIdLdsmaxalb, //!< Instruction 'ldsmaxalb'.
|
||
|
kIdLdsmaxalh, //!< Instruction 'ldsmaxalh'.
|
||
|
kIdLdsmaxb, //!< Instruction 'ldsmaxb'.
|
||
|
kIdLdsmaxh, //!< Instruction 'ldsmaxh'.
|
||
|
kIdLdsmaxl, //!< Instruction 'ldsmaxl'.
|
||
|
kIdLdsmaxlb, //!< Instruction 'ldsmaxlb'.
|
||
|
kIdLdsmaxlh, //!< Instruction 'ldsmaxlh'.
|
||
|
kIdLdsmin, //!< Instruction 'ldsmin'.
|
||
|
kIdLdsmina, //!< Instruction 'ldsmina'.
|
||
|
kIdLdsminab, //!< Instruction 'ldsminab'.
|
||
|
kIdLdsminah, //!< Instruction 'ldsminah'.
|
||
|
kIdLdsminal, //!< Instruction 'ldsminal'.
|
||
|
kIdLdsminalb, //!< Instruction 'ldsminalb'.
|
||
|
kIdLdsminalh, //!< Instruction 'ldsminalh'.
|
||
|
kIdLdsminb, //!< Instruction 'ldsminb'.
|
||
|
kIdLdsminh, //!< Instruction 'ldsminh'.
|
||
|
kIdLdsminl, //!< Instruction 'ldsminl'.
|
||
|
kIdLdsminlb, //!< Instruction 'ldsminlb'.
|
||
|
kIdLdsminlh, //!< Instruction 'ldsminlh'.
|
||
|
kIdLdtr, //!< Instruction 'ldtr'.
|
||
|
kIdLdtrb, //!< Instruction 'ldtrb'.
|
||
|
kIdLdtrh, //!< Instruction 'ldtrh'.
|
||
|
kIdLdtrsb, //!< Instruction 'ldtrsb'.
|
||
|
kIdLdtrsh, //!< Instruction 'ldtrsh'.
|
||
|
kIdLdtrsw, //!< Instruction 'ldtrsw'.
|
||
|
kIdLdumax, //!< Instruction 'ldumax'.
|
||
|
kIdLdumaxa, //!< Instruction 'ldumaxa'.
|
||
|
kIdLdumaxab, //!< Instruction 'ldumaxab'.
|
||
|
kIdLdumaxah, //!< Instruction 'ldumaxah'.
|
||
|
kIdLdumaxal, //!< Instruction 'ldumaxal'.
|
||
|
kIdLdumaxalb, //!< Instruction 'ldumaxalb'.
|
||
|
kIdLdumaxalh, //!< Instruction 'ldumaxalh'.
|
||
|
kIdLdumaxb, //!< Instruction 'ldumaxb'.
|
||
|
kIdLdumaxh, //!< Instruction 'ldumaxh'.
|
||
|
kIdLdumaxl, //!< Instruction 'ldumaxl'.
|
||
|
kIdLdumaxlb, //!< Instruction 'ldumaxlb'.
|
||
|
kIdLdumaxlh, //!< Instruction 'ldumaxlh'.
|
||
|
kIdLdumin, //!< Instruction 'ldumin'.
|
||
|
kIdLdumina, //!< Instruction 'ldumina'.
|
||
|
kIdLduminab, //!< Instruction 'lduminab'.
|
||
|
kIdLduminah, //!< Instruction 'lduminah'.
|
||
|
kIdLduminal, //!< Instruction 'lduminal'.
|
||
|
kIdLduminalb, //!< Instruction 'lduminalb'.
|
||
|
kIdLduminalh, //!< Instruction 'lduminalh'.
|
||
|
kIdLduminb, //!< Instruction 'lduminb'.
|
||
|
kIdLduminh, //!< Instruction 'lduminh'.
|
||
|
kIdLduminl, //!< Instruction 'lduminl'.
|
||
|
kIdLduminlb, //!< Instruction 'lduminlb'.
|
||
|
kIdLduminlh, //!< Instruction 'lduminlh'.
|
||
|
kIdLdur, //!< Instruction 'ldur'.
|
||
|
kIdLdurb, //!< Instruction 'ldurb'.
|
||
|
kIdLdurh, //!< Instruction 'ldurh'.
|
||
|
kIdLdursb, //!< Instruction 'ldursb'.
|
||
|
kIdLdursh, //!< Instruction 'ldursh'.
|
||
|
kIdLdursw, //!< Instruction 'ldursw'.
|
||
|
kIdLdxp, //!< Instruction 'ldxp'.
|
||
|
kIdLdxr, //!< Instruction 'ldxr'.
|
||
|
kIdLdxrb, //!< Instruction 'ldxrb'.
|
||
|
kIdLdxrh, //!< Instruction 'ldxrh'.
|
||
|
kIdLsl, //!< Instruction 'lsl'.
|
||
|
kIdLslv, //!< Instruction 'lslv'.
|
||
|
kIdLsr, //!< Instruction 'lsr'.
|
||
|
kIdLsrv, //!< Instruction 'lsrv'.
|
||
|
kIdMadd, //!< Instruction 'madd'.
|
||
|
kIdMneg, //!< Instruction 'mneg'.
|
||
|
kIdMov, //!< Instruction 'mov'.
|
||
|
kIdMovk, //!< Instruction 'movk'.
|
||
|
kIdMovn, //!< Instruction 'movn'.
|
||
|
kIdMovz, //!< Instruction 'movz'.
|
||
|
kIdMrs, //!< Instruction 'mrs'.
|
||
|
kIdMsr, //!< Instruction 'msr'.
|
||
|
kIdMsub, //!< Instruction 'msub'.
|
||
|
kIdMul, //!< Instruction 'mul'.
|
||
|
kIdMvn, //!< Instruction 'mvn'.
|
||
|
kIdNeg, //!< Instruction 'neg'.
|
||
|
kIdNegs, //!< Instruction 'negs'.
|
||
|
kIdNgc, //!< Instruction 'ngc'.
|
||
|
kIdNgcs, //!< Instruction 'ngcs'.
|
||
|
kIdNop, //!< Instruction 'nop'.
|
||
|
kIdOrn, //!< Instruction 'orn'.
|
||
|
kIdOrr, //!< Instruction 'orr'.
|
||
|
kIdPacda, //!< Instruction 'pacda'.
|
||
|
kIdPacdb, //!< Instruction 'pacdb'.
|
||
|
kIdPacdza, //!< Instruction 'pacdza'.
|
||
|
kIdPacdzb, //!< Instruction 'pacdzb'.
|
||
|
kIdPacga, //!< Instruction 'pacga'.
|
||
|
kIdPssbb, //!< Instruction 'pssbb'.
|
||
|
kIdRbit, //!< Instruction 'rbit'.
|
||
|
kIdRet, //!< Instruction 'ret'.
|
||
|
kIdRev, //!< Instruction 'rev'.
|
||
|
kIdRev16, //!< Instruction 'rev16'.
|
||
|
kIdRev32, //!< Instruction 'rev32'.
|
||
|
kIdRev64, //!< Instruction 'rev64'.
|
||
|
kIdRor, //!< Instruction 'ror'.
|
||
|
kIdRorv, //!< Instruction 'rorv'.
|
||
|
kIdSbc, //!< Instruction 'sbc'.
|
||
|
kIdSbcs, //!< Instruction 'sbcs'.
|
||
|
kIdSbfiz, //!< Instruction 'sbfiz'.
|
||
|
kIdSbfm, //!< Instruction 'sbfm'.
|
||
|
kIdSbfx, //!< Instruction 'sbfx'.
|
||
|
kIdSdiv, //!< Instruction 'sdiv'.
|
||
|
kIdSetf8, //!< Instruction 'setf8'.
|
||
|
kIdSetf16, //!< Instruction 'setf16'.
|
||
|
kIdSev, //!< Instruction 'sev'.
|
||
|
kIdSevl, //!< Instruction 'sevl'.
|
||
|
kIdSmaddl, //!< Instruction 'smaddl'.
|
||
|
kIdSmc, //!< Instruction 'smc'.
|
||
|
kIdSmnegl, //!< Instruction 'smnegl'.
|
||
|
kIdSmsubl, //!< Instruction 'smsubl'.
|
||
|
kIdSmulh, //!< Instruction 'smulh'.
|
||
|
kIdSmull, //!< Instruction 'smull'.
|
||
|
kIdSsbb, //!< Instruction 'ssbb'.
|
||
|
kIdSt2g, //!< Instruction 'st2g'.
|
||
|
kIdStadd, //!< Instruction 'stadd'.
|
||
|
kIdStaddl, //!< Instruction 'staddl'.
|
||
|
kIdStaddb, //!< Instruction 'staddb'.
|
||
|
kIdStaddlb, //!< Instruction 'staddlb'.
|
||
|
kIdStaddh, //!< Instruction 'staddh'.
|
||
|
kIdStaddlh, //!< Instruction 'staddlh'.
|
||
|
kIdStclr, //!< Instruction 'stclr'.
|
||
|
kIdStclrl, //!< Instruction 'stclrl'.
|
||
|
kIdStclrb, //!< Instruction 'stclrb'.
|
||
|
kIdStclrlb, //!< Instruction 'stclrlb'.
|
||
|
kIdStclrh, //!< Instruction 'stclrh'.
|
||
|
kIdStclrlh, //!< Instruction 'stclrlh'.
|
||
|
kIdSteor, //!< Instruction 'steor'.
|
||
|
kIdSteorl, //!< Instruction 'steorl'.
|
||
|
kIdSteorb, //!< Instruction 'steorb'.
|
||
|
kIdSteorlb, //!< Instruction 'steorlb'.
|
||
|
kIdSteorh, //!< Instruction 'steorh'.
|
||
|
kIdSteorlh, //!< Instruction 'steorlh'.
|
||
|
kIdStg, //!< Instruction 'stg'.
|
||
|
kIdStgm, //!< Instruction 'stgm'.
|
||
|
kIdStgp, //!< Instruction 'stgp'.
|
||
|
kIdStllr, //!< Instruction 'stllr'.
|
||
|
kIdStllrb, //!< Instruction 'stllrb'.
|
||
|
kIdStllrh, //!< Instruction 'stllrh'.
|
||
|
kIdStlr, //!< Instruction 'stlr'.
|
||
|
kIdStlrb, //!< Instruction 'stlrb'.
|
||
|
kIdStlrh, //!< Instruction 'stlrh'.
|
||
|
kIdStlxp, //!< Instruction 'stlxp'.
|
||
|
kIdStlxr, //!< Instruction 'stlxr'.
|
||
|
kIdStlxrb, //!< Instruction 'stlxrb'.
|
||
|
kIdStlxrh, //!< Instruction 'stlxrh'.
|
||
|
kIdStnp, //!< Instruction 'stnp'.
|
||
|
kIdStp, //!< Instruction 'stp'.
|
||
|
kIdStr, //!< Instruction 'str'.
|
||
|
kIdStrb, //!< Instruction 'strb'.
|
||
|
kIdStrh, //!< Instruction 'strh'.
|
||
|
kIdStset, //!< Instruction 'stset'.
|
||
|
kIdStsetl, //!< Instruction 'stsetl'.
|
||
|
kIdStsetb, //!< Instruction 'stsetb'.
|
||
|
kIdStsetlb, //!< Instruction 'stsetlb'.
|
||
|
kIdStseth, //!< Instruction 'stseth'.
|
||
|
kIdStsetlh, //!< Instruction 'stsetlh'.
|
||
|
kIdStsmax, //!< Instruction 'stsmax'.
|
||
|
kIdStsmaxl, //!< Instruction 'stsmaxl'.
|
||
|
kIdStsmaxb, //!< Instruction 'stsmaxb'.
|
||
|
kIdStsmaxlb, //!< Instruction 'stsmaxlb'.
|
||
|
kIdStsmaxh, //!< Instruction 'stsmaxh'.
|
||
|
kIdStsmaxlh, //!< Instruction 'stsmaxlh'.
|
||
|
kIdStsmin, //!< Instruction 'stsmin'.
|
||
|
kIdStsminl, //!< Instruction 'stsminl'.
|
||
|
kIdStsminb, //!< Instruction 'stsminb'.
|
||
|
kIdStsminlb, //!< Instruction 'stsminlb'.
|
||
|
kIdStsminh, //!< Instruction 'stsminh'.
|
||
|
kIdStsminlh, //!< Instruction 'stsminlh'.
|
||
|
kIdSttr, //!< Instruction 'sttr'.
|
||
|
kIdSttrb, //!< Instruction 'sttrb'.
|
||
|
kIdSttrh, //!< Instruction 'sttrh'.
|
||
|
kIdStumax, //!< Instruction 'stumax'.
|
||
|
kIdStumaxl, //!< Instruction 'stumaxl'.
|
||
|
kIdStumaxb, //!< Instruction 'stumaxb'.
|
||
|
kIdStumaxlb, //!< Instruction 'stumaxlb'.
|
||
|
kIdStumaxh, //!< Instruction 'stumaxh'.
|
||
|
kIdStumaxlh, //!< Instruction 'stumaxlh'.
|
||
|
kIdStumin, //!< Instruction 'stumin'.
|
||
|
kIdStuminl, //!< Instruction 'stuminl'.
|
||
|
kIdStuminb, //!< Instruction 'stuminb'.
|
||
|
kIdStuminlb, //!< Instruction 'stuminlb'.
|
||
|
kIdStuminh, //!< Instruction 'stuminh'.
|
||
|
kIdStuminlh, //!< Instruction 'stuminlh'.
|
||
|
kIdStur, //!< Instruction 'stur'.
|
||
|
kIdSturb, //!< Instruction 'sturb'.
|
||
|
kIdSturh, //!< Instruction 'sturh'.
|
||
|
kIdStxp, //!< Instruction 'stxp'.
|
||
|
kIdStxr, //!< Instruction 'stxr'.
|
||
|
kIdStxrb, //!< Instruction 'stxrb'.
|
||
|
kIdStxrh, //!< Instruction 'stxrh'.
|
||
|
kIdStz2g, //!< Instruction 'stz2g'.
|
||
|
kIdStzg, //!< Instruction 'stzg'.
|
||
|
kIdStzgm, //!< Instruction 'stzgm'.
|
||
|
kIdSub, //!< Instruction 'sub'.
|
||
|
kIdSubg, //!< Instruction 'subg'.
|
||
|
kIdSubp, //!< Instruction 'subp'.
|
||
|
kIdSubps, //!< Instruction 'subps'.
|
||
|
kIdSubs, //!< Instruction 'subs'.
|
||
|
kIdSvc, //!< Instruction 'svc'.
|
||
|
kIdSwp, //!< Instruction 'swp'.
|
||
|
kIdSwpa, //!< Instruction 'swpa'.
|
||
|
kIdSwpab, //!< Instruction 'swpab'.
|
||
|
kIdSwpah, //!< Instruction 'swpah'.
|
||
|
kIdSwpal, //!< Instruction 'swpal'.
|
||
|
kIdSwpalb, //!< Instruction 'swpalb'.
|
||
|
kIdSwpalh, //!< Instruction 'swpalh'.
|
||
|
kIdSwpb, //!< Instruction 'swpb'.
|
||
|
kIdSwph, //!< Instruction 'swph'.
|
||
|
kIdSwpl, //!< Instruction 'swpl'.
|
||
|
kIdSwplb, //!< Instruction 'swplb'.
|
||
|
kIdSwplh, //!< Instruction 'swplh'.
|
||
|
kIdSxtb, //!< Instruction 'sxtb'.
|
||
|
kIdSxth, //!< Instruction 'sxth'.
|
||
|
kIdSxtw, //!< Instruction 'sxtw'.
|
||
|
kIdSys, //!< Instruction 'sys'.
|
||
|
kIdTlbi, //!< Instruction 'tlbi'.
|
||
|
kIdTst, //!< Instruction 'tst'.
|
||
|
kIdTbnz, //!< Instruction 'tbnz'.
|
||
|
kIdTbz, //!< Instruction 'tbz'.
|
||
|
kIdUbfiz, //!< Instruction 'ubfiz'.
|
||
|
kIdUbfm, //!< Instruction 'ubfm'.
|
||
|
kIdUbfx, //!< Instruction 'ubfx'.
|
||
|
kIdUdf, //!< Instruction 'udf'.
|
||
|
kIdUdiv, //!< Instruction 'udiv'.
|
||
|
kIdUmaddl, //!< Instruction 'umaddl'.
|
||
|
kIdUmnegl, //!< Instruction 'umnegl'.
|
||
|
kIdUmull, //!< Instruction 'umull'.
|
||
|
kIdUmulh, //!< Instruction 'umulh'.
|
||
|
kIdUmsubl, //!< Instruction 'umsubl'.
|
||
|
kIdUxtb, //!< Instruction 'uxtb'.
|
||
|
kIdUxth, //!< Instruction 'uxth'.
|
||
|
kIdWfe, //!< Instruction 'wfe'.
|
||
|
kIdWfi, //!< Instruction 'wfi'.
|
||
|
kIdXaflag, //!< Instruction 'xaflag'.
|
||
|
kIdXpacd, //!< Instruction 'xpacd'.
|
||
|
kIdXpaci, //!< Instruction 'xpaci'.
|
||
|
kIdXpaclri, //!< Instruction 'xpaclri'.
|
||
|
kIdYield, //!< Instruction 'yield'.
|
||
|
kIdAbs_v, //!< Instruction 'abs' {ASIMD}.
|
||
|
kIdAdd_v, //!< Instruction 'add' {ASIMD}.
|
||
|
kIdAddhn_v, //!< Instruction 'addhn' {ASIMD}.
|
||
|
kIdAddhn2_v, //!< Instruction 'addhn2' {ASIMD}.
|
||
|
kIdAddp_v, //!< Instruction 'addp' {ASIMD}.
|
||
|
kIdAddv_v, //!< Instruction 'addv' {ASIMD}.
|
||
|
kIdAesd_v, //!< Instruction 'aesd' {ASIMD}.
|
||
|
kIdAese_v, //!< Instruction 'aese' {ASIMD}.
|
||
|
kIdAesimc_v, //!< Instruction 'aesimc' {ASIMD}.
|
||
|
kIdAesmc_v, //!< Instruction 'aesmc' {ASIMD}.
|
||
|
kIdAnd_v, //!< Instruction 'and' {ASIMD}.
|
||
|
kIdBcax_v, //!< Instruction 'bcax' {ASIMD}.
|
||
|
kIdBfcvt_v, //!< Instruction 'bfcvt' {ASIMD}.
|
||
|
kIdBfcvtn_v, //!< Instruction 'bfcvtn' {ASIMD}.
|
||
|
kIdBfcvtn2_v, //!< Instruction 'bfcvtn2' {ASIMD}.
|
||
|
kIdBfdot_v, //!< Instruction 'bfdot' {ASIMD}.
|
||
|
kIdBfmlalb_v, //!< Instruction 'bfmlalb' {ASIMD}.
|
||
|
kIdBfmlalt_v, //!< Instruction 'bfmlalt' {ASIMD}.
|
||
|
kIdBfmmla_v, //!< Instruction 'bfmmla' {ASIMD}.
|
||
|
kIdBic_v, //!< Instruction 'bic' {ASIMD}.
|
||
|
kIdBif_v, //!< Instruction 'bif' {ASIMD}.
|
||
|
kIdBit_v, //!< Instruction 'bit' {ASIMD}.
|
||
|
kIdBsl_v, //!< Instruction 'bsl' {ASIMD}.
|
||
|
kIdCls_v, //!< Instruction 'cls' {ASIMD}.
|
||
|
kIdClz_v, //!< Instruction 'clz' {ASIMD}.
|
||
|
kIdCmeq_v, //!< Instruction 'cmeq' {ASIMD}.
|
||
|
kIdCmge_v, //!< Instruction 'cmge' {ASIMD}.
|
||
|
kIdCmgt_v, //!< Instruction 'cmgt' {ASIMD}.
|
||
|
kIdCmhi_v, //!< Instruction 'cmhi' {ASIMD}.
|
||
|
kIdCmhs_v, //!< Instruction 'cmhs' {ASIMD}.
|
||
|
kIdCmle_v, //!< Instruction 'cmle' {ASIMD}.
|
||
|
kIdCmlt_v, //!< Instruction 'cmlt' {ASIMD}.
|
||
|
kIdCmtst_v, //!< Instruction 'cmtst' {ASIMD}.
|
||
|
kIdCnt_v, //!< Instruction 'cnt' {ASIMD}.
|
||
|
kIdDup_v, //!< Instruction 'dup' {ASIMD}.
|
||
|
kIdEor_v, //!< Instruction 'eor' {ASIMD}.
|
||
|
kIdEor3_v, //!< Instruction 'eor3' {ASIMD}.
|
||
|
kIdExt_v, //!< Instruction 'ext' {ASIMD}.
|
||
|
kIdFabd_v, //!< Instruction 'fabd' {ASIMD}.
|
||
|
kIdFabs_v, //!< Instruction 'fabs' {ASIMD}.
|
||
|
kIdFacge_v, //!< Instruction 'facge' {ASIMD}.
|
||
|
kIdFacgt_v, //!< Instruction 'facgt' {ASIMD}.
|
||
|
kIdFadd_v, //!< Instruction 'fadd' {ASIMD}.
|
||
|
kIdFaddp_v, //!< Instruction 'faddp' {ASIMD}.
|
||
|
kIdFcadd_v, //!< Instruction 'fcadd' {ASIMD}.
|
||
|
kIdFccmp_v, //!< Instruction 'fccmp' {ASIMD}.
|
||
|
kIdFccmpe_v, //!< Instruction 'fccmpe' {ASIMD}.
|
||
|
kIdFcmeq_v, //!< Instruction 'fcmeq' {ASIMD}.
|
||
|
kIdFcmge_v, //!< Instruction 'fcmge' {ASIMD}.
|
||
|
kIdFcmgt_v, //!< Instruction 'fcmgt' {ASIMD}.
|
||
|
kIdFcmla_v, //!< Instruction 'fcmla' {ASIMD}.
|
||
|
kIdFcmle_v, //!< Instruction 'fcmle' {ASIMD}.
|
||
|
kIdFcmlt_v, //!< Instruction 'fcmlt' {ASIMD}.
|
||
|
kIdFcmp_v, //!< Instruction 'fcmp' {ASIMD}.
|
||
|
kIdFcmpe_v, //!< Instruction 'fcmpe' {ASIMD}.
|
||
|
kIdFcsel_v, //!< Instruction 'fcsel' {ASIMD}.
|
||
|
kIdFcvt_v, //!< Instruction 'fcvt' {ASIMD}.
|
||
|
kIdFcvtas_v, //!< Instruction 'fcvtas' {ASIMD}.
|
||
|
kIdFcvtau_v, //!< Instruction 'fcvtau' {ASIMD}.
|
||
|
kIdFcvtl_v, //!< Instruction 'fcvtl' {ASIMD}.
|
||
|
kIdFcvtl2_v, //!< Instruction 'fcvtl2' {ASIMD}.
|
||
|
kIdFcvtms_v, //!< Instruction 'fcvtms' {ASIMD}.
|
||
|
kIdFcvtmu_v, //!< Instruction 'fcvtmu' {ASIMD}.
|
||
|
kIdFcvtn_v, //!< Instruction 'fcvtn' {ASIMD}.
|
||
|
kIdFcvtn2_v, //!< Instruction 'fcvtn2' {ASIMD}.
|
||
|
kIdFcvtns_v, //!< Instruction 'fcvtns' {ASIMD}.
|
||
|
kIdFcvtnu_v, //!< Instruction 'fcvtnu' {ASIMD}.
|
||
|
kIdFcvtps_v, //!< Instruction 'fcvtps' {ASIMD}.
|
||
|
kIdFcvtpu_v, //!< Instruction 'fcvtpu' {ASIMD}.
|
||
|
kIdFcvtxn_v, //!< Instruction 'fcvtxn' {ASIMD}.
|
||
|
kIdFcvtxn2_v, //!< Instruction 'fcvtxn2' {ASIMD}.
|
||
|
kIdFcvtzs_v, //!< Instruction 'fcvtzs' {ASIMD}.
|
||
|
kIdFcvtzu_v, //!< Instruction 'fcvtzu' {ASIMD}.
|
||
|
kIdFdiv_v, //!< Instruction 'fdiv' {ASIMD}.
|
||
|
kIdFjcvtzs_v, //!< Instruction 'fjcvtzs' {ASIMD}.
|
||
|
kIdFmadd_v, //!< Instruction 'fmadd' {ASIMD}.
|
||
|
kIdFmax_v, //!< Instruction 'fmax' {ASIMD}.
|
||
|
kIdFmaxnm_v, //!< Instruction 'fmaxnm' {ASIMD}.
|
||
|
kIdFmaxnmp_v, //!< Instruction 'fmaxnmp' {ASIMD}.
|
||
|
kIdFmaxnmv_v, //!< Instruction 'fmaxnmv' {ASIMD}.
|
||
|
kIdFmaxp_v, //!< Instruction 'fmaxp' {ASIMD}.
|
||
|
kIdFmaxv_v, //!< Instruction 'fmaxv' {ASIMD}.
|
||
|
kIdFmin_v, //!< Instruction 'fmin' {ASIMD}.
|
||
|
kIdFminnm_v, //!< Instruction 'fminnm' {ASIMD}.
|
||
|
kIdFminnmp_v, //!< Instruction 'fminnmp' {ASIMD}.
|
||
|
kIdFminnmv_v, //!< Instruction 'fminnmv' {ASIMD}.
|
||
|
kIdFminp_v, //!< Instruction 'fminp' {ASIMD}.
|
||
|
kIdFminv_v, //!< Instruction 'fminv' {ASIMD}.
|
||
|
kIdFmla_v, //!< Instruction 'fmla' {ASIMD}.
|
||
|
kIdFmlal_v, //!< Instruction 'fmlal' {ASIMD}.
|
||
|
kIdFmlal2_v, //!< Instruction 'fmlal2' {ASIMD}.
|
||
|
kIdFmls_v, //!< Instruction 'fmls' {ASIMD}.
|
||
|
kIdFmlsl_v, //!< Instruction 'fmlsl' {ASIMD}.
|
||
|
kIdFmlsl2_v, //!< Instruction 'fmlsl2' {ASIMD}.
|
||
|
kIdFmov_v, //!< Instruction 'fmov' {ASIMD}.
|
||
|
kIdFmsub_v, //!< Instruction 'fmsub' {ASIMD}.
|
||
|
kIdFmul_v, //!< Instruction 'fmul' {ASIMD}.
|
||
|
kIdFmulx_v, //!< Instruction 'fmulx' {ASIMD}.
|
||
|
kIdFneg_v, //!< Instruction 'fneg' {ASIMD}.
|
||
|
kIdFnmadd_v, //!< Instruction 'fnmadd' {ASIMD}.
|
||
|
kIdFnmsub_v, //!< Instruction 'fnmsub' {ASIMD}.
|
||
|
kIdFnmul_v, //!< Instruction 'fnmul' {ASIMD}.
|
||
|
kIdFrecpe_v, //!< Instruction 'frecpe' {ASIMD}.
|
||
|
kIdFrecps_v, //!< Instruction 'frecps' {ASIMD}.
|
||
|
kIdFrecpx_v, //!< Instruction 'frecpx' {ASIMD}.
|
||
|
kIdFrint32x_v, //!< Instruction 'frint32x' {ASIMD}.
|
||
|
kIdFrint32z_v, //!< Instruction 'frint32z' {ASIMD}.
|
||
|
kIdFrint64x_v, //!< Instruction 'frint64x' {ASIMD}.
|
||
|
kIdFrint64z_v, //!< Instruction 'frint64z' {ASIMD}.
|
||
|
kIdFrinta_v, //!< Instruction 'frinta' {ASIMD}.
|
||
|
kIdFrinti_v, //!< Instruction 'frinti' {ASIMD}.
|
||
|
kIdFrintm_v, //!< Instruction 'frintm' {ASIMD}.
|
||
|
kIdFrintn_v, //!< Instruction 'frintn' {ASIMD}.
|
||
|
kIdFrintp_v, //!< Instruction 'frintp' {ASIMD}.
|
||
|
kIdFrintx_v, //!< Instruction 'frintx' {ASIMD}.
|
||
|
kIdFrintz_v, //!< Instruction 'frintz' {ASIMD}.
|
||
|
kIdFrsqrte_v, //!< Instruction 'frsqrte' {ASIMD}.
|
||
|
kIdFrsqrts_v, //!< Instruction 'frsqrts' {ASIMD}.
|
||
|
kIdFsqrt_v, //!< Instruction 'fsqrt' {ASIMD}.
|
||
|
kIdFsub_v, //!< Instruction 'fsub' {ASIMD}.
|
||
|
kIdIns_v, //!< Instruction 'ins' {ASIMD}.
|
||
|
kIdLd1_v, //!< Instruction 'ld1' {ASIMD}.
|
||
|
kIdLd1r_v, //!< Instruction 'ld1r' {ASIMD}.
|
||
|
kIdLd2_v, //!< Instruction 'ld2' {ASIMD}.
|
||
|
kIdLd2r_v, //!< Instruction 'ld2r' {ASIMD}.
|
||
|
kIdLd3_v, //!< Instruction 'ld3' {ASIMD}.
|
||
|
kIdLd3r_v, //!< Instruction 'ld3r' {ASIMD}.
|
||
|
kIdLd4_v, //!< Instruction 'ld4' {ASIMD}.
|
||
|
kIdLd4r_v, //!< Instruction 'ld4r' {ASIMD}.
|
||
|
kIdLdnp_v, //!< Instruction 'ldnp' {ASIMD}.
|
||
|
kIdLdp_v, //!< Instruction 'ldp' {ASIMD}.
|
||
|
kIdLdr_v, //!< Instruction 'ldr' {ASIMD}.
|
||
|
kIdLdur_v, //!< Instruction 'ldur' {ASIMD}.
|
||
|
kIdMla_v, //!< Instruction 'mla' {ASIMD}.
|
||
|
kIdMls_v, //!< Instruction 'mls' {ASIMD}.
|
||
|
kIdMov_v, //!< Instruction 'mov' {ASIMD}.
|
||
|
kIdMovi_v, //!< Instruction 'movi' {ASIMD}.
|
||
|
kIdMul_v, //!< Instruction 'mul' {ASIMD}.
|
||
|
kIdMvn_v, //!< Instruction 'mvn' {ASIMD}.
|
||
|
kIdMvni_v, //!< Instruction 'mvni' {ASIMD}.
|
||
|
kIdNeg_v, //!< Instruction 'neg' {ASIMD}.
|
||
|
kIdNot_v, //!< Instruction 'not' {ASIMD}.
|
||
|
kIdOrn_v, //!< Instruction 'orn' {ASIMD}.
|
||
|
kIdOrr_v, //!< Instruction 'orr' {ASIMD}.
|
||
|
kIdPmul_v, //!< Instruction 'pmul' {ASIMD}.
|
||
|
kIdPmull_v, //!< Instruction 'pmull' {ASIMD}.
|
||
|
kIdPmull2_v, //!< Instruction 'pmull2' {ASIMD}.
|
||
|
kIdRaddhn_v, //!< Instruction 'raddhn' {ASIMD}.
|
||
|
kIdRaddhn2_v, //!< Instruction 'raddhn2' {ASIMD}.
|
||
|
kIdRax1_v, //!< Instruction 'rax1' {ASIMD}.
|
||
|
kIdRbit_v, //!< Instruction 'rbit' {ASIMD}.
|
||
|
kIdRev16_v, //!< Instruction 'rev16' {ASIMD}.
|
||
|
kIdRev32_v, //!< Instruction 'rev32' {ASIMD}.
|
||
|
kIdRev64_v, //!< Instruction 'rev64' {ASIMD}.
|
||
|
kIdRshrn_v, //!< Instruction 'rshrn' {ASIMD}.
|
||
|
kIdRshrn2_v, //!< Instruction 'rshrn2' {ASIMD}.
|
||
|
kIdRsubhn_v, //!< Instruction 'rsubhn' {ASIMD}.
|
||
|
kIdRsubhn2_v, //!< Instruction 'rsubhn2' {ASIMD}.
|
||
|
kIdSaba_v, //!< Instruction 'saba' {ASIMD}.
|
||
|
kIdSabal_v, //!< Instruction 'sabal' {ASIMD}.
|
||
|
kIdSabal2_v, //!< Instruction 'sabal2' {ASIMD}.
|
||
|
kIdSabd_v, //!< Instruction 'sabd' {ASIMD}.
|
||
|
kIdSabdl_v, //!< Instruction 'sabdl' {ASIMD}.
|
||
|
kIdSabdl2_v, //!< Instruction 'sabdl2' {ASIMD}.
|
||
|
kIdSadalp_v, //!< Instruction 'sadalp' {ASIMD}.
|
||
|
kIdSaddl_v, //!< Instruction 'saddl' {ASIMD}.
|
||
|
kIdSaddl2_v, //!< Instruction 'saddl2' {ASIMD}.
|
||
|
kIdSaddlp_v, //!< Instruction 'saddlp' {ASIMD}.
|
||
|
kIdSaddlv_v, //!< Instruction 'saddlv' {ASIMD}.
|
||
|
kIdSaddw_v, //!< Instruction 'saddw' {ASIMD}.
|
||
|
kIdSaddw2_v, //!< Instruction 'saddw2' {ASIMD}.
|
||
|
kIdScvtf_v, //!< Instruction 'scvtf' {ASIMD}.
|
||
|
kIdSdot_v, //!< Instruction 'sdot' {ASIMD}.
|
||
|
kIdSha1c_v, //!< Instruction 'sha1c' {ASIMD}.
|
||
|
kIdSha1h_v, //!< Instruction 'sha1h' {ASIMD}.
|
||
|
kIdSha1m_v, //!< Instruction 'sha1m' {ASIMD}.
|
||
|
kIdSha1p_v, //!< Instruction 'sha1p' {ASIMD}.
|
||
|
kIdSha1su0_v, //!< Instruction 'sha1su0' {ASIMD}.
|
||
|
kIdSha1su1_v, //!< Instruction 'sha1su1' {ASIMD}.
|
||
|
kIdSha256h_v, //!< Instruction 'sha256h' {ASIMD}.
|
||
|
kIdSha256h2_v, //!< Instruction 'sha256h2' {ASIMD}.
|
||
|
kIdSha256su0_v, //!< Instruction 'sha256su0' {ASIMD}.
|
||
|
kIdSha256su1_v, //!< Instruction 'sha256su1' {ASIMD}.
|
||
|
kIdSha512h_v, //!< Instruction 'sha512h' {ASIMD}.
|
||
|
kIdSha512h2_v, //!< Instruction 'sha512h2' {ASIMD}.
|
||
|
kIdSha512su0_v, //!< Instruction 'sha512su0' {ASIMD}.
|
||
|
kIdSha512su1_v, //!< Instruction 'sha512su1' {ASIMD}.
|
||
|
kIdShadd_v, //!< Instruction 'shadd' {ASIMD}.
|
||
|
kIdShl_v, //!< Instruction 'shl' {ASIMD}.
|
||
|
kIdShll_v, //!< Instruction 'shll' {ASIMD}.
|
||
|
kIdShll2_v, //!< Instruction 'shll2' {ASIMD}.
|
||
|
kIdShrn_v, //!< Instruction 'shrn' {ASIMD}.
|
||
|
kIdShrn2_v, //!< Instruction 'shrn2' {ASIMD}.
|
||
|
kIdShsub_v, //!< Instruction 'shsub' {ASIMD}.
|
||
|
kIdSli_v, //!< Instruction 'sli' {ASIMD}.
|
||
|
kIdSm3partw1_v, //!< Instruction 'sm3partw1' {ASIMD}.
|
||
|
kIdSm3partw2_v, //!< Instruction 'sm3partw2' {ASIMD}.
|
||
|
kIdSm3ss1_v, //!< Instruction 'sm3ss1' {ASIMD}.
|
||
|
kIdSm3tt1a_v, //!< Instruction 'sm3tt1a' {ASIMD}.
|
||
|
kIdSm3tt1b_v, //!< Instruction 'sm3tt1b' {ASIMD}.
|
||
|
kIdSm3tt2a_v, //!< Instruction 'sm3tt2a' {ASIMD}.
|
||
|
kIdSm3tt2b_v, //!< Instruction 'sm3tt2b' {ASIMD}.
|
||
|
kIdSm4e_v, //!< Instruction 'sm4e' {ASIMD}.
|
||
|
kIdSm4ekey_v, //!< Instruction 'sm4ekey' {ASIMD}.
|
||
|
kIdSmax_v, //!< Instruction 'smax' {ASIMD}.
|
||
|
kIdSmaxp_v, //!< Instruction 'smaxp' {ASIMD}.
|
||
|
kIdSmaxv_v, //!< Instruction 'smaxv' {ASIMD}.
|
||
|
kIdSmin_v, //!< Instruction 'smin' {ASIMD}.
|
||
|
kIdSminp_v, //!< Instruction 'sminp' {ASIMD}.
|
||
|
kIdSminv_v, //!< Instruction 'sminv' {ASIMD}.
|
||
|
kIdSmlal_v, //!< Instruction 'smlal' {ASIMD}.
|
||
|
kIdSmlal2_v, //!< Instruction 'smlal2' {ASIMD}.
|
||
|
kIdSmlsl_v, //!< Instruction 'smlsl' {ASIMD}.
|
||
|
kIdSmlsl2_v, //!< Instruction 'smlsl2' {ASIMD}.
|
||
|
kIdSmmla_v, //!< Instruction 'smmla' {ASIMD}.
|
||
|
kIdSmov_v, //!< Instruction 'smov' {ASIMD}.
|
||
|
kIdSmull_v, //!< Instruction 'smull' {ASIMD}.
|
||
|
kIdSmull2_v, //!< Instruction 'smull2' {ASIMD}.
|
||
|
kIdSqabs_v, //!< Instruction 'sqabs' {ASIMD}.
|
||
|
kIdSqadd_v, //!< Instruction 'sqadd' {ASIMD}.
|
||
|
kIdSqdmlal_v, //!< Instruction 'sqdmlal' {ASIMD}.
|
||
|
kIdSqdmlal2_v, //!< Instruction 'sqdmlal2' {ASIMD}.
|
||
|
kIdSqdmlsl_v, //!< Instruction 'sqdmlsl' {ASIMD}.
|
||
|
kIdSqdmlsl2_v, //!< Instruction 'sqdmlsl2' {ASIMD}.
|
||
|
kIdSqdmulh_v, //!< Instruction 'sqdmulh' {ASIMD}.
|
||
|
kIdSqdmull_v, //!< Instruction 'sqdmull' {ASIMD}.
|
||
|
kIdSqdmull2_v, //!< Instruction 'sqdmull2' {ASIMD}.
|
||
|
kIdSqneg_v, //!< Instruction 'sqneg' {ASIMD}.
|
||
|
kIdSqrdmlah_v, //!< Instruction 'sqrdmlah' {ASIMD}.
|
||
|
kIdSqrdmlsh_v, //!< Instruction 'sqrdmlsh' {ASIMD}.
|
||
|
kIdSqrdmulh_v, //!< Instruction 'sqrdmulh' {ASIMD}.
|
||
|
kIdSqrshl_v, //!< Instruction 'sqrshl' {ASIMD}.
|
||
|
kIdSqrshrn_v, //!< Instruction 'sqrshrn' {ASIMD}.
|
||
|
kIdSqrshrn2_v, //!< Instruction 'sqrshrn2' {ASIMD}.
|
||
|
kIdSqrshrun_v, //!< Instruction 'sqrshrun' {ASIMD}.
|
||
|
kIdSqrshrun2_v, //!< Instruction 'sqrshrun2' {ASIMD}.
|
||
|
kIdSqshl_v, //!< Instruction 'sqshl' {ASIMD}.
|
||
|
kIdSqshlu_v, //!< Instruction 'sqshlu' {ASIMD}.
|
||
|
kIdSqshrn_v, //!< Instruction 'sqshrn' {ASIMD}.
|
||
|
kIdSqshrn2_v, //!< Instruction 'sqshrn2' {ASIMD}.
|
||
|
kIdSqshrun_v, //!< Instruction 'sqshrun' {ASIMD}.
|
||
|
kIdSqshrun2_v, //!< Instruction 'sqshrun2' {ASIMD}.
|
||
|
kIdSqsub_v, //!< Instruction 'sqsub' {ASIMD}.
|
||
|
kIdSqxtn_v, //!< Instruction 'sqxtn' {ASIMD}.
|
||
|
kIdSqxtn2_v, //!< Instruction 'sqxtn2' {ASIMD}.
|
||
|
kIdSqxtun_v, //!< Instruction 'sqxtun' {ASIMD}.
|
||
|
kIdSqxtun2_v, //!< Instruction 'sqxtun2' {ASIMD}.
|
||
|
kIdSrhadd_v, //!< Instruction 'srhadd' {ASIMD}.
|
||
|
kIdSri_v, //!< Instruction 'sri' {ASIMD}.
|
||
|
kIdSrshl_v, //!< Instruction 'srshl' {ASIMD}.
|
||
|
kIdSrshr_v, //!< Instruction 'srshr' {ASIMD}.
|
||
|
kIdSrsra_v, //!< Instruction 'srsra' {ASIMD}.
|
||
|
kIdSshl_v, //!< Instruction 'sshl' {ASIMD}.
|
||
|
kIdSshll_v, //!< Instruction 'sshll' {ASIMD}.
|
||
|
kIdSshll2_v, //!< Instruction 'sshll2' {ASIMD}.
|
||
|
kIdSshr_v, //!< Instruction 'sshr' {ASIMD}.
|
||
|
kIdSsra_v, //!< Instruction 'ssra' {ASIMD}.
|
||
|
kIdSsubl_v, //!< Instruction 'ssubl' {ASIMD}.
|
||
|
kIdSsubl2_v, //!< Instruction 'ssubl2' {ASIMD}.
|
||
|
kIdSsubw_v, //!< Instruction 'ssubw' {ASIMD}.
|
||
|
kIdSsubw2_v, //!< Instruction 'ssubw2' {ASIMD}.
|
||
|
kIdSt1_v, //!< Instruction 'st1' {ASIMD}.
|
||
|
kIdSt2_v, //!< Instruction 'st2' {ASIMD}.
|
||
|
kIdSt3_v, //!< Instruction 'st3' {ASIMD}.
|
||
|
kIdSt4_v, //!< Instruction 'st4' {ASIMD}.
|
||
|
kIdStnp_v, //!< Instruction 'stnp' {ASIMD}.
|
||
|
kIdStp_v, //!< Instruction 'stp' {ASIMD}.
|
||
|
kIdStr_v, //!< Instruction 'str' {ASIMD}.
|
||
|
kIdStur_v, //!< Instruction 'stur' {ASIMD}.
|
||
|
kIdSub_v, //!< Instruction 'sub' {ASIMD}.
|
||
|
kIdSubhn_v, //!< Instruction 'subhn' {ASIMD}.
|
||
|
kIdSubhn2_v, //!< Instruction 'subhn2' {ASIMD}.
|
||
|
kIdSudot_v, //!< Instruction 'sudot' {ASIMD}.
|
||
|
kIdSuqadd_v, //!< Instruction 'suqadd' {ASIMD}.
|
||
|
kIdSxtl_v, //!< Instruction 'sxtl' {ASIMD}.
|
||
|
kIdSxtl2_v, //!< Instruction 'sxtl2' {ASIMD}.
|
||
|
kIdTbl_v, //!< Instruction 'tbl' {ASIMD}.
|
||
|
kIdTbx_v, //!< Instruction 'tbx' {ASIMD}.
|
||
|
kIdTrn1_v, //!< Instruction 'trn1' {ASIMD}.
|
||
|
kIdTrn2_v, //!< Instruction 'trn2' {ASIMD}.
|
||
|
kIdUaba_v, //!< Instruction 'uaba' {ASIMD}.
|
||
|
kIdUabal_v, //!< Instruction 'uabal' {ASIMD}.
|
||
|
kIdUabal2_v, //!< Instruction 'uabal2' {ASIMD}.
|
||
|
kIdUabd_v, //!< Instruction 'uabd' {ASIMD}.
|
||
|
kIdUabdl_v, //!< Instruction 'uabdl' {ASIMD}.
|
||
|
kIdUabdl2_v, //!< Instruction 'uabdl2' {ASIMD}.
|
||
|
kIdUadalp_v, //!< Instruction 'uadalp' {ASIMD}.
|
||
|
kIdUaddl_v, //!< Instruction 'uaddl' {ASIMD}.
|
||
|
kIdUaddl2_v, //!< Instruction 'uaddl2' {ASIMD}.
|
||
|
kIdUaddlp_v, //!< Instruction 'uaddlp' {ASIMD}.
|
||
|
kIdUaddlv_v, //!< Instruction 'uaddlv' {ASIMD}.
|
||
|
kIdUaddw_v, //!< Instruction 'uaddw' {ASIMD}.
|
||
|
kIdUaddw2_v, //!< Instruction 'uaddw2' {ASIMD}.
|
||
|
kIdUcvtf_v, //!< Instruction 'ucvtf' {ASIMD}.
|
||
|
kIdUdot_v, //!< Instruction 'udot' {ASIMD}.
|
||
|
kIdUhadd_v, //!< Instruction 'uhadd' {ASIMD}.
|
||
|
kIdUhsub_v, //!< Instruction 'uhsub' {ASIMD}.
|
||
|
kIdUmax_v, //!< Instruction 'umax' {ASIMD}.
|
||
|
kIdUmaxp_v, //!< Instruction 'umaxp' {ASIMD}.
|
||
|
kIdUmaxv_v, //!< Instruction 'umaxv' {ASIMD}.
|
||
|
kIdUmin_v, //!< Instruction 'umin' {ASIMD}.
|
||
|
kIdUminp_v, //!< Instruction 'uminp' {ASIMD}.
|
||
|
kIdUminv_v, //!< Instruction 'uminv' {ASIMD}.
|
||
|
kIdUmlal_v, //!< Instruction 'umlal' {ASIMD}.
|
||
|
kIdUmlal2_v, //!< Instruction 'umlal2' {ASIMD}.
|
||
|
kIdUmlsl_v, //!< Instruction 'umlsl' {ASIMD}.
|
||
|
kIdUmlsl2_v, //!< Instruction 'umlsl2' {ASIMD}.
|
||
|
kIdUmmla_v, //!< Instruction 'ummla' {ASIMD}.
|
||
|
kIdUmov_v, //!< Instruction 'umov' {ASIMD}.
|
||
|
kIdUmull_v, //!< Instruction 'umull' {ASIMD}.
|
||
|
kIdUmull2_v, //!< Instruction 'umull2' {ASIMD}.
|
||
|
kIdUqadd_v, //!< Instruction 'uqadd' {ASIMD}.
|
||
|
kIdUqrshl_v, //!< Instruction 'uqrshl' {ASIMD}.
|
||
|
kIdUqrshrn_v, //!< Instruction 'uqrshrn' {ASIMD}.
|
||
|
kIdUqrshrn2_v, //!< Instruction 'uqrshrn2' {ASIMD}.
|
||
|
kIdUqshl_v, //!< Instruction 'uqshl' {ASIMD}.
|
||
|
kIdUqshrn_v, //!< Instruction 'uqshrn' {ASIMD}.
|
||
|
kIdUqshrn2_v, //!< Instruction 'uqshrn2' {ASIMD}.
|
||
|
kIdUqsub_v, //!< Instruction 'uqsub' {ASIMD}.
|
||
|
kIdUqxtn_v, //!< Instruction 'uqxtn' {ASIMD}.
|
||
|
kIdUqxtn2_v, //!< Instruction 'uqxtn2' {ASIMD}.
|
||
|
kIdUrecpe_v, //!< Instruction 'urecpe' {ASIMD}.
|
||
|
kIdUrhadd_v, //!< Instruction 'urhadd' {ASIMD}.
|
||
|
kIdUrshl_v, //!< Instruction 'urshl' {ASIMD}.
|
||
|
kIdUrshr_v, //!< Instruction 'urshr' {ASIMD}.
|
||
|
kIdUrsqrte_v, //!< Instruction 'ursqrte' {ASIMD}.
|
||
|
kIdUrsra_v, //!< Instruction 'ursra' {ASIMD}.
|
||
|
kIdUsdot_v, //!< Instruction 'usdot' {ASIMD}.
|
||
|
kIdUshl_v, //!< Instruction 'ushl' {ASIMD}.
|
||
|
kIdUshll_v, //!< Instruction 'ushll' {ASIMD}.
|
||
|
kIdUshll2_v, //!< Instruction 'ushll2' {ASIMD}.
|
||
|
kIdUshr_v, //!< Instruction 'ushr' {ASIMD}.
|
||
|
kIdUsmmla_v, //!< Instruction 'usmmla' {ASIMD}.
|
||
|
kIdUsqadd_v, //!< Instruction 'usqadd' {ASIMD}.
|
||
|
kIdUsra_v, //!< Instruction 'usra' {ASIMD}.
|
||
|
kIdUsubl_v, //!< Instruction 'usubl' {ASIMD}.
|
||
|
kIdUsubl2_v, //!< Instruction 'usubl2' {ASIMD}.
|
||
|
kIdUsubw_v, //!< Instruction 'usubw' {ASIMD}.
|
||
|
kIdUsubw2_v, //!< Instruction 'usubw2' {ASIMD}.
|
||
|
kIdUxtl_v, //!< Instruction 'uxtl' {ASIMD}.
|
||
|
kIdUxtl2_v, //!< Instruction 'uxtl2' {ASIMD}.
|
||
|
kIdUzp1_v, //!< Instruction 'uzp1' {ASIMD}.
|
||
|
kIdUzp2_v, //!< Instruction 'uzp2' {ASIMD}.
|
||
|
kIdXar_v, //!< Instruction 'xar' {ASIMD}.
|
||
|
kIdXtn_v, //!< Instruction 'xtn' {ASIMD}.
|
||
|
kIdXtn2_v, //!< Instruction 'xtn2' {ASIMD}.
|
||
|
kIdZip1_v, //!< Instruction 'zip1' {ASIMD}.
|
||
|
kIdZip2_v, //!< Instruction 'zip2' {ASIMD}.
|
||
|
_kIdCount
|
||
|
// ${InstId:End}
|
||
|
};
|
||
|
|
||
|
//! Tests whether the `instId` is defined (counts also Inst::kIdNone, which must be zero).
|
||
|
static inline bool isDefinedId(InstId instId) noexcept { return (instId & uint32_t(InstIdParts::kRealId)) < _kIdCount; }
|
||
|
};
|
||
|
|
||
|
namespace Predicate {
|
||
|
|
||
|
//! Address translate options (AT).
|
||
|
namespace AT {
|
||
|
static inline constexpr uint32_t encode(uint32_t op1, uint32_t cRn, uint32_t cRm, uint32_t op2) noexcept {
|
||
|
return (op1 << 11) | (cRn << 7) | (cRm << 3) | (op2 << 0);
|
||
|
}
|
||
|
|
||
|
enum Value : uint32_t {
|
||
|
kS1E1R = encode(0b000, 0b0111, 0b1000, 0b000),
|
||
|
kS1E2R = encode(0b100, 0b0111, 0b1000, 0b000),
|
||
|
kS1E3R = encode(0b110, 0b0111, 0b1000, 0b000),
|
||
|
kS1E1W = encode(0b000, 0b0111, 0b1000, 0b001),
|
||
|
kS1E2W = encode(0b100, 0b0111, 0b1000, 0b001),
|
||
|
kS1E3W = encode(0b110, 0b0111, 0b1000, 0b001),
|
||
|
kS1E0R = encode(0b000, 0b0111, 0b1000, 0b010),
|
||
|
kS1E0W = encode(0b000, 0b0111, 0b1000, 0b011),
|
||
|
kS12E1R = encode(0b100, 0b0111, 0b1000, 0b100),
|
||
|
kS12E1W = encode(0b100, 0b0111, 0b1000, 0b101),
|
||
|
kS12E0R = encode(0b100, 0b0111, 0b1000, 0b110),
|
||
|
kS12E0W = encode(0b100, 0b0111, 0b1000, 0b111),
|
||
|
kS1E1RP = encode(0b000, 0b0111, 0b1001, 0b000),
|
||
|
kS1E1WP = encode(0b000, 0b0111, 0b1001, 0b001)
|
||
|
};
|
||
|
}
|
||
|
|
||
|
//! Data barrier options (DMB/DSB).
|
||
|
namespace DB {
|
||
|
//! Data barrier immediate values.
|
||
|
enum Value : uint32_t {
|
||
|
//! Waits only for loads to complete, and only applies to the outer shareable domain.
|
||
|
kOSHLD = 0x01u,
|
||
|
//! Waits only for stores to complete, and only applies to the outer shareable domain.
|
||
|
kOSHST = 0x02u,
|
||
|
//! Only applies to the outer shareable domain.
|
||
|
kOSH = 0x03u,
|
||
|
|
||
|
//! Waits only for loads to complete and only applies out to the point of unification.
|
||
|
kNSHLD = 0x05u,
|
||
|
//! Waits only for stores to complete and only applies out to the point of unification.
|
||
|
kNSHST = 0x06u,
|
||
|
//! Only applies out to the point of unification.
|
||
|
kNSH = 0x07u,
|
||
|
|
||
|
//! Waits only for loads to complete, and only applies to the inner shareable domain.
|
||
|
kISHLD = 0x09u,
|
||
|
//! Waits only for stores to complete, and only applies to the inner shareable domain.
|
||
|
kISHST = 0x0Au,
|
||
|
//! Only applies to the inner shareable domain.
|
||
|
kISH = 0x0Bu,
|
||
|
|
||
|
//! Waits only for loads to complete.
|
||
|
kLD = 0x0Du,
|
||
|
//! Waits only for stores to complete.
|
||
|
kST = 0x0Eu,
|
||
|
//! Full system memory barrier operation.
|
||
|
kSY = 0x0Fu
|
||
|
};
|
||
|
}
|
||
|
|
||
|
//! Data cache maintenance options.
|
||
|
namespace DC {
|
||
|
static inline constexpr uint32_t encode(uint32_t op1, uint32_t cRn, uint32_t cRm, uint32_t op2) noexcept {
|
||
|
return (op1 << 11) | (cRn << 7) | (cRm << 3) | (op2 << 0);
|
||
|
}
|
||
|
|
||
|
//! Data cache maintenance immediate values.
|
||
|
enum Value : uint32_t {
|
||
|
kZVA = encode(0b011, 0b0111, 0b0100, 0b001),
|
||
|
kIVAC = encode(0b000, 0b0111, 0b0110, 0b001),
|
||
|
kISW = encode(0b000, 0b0111, 0b0110, 0b010),
|
||
|
kCVAC = encode(0b011, 0b0111, 0b1010, 0b001),
|
||
|
kCSW = encode(0b000, 0b0111, 0b1010, 0b010),
|
||
|
kCVAU = encode(0b011, 0b0111, 0b1011, 0b001),
|
||
|
kCIVAC = encode(0b011, 0b0111, 0b1110, 0b001),
|
||
|
kCISW = encode(0b000, 0b0111, 0b1110, 0b010),
|
||
|
kCVAP = encode(0b011, 0b0111, 0b1100, 0b001),
|
||
|
kCVADP = encode(0b011, 0b0111, 0b1101, 0b001),
|
||
|
kIGVAC = encode(0b000, 0b0111, 0b0110, 0b011),
|
||
|
kIGSW = encode(0b000, 0b0111, 0b0110, 0b100),
|
||
|
kCGSW = encode(0b000, 0b0111, 0b1010, 0b100),
|
||
|
kCIGSW = encode(0b000, 0b0111, 0b1110, 0b100),
|
||
|
kCGVAC = encode(0b011, 0b0111, 0b1010, 0b011),
|
||
|
kCGVAP = encode(0b011, 0b0111, 0b1100, 0b011),
|
||
|
kCGVADP = encode(0b011, 0b0111, 0b1101, 0b011),
|
||
|
kCIGVAC = encode(0b011, 0b0111, 0b1110, 0b011),
|
||
|
kGVA = encode(0b011, 0b0111, 0b0100, 0b011),
|
||
|
kIGDVAC = encode(0b000, 0b0111, 0b0110, 0b101),
|
||
|
kIGDSW = encode(0b000, 0b0111, 0b0110, 0b110),
|
||
|
kCGDSW = encode(0b000, 0b0111, 0b1010, 0b110),
|
||
|
kCIGDSW = encode(0b000, 0b0111, 0b1110, 0b110),
|
||
|
kCGDVAC = encode(0b011, 0b0111, 0b1010, 0b101),
|
||
|
kCGDVAP = encode(0b011, 0b0111, 0b1100, 0b101),
|
||
|
kCGDVADP = encode(0b011, 0b0111, 0b1101, 0b101),
|
||
|
kCIGDVAC = encode(0b011, 0b0111, 0b1110, 0b101),
|
||
|
kGZVA = encode(0b011, 0b0111, 0b0100, 0b100)
|
||
|
};
|
||
|
}
|
||
|
|
||
|
//! Instruction cache maintenance options.
|
||
|
namespace IC {
|
||
|
static inline constexpr uint32_t encode(uint32_t op1, uint32_t cRn, uint32_t cRm, uint32_t op2) noexcept {
|
||
|
return (op1 << 11) | (cRn << 7) | (cRm << 3) | (op2 << 0);
|
||
|
}
|
||
|
|
||
|
//! Instruction cache maintenance immediate values.
|
||
|
enum Value : uint32_t {
|
||
|
kIALLUIS = encode(0b000, 0b0111, 0b0001, 0b000),
|
||
|
kIALLU = encode(0b000, 0b0111, 0b0101, 0b000),
|
||
|
kIVAU = encode(0b011, 0b0111, 0b0101, 0b001)
|
||
|
};
|
||
|
}
|
||
|
|
||
|
//! Instruction-fetch barrier options.
|
||
|
namespace ISB {
|
||
|
//! Instruction-fetch barrier immediate values.
|
||
|
enum Value : uint32_t {
|
||
|
kSY = 0xF
|
||
|
};
|
||
|
}
|
||
|
|
||
|
//! Prefetch options.
|
||
|
namespace PRFOp {
|
||
|
//! Prefetch immediate values.
|
||
|
enum Value : uint32_t {
|
||
|
kPLDL1KEEP = 0x00,
|
||
|
kPLDL1STRM = 0x01,
|
||
|
kPLDL2KEEP = 0x02,
|
||
|
kPLDL2STRM = 0x03,
|
||
|
kPLDL3KEEP = 0x04,
|
||
|
kPLDL3STRM = 0x05,
|
||
|
kPLIL1KEEP = 0x08,
|
||
|
kPLIL1STRM = 0x09,
|
||
|
kPLIL2KEEP = 0x0A,
|
||
|
kPLIL2STRM = 0x0B,
|
||
|
kPLIL3KEEP = 0x0C,
|
||
|
kPLIL3STRM = 0x0D,
|
||
|
kPSTL1KEEP = 0x10,
|
||
|
kPSTL1STRM = 0x11,
|
||
|
kPSTL2KEEP = 0x12,
|
||
|
kPSTL2STRM = 0x13,
|
||
|
kPSTL3KEEP = 0x14,
|
||
|
kPSTL3STRM = 0x15
|
||
|
};
|
||
|
}
|
||
|
|
||
|
//! PSB instruction options.
|
||
|
namespace PSB {
|
||
|
//! PSB immediate values.
|
||
|
enum Value : uint32_t {
|
||
|
kCSYNC = 0x11u
|
||
|
};
|
||
|
}
|
||
|
|
||
|
namespace TLBI {
|
||
|
static inline constexpr uint32_t encode(uint32_t op1, uint32_t cRn, uint32_t cRm, uint32_t op2) noexcept {
|
||
|
return (op1 << 11) | (cRn << 7) | (cRm << 3) | (op2 << 0);
|
||
|
}
|
||
|
|
||
|
enum Value : uint32_t {
|
||
|
kIPAS2E1IS = encode(0b100, 0b1000, 0b0000, 0b001),
|
||
|
kIPAS2LE1IS = encode(0b100, 0b1000, 0b0000, 0b101),
|
||
|
kVMALLE1IS = encode(0b000, 0b1000, 0b0011, 0b000),
|
||
|
kALLE2IS = encode(0b100, 0b1000, 0b0011, 0b000),
|
||
|
kALLE3IS = encode(0b110, 0b1000, 0b0011, 0b000),
|
||
|
kVAE1IS = encode(0b000, 0b1000, 0b0011, 0b001),
|
||
|
kVAE2IS = encode(0b100, 0b1000, 0b0011, 0b001),
|
||
|
kVAE3IS = encode(0b110, 0b1000, 0b0011, 0b001),
|
||
|
kASIDE1IS = encode(0b000, 0b1000, 0b0011, 0b010),
|
||
|
kVAAE1IS = encode(0b000, 0b1000, 0b0011, 0b011),
|
||
|
kALLE1IS = encode(0b100, 0b1000, 0b0011, 0b100),
|
||
|
kVALE1IS = encode(0b000, 0b1000, 0b0011, 0b101),
|
||
|
kVALE2IS = encode(0b100, 0b1000, 0b0011, 0b101),
|
||
|
kVALE3IS = encode(0b110, 0b1000, 0b0011, 0b101),
|
||
|
kVMALLS12E1IS = encode(0b100, 0b1000, 0b0011, 0b110),
|
||
|
kVAALE1IS = encode(0b000, 0b1000, 0b0011, 0b111),
|
||
|
kIPAS2E1 = encode(0b100, 0b1000, 0b0100, 0b001),
|
||
|
kIPAS2LE1 = encode(0b100, 0b1000, 0b0100, 0b101),
|
||
|
kVMALLE1 = encode(0b000, 0b1000, 0b0111, 0b000),
|
||
|
kALLE2 = encode(0b100, 0b1000, 0b0111, 0b000),
|
||
|
kALLE3 = encode(0b110, 0b1000, 0b0111, 0b000),
|
||
|
kVAE1 = encode(0b000, 0b1000, 0b0111, 0b001),
|
||
|
kVAE2 = encode(0b100, 0b1000, 0b0111, 0b001),
|
||
|
kVAE3 = encode(0b110, 0b1000, 0b0111, 0b001),
|
||
|
kASIDE1 = encode(0b000, 0b1000, 0b0111, 0b010),
|
||
|
kVAAE1 = encode(0b000, 0b1000, 0b0111, 0b011),
|
||
|
kALLE1 = encode(0b100, 0b1000, 0b0111, 0b100),
|
||
|
kVALE1 = encode(0b000, 0b1000, 0b0111, 0b101),
|
||
|
kVALE2 = encode(0b100, 0b1000, 0b0111, 0b101),
|
||
|
kVALE3 = encode(0b110, 0b1000, 0b0111, 0b101),
|
||
|
kVMALLS12E1 = encode(0b100, 0b1000, 0b0111, 0b110),
|
||
|
kVAALE1 = encode(0b000, 0b1000, 0b0111, 0b111),
|
||
|
|
||
|
kVMALLE1OS = encode(0b000, 0b1000, 0b0001, 0b000),
|
||
|
kVAE1OS = encode(0b000, 0b1000, 0b0001, 0b001),
|
||
|
kASIDE1OS = encode(0b000, 0b1000, 0b0001, 0b010),
|
||
|
kVAAE1OS = encode(0b000, 0b1000, 0b0001, 0b011),
|
||
|
kVALE1OS = encode(0b000, 0b1000, 0b0001, 0b101),
|
||
|
kVAALE1OS = encode(0b000, 0b1000, 0b0001, 0b111),
|
||
|
kIPAS2E1OS = encode(0b100, 0b1000, 0b0100, 0b000),
|
||
|
kIPAS2LE1OS = encode(0b100, 0b1000, 0b0100, 0b100),
|
||
|
kVAE2OS = encode(0b100, 0b1000, 0b0001, 0b001),
|
||
|
kVALE2OS = encode(0b100, 0b1000, 0b0001, 0b101),
|
||
|
kVMALLS12E1OS = encode(0b100, 0b1000, 0b0001, 0b110),
|
||
|
kVAE3OS = encode(0b110, 0b1000, 0b0001, 0b001),
|
||
|
kVALE3OS = encode(0b110, 0b1000, 0b0001, 0b101),
|
||
|
kALLE2OS = encode(0b100, 0b1000, 0b0001, 0b000),
|
||
|
kALLE1OS = encode(0b100, 0b1000, 0b0001, 0b100),
|
||
|
kALLE3OS = encode(0b110, 0b1000, 0b0001, 0b000),
|
||
|
|
||
|
kRVAE1 = encode(0b000, 0b1000, 0b0110, 0b001),
|
||
|
kRVAAE1 = encode(0b000, 0b1000, 0b0110, 0b011),
|
||
|
kRVALE1 = encode(0b000, 0b1000, 0b0110, 0b101),
|
||
|
kRVAALE1 = encode(0b000, 0b1000, 0b0110, 0b111),
|
||
|
kRVAE1IS = encode(0b000, 0b1000, 0b0010, 0b001),
|
||
|
kRVAAE1IS = encode(0b000, 0b1000, 0b0010, 0b011),
|
||
|
kRVALE1IS = encode(0b000, 0b1000, 0b0010, 0b101),
|
||
|
kRVAALE1IS = encode(0b000, 0b1000, 0b0010, 0b111),
|
||
|
kRVAE1OS = encode(0b000, 0b1000, 0b0101, 0b001),
|
||
|
kRVAAE1OS = encode(0b000, 0b1000, 0b0101, 0b011),
|
||
|
kRVALE1OS = encode(0b000, 0b1000, 0b0101, 0b101),
|
||
|
kRVAALE1OS = encode(0b000, 0b1000, 0b0101, 0b111),
|
||
|
kRIPAS2E1IS = encode(0b100, 0b1000, 0b0000, 0b010),
|
||
|
kRIPAS2LE1IS = encode(0b100, 0b1000, 0b0000, 0b110),
|
||
|
kRIPAS2E1 = encode(0b100, 0b1000, 0b0100, 0b010),
|
||
|
kRIPAS2LE1 = encode(0b100, 0b1000, 0b0100, 0b110),
|
||
|
kRIPAS2E1OS = encode(0b100, 0b1000, 0b0100, 0b011),
|
||
|
kRIPAS2LE1OS = encode(0b100, 0b1000, 0b0100, 0b111),
|
||
|
kRVAE2 = encode(0b100, 0b1000, 0b0110, 0b001),
|
||
|
kRVALE2 = encode(0b100, 0b1000, 0b0110, 0b101),
|
||
|
kRVAE2IS = encode(0b100, 0b1000, 0b0010, 0b001),
|
||
|
kRVALE2IS = encode(0b100, 0b1000, 0b0010, 0b101),
|
||
|
kRVAE2OS = encode(0b100, 0b1000, 0b0101, 0b001),
|
||
|
kRVALE2OS = encode(0b100, 0b1000, 0b0101, 0b101),
|
||
|
kRVAE3 = encode(0b110, 0b1000, 0b0110, 0b001),
|
||
|
kRVALE3 = encode(0b110, 0b1000, 0b0110, 0b101),
|
||
|
kRVAE3IS = encode(0b110, 0b1000, 0b0010, 0b001),
|
||
|
kRVALE3IS = encode(0b110, 0b1000, 0b0010, 0b101),
|
||
|
kRVAE3OS = encode(0b110, 0b1000, 0b0101, 0b001),
|
||
|
kRVALE3OS = encode(0b110, 0b1000, 0b0101, 0b101),
|
||
|
};
|
||
|
}
|
||
|
|
||
|
//! Trace synchronization barrier options.
|
||
|
namespace TSB {
|
||
|
//! Trace synchronization immediate values.
|
||
|
enum Value : uint32_t {
|
||
|
kCSYNC = 0
|
||
|
};
|
||
|
}
|
||
|
|
||
|
//! Processor state access through MSR.
|
||
|
namespace PState {
|
||
|
//! Encodes a pstate from `op0` and `op1`.
|
||
|
static inline constexpr uint32_t encode(uint32_t op0, uint32_t op1) noexcept {
|
||
|
return (op0 << 3) | (op1 << 0);
|
||
|
}
|
||
|
|
||
|
//! Processor state access immediates.
|
||
|
enum Value : uint32_t {
|
||
|
kSPSel = encode(0b000, 0b101),
|
||
|
kDAIFSet = encode(0b011, 0b110),
|
||
|
kDAIFClr = encode(0b011, 0b111),
|
||
|
kPAN = encode(0b000, 0b100),
|
||
|
kUAO = encode(0b000, 0b011),
|
||
|
kDIT = encode(0b011, 0b010),
|
||
|
kSSBS = encode(0b011, 0b001),
|
||
|
kTCO = encode(0b011, 0b100)
|
||
|
};
|
||
|
};
|
||
|
|
||
|
//! System register identifiers and utilities (MSR/MRS).
|
||
|
namespace SysReg {
|
||
|
//! System register fields.
|
||
|
struct Fields {
|
||
|
uint8_t op0;
|
||
|
uint8_t op1;
|
||
|
uint8_t cRn;
|
||
|
uint8_t cRm;
|
||
|
uint8_t op2;
|
||
|
};
|
||
|
|
||
|
//! Encodes a system register from `op0`, `op1`, `cRn`, `cRm`, and `op2` fields.
|
||
|
static inline constexpr uint32_t encode(uint32_t op0, uint32_t op1, uint32_t cRn, uint32_t cRm, uint32_t op2) noexcept {
|
||
|
return (op0 << 14) | (op1 << 11) | (cRn << 7) | (cRm << 3) | (op2 << 0);
|
||
|
}
|
||
|
|
||
|
//! Encodes a system register from `fields`.
|
||
|
static inline constexpr uint32_t encode(const Fields& fields) noexcept {
|
||
|
return encode(fields.op0, fields.op1, fields.cRn, fields.cRm, fields.op2);
|
||
|
}
|
||
|
|
||
|
//! Decodes a system register to \ref Fields.
|
||
|
static inline constexpr Fields decode(uint32_t id) noexcept {
|
||
|
return Fields {
|
||
|
uint8_t((id >> 14) & 0x3u),
|
||
|
uint8_t((id >> 11) & 0x7u),
|
||
|
uint8_t((id >> 7) & 0xFu),
|
||
|
uint8_t((id >> 3) & 0xFu),
|
||
|
uint8_t((id >> 0) & 0x7u)
|
||
|
};
|
||
|
}
|
||
|
|
||
|
//! System register identifiers.
|
||
|
enum Id : uint32_t {
|
||
|
kACTLR_EL1 = encode(0b11, 0b000, 0b0001, 0b0000, 0b001), // RW
|
||
|
kACTLR_EL2 = encode(0b11, 0b100, 0b0001, 0b0000, 0b001), // RW
|
||
|
kACTLR_EL3 = encode(0b11, 0b110, 0b0001, 0b0000, 0b001), // RW
|
||
|
kAFSR0_EL1 = encode(0b11, 0b000, 0b0101, 0b0001, 0b000), // RW
|
||
|
kAFSR0_EL12 = encode(0b11, 0b101, 0b0101, 0b0001, 0b000), // RW
|
||
|
kAFSR0_EL2 = encode(0b11, 0b100, 0b0101, 0b0001, 0b000), // RW
|
||
|
kAFSR0_EL3 = encode(0b11, 0b110, 0b0101, 0b0001, 0b000), // RW
|
||
|
kAFSR1_EL1 = encode(0b11, 0b000, 0b0101, 0b0001, 0b001), // RW
|
||
|
kAFSR1_EL12 = encode(0b11, 0b101, 0b0101, 0b0001, 0b001), // RW
|
||
|
kAFSR1_EL2 = encode(0b11, 0b100, 0b0101, 0b0001, 0b001), // RW
|
||
|
kAFSR1_EL3 = encode(0b11, 0b110, 0b0101, 0b0001, 0b001), // RW
|
||
|
kAIDR_EL1 = encode(0b11, 0b001, 0b0000, 0b0000, 0b111), // RO
|
||
|
kAMAIR_EL1 = encode(0b11, 0b000, 0b1010, 0b0011, 0b000), // RW
|
||
|
kAMAIR_EL12 = encode(0b11, 0b101, 0b1010, 0b0011, 0b000), // RW
|
||
|
kAMAIR_EL2 = encode(0b11, 0b100, 0b1010, 0b0011, 0b000), // RW
|
||
|
kAMAIR_EL3 = encode(0b11, 0b110, 0b1010, 0b0011, 0b000), // RW
|
||
|
kAMCFGR_EL0 = encode(0b11, 0b011, 0b1101, 0b0010, 0b001), // RO
|
||
|
kAMCGCR_EL0 = encode(0b11, 0b011, 0b1101, 0b0010, 0b010), // RO
|
||
|
kAMCNTENCLR0_EL0 = encode(0b11, 0b011, 0b1101, 0b0010, 0b100), // RW
|
||
|
kAMCNTENCLR1_EL0 = encode(0b11, 0b011, 0b1101, 0b0011, 0b000), // RW
|
||
|
kAMCNTENSET0_EL0 = encode(0b11, 0b011, 0b1101, 0b0010, 0b101), // RW
|
||
|
kAMCNTENSET1_EL0 = encode(0b11, 0b011, 0b1101, 0b0011, 0b001), // RW
|
||
|
kAMCR_EL0 = encode(0b11, 0b011, 0b1101, 0b0010, 0b000), // RW
|
||
|
kAMEVCNTR00_EL0 = encode(0b11, 0b011, 0b1101, 0b0100, 0b000), // RW
|
||
|
kAMEVCNTR01_EL0 = encode(0b11, 0b011, 0b1101, 0b0100, 0b001), // RW
|
||
|
kAMEVCNTR02_EL0 = encode(0b11, 0b011, 0b1101, 0b0100, 0b010), // RW
|
||
|
kAMEVCNTR03_EL0 = encode(0b11, 0b011, 0b1101, 0b0100, 0b011), // RW
|
||
|
kAMEVCNTR10_EL0 = encode(0b11, 0b011, 0b1101, 0b1100, 0b000), // RW
|
||
|
kAMEVCNTR110_EL0 = encode(0b11, 0b011, 0b1101, 0b1101, 0b010), // RW
|
||
|
kAMEVCNTR111_EL0 = encode(0b11, 0b011, 0b1101, 0b1101, 0b011), // RW
|
||
|
kAMEVCNTR112_EL0 = encode(0b11, 0b011, 0b1101, 0b1101, 0b100), // RW
|
||
|
kAMEVCNTR113_EL0 = encode(0b11, 0b011, 0b1101, 0b1101, 0b101), // RW
|
||
|
kAMEVCNTR114_EL0 = encode(0b11, 0b011, 0b1101, 0b1101, 0b110), // RW
|
||
|
kAMEVCNTR115_EL0 = encode(0b11, 0b011, 0b1101, 0b1101, 0b111), // RW
|
||
|
kAMEVCNTR11_EL0 = encode(0b11, 0b011, 0b1101, 0b1100, 0b001), // RW
|
||
|
kAMEVCNTR12_EL0 = encode(0b11, 0b011, 0b1101, 0b1100, 0b010), // RW
|
||
|
kAMEVCNTR13_EL0 = encode(0b11, 0b011, 0b1101, 0b1100, 0b011), // RW
|
||
|
kAMEVCNTR14_EL0 = encode(0b11, 0b011, 0b1101, 0b1100, 0b100), // RW
|
||
|
kAMEVCNTR15_EL0 = encode(0b11, 0b011, 0b1101, 0b1100, 0b101), // RW
|
||
|
kAMEVCNTR16_EL0 = encode(0b11, 0b011, 0b1101, 0b1100, 0b110), // RW
|
||
|
kAMEVCNTR17_EL0 = encode(0b11, 0b011, 0b1101, 0b1100, 0b111), // RW
|
||
|
kAMEVCNTR18_EL0 = encode(0b11, 0b011, 0b1101, 0b1101, 0b000), // RW
|
||
|
kAMEVCNTR19_EL0 = encode(0b11, 0b011, 0b1101, 0b1101, 0b001), // RW
|
||
|
kAMEVTYPER00_EL0 = encode(0b11, 0b011, 0b1101, 0b0110, 0b000), // RO
|
||
|
kAMEVTYPER01_EL0 = encode(0b11, 0b011, 0b1101, 0b0110, 0b001), // RO
|
||
|
kAMEVTYPER02_EL0 = encode(0b11, 0b011, 0b1101, 0b0110, 0b010), // RO
|
||
|
kAMEVTYPER03_EL0 = encode(0b11, 0b011, 0b1101, 0b0110, 0b011), // RO
|
||
|
kAMEVTYPER10_EL0 = encode(0b11, 0b011, 0b1101, 0b1110, 0b000), // RW
|
||
|
kAMEVTYPER110_EL0 = encode(0b11, 0b011, 0b1101, 0b1111, 0b010), // RW
|
||
|
kAMEVTYPER111_EL0 = encode(0b11, 0b011, 0b1101, 0b1111, 0b011), // RW
|
||
|
kAMEVTYPER112_EL0 = encode(0b11, 0b011, 0b1101, 0b1111, 0b100), // RW
|
||
|
kAMEVTYPER113_EL0 = encode(0b11, 0b011, 0b1101, 0b1111, 0b101), // RW
|
||
|
kAMEVTYPER114_EL0 = encode(0b11, 0b011, 0b1101, 0b1111, 0b110), // RW
|
||
|
kAMEVTYPER115_EL0 = encode(0b11, 0b011, 0b1101, 0b1111, 0b111), // RW
|
||
|
kAMEVTYPER11_EL0 = encode(0b11, 0b011, 0b1101, 0b1110, 0b001), // RW
|
||
|
kAMEVTYPER12_EL0 = encode(0b11, 0b011, 0b1101, 0b1110, 0b010), // RW
|
||
|
kAMEVTYPER13_EL0 = encode(0b11, 0b011, 0b1101, 0b1110, 0b011), // RW
|
||
|
kAMEVTYPER14_EL0 = encode(0b11, 0b011, 0b1101, 0b1110, 0b100), // RW
|
||
|
kAMEVTYPER15_EL0 = encode(0b11, 0b011, 0b1101, 0b1110, 0b101), // RW
|
||
|
kAMEVTYPER16_EL0 = encode(0b11, 0b011, 0b1101, 0b1110, 0b110), // RW
|
||
|
kAMEVTYPER17_EL0 = encode(0b11, 0b011, 0b1101, 0b1110, 0b111), // RW
|
||
|
kAMEVTYPER18_EL0 = encode(0b11, 0b011, 0b1101, 0b1111, 0b000), // RW
|
||
|
kAMEVTYPER19_EL0 = encode(0b11, 0b011, 0b1101, 0b1111, 0b001), // RW
|
||
|
kAMUSERENR_EL0 = encode(0b11, 0b011, 0b1101, 0b0010, 0b011), // RW
|
||
|
kAPDAKeyHi_EL1 = encode(0b11, 0b000, 0b0010, 0b0010, 0b001), // RW
|
||
|
kAPDAKeyLo_EL1 = encode(0b11, 0b000, 0b0010, 0b0010, 0b000), // RW
|
||
|
kAPDBKeyHi_EL1 = encode(0b11, 0b000, 0b0010, 0b0010, 0b011), // RW
|
||
|
kAPDBKeyLo_EL1 = encode(0b11, 0b000, 0b0010, 0b0010, 0b010), // RW
|
||
|
kAPGAKeyHi_EL1 = encode(0b11, 0b000, 0b0010, 0b0011, 0b001), // RW
|
||
|
kAPGAKeyLo_EL1 = encode(0b11, 0b000, 0b0010, 0b0011, 0b000), // RW
|
||
|
kAPIAKeyHi_EL1 = encode(0b11, 0b000, 0b0010, 0b0001, 0b001), // RW
|
||
|
kAPIAKeyLo_EL1 = encode(0b11, 0b000, 0b0010, 0b0001, 0b000), // RW
|
||
|
kAPIBKeyHi_EL1 = encode(0b11, 0b000, 0b0010, 0b0001, 0b011), // RW
|
||
|
kAPIBKeyLo_EL1 = encode(0b11, 0b000, 0b0010, 0b0001, 0b010), // RW
|
||
|
kCCSIDR2_EL1 = encode(0b11, 0b001, 0b0000, 0b0000, 0b010), // RO
|
||
|
kCCSIDR_EL1 = encode(0b11, 0b001, 0b0000, 0b0000, 0b000), // RO
|
||
|
kCLIDR_EL1 = encode(0b11, 0b001, 0b0000, 0b0000, 0b001), // RO
|
||
|
kCNTFRQ_EL0 = encode(0b11, 0b011, 0b1110, 0b0000, 0b000), // RW
|
||
|
kCNTHCTL_EL2 = encode(0b11, 0b100, 0b1110, 0b0001, 0b000), // RW
|
||
|
kCNTHPS_CTL_EL2 = encode(0b11, 0b100, 0b1110, 0b0101, 0b001), // RW
|
||
|
kCNTHPS_CVAL_EL2 = encode(0b11, 0b100, 0b1110, 0b0101, 0b010), // RW
|
||
|
kCNTHPS_TVAL_EL2 = encode(0b11, 0b100, 0b1110, 0b0101, 0b000), // RW
|
||
|
kCNTHP_CTL_EL2 = encode(0b11, 0b100, 0b1110, 0b0010, 0b001), // RW
|
||
|
kCNTHP_CVAL_EL2 = encode(0b11, 0b100, 0b1110, 0b0010, 0b010), // RW
|
||
|
kCNTHP_TVAL_EL2 = encode(0b11, 0b100, 0b1110, 0b0010, 0b000), // RW
|
||
|
kCNTHVS_CTL_EL2 = encode(0b11, 0b100, 0b1110, 0b0100, 0b001), // RW
|
||
|
kCNTHVS_CVAL_EL2 = encode(0b11, 0b100, 0b1110, 0b0100, 0b010), // RW
|
||
|
kCNTHVS_TVAL_EL2 = encode(0b11, 0b100, 0b1110, 0b0100, 0b000), // RW
|
||
|
kCNTHV_CTL_EL2 = encode(0b11, 0b100, 0b1110, 0b0011, 0b001), // RW
|
||
|
kCNTHV_CVAL_EL2 = encode(0b11, 0b100, 0b1110, 0b0011, 0b010), // RW
|
||
|
kCNTHV_TVAL_EL2 = encode(0b11, 0b100, 0b1110, 0b0011, 0b000), // RW
|
||
|
kCNTISCALE_EL2 = encode(0b11, 0b100, 0b1110, 0b0000, 0b101), // RW
|
||
|
kCNTKCTL_EL1 = encode(0b11, 0b000, 0b1110, 0b0001, 0b000), // RW
|
||
|
kCNTKCTL_EL12 = encode(0b11, 0b101, 0b1110, 0b0001, 0b000), // RW
|
||
|
kCNTPCTSS_EL0 = encode(0b11, 0b011, 0b1110, 0b0000, 0b101), // RW
|
||
|
kCNTPCT_EL0 = encode(0b11, 0b011, 0b1110, 0b0000, 0b001), // RO
|
||
|
kCNTPOFF_EL2 = encode(0b11, 0b100, 0b1110, 0b0000, 0b110), // RW
|
||
|
kCNTPS_CTL_EL1 = encode(0b11, 0b111, 0b1110, 0b0010, 0b001), // RW
|
||
|
kCNTPS_CVAL_EL1 = encode(0b11, 0b111, 0b1110, 0b0010, 0b010), // RW
|
||
|
kCNTPS_TVAL_EL1 = encode(0b11, 0b111, 0b1110, 0b0010, 0b000), // RW
|
||
|
kCNTP_CTL_EL0 = encode(0b11, 0b011, 0b1110, 0b0010, 0b001), // RW
|
||
|
kCNTP_CTL_EL02 = encode(0b11, 0b101, 0b1110, 0b0010, 0b001), // RW
|
||
|
kCNTP_CVAL_EL0 = encode(0b11, 0b011, 0b1110, 0b0010, 0b010), // RW
|
||
|
kCNTP_CVAL_EL02 = encode(0b11, 0b101, 0b1110, 0b0010, 0b010), // RW
|
||
|
kCNTP_TVAL_EL0 = encode(0b11, 0b011, 0b1110, 0b0010, 0b000), // RW
|
||
|
kCNTP_TVAL_EL02 = encode(0b11, 0b101, 0b1110, 0b0010, 0b000), // RW
|
||
|
kCNTSCALE_EL2 = encode(0b11, 0b100, 0b1110, 0b0000, 0b100), // RW
|
||
|
kCNTVCTSS_EL0 = encode(0b11, 0b011, 0b1110, 0b0000, 0b110), // RW
|
||
|
kCNTVCT_EL0 = encode(0b11, 0b011, 0b1110, 0b0000, 0b010), // RO
|
||
|
kCNTVFRQ_EL2 = encode(0b11, 0b100, 0b1110, 0b0000, 0b111), // RW
|
||
|
kCNTVOFF_EL2 = encode(0b11, 0b100, 0b1110, 0b0000, 0b011), // RW
|
||
|
kCNTV_CTL_EL0 = encode(0b11, 0b011, 0b1110, 0b0011, 0b001), // RW
|
||
|
kCNTV_CTL_EL02 = encode(0b11, 0b101, 0b1110, 0b0011, 0b001), // RW
|
||
|
kCNTV_CVAL_EL0 = encode(0b11, 0b011, 0b1110, 0b0011, 0b010), // RW
|
||
|
kCNTV_CVAL_EL02 = encode(0b11, 0b101, 0b1110, 0b0011, 0b010), // RW
|
||
|
kCNTV_TVAL_EL0 = encode(0b11, 0b011, 0b1110, 0b0011, 0b000), // RW
|
||
|
kCNTV_TVAL_EL02 = encode(0b11, 0b101, 0b1110, 0b0011, 0b000), // RW
|
||
|
kCONTEXTIDR_EL1 = encode(0b11, 0b000, 0b1101, 0b0000, 0b001), // RW
|
||
|
kCONTEXTIDR_EL12 = encode(0b11, 0b101, 0b1101, 0b0000, 0b001), // RW
|
||
|
kCONTEXTIDR_EL2 = encode(0b11, 0b100, 0b1101, 0b0000, 0b001), // RW
|
||
|
kCPACR_EL1 = encode(0b11, 0b000, 0b0001, 0b0000, 0b010), // RW
|
||
|
kCPACR_EL12 = encode(0b11, 0b101, 0b0001, 0b0000, 0b010), // RW
|
||
|
kCPM_IOACC_CTL_EL3 = encode(0b11, 0b111, 0b1111, 0b0010, 0b000), // RW
|
||
|
kCPTR_EL2 = encode(0b11, 0b100, 0b0001, 0b0001, 0b010), // RW
|
||
|
kCPTR_EL3 = encode(0b11, 0b110, 0b0001, 0b0001, 0b010), // RW
|
||
|
kCSSELR_EL1 = encode(0b11, 0b010, 0b0000, 0b0000, 0b000), // RW
|
||
|
kCTR_EL0 = encode(0b11, 0b011, 0b0000, 0b0000, 0b001), // RO
|
||
|
kCurrentEL = encode(0b11, 0b000, 0b0100, 0b0010, 0b010), // RO
|
||
|
kDACR32_EL2 = encode(0b11, 0b100, 0b0011, 0b0000, 0b000), // RW
|
||
|
kDAIF = encode(0b11, 0b011, 0b0100, 0b0010, 0b001), // RW
|
||
|
kDBGAUTHSTATUS_EL1 = encode(0b10, 0b000, 0b0111, 0b1110, 0b110), // RO
|
||
|
kDBGBCR0_EL1 = encode(0b10, 0b000, 0b0000, 0b0000, 0b101), // RW
|
||
|
kDBGBCR10_EL1 = encode(0b10, 0b000, 0b0000, 0b1010, 0b101), // RW
|
||
|
kDBGBCR11_EL1 = encode(0b10, 0b000, 0b0000, 0b1011, 0b101), // RW
|
||
|
kDBGBCR12_EL1 = encode(0b10, 0b000, 0b0000, 0b1100, 0b101), // RW
|
||
|
kDBGBCR13_EL1 = encode(0b10, 0b000, 0b0000, 0b1101, 0b101), // RW
|
||
|
kDBGBCR14_EL1 = encode(0b10, 0b000, 0b0000, 0b1110, 0b101), // RW
|
||
|
kDBGBCR15_EL1 = encode(0b10, 0b000, 0b0000, 0b1111, 0b101), // RW
|
||
|
kDBGBCR1_EL1 = encode(0b10, 0b000, 0b0000, 0b0001, 0b101), // RW
|
||
|
kDBGBCR2_EL1 = encode(0b10, 0b000, 0b0000, 0b0010, 0b101), // RW
|
||
|
kDBGBCR3_EL1 = encode(0b10, 0b000, 0b0000, 0b0011, 0b101), // RW
|
||
|
kDBGBCR4_EL1 = encode(0b10, 0b000, 0b0000, 0b0100, 0b101), // RW
|
||
|
kDBGBCR5_EL1 = encode(0b10, 0b000, 0b0000, 0b0101, 0b101), // RW
|
||
|
kDBGBCR6_EL1 = encode(0b10, 0b000, 0b0000, 0b0110, 0b101), // RW
|
||
|
kDBGBCR7_EL1 = encode(0b10, 0b000, 0b0000, 0b0111, 0b101), // RW
|
||
|
kDBGBCR8_EL1 = encode(0b10, 0b000, 0b0000, 0b1000, 0b101), // RW
|
||
|
kDBGBCR9_EL1 = encode(0b10, 0b000, 0b0000, 0b1001, 0b101), // RW
|
||
|
kDBGBVR0_EL1 = encode(0b10, 0b000, 0b0000, 0b0000, 0b100), // RW
|
||
|
kDBGBVR10_EL1 = encode(0b10, 0b000, 0b0000, 0b1010, 0b100), // RW
|
||
|
kDBGBVR11_EL1 = encode(0b10, 0b000, 0b0000, 0b1011, 0b100), // RW
|
||
|
kDBGBVR12_EL1 = encode(0b10, 0b000, 0b0000, 0b1100, 0b100), // RW
|
||
|
kDBGBVR13_EL1 = encode(0b10, 0b000, 0b0000, 0b1101, 0b100), // RW
|
||
|
kDBGBVR14_EL1 = encode(0b10, 0b000, 0b0000, 0b1110, 0b100), // RW
|
||
|
kDBGBVR15_EL1 = encode(0b10, 0b000, 0b0000, 0b1111, 0b100), // RW
|
||
|
kDBGBVR1_EL1 = encode(0b10, 0b000, 0b0000, 0b0001, 0b100), // RW
|
||
|
kDBGBVR2_EL1 = encode(0b10, 0b000, 0b0000, 0b0010, 0b100), // RW
|
||
|
kDBGBVR3_EL1 = encode(0b10, 0b000, 0b0000, 0b0011, 0b100), // RW
|
||
|
kDBGBVR4_EL1 = encode(0b10, 0b000, 0b0000, 0b0100, 0b100), // RW
|
||
|
kDBGBVR5_EL1 = encode(0b10, 0b000, 0b0000, 0b0101, 0b100), // RW
|
||
|
kDBGBVR6_EL1 = encode(0b10, 0b000, 0b0000, 0b0110, 0b100), // RW
|
||
|
kDBGBVR7_EL1 = encode(0b10, 0b000, 0b0000, 0b0111, 0b100), // RW
|
||
|
kDBGBVR8_EL1 = encode(0b10, 0b000, 0b0000, 0b1000, 0b100), // RW
|
||
|
kDBGBVR9_EL1 = encode(0b10, 0b000, 0b0000, 0b1001, 0b100), // RW
|
||
|
kDBGCLAIMCLR_EL1 = encode(0b10, 0b000, 0b0111, 0b1001, 0b110), // RW
|
||
|
kDBGCLAIMSET_EL1 = encode(0b10, 0b000, 0b0111, 0b1000, 0b110), // RW
|
||
|
kDBGDTRRX_EL0 = encode(0b10, 0b011, 0b0000, 0b0101, 0b000), // RO
|
||
|
kDBGDTRTX_EL0 = encode(0b10, 0b011, 0b0000, 0b0101, 0b000), // WO
|
||
|
kDBGDTR_EL0 = encode(0b10, 0b011, 0b0000, 0b0100, 0b000), // RW
|
||
|
kDBGPRCR_EL1 = encode(0b10, 0b000, 0b0001, 0b0100, 0b100), // RW
|
||
|
kDBGVCR32_EL2 = encode(0b10, 0b100, 0b0000, 0b0111, 0b000), // RW
|
||
|
kDBGWCR0_EL1 = encode(0b10, 0b000, 0b0000, 0b0000, 0b111), // RW
|
||
|
kDBGWCR10_EL1 = encode(0b10, 0b000, 0b0000, 0b1010, 0b111), // RW
|
||
|
kDBGWCR11_EL1 = encode(0b10, 0b000, 0b0000, 0b1011, 0b111), // RW
|
||
|
kDBGWCR12_EL1 = encode(0b10, 0b000, 0b0000, 0b1100, 0b111), // RW
|
||
|
kDBGWCR13_EL1 = encode(0b10, 0b000, 0b0000, 0b1101, 0b111), // RW
|
||
|
kDBGWCR14_EL1 = encode(0b10, 0b000, 0b0000, 0b1110, 0b111), // RW
|
||
|
kDBGWCR15_EL1 = encode(0b10, 0b000, 0b0000, 0b1111, 0b111), // RW
|
||
|
kDBGWCR1_EL1 = encode(0b10, 0b000, 0b0000, 0b0001, 0b111), // RW
|
||
|
kDBGWCR2_EL1 = encode(0b10, 0b000, 0b0000, 0b0010, 0b111), // RW
|
||
|
kDBGWCR3_EL1 = encode(0b10, 0b000, 0b0000, 0b0011, 0b111), // RW
|
||
|
kDBGWCR4_EL1 = encode(0b10, 0b000, 0b0000, 0b0100, 0b111), // RW
|
||
|
kDBGWCR5_EL1 = encode(0b10, 0b000, 0b0000, 0b0101, 0b111), // RW
|
||
|
kDBGWCR6_EL1 = encode(0b10, 0b000, 0b0000, 0b0110, 0b111), // RW
|
||
|
kDBGWCR7_EL1 = encode(0b10, 0b000, 0b0000, 0b0111, 0b111), // RW
|
||
|
kDBGWCR8_EL1 = encode(0b10, 0b000, 0b0000, 0b1000, 0b111), // RW
|
||
|
kDBGWCR9_EL1 = encode(0b10, 0b000, 0b0000, 0b1001, 0b111), // RW
|
||
|
kDBGWVR0_EL1 = encode(0b10, 0b000, 0b0000, 0b0000, 0b110), // RW
|
||
|
kDBGWVR10_EL1 = encode(0b10, 0b000, 0b0000, 0b1010, 0b110), // RW
|
||
|
kDBGWVR11_EL1 = encode(0b10, 0b000, 0b0000, 0b1011, 0b110), // RW
|
||
|
kDBGWVR12_EL1 = encode(0b10, 0b000, 0b0000, 0b1100, 0b110), // RW
|
||
|
kDBGWVR13_EL1 = encode(0b10, 0b000, 0b0000, 0b1101, 0b110), // RW
|
||
|
kDBGWVR14_EL1 = encode(0b10, 0b000, 0b0000, 0b1110, 0b110), // RW
|
||
|
kDBGWVR15_EL1 = encode(0b10, 0b000, 0b0000, 0b1111, 0b110), // RW
|
||
|
kDBGWVR1_EL1 = encode(0b10, 0b000, 0b0000, 0b0001, 0b110), // RW
|
||
|
kDBGWVR2_EL1 = encode(0b10, 0b000, 0b0000, 0b0010, 0b110), // RW
|
||
|
kDBGWVR3_EL1 = encode(0b10, 0b000, 0b0000, 0b0011, 0b110), // RW
|
||
|
kDBGWVR4_EL1 = encode(0b10, 0b000, 0b0000, 0b0100, 0b110), // RW
|
||
|
kDBGWVR5_EL1 = encode(0b10, 0b000, 0b0000, 0b0101, 0b110), // RW
|
||
|
kDBGWVR6_EL1 = encode(0b10, 0b000, 0b0000, 0b0110, 0b110), // RW
|
||
|
kDBGWVR7_EL1 = encode(0b10, 0b000, 0b0000, 0b0111, 0b110), // RW
|
||
|
kDBGWVR8_EL1 = encode(0b10, 0b000, 0b0000, 0b1000, 0b110), // RW
|
||
|
kDBGWVR9_EL1 = encode(0b10, 0b000, 0b0000, 0b1001, 0b110), // RW
|
||
|
kDCZID_EL0 = encode(0b11, 0b011, 0b0000, 0b0000, 0b111), // RO
|
||
|
kDISR_EL1 = encode(0b11, 0b000, 0b1100, 0b0001, 0b001), // RW
|
||
|
kDIT = encode(0b11, 0b011, 0b0100, 0b0010, 0b101), // RW
|
||
|
kDLR_EL0 = encode(0b11, 0b011, 0b0100, 0b0101, 0b001), // RW
|
||
|
kDSPSR_EL0 = encode(0b11, 0b011, 0b0100, 0b0101, 0b000), // RW
|
||
|
kELR_EL1 = encode(0b11, 0b000, 0b0100, 0b0000, 0b001), // RW
|
||
|
kELR_EL12 = encode(0b11, 0b101, 0b0100, 0b0000, 0b001), // RW
|
||
|
kELR_EL2 = encode(0b11, 0b100, 0b0100, 0b0000, 0b001), // RW
|
||
|
kELR_EL3 = encode(0b11, 0b110, 0b0100, 0b0000, 0b001), // RW
|
||
|
kERRIDR_EL1 = encode(0b11, 0b000, 0b0101, 0b0011, 0b000), // RO
|
||
|
kERRSELR_EL1 = encode(0b11, 0b000, 0b0101, 0b0011, 0b001), // RW
|
||
|
kERXADDR_EL1 = encode(0b11, 0b000, 0b0101, 0b0100, 0b011), // RW
|
||
|
kERXCTLR_EL1 = encode(0b11, 0b000, 0b0101, 0b0100, 0b001), // RW
|
||
|
kERXFR_EL1 = encode(0b11, 0b000, 0b0101, 0b0100, 0b000), // RO
|
||
|
kERXMISC0_EL1 = encode(0b11, 0b000, 0b0101, 0b0101, 0b000), // RW
|
||
|
kERXMISC1_EL1 = encode(0b11, 0b000, 0b0101, 0b0101, 0b001), // RW
|
||
|
kERXMISC2_EL1 = encode(0b11, 0b000, 0b0101, 0b0101, 0b010), // RW
|
||
|
kERXMISC3_EL1 = encode(0b11, 0b000, 0b0101, 0b0101, 0b011), // RW
|
||
|
kERXPFGCDN_EL1 = encode(0b11, 0b000, 0b0101, 0b0100, 0b110), // RW
|
||
|
kERXPFGCTL_EL1 = encode(0b11, 0b000, 0b0101, 0b0100, 0b101), // RW
|
||
|
kERXPFGF_EL1 = encode(0b11, 0b000, 0b0101, 0b0100, 0b100), // RO
|
||
|
kERXSTATUS_EL1 = encode(0b11, 0b000, 0b0101, 0b0100, 0b010), // RW
|
||
|
kESR_EL1 = encode(0b11, 0b000, 0b0101, 0b0010, 0b000), // RW
|
||
|
kESR_EL12 = encode(0b11, 0b101, 0b0101, 0b0010, 0b000), // RW
|
||
|
kESR_EL2 = encode(0b11, 0b100, 0b0101, 0b0010, 0b000), // RW
|
||
|
kESR_EL3 = encode(0b11, 0b110, 0b0101, 0b0010, 0b000), // RW
|
||
|
kFAR_EL1 = encode(0b11, 0b000, 0b0110, 0b0000, 0b000), // RW
|
||
|
kFAR_EL12 = encode(0b11, 0b101, 0b0110, 0b0000, 0b000), // RW
|
||
|
kFAR_EL2 = encode(0b11, 0b100, 0b0110, 0b0000, 0b000), // RW
|
||
|
kFAR_EL3 = encode(0b11, 0b110, 0b0110, 0b0000, 0b000), // RW
|
||
|
kFPCR = encode(0b11, 0b011, 0b0100, 0b0100, 0b000), // RW
|
||
|
kFPEXC32_EL2 = encode(0b11, 0b100, 0b0101, 0b0011, 0b000), // RW
|
||
|
kFPSR = encode(0b11, 0b011, 0b0100, 0b0100, 0b001), // RW
|
||
|
kGCR_EL1 = encode(0b11, 0b000, 0b0001, 0b0000, 0b110), // RW
|
||
|
kGMID_EL1 = encode(0b11, 0b001, 0b0000, 0b0000, 0b100), // RO
|
||
|
kHACR_EL2 = encode(0b11, 0b100, 0b0001, 0b0001, 0b111), // RW
|
||
|
kHCR_EL2 = encode(0b11, 0b100, 0b0001, 0b0001, 0b000), // RW
|
||
|
kHDFGRTR_EL2 = encode(0b11, 0b100, 0b0011, 0b0001, 0b100), // RW
|
||
|
kHDFGWTR_EL2 = encode(0b11, 0b100, 0b0011, 0b0001, 0b101), // RW
|
||
|
kHFGITR_EL2 = encode(0b11, 0b100, 0b0001, 0b0001, 0b110), // RW
|
||
|
kHFGRTR_EL2 = encode(0b11, 0b100, 0b0001, 0b0001, 0b100), // RW
|
||
|
kHFGWTR_EL2 = encode(0b11, 0b100, 0b0001, 0b0001, 0b101), // RW
|
||
|
kHPFAR_EL2 = encode(0b11, 0b100, 0b0110, 0b0000, 0b100), // RW
|
||
|
kHSTR_EL2 = encode(0b11, 0b100, 0b0001, 0b0001, 0b011), // RW
|
||
|
kICC_AP0R0_EL1 = encode(0b11, 0b000, 0b1100, 0b1000, 0b100), // RW
|
||
|
kICC_AP0R1_EL1 = encode(0b11, 0b000, 0b1100, 0b1000, 0b101), // RW
|
||
|
kICC_AP0R2_EL1 = encode(0b11, 0b000, 0b1100, 0b1000, 0b110), // RW
|
||
|
kICC_AP0R3_EL1 = encode(0b11, 0b000, 0b1100, 0b1000, 0b111), // RW
|
||
|
kICC_AP1R0_EL1 = encode(0b11, 0b000, 0b1100, 0b1001, 0b000), // RW
|
||
|
kICC_AP1R1_EL1 = encode(0b11, 0b000, 0b1100, 0b1001, 0b001), // RW
|
||
|
kICC_AP1R2_EL1 = encode(0b11, 0b000, 0b1100, 0b1001, 0b010), // RW
|
||
|
kICC_AP1R3_EL1 = encode(0b11, 0b000, 0b1100, 0b1001, 0b011), // RW
|
||
|
kICC_ASGI1R_EL1 = encode(0b11, 0b000, 0b1100, 0b1011, 0b110), // WO
|
||
|
kICC_BPR0_EL1 = encode(0b11, 0b000, 0b1100, 0b1000, 0b011), // RW
|
||
|
kICC_BPR1_EL1 = encode(0b11, 0b000, 0b1100, 0b1100, 0b011), // RW
|
||
|
kICC_CTLR_EL1 = encode(0b11, 0b000, 0b1100, 0b1100, 0b100), // RW
|
||
|
kICC_CTLR_EL3 = encode(0b11, 0b110, 0b1100, 0b1100, 0b100), // RW
|
||
|
kICC_DIR_EL1 = encode(0b11, 0b000, 0b1100, 0b1011, 0b001), // WO
|
||
|
kICC_EOIR0_EL1 = encode(0b11, 0b000, 0b1100, 0b1000, 0b001), // WO
|
||
|
kICC_EOIR1_EL1 = encode(0b11, 0b000, 0b1100, 0b1100, 0b001), // WO
|
||
|
kICC_HPPIR0_EL1 = encode(0b11, 0b000, 0b1100, 0b1000, 0b010), // RO
|
||
|
kICC_HPPIR1_EL1 = encode(0b11, 0b000, 0b1100, 0b1100, 0b010), // RO
|
||
|
kICC_IAR0_EL1 = encode(0b11, 0b000, 0b1100, 0b1000, 0b000), // RO
|
||
|
kICC_IAR1_EL1 = encode(0b11, 0b000, 0b1100, 0b1100, 0b000), // RO
|
||
|
kICC_IGRPEN0_EL1 = encode(0b11, 0b000, 0b1100, 0b1100, 0b110), // RW
|
||
|
kICC_IGRPEN1_EL1 = encode(0b11, 0b000, 0b1100, 0b1100, 0b111), // RW
|
||
|
kICC_IGRPEN1_EL3 = encode(0b11, 0b110, 0b1100, 0b1100, 0b111), // RW
|
||
|
kICC_PMR_EL1 = encode(0b11, 0b000, 0b0100, 0b0110, 0b000), // RW
|
||
|
kICC_RPR_EL1 = encode(0b11, 0b000, 0b1100, 0b1011, 0b011), // RO
|
||
|
kICC_SGI0R_EL1 = encode(0b11, 0b000, 0b1100, 0b1011, 0b111), // WO
|
||
|
kICC_SGI1R_EL1 = encode(0b11, 0b000, 0b1100, 0b1011, 0b101), // WO
|
||
|
kICC_SRE_EL1 = encode(0b11, 0b000, 0b1100, 0b1100, 0b101), // RW
|
||
|
kICC_SRE_EL2 = encode(0b11, 0b100, 0b1100, 0b1001, 0b101), // RW
|
||
|
kICC_SRE_EL3 = encode(0b11, 0b110, 0b1100, 0b1100, 0b101), // RW
|
||
|
kICH_AP0R0_EL2 = encode(0b11, 0b100, 0b1100, 0b1000, 0b000), // RW
|
||
|
kICH_AP0R1_EL2 = encode(0b11, 0b100, 0b1100, 0b1000, 0b001), // RW
|
||
|
kICH_AP0R2_EL2 = encode(0b11, 0b100, 0b1100, 0b1000, 0b010), // RW
|
||
|
kICH_AP0R3_EL2 = encode(0b11, 0b100, 0b1100, 0b1000, 0b011), // RW
|
||
|
kICH_AP1R0_EL2 = encode(0b11, 0b100, 0b1100, 0b1001, 0b000), // RW
|
||
|
kICH_AP1R1_EL2 = encode(0b11, 0b100, 0b1100, 0b1001, 0b001), // RW
|
||
|
kICH_AP1R2_EL2 = encode(0b11, 0b100, 0b1100, 0b1001, 0b010), // RW
|
||
|
kICH_AP1R3_EL2 = encode(0b11, 0b100, 0b1100, 0b1001, 0b011), // RW
|
||
|
kICH_EISR_EL2 = encode(0b11, 0b100, 0b1100, 0b1011, 0b011), // RO
|
||
|
kICH_ELRSR_EL2 = encode(0b11, 0b100, 0b1100, 0b1011, 0b101), // RO
|
||
|
kICH_HCR_EL2 = encode(0b11, 0b100, 0b1100, 0b1011, 0b000), // RW
|
||
|
kICH_LR0_EL2 = encode(0b11, 0b100, 0b1100, 0b1100, 0b000), // RW
|
||
|
kICH_LR10_EL2 = encode(0b11, 0b100, 0b1100, 0b1101, 0b010), // RW
|
||
|
kICH_LR11_EL2 = encode(0b11, 0b100, 0b1100, 0b1101, 0b011), // RW
|
||
|
kICH_LR12_EL2 = encode(0b11, 0b100, 0b1100, 0b1101, 0b100), // RW
|
||
|
kICH_LR13_EL2 = encode(0b11, 0b100, 0b1100, 0b1101, 0b101), // RW
|
||
|
kICH_LR14_EL2 = encode(0b11, 0b100, 0b1100, 0b1101, 0b110), // RW
|
||
|
kICH_LR15_EL2 = encode(0b11, 0b100, 0b1100, 0b1101, 0b111), // RW
|
||
|
kICH_LR1_EL2 = encode(0b11, 0b100, 0b1100, 0b1100, 0b001), // RW
|
||
|
kICH_LR2_EL2 = encode(0b11, 0b100, 0b1100, 0b1100, 0b010), // RW
|
||
|
kICH_LR3_EL2 = encode(0b11, 0b100, 0b1100, 0b1100, 0b011), // RW
|
||
|
kICH_LR4_EL2 = encode(0b11, 0b100, 0b1100, 0b1100, 0b100), // RW
|
||
|
kICH_LR5_EL2 = encode(0b11, 0b100, 0b1100, 0b1100, 0b101), // RW
|
||
|
kICH_LR6_EL2 = encode(0b11, 0b100, 0b1100, 0b1100, 0b110), // RW
|
||
|
kICH_LR7_EL2 = encode(0b11, 0b100, 0b1100, 0b1100, 0b111), // RW
|
||
|
kICH_LR8_EL2 = encode(0b11, 0b100, 0b1100, 0b1101, 0b000), // RW
|
||
|
kICH_LR9_EL2 = encode(0b11, 0b100, 0b1100, 0b1101, 0b001), // RW
|
||
|
kICH_MISR_EL2 = encode(0b11, 0b100, 0b1100, 0b1011, 0b010), // RO
|
||
|
kICH_VMCR_EL2 = encode(0b11, 0b100, 0b1100, 0b1011, 0b111), // RW
|
||
|
kICH_VTR_EL2 = encode(0b11, 0b100, 0b1100, 0b1011, 0b001), // RO
|
||
|
kID_AA64AFR0_EL1 = encode(0b11, 0b000, 0b0000, 0b0101, 0b100), // RO
|
||
|
kID_AA64AFR1_EL1 = encode(0b11, 0b000, 0b0000, 0b0101, 0b101), // RO
|
||
|
kID_AA64DFR0_EL1 = encode(0b11, 0b000, 0b0000, 0b0101, 0b000), // RO
|
||
|
kID_AA64DFR1_EL1 = encode(0b11, 0b000, 0b0000, 0b0101, 0b001), // RO
|
||
|
kID_AA64ISAR0_EL1 = encode(0b11, 0b000, 0b0000, 0b0110, 0b000), // RO
|
||
|
kID_AA64ISAR1_EL1 = encode(0b11, 0b000, 0b0000, 0b0110, 0b001), // RO
|
||
|
kID_AA64MMFR0_EL1 = encode(0b11, 0b000, 0b0000, 0b0111, 0b000), // RO
|
||
|
kID_AA64MMFR1_EL1 = encode(0b11, 0b000, 0b0000, 0b0111, 0b001), // RO
|
||
|
kID_AA64MMFR2_EL1 = encode(0b11, 0b000, 0b0000, 0b0111, 0b010), // RO
|
||
|
kID_AA64PFR0_EL1 = encode(0b11, 0b000, 0b0000, 0b0100, 0b000), // RO
|
||
|
kID_AA64PFR1_EL1 = encode(0b11, 0b000, 0b0000, 0b0100, 0b001), // RO
|
||
|
kID_AA64ZFR0_EL1 = encode(0b11, 0b000, 0b0000, 0b0100, 0b100), // RO
|
||
|
kID_AFR0_EL1 = encode(0b11, 0b000, 0b0000, 0b0001, 0b011), // RO
|
||
|
kID_DFR0_EL1 = encode(0b11, 0b000, 0b0000, 0b0001, 0b010), // RO
|
||
|
kID_ISAR0_EL1 = encode(0b11, 0b000, 0b0000, 0b0010, 0b000), // RO
|
||
|
kID_ISAR1_EL1 = encode(0b11, 0b000, 0b0000, 0b0010, 0b001), // RO
|
||
|
kID_ISAR2_EL1 = encode(0b11, 0b000, 0b0000, 0b0010, 0b010), // RO
|
||
|
kID_ISAR3_EL1 = encode(0b11, 0b000, 0b0000, 0b0010, 0b011), // RO
|
||
|
kID_ISAR4_EL1 = encode(0b11, 0b000, 0b0000, 0b0010, 0b100), // RO
|
||
|
kID_ISAR5_EL1 = encode(0b11, 0b000, 0b0000, 0b0010, 0b101), // RO
|
||
|
kID_ISAR6_EL1 = encode(0b11, 0b000, 0b0000, 0b0010, 0b111), // RO
|
||
|
kID_MMFR0_EL1 = encode(0b11, 0b000, 0b0000, 0b0001, 0b100), // RO
|
||
|
kID_MMFR1_EL1 = encode(0b11, 0b000, 0b0000, 0b0001, 0b101), // RO
|
||
|
kID_MMFR2_EL1 = encode(0b11, 0b000, 0b0000, 0b0001, 0b110), // RO
|
||
|
kID_MMFR3_EL1 = encode(0b11, 0b000, 0b0000, 0b0001, 0b111), // RO
|
||
|
kID_MMFR4_EL1 = encode(0b11, 0b000, 0b0000, 0b0010, 0b110), // RO
|
||
|
kID_MMFR5_EL1 = encode(0b11, 0b000, 0b0000, 0b0011, 0b110), // RO
|
||
|
kID_PFR0_EL1 = encode(0b11, 0b000, 0b0000, 0b0001, 0b000), // RO
|
||
|
kID_PFR1_EL1 = encode(0b11, 0b000, 0b0000, 0b0001, 0b001), // RO
|
||
|
kID_PFR2_EL1 = encode(0b11, 0b000, 0b0000, 0b0011, 0b100), // RO
|
||
|
kIFSR32_EL2 = encode(0b11, 0b100, 0b0101, 0b0000, 0b001), // RW
|
||
|
kISR_EL1 = encode(0b11, 0b000, 0b1100, 0b0001, 0b000), // RO
|
||
|
kLORC_EL1 = encode(0b11, 0b000, 0b1010, 0b0100, 0b011), // RW
|
||
|
kLOREA_EL1 = encode(0b11, 0b000, 0b1010, 0b0100, 0b001), // RW
|
||
|
kLORID_EL1 = encode(0b11, 0b000, 0b1010, 0b0100, 0b111), // RO
|
||
|
kLORN_EL1 = encode(0b11, 0b000, 0b1010, 0b0100, 0b010), // RW
|
||
|
kLORSA_EL1 = encode(0b11, 0b000, 0b1010, 0b0100, 0b000), // RW
|
||
|
kMAIR_EL1 = encode(0b11, 0b000, 0b1010, 0b0010, 0b000), // RW
|
||
|
kMAIR_EL12 = encode(0b11, 0b101, 0b1010, 0b0010, 0b000), // RW
|
||
|
kMAIR_EL2 = encode(0b11, 0b100, 0b1010, 0b0010, 0b000), // RW
|
||
|
kMAIR_EL3 = encode(0b11, 0b110, 0b1010, 0b0010, 0b000), // RW
|
||
|
kMDCCINT_EL1 = encode(0b10, 0b000, 0b0000, 0b0010, 0b000), // RW
|
||
|
kMDCCSR_EL0 = encode(0b10, 0b011, 0b0000, 0b0001, 0b000), // RO
|
||
|
kMDCR_EL2 = encode(0b11, 0b100, 0b0001, 0b0001, 0b001), // RW
|
||
|
kMDCR_EL3 = encode(0b11, 0b110, 0b0001, 0b0011, 0b001), // RW
|
||
|
kMDRAR_EL1 = encode(0b10, 0b000, 0b0001, 0b0000, 0b000), // RO
|
||
|
kMDSCR_EL1 = encode(0b10, 0b000, 0b0000, 0b0010, 0b010), // RW
|
||
|
kMIDR_EL1 = encode(0b11, 0b000, 0b0000, 0b0000, 0b000), // RO
|
||
|
kMPAM0_EL1 = encode(0b11, 0b000, 0b1010, 0b0101, 0b001), // RW
|
||
|
kMPAM1_EL1 = encode(0b11, 0b000, 0b1010, 0b0101, 0b000), // RW
|
||
|
kMPAM1_EL12 = encode(0b11, 0b101, 0b1010, 0b0101, 0b000), // RW
|
||
|
kMPAM2_EL2 = encode(0b11, 0b100, 0b1010, 0b0101, 0b000), // RW
|
||
|
kMPAM3_EL3 = encode(0b11, 0b110, 0b1010, 0b0101, 0b000), // RW
|
||
|
kMPAMHCR_EL2 = encode(0b11, 0b100, 0b1010, 0b0100, 0b000), // RW
|
||
|
kMPAMIDR_EL1 = encode(0b11, 0b000, 0b1010, 0b0100, 0b100), // RO
|
||
|
kMPAMVPM0_EL2 = encode(0b11, 0b100, 0b1010, 0b0110, 0b000), // RW
|
||
|
kMPAMVPM1_EL2 = encode(0b11, 0b100, 0b1010, 0b0110, 0b001), // RW
|
||
|
kMPAMVPM2_EL2 = encode(0b11, 0b100, 0b1010, 0b0110, 0b010), // RW
|
||
|
kMPAMVPM3_EL2 = encode(0b11, 0b100, 0b1010, 0b0110, 0b011), // RW
|
||
|
kMPAMVPM4_EL2 = encode(0b11, 0b100, 0b1010, 0b0110, 0b100), // RW
|
||
|
kMPAMVPM5_EL2 = encode(0b11, 0b100, 0b1010, 0b0110, 0b101), // RW
|
||
|
kMPAMVPM6_EL2 = encode(0b11, 0b100, 0b1010, 0b0110, 0b110), // RW
|
||
|
kMPAMVPM7_EL2 = encode(0b11, 0b100, 0b1010, 0b0110, 0b111), // RW
|
||
|
kMPAMVPMV_EL2 = encode(0b11, 0b100, 0b1010, 0b0100, 0b001), // RW
|
||
|
kMPIDR_EL1 = encode(0b11, 0b000, 0b0000, 0b0000, 0b101), // RO
|
||
|
kMVFR0_EL1 = encode(0b11, 0b000, 0b0000, 0b0011, 0b000), // RO
|
||
|
kMVFR1_EL1 = encode(0b11, 0b000, 0b0000, 0b0011, 0b001), // RO
|
||
|
kMVFR2_EL1 = encode(0b11, 0b000, 0b0000, 0b0011, 0b010), // RO
|
||
|
kNZCV = encode(0b11, 0b011, 0b0100, 0b0010, 0b000), // RW
|
||
|
kOSDLR_EL1 = encode(0b10, 0b000, 0b0001, 0b0011, 0b100), // RW
|
||
|
kOSDTRRX_EL1 = encode(0b10, 0b000, 0b0000, 0b0000, 0b010), // RW
|
||
|
kOSDTRTX_EL1 = encode(0b10, 0b000, 0b0000, 0b0011, 0b010), // RW
|
||
|
kOSECCR_EL1 = encode(0b10, 0b000, 0b0000, 0b0110, 0b010), // RW
|
||
|
kOSLAR_EL1 = encode(0b10, 0b000, 0b0001, 0b0000, 0b100), // WO
|
||
|
kOSLSR_EL1 = encode(0b10, 0b000, 0b0001, 0b0001, 0b100), // RO
|
||
|
kPAN = encode(0b11, 0b000, 0b0100, 0b0010, 0b011), // RW
|
||
|
kPAR_EL1 = encode(0b11, 0b000, 0b0111, 0b0100, 0b000), // RW
|
||
|
kPMBIDR_EL1 = encode(0b11, 0b000, 0b1001, 0b1010, 0b111), // RO
|
||
|
kPMBLIMITR_EL1 = encode(0b11, 0b000, 0b1001, 0b1010, 0b000), // RW
|
||
|
kPMBPTR_EL1 = encode(0b11, 0b000, 0b1001, 0b1010, 0b001), // RW
|
||
|
kPMBSR_EL1 = encode(0b11, 0b000, 0b1001, 0b1010, 0b011), // RW
|
||
|
kPMCCFILTR_EL0 = encode(0b11, 0b011, 0b1110, 0b1111, 0b111), // RW
|
||
|
kPMCCNTR_EL0 = encode(0b11, 0b011, 0b1001, 0b1101, 0b000), // RW
|
||
|
kPMCEID0_EL0 = encode(0b11, 0b011, 0b1001, 0b1100, 0b110), // RO
|
||
|
kPMCEID1_EL0 = encode(0b11, 0b011, 0b1001, 0b1100, 0b111), // RO
|
||
|
kPMCNTENCLR_EL0 = encode(0b11, 0b011, 0b1001, 0b1100, 0b010), // RW
|
||
|
kPMCNTENSET_EL0 = encode(0b11, 0b011, 0b1001, 0b1100, 0b001), // RW
|
||
|
kPMCR_EL0 = encode(0b11, 0b011, 0b1001, 0b1100, 0b000), // RW
|
||
|
kPMEVCNTR0_EL0 = encode(0b11, 0b011, 0b1110, 0b1000, 0b000), // RW
|
||
|
kPMEVCNTR10_EL0 = encode(0b11, 0b011, 0b1110, 0b1001, 0b010), // RW
|
||
|
kPMEVCNTR11_EL0 = encode(0b11, 0b011, 0b1110, 0b1001, 0b011), // RW
|
||
|
kPMEVCNTR12_EL0 = encode(0b11, 0b011, 0b1110, 0b1001, 0b100), // RW
|
||
|
kPMEVCNTR13_EL0 = encode(0b11, 0b011, 0b1110, 0b1001, 0b101), // RW
|
||
|
kPMEVCNTR14_EL0 = encode(0b11, 0b011, 0b1110, 0b1001, 0b110), // RW
|
||
|
kPMEVCNTR15_EL0 = encode(0b11, 0b011, 0b1110, 0b1001, 0b111), // RW
|
||
|
kPMEVCNTR16_EL0 = encode(0b11, 0b011, 0b1110, 0b1010, 0b000), // RW
|
||
|
kPMEVCNTR17_EL0 = encode(0b11, 0b011, 0b1110, 0b1010, 0b001), // RW
|
||
|
kPMEVCNTR18_EL0 = encode(0b11, 0b011, 0b1110, 0b1010, 0b010), // RW
|
||
|
kPMEVCNTR19_EL0 = encode(0b11, 0b011, 0b1110, 0b1010, 0b011), // RW
|
||
|
kPMEVCNTR1_EL0 = encode(0b11, 0b011, 0b1110, 0b1000, 0b001), // RW
|
||
|
kPMEVCNTR20_EL0 = encode(0b11, 0b011, 0b1110, 0b1010, 0b100), // RW
|
||
|
kPMEVCNTR21_EL0 = encode(0b11, 0b011, 0b1110, 0b1010, 0b101), // RW
|
||
|
kPMEVCNTR22_EL0 = encode(0b11, 0b011, 0b1110, 0b1010, 0b110), // RW
|
||
|
kPMEVCNTR23_EL0 = encode(0b11, 0b011, 0b1110, 0b1010, 0b111), // RW
|
||
|
kPMEVCNTR24_EL0 = encode(0b11, 0b011, 0b1110, 0b1011, 0b000), // RW
|
||
|
kPMEVCNTR25_EL0 = encode(0b11, 0b011, 0b1110, 0b1011, 0b001), // RW
|
||
|
kPMEVCNTR26_EL0 = encode(0b11, 0b011, 0b1110, 0b1011, 0b010), // RW
|
||
|
kPMEVCNTR27_EL0 = encode(0b11, 0b011, 0b1110, 0b1011, 0b011), // RW
|
||
|
kPMEVCNTR28_EL0 = encode(0b11, 0b011, 0b1110, 0b1011, 0b100), // RW
|
||
|
kPMEVCNTR29_EL0 = encode(0b11, 0b011, 0b1110, 0b1011, 0b101), // RW
|
||
|
kPMEVCNTR2_EL0 = encode(0b11, 0b011, 0b1110, 0b1000, 0b010), // RW
|
||
|
kPMEVCNTR30_EL0 = encode(0b11, 0b011, 0b1110, 0b1011, 0b110), // RW
|
||
|
kPMEVCNTR3_EL0 = encode(0b11, 0b011, 0b1110, 0b1000, 0b011), // RW
|
||
|
kPMEVCNTR4_EL0 = encode(0b11, 0b011, 0b1110, 0b1000, 0b100), // RW
|
||
|
kPMEVCNTR5_EL0 = encode(0b11, 0b011, 0b1110, 0b1000, 0b101), // RW
|
||
|
kPMEVCNTR6_EL0 = encode(0b11, 0b011, 0b1110, 0b1000, 0b110), // RW
|
||
|
kPMEVCNTR7_EL0 = encode(0b11, 0b011, 0b1110, 0b1000, 0b111), // RW
|
||
|
kPMEVCNTR8_EL0 = encode(0b11, 0b011, 0b1110, 0b1001, 0b000), // RW
|
||
|
kPMEVCNTR9_EL0 = encode(0b11, 0b011, 0b1110, 0b1001, 0b001), // RW
|
||
|
kPMEVTYPER0_EL0 = encode(0b11, 0b011, 0b1110, 0b1100, 0b000), // RW
|
||
|
kPMEVTYPER10_EL0 = encode(0b11, 0b011, 0b1110, 0b1101, 0b010), // RW
|
||
|
kPMEVTYPER11_EL0 = encode(0b11, 0b011, 0b1110, 0b1101, 0b011), // RW
|
||
|
kPMEVTYPER12_EL0 = encode(0b11, 0b011, 0b1110, 0b1101, 0b100), // RW
|
||
|
kPMEVTYPER13_EL0 = encode(0b11, 0b011, 0b1110, 0b1101, 0b101), // RW
|
||
|
kPMEVTYPER14_EL0 = encode(0b11, 0b011, 0b1110, 0b1101, 0b110), // RW
|
||
|
kPMEVTYPER15_EL0 = encode(0b11, 0b011, 0b1110, 0b1101, 0b111), // RW
|
||
|
kPMEVTYPER16_EL0 = encode(0b11, 0b011, 0b1110, 0b1110, 0b000), // RW
|
||
|
kPMEVTYPER17_EL0 = encode(0b11, 0b011, 0b1110, 0b1110, 0b001), // RW
|
||
|
kPMEVTYPER18_EL0 = encode(0b11, 0b011, 0b1110, 0b1110, 0b010), // RW
|
||
|
kPMEVTYPER19_EL0 = encode(0b11, 0b011, 0b1110, 0b1110, 0b011), // RW
|
||
|
kPMEVTYPER1_EL0 = encode(0b11, 0b011, 0b1110, 0b1100, 0b001), // RW
|
||
|
kPMEVTYPER20_EL0 = encode(0b11, 0b011, 0b1110, 0b1110, 0b100), // RW
|
||
|
kPMEVTYPER21_EL0 = encode(0b11, 0b011, 0b1110, 0b1110, 0b101), // RW
|
||
|
kPMEVTYPER22_EL0 = encode(0b11, 0b011, 0b1110, 0b1110, 0b110), // RW
|
||
|
kPMEVTYPER23_EL0 = encode(0b11, 0b011, 0b1110, 0b1110, 0b111), // RW
|
||
|
kPMEVTYPER24_EL0 = encode(0b11, 0b011, 0b1110, 0b1111, 0b000), // RW
|
||
|
kPMEVTYPER25_EL0 = encode(0b11, 0b011, 0b1110, 0b1111, 0b001), // RW
|
||
|
kPMEVTYPER26_EL0 = encode(0b11, 0b011, 0b1110, 0b1111, 0b010), // RW
|
||
|
kPMEVTYPER27_EL0 = encode(0b11, 0b011, 0b1110, 0b1111, 0b011), // RW
|
||
|
kPMEVTYPER28_EL0 = encode(0b11, 0b011, 0b1110, 0b1111, 0b100), // RW
|
||
|
kPMEVTYPER29_EL0 = encode(0b11, 0b011, 0b1110, 0b1111, 0b101), // RW
|
||
|
kPMEVTYPER2_EL0 = encode(0b11, 0b011, 0b1110, 0b1100, 0b010), // RW
|
||
|
kPMEVTYPER30_EL0 = encode(0b11, 0b011, 0b1110, 0b1111, 0b110), // RW
|
||
|
kPMEVTYPER3_EL0 = encode(0b11, 0b011, 0b1110, 0b1100, 0b011), // RW
|
||
|
kPMEVTYPER4_EL0 = encode(0b11, 0b011, 0b1110, 0b1100, 0b100), // RW
|
||
|
kPMEVTYPER5_EL0 = encode(0b11, 0b011, 0b1110, 0b1100, 0b101), // RW
|
||
|
kPMEVTYPER6_EL0 = encode(0b11, 0b011, 0b1110, 0b1100, 0b110), // RW
|
||
|
kPMEVTYPER7_EL0 = encode(0b11, 0b011, 0b1110, 0b1100, 0b111), // RW
|
||
|
kPMEVTYPER8_EL0 = encode(0b11, 0b011, 0b1110, 0b1101, 0b000), // RW
|
||
|
kPMEVTYPER9_EL0 = encode(0b11, 0b011, 0b1110, 0b1101, 0b001), // RW
|
||
|
kPMINTENCLR_EL1 = encode(0b11, 0b000, 0b1001, 0b1110, 0b010), // RW
|
||
|
kPMINTENSET_EL1 = encode(0b11, 0b000, 0b1001, 0b1110, 0b001), // RW
|
||
|
kPMMIR_EL1 = encode(0b11, 0b000, 0b1001, 0b1110, 0b110), // RW
|
||
|
kPMOVSCLR_EL0 = encode(0b11, 0b011, 0b1001, 0b1100, 0b011), // RW
|
||
|
kPMOVSSET_EL0 = encode(0b11, 0b011, 0b1001, 0b1110, 0b011), // RW
|
||
|
kPMSCR_EL1 = encode(0b11, 0b000, 0b1001, 0b1001, 0b000), // RW
|
||
|
kPMSCR_EL12 = encode(0b11, 0b101, 0b1001, 0b1001, 0b000), // RW
|
||
|
kPMSCR_EL2 = encode(0b11, 0b100, 0b1001, 0b1001, 0b000), // RW
|
||
|
kPMSELR_EL0 = encode(0b11, 0b011, 0b1001, 0b1100, 0b101), // RW
|
||
|
kPMSEVFR_EL1 = encode(0b11, 0b000, 0b1001, 0b1001, 0b101), // RW
|
||
|
kPMSFCR_EL1 = encode(0b11, 0b000, 0b1001, 0b1001, 0b100), // RW
|
||
|
kPMSICR_EL1 = encode(0b11, 0b000, 0b1001, 0b1001, 0b010), // RW
|
||
|
kPMSIDR_EL1 = encode(0b11, 0b000, 0b1001, 0b1001, 0b111), // RO
|
||
|
kPMSIRR_EL1 = encode(0b11, 0b000, 0b1001, 0b1001, 0b011), // RW
|
||
|
kPMSLATFR_EL1 = encode(0b11, 0b000, 0b1001, 0b1001, 0b110), // RW
|
||
|
kPMSWINC_EL0 = encode(0b11, 0b011, 0b1001, 0b1100, 0b100), // WO
|
||
|
kPMUSERENR_EL0 = encode(0b11, 0b011, 0b1001, 0b1110, 0b000), // RW
|
||
|
kPMXEVCNTR_EL0 = encode(0b11, 0b011, 0b1001, 0b1101, 0b010), // RW
|
||
|
kPMXEVTYPER_EL0 = encode(0b11, 0b011, 0b1001, 0b1101, 0b001), // RW
|
||
|
kREVIDR_EL1 = encode(0b11, 0b000, 0b0000, 0b0000, 0b110), // RO
|
||
|
kRGSR_EL1 = encode(0b11, 0b000, 0b0001, 0b0000, 0b101), // RW
|
||
|
kRMR_EL1 = encode(0b11, 0b000, 0b1100, 0b0000, 0b010), // RW
|
||
|
kRMR_EL2 = encode(0b11, 0b100, 0b1100, 0b0000, 0b010), // RW
|
||
|
kRMR_EL3 = encode(0b11, 0b110, 0b1100, 0b0000, 0b010), // RW
|
||
|
kRNDR = encode(0b11, 0b011, 0b0010, 0b0100, 0b000), // RO
|
||
|
kRNDRRS = encode(0b11, 0b011, 0b0010, 0b0100, 0b001), // RO
|
||
|
kRVBAR_EL1 = encode(0b11, 0b000, 0b1100, 0b0000, 0b001), // RO
|
||
|
kRVBAR_EL2 = encode(0b11, 0b100, 0b1100, 0b0000, 0b001), // RO
|
||
|
kRVBAR_EL3 = encode(0b11, 0b110, 0b1100, 0b0000, 0b001), // RO
|
||
|
kSCR_EL3 = encode(0b11, 0b110, 0b0001, 0b0001, 0b000), // RW
|
||
|
kSCTLR_EL1 = encode(0b11, 0b000, 0b0001, 0b0000, 0b000), // RW
|
||
|
kSCTLR_EL12 = encode(0b11, 0b101, 0b0001, 0b0000, 0b000), // RW
|
||
|
kSCTLR_EL2 = encode(0b11, 0b100, 0b0001, 0b0000, 0b000), // RW
|
||
|
kSCTLR_EL3 = encode(0b11, 0b110, 0b0001, 0b0000, 0b000), // RW
|
||
|
kSCXTNUM_EL0 = encode(0b11, 0b011, 0b1101, 0b0000, 0b111), // RW
|
||
|
kSCXTNUM_EL1 = encode(0b11, 0b000, 0b1101, 0b0000, 0b111), // RW
|
||
|
kSCXTNUM_EL12 = encode(0b11, 0b101, 0b1101, 0b0000, 0b111), // RW
|
||
|
kSCXTNUM_EL2 = encode(0b11, 0b100, 0b1101, 0b0000, 0b111), // RW
|
||
|
kSCXTNUM_EL3 = encode(0b11, 0b110, 0b1101, 0b0000, 0b111), // RW
|
||
|
kSDER32_EL2 = encode(0b11, 0b100, 0b0001, 0b0011, 0b001), // RW
|
||
|
kSDER32_EL3 = encode(0b11, 0b110, 0b0001, 0b0001, 0b001), // RW
|
||
|
kSPSR_EL1 = encode(0b11, 0b000, 0b0100, 0b0000, 0b000), // RW
|
||
|
kSPSR_EL12 = encode(0b11, 0b101, 0b0100, 0b0000, 0b000), // RW
|
||
|
kSPSR_EL2 = encode(0b11, 0b100, 0b0100, 0b0000, 0b000), // RW
|
||
|
kSPSR_EL3 = encode(0b11, 0b110, 0b0100, 0b0000, 0b000), // RW
|
||
|
kSPSR_abt = encode(0b11, 0b100, 0b0100, 0b0011, 0b001), // RW
|
||
|
kSPSR_fiq = encode(0b11, 0b100, 0b0100, 0b0011, 0b011), // RW
|
||
|
kSPSR_irq = encode(0b11, 0b100, 0b0100, 0b0011, 0b000), // RW
|
||
|
kSPSR_und = encode(0b11, 0b100, 0b0100, 0b0011, 0b010), // RW
|
||
|
kSPSel = encode(0b11, 0b000, 0b0100, 0b0010, 0b000), // RW
|
||
|
kSP_EL0 = encode(0b11, 0b000, 0b0100, 0b0001, 0b000), // RW
|
||
|
kSP_EL1 = encode(0b11, 0b100, 0b0100, 0b0001, 0b000), // RW
|
||
|
kSP_EL2 = encode(0b11, 0b110, 0b0100, 0b0001, 0b000), // RW
|
||
|
kSSBS = encode(0b11, 0b011, 0b0100, 0b0010, 0b110), // RW
|
||
|
kTCO = encode(0b11, 0b011, 0b0100, 0b0010, 0b111), // RW
|
||
|
kTCR_EL1 = encode(0b11, 0b000, 0b0010, 0b0000, 0b010), // RW
|
||
|
kTCR_EL12 = encode(0b11, 0b101, 0b0010, 0b0000, 0b010), // RW
|
||
|
kTCR_EL2 = encode(0b11, 0b100, 0b0010, 0b0000, 0b010), // RW
|
||
|
kTCR_EL3 = encode(0b11, 0b110, 0b0010, 0b0000, 0b010), // RW
|
||
|
kTEECR32_EL1 = encode(0b10, 0b010, 0b0000, 0b0000, 0b000), // RW
|
||
|
kTEEHBR32_EL1 = encode(0b10, 0b010, 0b0001, 0b0000, 0b000), // RW
|
||
|
kTFSRE0_EL1 = encode(0b11, 0b000, 0b0101, 0b0110, 0b001), // RW
|
||
|
kTFSR_EL1 = encode(0b11, 0b000, 0b0101, 0b0110, 0b000), // RW
|
||
|
kTFSR_EL12 = encode(0b11, 0b101, 0b0101, 0b0110, 0b000), // RW
|
||
|
kTFSR_EL2 = encode(0b11, 0b100, 0b0101, 0b0110, 0b000), // RW
|
||
|
kTFSR_EL3 = encode(0b11, 0b110, 0b0101, 0b0110, 0b000), // RW
|
||
|
kTPIDRRO_EL0 = encode(0b11, 0b011, 0b1101, 0b0000, 0b011), // RW
|
||
|
kTPIDR_EL0 = encode(0b11, 0b011, 0b1101, 0b0000, 0b010), // RW
|
||
|
kTPIDR_EL1 = encode(0b11, 0b000, 0b1101, 0b0000, 0b100), // RW
|
||
|
kTPIDR_EL2 = encode(0b11, 0b100, 0b1101, 0b0000, 0b010), // RW
|
||
|
kTPIDR_EL3 = encode(0b11, 0b110, 0b1101, 0b0000, 0b010), // RW
|
||
|
kTRBBASER_EL1 = encode(0b11, 0b000, 0b1001, 0b1011, 0b010), // RW
|
||
|
kTRBIDR_EL1 = encode(0b11, 0b000, 0b1001, 0b1011, 0b111), // RO
|
||
|
kTRBLIMITR_EL1 = encode(0b11, 0b000, 0b1001, 0b1011, 0b000), // RW
|
||
|
kTRBMAR_EL1 = encode(0b11, 0b000, 0b1001, 0b1011, 0b100), // RW
|
||
|
kTRBPTR_EL1 = encode(0b11, 0b000, 0b1001, 0b1011, 0b001), // RW
|
||
|
kTRBSR_EL1 = encode(0b11, 0b000, 0b1001, 0b1011, 0b011), // RW
|
||
|
kTRBTRG_EL1 = encode(0b11, 0b000, 0b1001, 0b1011, 0b110), // RW
|
||
|
kTRCACATR0 = encode(0b10, 0b001, 0b0010, 0b0000, 0b010), // RW
|
||
|
kTRCACATR1 = encode(0b10, 0b001, 0b0010, 0b0010, 0b010), // RW
|
||
|
kTRCACATR10 = encode(0b10, 0b001, 0b0010, 0b0100, 0b011), // RW
|
||
|
kTRCACATR11 = encode(0b10, 0b001, 0b0010, 0b0110, 0b011), // RW
|
||
|
kTRCACATR12 = encode(0b10, 0b001, 0b0010, 0b1000, 0b011), // RW
|
||
|
kTRCACATR13 = encode(0b10, 0b001, 0b0010, 0b1010, 0b011), // RW
|
||
|
kTRCACATR14 = encode(0b10, 0b001, 0b0010, 0b1100, 0b011), // RW
|
||
|
kTRCACATR15 = encode(0b10, 0b001, 0b0010, 0b1110, 0b011), // RW
|
||
|
kTRCACATR2 = encode(0b10, 0b001, 0b0010, 0b0100, 0b010), // RW
|
||
|
kTRCACATR3 = encode(0b10, 0b001, 0b0010, 0b0110, 0b010), // RW
|
||
|
kTRCACATR4 = encode(0b10, 0b001, 0b0010, 0b1000, 0b010), // RW
|
||
|
kTRCACATR5 = encode(0b10, 0b001, 0b0010, 0b1010, 0b010), // RW
|
||
|
kTRCACATR6 = encode(0b10, 0b001, 0b0010, 0b1100, 0b010), // RW
|
||
|
kTRCACATR7 = encode(0b10, 0b001, 0b0010, 0b1110, 0b010), // RW
|
||
|
kTRCACATR8 = encode(0b10, 0b001, 0b0010, 0b0000, 0b011), // RW
|
||
|
kTRCACATR9 = encode(0b10, 0b001, 0b0010, 0b0010, 0b011), // RW
|
||
|
kTRCACVR0 = encode(0b10, 0b001, 0b0010, 0b0000, 0b000), // RW
|
||
|
kTRCACVR1 = encode(0b10, 0b001, 0b0010, 0b0010, 0b000), // RW
|
||
|
kTRCACVR10 = encode(0b10, 0b001, 0b0010, 0b0100, 0b001), // RW
|
||
|
kTRCACVR11 = encode(0b10, 0b001, 0b0010, 0b0110, 0b001), // RW
|
||
|
kTRCACVR12 = encode(0b10, 0b001, 0b0010, 0b1000, 0b001), // RW
|
||
|
kTRCACVR13 = encode(0b10, 0b001, 0b0010, 0b1010, 0b001), // RW
|
||
|
kTRCACVR14 = encode(0b10, 0b001, 0b0010, 0b1100, 0b001), // RW
|
||
|
kTRCACVR15 = encode(0b10, 0b001, 0b0010, 0b1110, 0b001), // RW
|
||
|
kTRCACVR2 = encode(0b10, 0b001, 0b0010, 0b0100, 0b000), // RW
|
||
|
kTRCACVR3 = encode(0b10, 0b001, 0b0010, 0b0110, 0b000), // RW
|
||
|
kTRCACVR4 = encode(0b10, 0b001, 0b0010, 0b1000, 0b000), // RW
|
||
|
kTRCACVR5 = encode(0b10, 0b001, 0b0010, 0b1010, 0b000), // RW
|
||
|
kTRCACVR6 = encode(0b10, 0b001, 0b0010, 0b1100, 0b000), // RW
|
||
|
kTRCACVR7 = encode(0b10, 0b001, 0b0010, 0b1110, 0b000), // RW
|
||
|
kTRCACVR8 = encode(0b10, 0b001, 0b0010, 0b0000, 0b001), // RW
|
||
|
kTRCACVR9 = encode(0b10, 0b001, 0b0010, 0b0010, 0b001), // RW
|
||
|
kTRCAUTHSTATUS = encode(0b10, 0b001, 0b0111, 0b1110, 0b110), // RO
|
||
|
kTRCAUXCTLR = encode(0b10, 0b001, 0b0000, 0b0110, 0b000), // RW
|
||
|
kTRCBBCTLR = encode(0b10, 0b001, 0b0000, 0b1111, 0b000), // RW
|
||
|
kTRCCCCTLR = encode(0b10, 0b001, 0b0000, 0b1110, 0b000), // RW
|
||
|
kTRCCIDCCTLR0 = encode(0b10, 0b001, 0b0011, 0b0000, 0b010), // RW
|
||
|
kTRCCIDCCTLR1 = encode(0b10, 0b001, 0b0011, 0b0001, 0b010), // RW
|
||
|
kTRCCIDCVR0 = encode(0b10, 0b001, 0b0011, 0b0000, 0b000), // RW
|
||
|
kTRCCIDCVR1 = encode(0b10, 0b001, 0b0011, 0b0010, 0b000), // RW
|
||
|
kTRCCIDCVR2 = encode(0b10, 0b001, 0b0011, 0b0100, 0b000), // RW
|
||
|
kTRCCIDCVR3 = encode(0b10, 0b001, 0b0011, 0b0110, 0b000), // RW
|
||
|
kTRCCIDCVR4 = encode(0b10, 0b001, 0b0011, 0b1000, 0b000), // RW
|
||
|
kTRCCIDCVR5 = encode(0b10, 0b001, 0b0011, 0b1010, 0b000), // RW
|
||
|
kTRCCIDCVR6 = encode(0b10, 0b001, 0b0011, 0b1100, 0b000), // RW
|
||
|
kTRCCIDCVR7 = encode(0b10, 0b001, 0b0011, 0b1110, 0b000), // RW
|
||
|
kTRCCIDR0 = encode(0b10, 0b001, 0b0111, 0b1100, 0b111), // RO
|
||
|
kTRCCIDR1 = encode(0b10, 0b001, 0b0111, 0b1101, 0b111), // RO
|
||
|
kTRCCIDR2 = encode(0b10, 0b001, 0b0111, 0b1110, 0b111), // RO
|
||
|
kTRCCIDR3 = encode(0b10, 0b001, 0b0111, 0b1111, 0b111), // RO
|
||
|
kTRCCLAIMCLR = encode(0b10, 0b001, 0b0111, 0b1001, 0b110), // RW
|
||
|
kTRCCLAIMSET = encode(0b10, 0b001, 0b0111, 0b1000, 0b110), // RW
|
||
|
kTRCCNTCTLR0 = encode(0b10, 0b001, 0b0000, 0b0100, 0b101), // RW
|
||
|
kTRCCNTCTLR1 = encode(0b10, 0b001, 0b0000, 0b0101, 0b101), // RW
|
||
|
kTRCCNTCTLR2 = encode(0b10, 0b001, 0b0000, 0b0110, 0b101), // RW
|
||
|
kTRCCNTCTLR3 = encode(0b10, 0b001, 0b0000, 0b0111, 0b101), // RW
|
||
|
kTRCCNTRLDVR0 = encode(0b10, 0b001, 0b0000, 0b0000, 0b101), // RW
|
||
|
kTRCCNTRLDVR1 = encode(0b10, 0b001, 0b0000, 0b0001, 0b101), // RW
|
||
|
kTRCCNTRLDVR2 = encode(0b10, 0b001, 0b0000, 0b0010, 0b101), // RW
|
||
|
kTRCCNTRLDVR3 = encode(0b10, 0b001, 0b0000, 0b0011, 0b101), // RW
|
||
|
kTRCCNTVR0 = encode(0b10, 0b001, 0b0000, 0b1000, 0b101), // RW
|
||
|
kTRCCNTVR1 = encode(0b10, 0b001, 0b0000, 0b1001, 0b101), // RW
|
||
|
kTRCCNTVR2 = encode(0b10, 0b001, 0b0000, 0b1010, 0b101), // RW
|
||
|
kTRCCNTVR3 = encode(0b10, 0b001, 0b0000, 0b1011, 0b101), // RW
|
||
|
kTRCCONFIGR = encode(0b10, 0b001, 0b0000, 0b0100, 0b000), // RW
|
||
|
kTRCDEVAFF0 = encode(0b10, 0b001, 0b0111, 0b1010, 0b110), // RO
|
||
|
kTRCDEVAFF1 = encode(0b10, 0b001, 0b0111, 0b1011, 0b110), // RO
|
||
|
kTRCDEVARCH = encode(0b10, 0b001, 0b0111, 0b1111, 0b110), // RO
|
||
|
kTRCDEVID = encode(0b10, 0b001, 0b0111, 0b0010, 0b111), // RO
|
||
|
kTRCDEVTYPE = encode(0b10, 0b001, 0b0111, 0b0011, 0b111), // RO
|
||
|
kTRCDVCMR0 = encode(0b10, 0b001, 0b0010, 0b0000, 0b110), // RW
|
||
|
kTRCDVCMR1 = encode(0b10, 0b001, 0b0010, 0b0100, 0b110), // RW
|
||
|
kTRCDVCMR2 = encode(0b10, 0b001, 0b0010, 0b1000, 0b110), // RW
|
||
|
kTRCDVCMR3 = encode(0b10, 0b001, 0b0010, 0b1100, 0b110), // RW
|
||
|
kTRCDVCMR4 = encode(0b10, 0b001, 0b0010, 0b0000, 0b111), // RW
|
||
|
kTRCDVCMR5 = encode(0b10, 0b001, 0b0010, 0b0100, 0b111), // RW
|
||
|
kTRCDVCMR6 = encode(0b10, 0b001, 0b0010, 0b1000, 0b111), // RW
|
||
|
kTRCDVCMR7 = encode(0b10, 0b001, 0b0010, 0b1100, 0b111), // RW
|
||
|
kTRCDVCVR0 = encode(0b10, 0b001, 0b0010, 0b0000, 0b100), // RW
|
||
|
kTRCDVCVR1 = encode(0b10, 0b001, 0b0010, 0b0100, 0b100), // RW
|
||
|
kTRCDVCVR2 = encode(0b10, 0b001, 0b0010, 0b1000, 0b100), // RW
|
||
|
kTRCDVCVR3 = encode(0b10, 0b001, 0b0010, 0b1100, 0b100), // RW
|
||
|
kTRCDVCVR4 = encode(0b10, 0b001, 0b0010, 0b0000, 0b101), // RW
|
||
|
kTRCDVCVR5 = encode(0b10, 0b001, 0b0010, 0b0100, 0b101), // RW
|
||
|
kTRCDVCVR6 = encode(0b10, 0b001, 0b0010, 0b1000, 0b101), // RW
|
||
|
kTRCDVCVR7 = encode(0b10, 0b001, 0b0010, 0b1100, 0b101), // RW
|
||
|
kTRCEVENTCTL0R = encode(0b10, 0b001, 0b0000, 0b1000, 0b000), // RW
|
||
|
kTRCEVENTCTL1R = encode(0b10, 0b001, 0b0000, 0b1001, 0b000), // RW
|
||
|
kTRCEXTINSELR = encode(0b10, 0b001, 0b0000, 0b1000, 0b100), // RW
|
||
|
kTRCEXTINSELR0 = encode(0b10, 0b001, 0b0000, 0b1000, 0b100), // RW
|
||
|
kTRCEXTINSELR1 = encode(0b10, 0b001, 0b0000, 0b1001, 0b100), // RW
|
||
|
kTRCEXTINSELR2 = encode(0b10, 0b001, 0b0000, 0b1010, 0b100), // RW
|
||
|
kTRCEXTINSELR3 = encode(0b10, 0b001, 0b0000, 0b1011, 0b100), // RW
|
||
|
kTRCIDR0 = encode(0b10, 0b001, 0b0000, 0b1000, 0b111), // RO
|
||
|
kTRCIDR1 = encode(0b10, 0b001, 0b0000, 0b1001, 0b111), // RO
|
||
|
kTRCIDR10 = encode(0b10, 0b001, 0b0000, 0b0010, 0b110), // RO
|
||
|
kTRCIDR11 = encode(0b10, 0b001, 0b0000, 0b0011, 0b110), // RO
|
||
|
kTRCIDR12 = encode(0b10, 0b001, 0b0000, 0b0100, 0b110), // RO
|
||
|
kTRCIDR13 = encode(0b10, 0b001, 0b0000, 0b0101, 0b110), // RO
|
||
|
kTRCIDR2 = encode(0b10, 0b001, 0b0000, 0b1010, 0b111), // RO
|
||
|
kTRCIDR3 = encode(0b10, 0b001, 0b0000, 0b1011, 0b111), // RO
|
||
|
kTRCIDR4 = encode(0b10, 0b001, 0b0000, 0b1100, 0b111), // RO
|
||
|
kTRCIDR5 = encode(0b10, 0b001, 0b0000, 0b1101, 0b111), // RO
|
||
|
kTRCIDR6 = encode(0b10, 0b001, 0b0000, 0b1110, 0b111), // RO
|
||
|
kTRCIDR7 = encode(0b10, 0b001, 0b0000, 0b1111, 0b111), // RO
|
||
|
kTRCIDR8 = encode(0b10, 0b001, 0b0000, 0b0000, 0b110), // RO
|
||
|
kTRCIDR9 = encode(0b10, 0b001, 0b0000, 0b0001, 0b110), // RO
|
||
|
kTRCIMSPEC0 = encode(0b10, 0b001, 0b0000, 0b0000, 0b111), // RW
|
||
|
kTRCIMSPEC1 = encode(0b10, 0b001, 0b0000, 0b0001, 0b111), // RW
|
||
|
kTRCIMSPEC2 = encode(0b10, 0b001, 0b0000, 0b0010, 0b111), // RW
|
||
|
kTRCIMSPEC3 = encode(0b10, 0b001, 0b0000, 0b0011, 0b111), // RW
|
||
|
kTRCIMSPEC4 = encode(0b10, 0b001, 0b0000, 0b0100, 0b111), // RW
|
||
|
kTRCIMSPEC5 = encode(0b10, 0b001, 0b0000, 0b0101, 0b111), // RW
|
||
|
kTRCIMSPEC6 = encode(0b10, 0b001, 0b0000, 0b0110, 0b111), // RW
|
||
|
kTRCIMSPEC7 = encode(0b10, 0b001, 0b0000, 0b0111, 0b111), // RW
|
||
|
kTRCITCTRL = encode(0b10, 0b001, 0b0111, 0b0000, 0b100), // RW
|
||
|
kTRCLAR = encode(0b10, 0b001, 0b0111, 0b1100, 0b110), // WO
|
||
|
kTRCLSR = encode(0b10, 0b001, 0b0111, 0b1101, 0b110), // RO
|
||
|
kTRCOSLAR = encode(0b10, 0b001, 0b0001, 0b0000, 0b100), // WO
|
||
|
kTRCOSLSR = encode(0b10, 0b001, 0b0001, 0b0001, 0b100), // RO
|
||
|
kTRCPDCR = encode(0b10, 0b001, 0b0001, 0b0100, 0b100), // RW
|
||
|
kTRCPDSR = encode(0b10, 0b001, 0b0001, 0b0101, 0b100), // RO
|
||
|
kTRCPIDR0 = encode(0b10, 0b001, 0b0111, 0b1000, 0b111), // RO
|
||
|
kTRCPIDR1 = encode(0b10, 0b001, 0b0111, 0b1001, 0b111), // RO
|
||
|
kTRCPIDR2 = encode(0b10, 0b001, 0b0111, 0b1010, 0b111), // RO
|
||
|
kTRCPIDR3 = encode(0b10, 0b001, 0b0111, 0b1011, 0b111), // RO
|
||
|
kTRCPIDR4 = encode(0b10, 0b001, 0b0111, 0b0100, 0b111), // RO
|
||
|
kTRCPIDR5 = encode(0b10, 0b001, 0b0111, 0b0101, 0b111), // RO
|
||
|
kTRCPIDR6 = encode(0b10, 0b001, 0b0111, 0b0110, 0b111), // RO
|
||
|
kTRCPIDR7 = encode(0b10, 0b001, 0b0111, 0b0111, 0b111), // RO
|
||
|
kTRCPRGCTLR = encode(0b10, 0b001, 0b0000, 0b0001, 0b000), // RW
|
||
|
kTRCPROCSELR = encode(0b10, 0b001, 0b0000, 0b0010, 0b000), // RW
|
||
|
kTRCQCTLR = encode(0b10, 0b001, 0b0000, 0b0001, 0b001), // RW
|
||
|
kTRCRSCTLR10 = encode(0b10, 0b001, 0b0001, 0b1010, 0b000), // RW
|
||
|
kTRCRSCTLR11 = encode(0b10, 0b001, 0b0001, 0b1011, 0b000), // RW
|
||
|
kTRCRSCTLR12 = encode(0b10, 0b001, 0b0001, 0b1100, 0b000), // RW
|
||
|
kTRCRSCTLR13 = encode(0b10, 0b001, 0b0001, 0b1101, 0b000), // RW
|
||
|
kTRCRSCTLR14 = encode(0b10, 0b001, 0b0001, 0b1110, 0b000), // RW
|
||
|
kTRCRSCTLR15 = encode(0b10, 0b001, 0b0001, 0b1111, 0b000), // RW
|
||
|
kTRCRSCTLR16 = encode(0b10, 0b001, 0b0001, 0b0000, 0b001), // RW
|
||
|
kTRCRSCTLR17 = encode(0b10, 0b001, 0b0001, 0b0001, 0b001), // RW
|
||
|
kTRCRSCTLR18 = encode(0b10, 0b001, 0b0001, 0b0010, 0b001), // RW
|
||
|
kTRCRSCTLR19 = encode(0b10, 0b001, 0b0001, 0b0011, 0b001), // RW
|
||
|
kTRCRSCTLR2 = encode(0b10, 0b001, 0b0001, 0b0010, 0b000), // RW
|
||
|
kTRCRSCTLR20 = encode(0b10, 0b001, 0b0001, 0b0100, 0b001), // RW
|
||
|
kTRCRSCTLR21 = encode(0b10, 0b001, 0b0001, 0b0101, 0b001), // RW
|
||
|
kTRCRSCTLR22 = encode(0b10, 0b001, 0b0001, 0b0110, 0b001), // RW
|
||
|
kTRCRSCTLR23 = encode(0b10, 0b001, 0b0001, 0b0111, 0b001), // RW
|
||
|
kTRCRSCTLR24 = encode(0b10, 0b001, 0b0001, 0b1000, 0b001), // RW
|
||
|
kTRCRSCTLR25 = encode(0b10, 0b001, 0b0001, 0b1001, 0b001), // RW
|
||
|
kTRCRSCTLR26 = encode(0b10, 0b001, 0b0001, 0b1010, 0b001), // RW
|
||
|
kTRCRSCTLR27 = encode(0b10, 0b001, 0b0001, 0b1011, 0b001), // RW
|
||
|
kTRCRSCTLR28 = encode(0b10, 0b001, 0b0001, 0b1100, 0b001), // RW
|
||
|
kTRCRSCTLR29 = encode(0b10, 0b001, 0b0001, 0b1101, 0b001), // RW
|
||
|
kTRCRSCTLR3 = encode(0b10, 0b001, 0b0001, 0b0011, 0b000), // RW
|
||
|
kTRCRSCTLR30 = encode(0b10, 0b001, 0b0001, 0b1110, 0b001), // RW
|
||
|
kTRCRSCTLR31 = encode(0b10, 0b001, 0b0001, 0b1111, 0b001), // RW
|
||
|
kTRCRSCTLR4 = encode(0b10, 0b001, 0b0001, 0b0100, 0b000), // RW
|
||
|
kTRCRSCTLR5 = encode(0b10, 0b001, 0b0001, 0b0101, 0b000), // RW
|
||
|
kTRCRSCTLR6 = encode(0b10, 0b001, 0b0001, 0b0110, 0b000), // RW
|
||
|
kTRCRSCTLR7 = encode(0b10, 0b001, 0b0001, 0b0111, 0b000), // RW
|
||
|
kTRCRSCTLR8 = encode(0b10, 0b001, 0b0001, 0b1000, 0b000), // RW
|
||
|
kTRCRSCTLR9 = encode(0b10, 0b001, 0b0001, 0b1001, 0b000), // RW
|
||
|
kTRCRSR = encode(0b10, 0b001, 0b0000, 0b1010, 0b000), // RW
|
||
|
kTRCSEQEVR0 = encode(0b10, 0b001, 0b0000, 0b0000, 0b100), // RW
|
||
|
kTRCSEQEVR1 = encode(0b10, 0b001, 0b0000, 0b0001, 0b100), // RW
|
||
|
kTRCSEQEVR2 = encode(0b10, 0b001, 0b0000, 0b0010, 0b100), // RW
|
||
|
kTRCSEQRSTEVR = encode(0b10, 0b001, 0b0000, 0b0110, 0b100), // RW
|
||
|
kTRCSEQSTR = encode(0b10, 0b001, 0b0000, 0b0111, 0b100), // RW
|
||
|
kTRCSSCCR0 = encode(0b10, 0b001, 0b0001, 0b0000, 0b010), // RW
|
||
|
kTRCSSCCR1 = encode(0b10, 0b001, 0b0001, 0b0001, 0b010), // RW
|
||
|
kTRCSSCCR2 = encode(0b10, 0b001, 0b0001, 0b0010, 0b010), // RW
|
||
|
kTRCSSCCR3 = encode(0b10, 0b001, 0b0001, 0b0011, 0b010), // RW
|
||
|
kTRCSSCCR4 = encode(0b10, 0b001, 0b0001, 0b0100, 0b010), // RW
|
||
|
kTRCSSCCR5 = encode(0b10, 0b001, 0b0001, 0b0101, 0b010), // RW
|
||
|
kTRCSSCCR6 = encode(0b10, 0b001, 0b0001, 0b0110, 0b010), // RW
|
||
|
kTRCSSCCR7 = encode(0b10, 0b001, 0b0001, 0b0111, 0b010), // RW
|
||
|
kTRCSSCSR0 = encode(0b10, 0b001, 0b0001, 0b1000, 0b010), // RW
|
||
|
kTRCSSCSR1 = encode(0b10, 0b001, 0b0001, 0b1001, 0b010), // RW
|
||
|
kTRCSSCSR2 = encode(0b10, 0b001, 0b0001, 0b1010, 0b010), // RW
|
||
|
kTRCSSCSR3 = encode(0b10, 0b001, 0b0001, 0b1011, 0b010), // RW
|
||
|
kTRCSSCSR4 = encode(0b10, 0b001, 0b0001, 0b1100, 0b010), // RW
|
||
|
kTRCSSCSR5 = encode(0b10, 0b001, 0b0001, 0b1101, 0b010), // RW
|
||
|
kTRCSSCSR6 = encode(0b10, 0b001, 0b0001, 0b1110, 0b010), // RW
|
||
|
kTRCSSCSR7 = encode(0b10, 0b001, 0b0001, 0b1111, 0b010), // RW
|
||
|
kTRCSSPCICR0 = encode(0b10, 0b001, 0b0001, 0b0000, 0b011), // RW
|
||
|
kTRCSSPCICR1 = encode(0b10, 0b001, 0b0001, 0b0001, 0b011), // RW
|
||
|
kTRCSSPCICR2 = encode(0b10, 0b001, 0b0001, 0b0010, 0b011), // RW
|
||
|
kTRCSSPCICR3 = encode(0b10, 0b001, 0b0001, 0b0011, 0b011), // RW
|
||
|
kTRCSSPCICR4 = encode(0b10, 0b001, 0b0001, 0b0100, 0b011), // RW
|
||
|
kTRCSSPCICR5 = encode(0b10, 0b001, 0b0001, 0b0101, 0b011), // RW
|
||
|
kTRCSSPCICR6 = encode(0b10, 0b001, 0b0001, 0b0110, 0b011), // RW
|
||
|
kTRCSSPCICR7 = encode(0b10, 0b001, 0b0001, 0b0111, 0b011), // RW
|
||
|
kTRCSTALLCTLR = encode(0b10, 0b001, 0b0000, 0b1011, 0b000), // RW
|
||
|
kTRCSTATR = encode(0b10, 0b001, 0b0000, 0b0011, 0b000), // RO
|
||
|
kTRCSYNCPR = encode(0b10, 0b001, 0b0000, 0b1101, 0b000), // RW
|
||
|
kTRCTRACEIDR = encode(0b10, 0b001, 0b0000, 0b0000, 0b001), // RW
|
||
|
kTRCTSCTLR = encode(0b10, 0b001, 0b0000, 0b1100, 0b000), // RW
|
||
|
kTRCVDARCCTLR = encode(0b10, 0b001, 0b0000, 0b1010, 0b010), // RW
|
||
|
kTRCVDCTLR = encode(0b10, 0b001, 0b0000, 0b1000, 0b010), // RW
|
||
|
kTRCVDSACCTLR = encode(0b10, 0b001, 0b0000, 0b1001, 0b010), // RW
|
||
|
kTRCVICTLR = encode(0b10, 0b001, 0b0000, 0b0000, 0b010), // RW
|
||
|
kTRCVIIECTLR = encode(0b10, 0b001, 0b0000, 0b0001, 0b010), // RW
|
||
|
kTRCVIPCSSCTLR = encode(0b10, 0b001, 0b0000, 0b0011, 0b010), // RW
|
||
|
kTRCVISSCTLR = encode(0b10, 0b001, 0b0000, 0b0010, 0b010), // RW
|
||
|
kTRCVMIDCCTLR0 = encode(0b10, 0b001, 0b0011, 0b0010, 0b010), // RW
|
||
|
kTRCVMIDCCTLR1 = encode(0b10, 0b001, 0b0011, 0b0011, 0b010), // RW
|
||
|
kTRCVMIDCVR0 = encode(0b10, 0b001, 0b0011, 0b0000, 0b001), // RW
|
||
|
kTRCVMIDCVR1 = encode(0b10, 0b001, 0b0011, 0b0010, 0b001), // RW
|
||
|
kTRCVMIDCVR2 = encode(0b10, 0b001, 0b0011, 0b0100, 0b001), // RW
|
||
|
kTRCVMIDCVR3 = encode(0b10, 0b001, 0b0011, 0b0110, 0b001), // RW
|
||
|
kTRCVMIDCVR4 = encode(0b10, 0b001, 0b0011, 0b1000, 0b001), // RW
|
||
|
kTRCVMIDCVR5 = encode(0b10, 0b001, 0b0011, 0b1010, 0b001), // RW
|
||
|
kTRCVMIDCVR6 = encode(0b10, 0b001, 0b0011, 0b1100, 0b001), // RW
|
||
|
kTRCVMIDCVR7 = encode(0b10, 0b001, 0b0011, 0b1110, 0b001), // RW
|
||
|
kTRFCR_EL1 = encode(0b11, 0b000, 0b0001, 0b0010, 0b001), // RW
|
||
|
kTRFCR_EL12 = encode(0b11, 0b101, 0b0001, 0b0010, 0b001), // RW
|
||
|
kTRFCR_EL2 = encode(0b11, 0b100, 0b0001, 0b0010, 0b001), // RW
|
||
|
kTTBR0_EL1 = encode(0b11, 0b000, 0b0010, 0b0000, 0b000), // RW
|
||
|
kTTBR0_EL12 = encode(0b11, 0b101, 0b0010, 0b0000, 0b000), // RW
|
||
|
kTTBR0_EL2 = encode(0b11, 0b100, 0b0010, 0b0000, 0b000), // RW
|
||
|
kTTBR0_EL3 = encode(0b11, 0b110, 0b0010, 0b0000, 0b000), // RW
|
||
|
kTTBR1_EL1 = encode(0b11, 0b000, 0b0010, 0b0000, 0b001), // RW
|
||
|
kTTBR1_EL12 = encode(0b11, 0b101, 0b0010, 0b0000, 0b001), // RW
|
||
|
kTTBR1_EL2 = encode(0b11, 0b100, 0b0010, 0b0000, 0b001), // RW
|
||
|
kUAO = encode(0b11, 0b000, 0b0100, 0b0010, 0b100), // RW
|
||
|
kVBAR_EL1 = encode(0b11, 0b000, 0b1100, 0b0000, 0b000), // RW
|
||
|
kVBAR_EL12 = encode(0b11, 0b101, 0b1100, 0b0000, 0b000), // RW
|
||
|
kVBAR_EL2 = encode(0b11, 0b100, 0b1100, 0b0000, 0b000), // RW
|
||
|
kVBAR_EL3 = encode(0b11, 0b110, 0b1100, 0b0000, 0b000), // RW
|
||
|
kVDISR_EL2 = encode(0b11, 0b100, 0b1100, 0b0001, 0b001), // RW
|
||
|
kVMPIDR_EL2 = encode(0b11, 0b100, 0b0000, 0b0000, 0b101), // RW
|
||
|
kVNCR_EL2 = encode(0b11, 0b100, 0b0010, 0b0010, 0b000), // RW
|
||
|
kVPIDR_EL2 = encode(0b11, 0b100, 0b0000, 0b0000, 0b000), // RW
|
||
|
kVSESR_EL2 = encode(0b11, 0b100, 0b0101, 0b0010, 0b011), // RW
|
||
|
kVSTCR_EL2 = encode(0b11, 0b100, 0b0010, 0b0110, 0b010), // RW
|
||
|
kVSTTBR_EL2 = encode(0b11, 0b100, 0b0010, 0b0110, 0b000), // RW
|
||
|
kVTCR_EL2 = encode(0b11, 0b100, 0b0010, 0b0001, 0b010), // RW
|
||
|
kVTTBR_EL2 = encode(0b11, 0b100, 0b0010, 0b0001, 0b000), // RW
|
||
|
kZCR_EL1 = encode(0b11, 0b000, 0b0001, 0b0010, 0b000), // RW
|
||
|
kZCR_EL12 = encode(0b11, 0b101, 0b0001, 0b0010, 0b000), // RW
|
||
|
kZCR_EL2 = encode(0b11, 0b100, 0b0001, 0b0010, 0b000), // RW
|
||
|
kZCR_EL3 = encode(0b11, 0b110, 0b0001, 0b0010, 0b000) // RW
|
||
|
};
|
||
|
};
|
||
|
|
||
|
} // {Predicate}
|
||
|
|
||
|
//! \}
|
||
|
|
||
|
ASMJIT_END_SUB_NAMESPACE
|
||
|
|
||
|
#endif // ASMJIT_ARM_A64GLOBALS_H_INCLUDED
|