I prefer not to handle the extension implication rules, as it's easy
for them to get out of sync, and this should be the linux kernel's
responsibility rather than libgcc's.

> +struct {
> +  unsigned vendorID;

This field is gone since it moved to __riscv_cpu_model

> +  unsigned length;
> +  unsigned long long features[RISCV_VENDOR_FEATURE_BITS_LENGTH];
> +} __riscv_vendor_feature_bits __attribute__ ((visibility ("hidden"), 
> nocommon));
> +
> +struct {
> +  unsigned mvendorid;
> +  unsigned long long marchid;
> +  unsigned long long mimpid;

although it mismatch with what riscv-c-api-doc defined but you are
right, it's MXLEN, rather than 32 bits only, also MXLEN may larger than
UXLEN which is legal, so unsigned long long is the right

> +} __riscv_cpu_model __attribute__ ((visibility ("hidden"), nocommon));
> +

Reply via email to