Hi Richard,
I have been wondering how we can simplify when dealing with multiple ISAs.
I used the MIPS arch because it aims to be simple, but handling the multiple
ISAs/ASEs as once is a mess, with the particular case of the MIPS32R6.
First I wanted to split the translate.c in various ISA/ASE-related files,
but this there are too many inlined func involved, I found it handy to use
the ?cond token, so we can link all translate functions without worrying
about #ifdef'ry.
The translating functions are now smaller/easier to read.
Then I wanted to add stricter ISA check, to not deal with multiple
specifications included more than once, and ease overlapping patterns.
I'm not super happy with this series (in particular the token added
are MIPS oriented, you can not use spaces in the condition), but I'm
interested by what you think :)
Rebasing decodetree specs is painful, so better figure what's the best
now before continuing.
At some point I'd like to get to the one ISA/ASE per file, so we can share
compilation units between targets (via $common-obj) and also be able to
disable completely some ISAs, for whatever reason (downstream/obsolete/...).
Regards,
Phil.
Philippe Mathieu-Daudé (11):
MAINTAINERS: Add scripts/decodetree.py to the TCG section
decodetree: Add multiple include guard
target/mips: Move the !ISA_MIPS32R6 check out of
decode_opc_special2_legacy
target/mips: Avoid access to CPUMIPSState from decode* functions
decodetree: Force Python to print unsigned values
scripts/decodetree: Allow empty specifications
scripts/decodetree: Add add_func_check()
target/mips: Add a decodetree stub
target/mips: Port SYNCI to decodetree
scripts/decodetree: Add add_cond_check()
target/mips: Port MIPS64 DCL[Z/O] to decodetree
MAINTAINERS | 1 +
scripts/decodetree.py | 62 ++++++++++++++++++++++++++++++-------
target/mips/Makefile.objs | 8 +++++
target/mips/insns.decode | 22 +++++++++++++
target/mips/translate.c | 20 ++++++------
target/mips/translate.inc.c | 32 +++++++++++++++++++
6 files changed, 123 insertions(+), 22 deletions(-)
create mode 100644 target/mips/insns.decode
create mode 100644 target/mips/translate.inc.c
--
2.17.2