cpu.h (bf05340cb655637451162c02dadcd6581a05c02c) cpu.h (ce3125bed935a12e619a8253c19340ecaa899347)
1/*
2 * ARM virtual CPU header
3 *
4 * Copyright (c) 2003 Fabrice Bellard
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either

--- 3596 unchanged lines hidden (view full) ---

3605 return FIELD_EX32(id->id_mmfr4, ID_MMFR4, AC2) != 0;
3606}
3607
3608static inline bool isar_feature_aa32_ccidx(const ARMISARegisters *id)
3609{
3610 return FIELD_EX32(id->id_mmfr4, ID_MMFR4, CCIDX) != 0;
3611}
3612
1/*
2 * ARM virtual CPU header
3 *
4 * Copyright (c) 2003 Fabrice Bellard
5 *
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either

--- 3596 unchanged lines hidden (view full) ---

3605 return FIELD_EX32(id->id_mmfr4, ID_MMFR4, AC2) != 0;
3606}
3607
3608static inline bool isar_feature_aa32_ccidx(const ARMISARegisters *id)
3609{
3610 return FIELD_EX32(id->id_mmfr4, ID_MMFR4, CCIDX) != 0;
3611}
3612
3613static inline bool isar_feature_aa32_tts2uxn(const ARMISARegisters *id)
3614{
3615 return FIELD_EX32(id->id_mmfr4, ID_MMFR4, XNX) != 0;
3616}
3617
3613/*
3614 * 64-bit feature tests via id registers.
3615 */
3616static inline bool isar_feature_aa64_aes(const ARMISARegisters *id)
3617{
3618 return FIELD_EX64(id->id_aa64isar0, ID_AA64ISAR0, AES) != 0;
3619}
3620

--- 196 unchanged lines hidden (view full) ---

3817 return FIELD_EX64(id->id_aa64isar1, ID_AA64ISAR1, LRCPC) >= 2;
3818}
3819
3820static inline bool isar_feature_aa64_ccidx(const ARMISARegisters *id)
3821{
3822 return FIELD_EX64(id->id_aa64mmfr2, ID_AA64MMFR2, CCIDX) != 0;
3823}
3824
3618/*
3619 * 64-bit feature tests via id registers.
3620 */
3621static inline bool isar_feature_aa64_aes(const ARMISARegisters *id)
3622{
3623 return FIELD_EX64(id->id_aa64isar0, ID_AA64ISAR0, AES) != 0;
3624}
3625

--- 196 unchanged lines hidden (view full) ---

3822 return FIELD_EX64(id->id_aa64isar1, ID_AA64ISAR1, LRCPC) >= 2;
3823}
3824
3825static inline bool isar_feature_aa64_ccidx(const ARMISARegisters *id)
3826{
3827 return FIELD_EX64(id->id_aa64mmfr2, ID_AA64MMFR2, CCIDX) != 0;
3828}
3829
3830static inline bool isar_feature_aa64_tts2uxn(const ARMISARegisters *id)
3831{
3832 return FIELD_EX64(id->id_aa64mmfr1, ID_AA64MMFR1, XNX) != 0;
3833}
3834
3825/*
3826 * Feature tests for "does this exist in either 32-bit or 64-bit?"
3827 */
3828static inline bool isar_feature_any_fp16(const ARMISARegisters *id)
3829{
3830 return isar_feature_aa64_fp16(id) || isar_feature_aa32_fp16_arith(id);
3831}
3832

--- 12 unchanged lines hidden (view full) ---

3845 return isar_feature_aa64_pmu_8_4(id) || isar_feature_aa32_pmu_8_4(id);
3846}
3847
3848static inline bool isar_feature_any_ccidx(const ARMISARegisters *id)
3849{
3850 return isar_feature_aa64_ccidx(id) || isar_feature_aa32_ccidx(id);
3851}
3852
3835/*
3836 * Feature tests for "does this exist in either 32-bit or 64-bit?"
3837 */
3838static inline bool isar_feature_any_fp16(const ARMISARegisters *id)
3839{
3840 return isar_feature_aa64_fp16(id) || isar_feature_aa32_fp16_arith(id);
3841}
3842

--- 12 unchanged lines hidden (view full) ---

3855 return isar_feature_aa64_pmu_8_4(id) || isar_feature_aa32_pmu_8_4(id);
3856}
3857
3858static inline bool isar_feature_any_ccidx(const ARMISARegisters *id)
3859{
3860 return isar_feature_aa64_ccidx(id) || isar_feature_aa32_ccidx(id);
3861}
3862
3863static inline bool isar_feature_any_tts2uxn(const ARMISARegisters *id)
3864{
3865 return isar_feature_aa64_tts2uxn(id) || isar_feature_aa32_tts2uxn(id);
3866}
3867
3853/*
3854 * Forward to the above feature tests given an ARMCPU pointer.
3855 */
3856#define cpu_isar_feature(name, cpu) \
3857 ({ ARMCPU *cpu_ = (cpu); isar_feature_##name(&cpu_->isar); })
3858
3859#endif
3868/*
3869 * Forward to the above feature tests given an ARMCPU pointer.
3870 */
3871#define cpu_isar_feature(name, cpu) \
3872 ({ ARMCPU *cpu_ = (cpu); isar_feature_##name(&cpu_->isar); })
3873
3874#endif