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 |