In adding our first X-extension (i.e., vendor-defined) on RISC-V with
XVentanaCondOps, we need to add a few instructure improvements to make
it easier to add similar vendor-defined extensions in the future:
- refactor access to the cfg->ext_* fields by making a pointer to the
cfg structure (as cfg_ptr) available via DisasContext
- add a table-based list of decoders to invoke, each being guarded by
a guard/predicate-function, that can be used to either add vendor
extensions, large extensions or override (by listing the decoder
before the one for standard extensions) patterns to handle errata
Changes in v4:
- use a typedef into 'RISCVCPUConfig' (instead of the explicit
'struct RISCVCPUConfig') to comply with the coding standard
(as suggested in Richard's review of v3)
- add braces to comply with coding standard (as suggested by Richard)
- merge the two if-statements to reduce clutter after (now that the
braces have been added)