SYS S1_<op1>_<Cn>_<Cm>_<op2>, SYSL S1_<op1>_<Cn>_<Cm>_<op2>, SYSP S1_<op1>_<Cn>_<Cm>_<op2>, IMPLEMENTATION DEFINED System instructions

The SYS S1_<op1>_<Cn>_<Cm>_<op2>, SYSL S1_<op1>_<Cn>_<Cm>_<op2>, SYSP S1_<op1>_<Cn>_<Cm>_<op2> characteristics are:

Purpose

This area of the System instruction encoding space is reserved for IMPLEMENTATION DEFINED System instructions.

Configuration

There are no configuration notes.

Attributes

SYS S1_<op1>_<Cn>_<Cm>_<op2>, SYSL S1_<op1>_<Cn>_<Cm>_<op2>, SYSP S1_<op1>_<Cn>_<Cm>_<op2> is a:

Field descriptions

When FEAT_SYSINSTR128 is implemented:

12712612512412312212112011911811711611511411311211111010910810710610510410310210110099989796
IMPLEMENTATION DEFINED
9594939291908988878685848382818079787776757473727170696867666564
IMPLEMENTATION DEFINED
6362616059585756555453525150494847464544434241403938373635343332
IMPLEMENTATION DEFINED
313029282726252423222120191817161514131211109876543210
IMPLEMENTATION DEFINED

IMPLEMENTATION DEFINED, bits [127:0]

IMPLEMENTATION DEFINED.

Otherwise:

6362616059585756555453525150494847464544434241403938373635343332
313029282726252423222120191817161514131211109876543210
IMPLEMENTATION DEFINED
IMPLEMENTATION DEFINED

IMPLEMENTATION DEFINED, bits [63:0]

IMPLEMENTATION DEFINED.

Executing SYS S1_<op1>_<Cn>_<Cm>_<op2>, SYSL S1_<op1>_<Cn>_<Cm>_<op2>, SYSP S1_<op1>_<Cn>_<Cm>_<op2>

Accesses to this instruction use the following encodings in the System instruction encoding space:

SYS #<op1>, <Cn>, <Cm>, #<op2>{, <Xt>}

op0op1CRnCRmop2
0b01op1[2:0]0b1x11Cm[3:0]op2[2:0]

if PSTATE.EL == EL0 then if !ELIsInHost(EL0) && SCTLR_EL1.TIDCP == '1' then if EL2Enabled() && HCR_EL2.TGE == '1' then AArch64.SystemAccessTrap(EL2, 0x18); else AArch64.SystemAccessTrap(EL1, 0x18); elsif ELIsInHost(EL0) && SCTLR_EL2.TIDCP == '1' then AArch64.SystemAccessTrap(EL2, 0x18); else AArch64.ImpDefSysInstr(1, op1, CRn, CRm, op2, t); elsif PSTATE.EL == EL1 then if EL2Enabled() && HCR_EL2.TIDCP == '1' then AArch64.SystemAccessTrap(EL2, 0x18); else AArch64.ImpDefSysInstr(1, op1, CRn, CRm, op2, t); elsif PSTATE.EL == EL2 then AArch64.ImpDefSysInstr(1, op1, CRn, CRm, op2, t); elsif PSTATE.EL == EL3 then AArch64.ImpDefSysInstr(1, op1, CRn, CRm, op2, t);

SYSL <Xt>, #<op1>, <Cn>, <Cm>, #<op2>

op0op1CRnCRmop2
0b01op1[2:0]0b1x11Cm[3:0]op2[2:0]

if PSTATE.EL == EL0 then if !ELIsInHost(EL0) && SCTLR_EL1.TIDCP == '1' then if EL2Enabled() && HCR_EL2.TGE == '1' then AArch64.SystemAccessTrap(EL2, 0x18); else AArch64.SystemAccessTrap(EL1, 0x18); elsif ELIsInHost(EL0) && SCTLR_EL2.TIDCP == '1' then AArch64.SystemAccessTrap(EL2, 0x18); else AArch64.ImpDefSysInstrWithResult(1, op1, CRn, CRm, op2); elsif PSTATE.EL == EL1 then if EL2Enabled() && HCR_EL2.TIDCP == '1' then AArch64.SystemAccessTrap(EL2, 0x18); else AArch64.ImpDefSysInstrWithResult(1, op1, CRn, CRm, op2); elsif PSTATE.EL == EL2 then AArch64.ImpDefSysInstrWithResult(1, op1, CRn, CRm, op2); elsif PSTATE.EL == EL3 then AArch64.ImpDefSysInstrWithResult(1, op1, CRn, CRm, op2);

When FEAT_SYSINSTR128 is implemented

SYSP #<op1>, <Cn>, <Cm>, #<op2>{, <Xt>, <Xt2>}

op0op1CRnCRmop2
0b01op1[2:0]0b1x11Cm[3:0]op2[2:0]

if PSTATE.EL == EL0 then if !ELIsInHost(EL0) && SCTLR_EL1.TIDCP == '1' then if EL2Enabled() && HCR_EL2.TGE == '1' then AArch64.SystemAccessTrap(EL2, 0x14); else AArch64.SystemAccessTrap(EL1, 0x14); elsif ELIsInHost(EL0) && SCTLR_EL2.TIDCP == '1' then AArch64.SystemAccessTrap(EL2, 0x14); else AArch64.ImpDefSysInstr128(1, op1, CRn, CRm, op2, t, t2); elsif PSTATE.EL == EL1 then if EL2Enabled() && HCR_EL2.TIDCP == '1' then AArch64.SystemAccessTrap(EL2, 0x14); else AArch64.ImpDefSysInstr128(1, op1, CRn, CRm, op2, t, t2); elsif PSTATE.EL == EL2 then AArch64.ImpDefSysInstr128(1, op1, CRn, CRm, op2, t, t2); elsif PSTATE.EL == EL3 then AArch64.ImpDefSysInstr128(1, op1, CRn, CRm, op2, t, t2);


15/12/2024 22:27; 5e0a212688c6bd7aee92394b6f5e491b4d0fee1d

Copyright © 2010-2024 Arm Limited or its affiliates. All rights reserved. This document is Non-Confidential.