All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [RFC PATCH 00/11] decodetree: Add tokens to ease checking ISA flags
@ 2018-11-11 23:36 Philippe Mathieu-Daudé
  2018-11-11 23:36 ` [Qemu-devel] [RFC PATCH 01/11] MAINTAINERS: Add scripts/decodetree.py to the TCG section Philippe Mathieu-Daudé
                   ` (10 more replies)
  0 siblings, 11 replies; 31+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-11-11 23:36 UTC (permalink / raw)
  To: Bastian Koppelmann, Peer Adelt, Richard Henderson
  Cc: Philippe Mathieu-Daudé, qemu-devel

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

^ permalink raw reply	[flat|nested] 31+ messages in thread

end of thread, other threads:[~2018-11-12 23:30 UTC | newest]

Thread overview: 31+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-11-11 23:36 [Qemu-devel] [RFC PATCH 00/11] decodetree: Add tokens to ease checking ISA flags Philippe Mathieu-Daudé
2018-11-11 23:36 ` [Qemu-devel] [RFC PATCH 01/11] MAINTAINERS: Add scripts/decodetree.py to the TCG section Philippe Mathieu-Daudé
2018-11-11 23:36 ` [Qemu-devel] [RFC PATCH 02/11] decodetree: Add multiple include guard Philippe Mathieu-Daudé
2018-11-12 22:30   ` Eduardo Habkost
2018-11-12 23:30     ` Philippe Mathieu-Daudé
2018-11-11 23:36 ` [Qemu-devel] [RFC PATCH 03/11] target/mips: Move the !ISA_MIPS32R6 check out of decode_opc_special2_legacy Philippe Mathieu-Daudé
2018-11-12  8:16   ` Richard Henderson
2018-11-11 23:36 ` [Qemu-devel] [RFC PATCH 04/11] target/mips: Avoid access to CPUMIPSState from decode* functions Philippe Mathieu-Daudé
2018-11-12  8:17   ` Richard Henderson
2018-11-11 23:36 ` [Qemu-devel] [RFC PATCH 05/11] decodetree: Force Python to print unsigned values Philippe Mathieu-Daudé
2018-11-12  8:20   ` Richard Henderson
2018-11-12  8:57     ` Philippe Mathieu-Daudé
2018-11-12 17:03   ` Eduardo Habkost
2018-11-12 18:52     ` Philippe Mathieu-Daudé
2018-11-12 18:56       ` Philippe Mathieu-Daudé
2018-11-12 19:01       ` Richard Henderson
2018-11-12 21:41       ` Eduardo Habkost
2018-11-11 23:36 ` [Qemu-devel] [RFC PATCH 06/11] scripts/decodetree: Allow empty specifications Philippe Mathieu-Daudé
2018-11-12  8:21   ` Richard Henderson
2018-11-11 23:36 ` [Qemu-devel] [RFC PATCH 07/11] scripts/decodetree: Add add_func_check() Philippe Mathieu-Daudé
2018-11-12  8:31   ` Richard Henderson
2018-11-11 23:36 ` [Qemu-devel] [RFC PATCH 08/11] target/mips: Add a decodetree stub Philippe Mathieu-Daudé
2018-11-12  5:37   ` Aleksandar Markovic
2018-11-12  8:58     ` Richard Henderson
2018-11-12 10:04       ` Aleksandar Markovic
2018-11-12 10:55         ` Richard Henderson
2018-11-11 23:36 ` [Qemu-devel] [RFC PATCH 09/11] target/mips: Port SYNCI to decodetree Philippe Mathieu-Daudé
2018-11-11 23:36 ` [Qemu-devel] [RFC PATCH 10/11] scripts/decodetree: Add add_cond_check() Philippe Mathieu-Daudé
2018-11-11 23:36 ` [Qemu-devel] [RFC PATCH 11/11] target/mips: Port MIPS64 DCL[Z/O] to decodetree Philippe Mathieu-Daudé
2018-11-12  9:14   ` Richard Henderson
2018-11-12  9:17     ` Philippe Mathieu-Daudé

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.