mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
target/arm: Implement FEAT_CHK
This feature contains only the CHKFEAT instruction. It has no ID enable, being back-allocated into the hint nop space. Reviewed-by: Gustavo Romero <gustavo.romero@linaro.org> Reviewed-by: Pierrick Bouvier <pierrick.bouvier@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20251008215613.300150-34-richard.henderson@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
committed by
Peter Maydell
parent
e5c79193ec
commit
2b6c55fb03
@@ -28,6 +28,7 @@ the following architecture extensions:
|
||||
- FEAT_BF16 (AArch64 BFloat16 instructions)
|
||||
- FEAT_BTI (Branch Target Identification)
|
||||
- FEAT_CCIDX (Extended cache index)
|
||||
- FEAT_CHK (Check Feature Status)
|
||||
- FEAT_CMOW (Control for cache maintenance permission)
|
||||
- FEAT_CRC32 (CRC32 instructions)
|
||||
- FEAT_Crypto (Cryptographic Extension)
|
||||
|
||||
@@ -256,6 +256,7 @@ ERETA 1101011 0100 11111 00001 m:1 11111 11111 &reta # ERETAA, ERETAB
|
||||
AUTIASP 1101 0101 0000 0011 0010 0011 101 11111
|
||||
AUTIBZ 1101 0101 0000 0011 0010 0011 110 11111
|
||||
AUTIBSP 1101 0101 0000 0011 0010 0011 111 11111
|
||||
CHKFEAT 1101 0101 0000 0011 0010 0101 000 11111
|
||||
]
|
||||
# The canonical NOP has CRm == op2 == 0, but all of the space
|
||||
# that isn't specifically allocated to an instruction must NOP
|
||||
|
||||
@@ -2124,6 +2124,20 @@ static bool trans_AUTIBSP(DisasContext *s, arg_AUTIBSP *a)
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool trans_CHKFEAT(DisasContext *s, arg_CHKFEAT *a)
|
||||
{
|
||||
uint64_t feat_en = 0;
|
||||
|
||||
if (s->gcs_en) {
|
||||
feat_en |= 1 << 0;
|
||||
}
|
||||
if (feat_en) {
|
||||
TCGv_i64 x16 = cpu_reg(s, 16);
|
||||
tcg_gen_andi_i64(x16, x16, ~feat_en);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool trans_CLREX(DisasContext *s, arg_CLREX *a)
|
||||
{
|
||||
tcg_gen_movi_i64(cpu_exclusive_addr, -1);
|
||||
|
||||
Reference in New Issue
Block a user