mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 07:43:54 -06:00
target/riscv: move RISCVCPUConfig fields to a header file
To support merging a subclass's RISCVCPUDef into the superclass, a list of all the CPU features is needed. Put them into a header file that can be included multiple times, expanding the macros BOOL_FIELD and TYPE_FIELD to different operations. Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
7f9e15d82d
commit
12877e739b
2 changed files with 173 additions and 160 deletions
|
@ -22,166 +22,9 @@
|
|||
#define RISCV_CPU_CFG_H
|
||||
|
||||
struct RISCVCPUConfig {
|
||||
bool ext_zba;
|
||||
bool ext_zbb;
|
||||
bool ext_zbc;
|
||||
bool ext_zbkb;
|
||||
bool ext_zbkc;
|
||||
bool ext_zbkx;
|
||||
bool ext_zbs;
|
||||
bool ext_zca;
|
||||
bool ext_zcb;
|
||||
bool ext_zcd;
|
||||
bool ext_zce;
|
||||
bool ext_zcf;
|
||||
bool ext_zcmp;
|
||||
bool ext_zcmt;
|
||||
bool ext_zk;
|
||||
bool ext_zkn;
|
||||
bool ext_zknd;
|
||||
bool ext_zkne;
|
||||
bool ext_zknh;
|
||||
bool ext_zkr;
|
||||
bool ext_zks;
|
||||
bool ext_zksed;
|
||||
bool ext_zksh;
|
||||
bool ext_zkt;
|
||||
bool ext_zifencei;
|
||||
bool ext_zicntr;
|
||||
bool ext_zicsr;
|
||||
bool ext_zicbom;
|
||||
bool ext_zicbop;
|
||||
bool ext_zicboz;
|
||||
bool ext_zicfilp;
|
||||
bool ext_zicfiss;
|
||||
bool ext_zicond;
|
||||
bool ext_zihintntl;
|
||||
bool ext_zihintpause;
|
||||
bool ext_zihpm;
|
||||
bool ext_zimop;
|
||||
bool ext_zcmop;
|
||||
bool ext_ztso;
|
||||
bool ext_smstateen;
|
||||
bool ext_sstc;
|
||||
bool ext_smcdeleg;
|
||||
bool ext_ssccfg;
|
||||
bool ext_smcntrpmf;
|
||||
bool ext_smcsrind;
|
||||
bool ext_sscsrind;
|
||||
bool ext_ssdbltrp;
|
||||
bool ext_smdbltrp;
|
||||
bool ext_svadu;
|
||||
bool ext_svinval;
|
||||
bool ext_svnapot;
|
||||
bool ext_svpbmt;
|
||||
bool ext_svvptc;
|
||||
bool ext_svukte;
|
||||
bool ext_zdinx;
|
||||
bool ext_zaamo;
|
||||
bool ext_zacas;
|
||||
bool ext_zama16b;
|
||||
bool ext_zabha;
|
||||
bool ext_zalrsc;
|
||||
bool ext_zawrs;
|
||||
bool ext_zfa;
|
||||
bool ext_zfbfmin;
|
||||
bool ext_zfh;
|
||||
bool ext_zfhmin;
|
||||
bool ext_zfinx;
|
||||
bool ext_zhinx;
|
||||
bool ext_zhinxmin;
|
||||
bool ext_zve32f;
|
||||
bool ext_zve32x;
|
||||
bool ext_zve64f;
|
||||
bool ext_zve64d;
|
||||
bool ext_zve64x;
|
||||
bool ext_zvbb;
|
||||
bool ext_zvbc;
|
||||
bool ext_zvkb;
|
||||
bool ext_zvkg;
|
||||
bool ext_zvkned;
|
||||
bool ext_zvknha;
|
||||
bool ext_zvknhb;
|
||||
bool ext_zvksed;
|
||||
bool ext_zvksh;
|
||||
bool ext_zvkt;
|
||||
bool ext_zvkn;
|
||||
bool ext_zvknc;
|
||||
bool ext_zvkng;
|
||||
bool ext_zvks;
|
||||
bool ext_zvksc;
|
||||
bool ext_zvksg;
|
||||
bool ext_zmmul;
|
||||
bool ext_zvfbfmin;
|
||||
bool ext_zvfbfwma;
|
||||
bool ext_zvfh;
|
||||
bool ext_zvfhmin;
|
||||
bool ext_smaia;
|
||||
bool ext_ssaia;
|
||||
bool ext_smctr;
|
||||
bool ext_ssctr;
|
||||
bool ext_sscofpmf;
|
||||
bool ext_smepmp;
|
||||
bool ext_smrnmi;
|
||||
bool ext_ssnpm;
|
||||
bool ext_smnpm;
|
||||
bool ext_smmpm;
|
||||
bool ext_sspm;
|
||||
bool ext_supm;
|
||||
bool rvv_ta_all_1s;
|
||||
bool rvv_ma_all_1s;
|
||||
bool rvv_vl_half_avl;
|
||||
|
||||
uint32_t mvendorid;
|
||||
uint64_t marchid;
|
||||
uint64_t mimpid;
|
||||
|
||||
/* Named features */
|
||||
bool ext_svade;
|
||||
bool ext_zic64b;
|
||||
bool ext_ssstateen;
|
||||
bool ext_sha;
|
||||
|
||||
/*
|
||||
* Always 'true' booleans for named features
|
||||
* TCG always implement/can't be user disabled,
|
||||
* based on spec version.
|
||||
*/
|
||||
bool has_priv_1_13;
|
||||
bool has_priv_1_12;
|
||||
bool has_priv_1_11;
|
||||
|
||||
/* Always enabled for TCG if has_priv_1_11 */
|
||||
bool ext_ziccrse;
|
||||
|
||||
/* Vendor-specific custom extensions */
|
||||
bool ext_xtheadba;
|
||||
bool ext_xtheadbb;
|
||||
bool ext_xtheadbs;
|
||||
bool ext_xtheadcmo;
|
||||
bool ext_xtheadcondmov;
|
||||
bool ext_xtheadfmemidx;
|
||||
bool ext_xtheadfmv;
|
||||
bool ext_xtheadmac;
|
||||
bool ext_xtheadmemidx;
|
||||
bool ext_xtheadmempair;
|
||||
bool ext_xtheadsync;
|
||||
bool ext_XVentanaCondOps;
|
||||
|
||||
uint32_t pmu_mask;
|
||||
uint16_t vlenb;
|
||||
uint16_t elen;
|
||||
uint16_t cbom_blocksize;
|
||||
uint16_t cbop_blocksize;
|
||||
uint16_t cboz_blocksize;
|
||||
bool mmu;
|
||||
bool pmp;
|
||||
bool debug;
|
||||
bool misa_w;
|
||||
|
||||
bool short_isa_string;
|
||||
|
||||
int8_t max_satp_mode;
|
||||
#define BOOL_FIELD(x) bool x;
|
||||
#define TYPED_FIELD(type, x) type x;
|
||||
#include "cpu_cfg_fields.h.inc"
|
||||
};
|
||||
|
||||
typedef struct RISCVCPUConfig RISCVCPUConfig;
|
||||
|
|
170
target/riscv/cpu_cfg_fields.h.inc
Normal file
170
target/riscv/cpu_cfg_fields.h.inc
Normal file
|
@ -0,0 +1,170 @@
|
|||
/*
|
||||
* Required definitions before including this file:
|
||||
*
|
||||
* #define BOOL_FIELD(x)
|
||||
* #define TYPED_FIELD(type, x)
|
||||
*/
|
||||
|
||||
BOOL_FIELD(ext_zba)
|
||||
BOOL_FIELD(ext_zbb)
|
||||
BOOL_FIELD(ext_zbc)
|
||||
BOOL_FIELD(ext_zbkb)
|
||||
BOOL_FIELD(ext_zbkc)
|
||||
BOOL_FIELD(ext_zbkx)
|
||||
BOOL_FIELD(ext_zbs)
|
||||
BOOL_FIELD(ext_zca)
|
||||
BOOL_FIELD(ext_zcb)
|
||||
BOOL_FIELD(ext_zcd)
|
||||
BOOL_FIELD(ext_zce)
|
||||
BOOL_FIELD(ext_zcf)
|
||||
BOOL_FIELD(ext_zcmp)
|
||||
BOOL_FIELD(ext_zcmt)
|
||||
BOOL_FIELD(ext_zk)
|
||||
BOOL_FIELD(ext_zkn)
|
||||
BOOL_FIELD(ext_zknd)
|
||||
BOOL_FIELD(ext_zkne)
|
||||
BOOL_FIELD(ext_zknh)
|
||||
BOOL_FIELD(ext_zkr)
|
||||
BOOL_FIELD(ext_zks)
|
||||
BOOL_FIELD(ext_zksed)
|
||||
BOOL_FIELD(ext_zksh)
|
||||
BOOL_FIELD(ext_zkt)
|
||||
BOOL_FIELD(ext_zifencei)
|
||||
BOOL_FIELD(ext_zicntr)
|
||||
BOOL_FIELD(ext_zicsr)
|
||||
BOOL_FIELD(ext_zicbom)
|
||||
BOOL_FIELD(ext_zicbop)
|
||||
BOOL_FIELD(ext_zicboz)
|
||||
BOOL_FIELD(ext_zicfilp)
|
||||
BOOL_FIELD(ext_zicfiss)
|
||||
BOOL_FIELD(ext_zicond)
|
||||
BOOL_FIELD(ext_zihintntl)
|
||||
BOOL_FIELD(ext_zihintpause)
|
||||
BOOL_FIELD(ext_zihpm)
|
||||
BOOL_FIELD(ext_zimop)
|
||||
BOOL_FIELD(ext_zcmop)
|
||||
BOOL_FIELD(ext_ztso)
|
||||
BOOL_FIELD(ext_smstateen)
|
||||
BOOL_FIELD(ext_sstc)
|
||||
BOOL_FIELD(ext_smcdeleg)
|
||||
BOOL_FIELD(ext_ssccfg)
|
||||
BOOL_FIELD(ext_smcntrpmf)
|
||||
BOOL_FIELD(ext_smcsrind)
|
||||
BOOL_FIELD(ext_sscsrind)
|
||||
BOOL_FIELD(ext_ssdbltrp)
|
||||
BOOL_FIELD(ext_smdbltrp)
|
||||
BOOL_FIELD(ext_svadu)
|
||||
BOOL_FIELD(ext_svinval)
|
||||
BOOL_FIELD(ext_svnapot)
|
||||
BOOL_FIELD(ext_svpbmt)
|
||||
BOOL_FIELD(ext_svvptc)
|
||||
BOOL_FIELD(ext_svukte)
|
||||
BOOL_FIELD(ext_zdinx)
|
||||
BOOL_FIELD(ext_zaamo)
|
||||
BOOL_FIELD(ext_zacas)
|
||||
BOOL_FIELD(ext_zama16b)
|
||||
BOOL_FIELD(ext_zabha)
|
||||
BOOL_FIELD(ext_zalrsc)
|
||||
BOOL_FIELD(ext_zawrs)
|
||||
BOOL_FIELD(ext_zfa)
|
||||
BOOL_FIELD(ext_zfbfmin)
|
||||
BOOL_FIELD(ext_zfh)
|
||||
BOOL_FIELD(ext_zfhmin)
|
||||
BOOL_FIELD(ext_zfinx)
|
||||
BOOL_FIELD(ext_zhinx)
|
||||
BOOL_FIELD(ext_zhinxmin)
|
||||
BOOL_FIELD(ext_zve32f)
|
||||
BOOL_FIELD(ext_zve32x)
|
||||
BOOL_FIELD(ext_zve64f)
|
||||
BOOL_FIELD(ext_zve64d)
|
||||
BOOL_FIELD(ext_zve64x)
|
||||
BOOL_FIELD(ext_zvbb)
|
||||
BOOL_FIELD(ext_zvbc)
|
||||
BOOL_FIELD(ext_zvkb)
|
||||
BOOL_FIELD(ext_zvkg)
|
||||
BOOL_FIELD(ext_zvkned)
|
||||
BOOL_FIELD(ext_zvknha)
|
||||
BOOL_FIELD(ext_zvknhb)
|
||||
BOOL_FIELD(ext_zvksed)
|
||||
BOOL_FIELD(ext_zvksh)
|
||||
BOOL_FIELD(ext_zvkt)
|
||||
BOOL_FIELD(ext_zvkn)
|
||||
BOOL_FIELD(ext_zvknc)
|
||||
BOOL_FIELD(ext_zvkng)
|
||||
BOOL_FIELD(ext_zvks)
|
||||
BOOL_FIELD(ext_zvksc)
|
||||
BOOL_FIELD(ext_zvksg)
|
||||
BOOL_FIELD(ext_zmmul)
|
||||
BOOL_FIELD(ext_zvfbfmin)
|
||||
BOOL_FIELD(ext_zvfbfwma)
|
||||
BOOL_FIELD(ext_zvfh)
|
||||
BOOL_FIELD(ext_zvfhmin)
|
||||
BOOL_FIELD(ext_smaia)
|
||||
BOOL_FIELD(ext_ssaia)
|
||||
BOOL_FIELD(ext_smctr)
|
||||
BOOL_FIELD(ext_ssctr)
|
||||
BOOL_FIELD(ext_sscofpmf)
|
||||
BOOL_FIELD(ext_smepmp)
|
||||
BOOL_FIELD(ext_smrnmi)
|
||||
BOOL_FIELD(ext_ssnpm)
|
||||
BOOL_FIELD(ext_smnpm)
|
||||
BOOL_FIELD(ext_smmpm)
|
||||
BOOL_FIELD(ext_sspm)
|
||||
BOOL_FIELD(ext_supm)
|
||||
BOOL_FIELD(rvv_ta_all_1s)
|
||||
BOOL_FIELD(rvv_ma_all_1s)
|
||||
BOOL_FIELD(rvv_vl_half_avl)
|
||||
/* Named features */
|
||||
BOOL_FIELD(ext_svade)
|
||||
BOOL_FIELD(ext_zic64b)
|
||||
BOOL_FIELD(ext_ssstateen)
|
||||
BOOL_FIELD(ext_sha)
|
||||
|
||||
/*
|
||||
* Always 'true' booleans for named features
|
||||
* TCG always implement/can't be user disabled,
|
||||
* based on spec version.
|
||||
*/
|
||||
BOOL_FIELD(has_priv_1_13)
|
||||
BOOL_FIELD(has_priv_1_12)
|
||||
BOOL_FIELD(has_priv_1_11)
|
||||
|
||||
/* Always enabled for TCG if has_priv_1_11 */
|
||||
BOOL_FIELD(ext_ziccrse)
|
||||
|
||||
/* Vendor-specific custom extensions */
|
||||
BOOL_FIELD(ext_xtheadba)
|
||||
BOOL_FIELD(ext_xtheadbb)
|
||||
BOOL_FIELD(ext_xtheadbs)
|
||||
BOOL_FIELD(ext_xtheadcmo)
|
||||
BOOL_FIELD(ext_xtheadcondmov)
|
||||
BOOL_FIELD(ext_xtheadfmemidx)
|
||||
BOOL_FIELD(ext_xtheadfmv)
|
||||
BOOL_FIELD(ext_xtheadmac)
|
||||
BOOL_FIELD(ext_xtheadmemidx)
|
||||
BOOL_FIELD(ext_xtheadmempair)
|
||||
BOOL_FIELD(ext_xtheadsync)
|
||||
BOOL_FIELD(ext_XVentanaCondOps)
|
||||
|
||||
BOOL_FIELD(mmu)
|
||||
BOOL_FIELD(pmp)
|
||||
BOOL_FIELD(debug)
|
||||
BOOL_FIELD(misa_w)
|
||||
|
||||
BOOL_FIELD(short_isa_string)
|
||||
|
||||
TYPED_FIELD(uint32_t, mvendorid)
|
||||
TYPED_FIELD(uint64_t, marchid)
|
||||
TYPED_FIELD(uint64_t, mimpid)
|
||||
|
||||
TYPED_FIELD(uint32_t, pmu_mask)
|
||||
TYPED_FIELD(uint16_t, vlenb)
|
||||
TYPED_FIELD(uint16_t, elen)
|
||||
TYPED_FIELD(uint16_t, cbom_blocksize)
|
||||
TYPED_FIELD(uint16_t, cbop_blocksize)
|
||||
TYPED_FIELD(uint16_t, cboz_blocksize)
|
||||
|
||||
TYPED_FIELD(int8_t, max_satp_mode)
|
||||
|
||||
#undef BOOL_FIELD
|
||||
#undef TYPED_FIELD
|
Loading…
Add table
Add a link
Reference in a new issue