qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Pierrick Bouvier <pierrick.bouvier@linaro.org>
To: "Philippe Mathieu-Daudé" <philmd@linaro.org>,
	"Richard Henderson" <richard.henderson@linaro.org>,
	qemu-devel@nongnu.org
Subject: Re: [PATCH 15/16] system/memory: make compilation unit common
Date: Mon, 10 Mar 2025 11:38:19 -0700	[thread overview]
Message-ID: <ebcdf213-fcd7-4417-9b2e-8fb3826a8002@linaro.org> (raw)
In-Reply-To: <5bd88057-3e3e-4c34-9d06-68916c95f647@linaro.org>

On 3/10/25 11:27, Philippe Mathieu-Daudé wrote:
> On 10/3/25 19:04, Pierrick Bouvier wrote:
>> On 3/10/25 10:58, Richard Henderson wrote:
>>> On 3/10/25 10:47, Pierrick Bouvier wrote:
>>>>> Maybe better as
>>>>>
>>>>>         MemOp mop = (target_words_bigendian() ? MO_BE : MO_LE) |
>>>>> size_memop(size);
>>>>>         adjust_endianness(mr, &mrfd.data, size_memop(size), mop);
>>>>>
>>>>
>>>> Do you think defining MO_TE as this expression is a good idea?
>>>
>>> There are not so many references to MO_TE outside target/ or accel/tcg/.
>>>
>>> Indeed, after this change, the only ones left are in hw/arm/armv7m.c,
>>> which (because it's Arm) can be changed to MO_LE.
>>>
>>
>> I see a bit more than that (17 files):
>> hw/arm/armv7m.c
>> include/exec/memop.h
>> target/arm/tcg/helper-a64.c
>> target/arm/tcg/translate.c
>> target/hexagon/idef-parser/parser-helpers.c
>> target/hppa/translate.c
>> target/i386/tcg/emit.c.inc
>> target/loongarch/tcg/insn_trans/trans_vec.c.inc
>> target/m68k/translate.c
>> target/mips/tcg/mips16e_translate.c.inc
>> target/riscv/translate.c
>> target/rx/translate.c
>> target/s390x/tcg/mem_helper.c
>> target/s390x/tcg/translate.c
>> target/s390x/tcg/translate_vx.c.inc
>> target/sparc/ldst_helper.c
>> target/sparc/translate.c
> 
> For targets tied to single endianness, we can replace using gsed,
> but using a helper is clearer (see for example commit 415aae543ed
> target/microblaze: Consider endianness while translating code").
> 

That's good, I just want to keep this series focus on minimal changes to 
achieve the current goal, and not bring any additional refactoring here.

>> Plus more (22 files) who relies on:
>> MO_TE* variants (which relies on MO_TE transitively)
>>
>> Thus my proposal to have a first change to MO_TE definition, and
>> eventually do the change later.
>>
>> What do you think?
> 
> Removing MO_TE is in my TODO list.
> 
> I started with Microblaze (now merged) to get familiar, then had
> a look at ARM (see i.e.
> https://lore.kernel.org/qemu-devel/20240924191932.49386-1-philmd@linaro.org/
> and
> https://lore.kernel.org/qemu-devel/d831600a-9a61-45c1-a535-f75bb64cdff4@linaro.org/).
> I also took care of MIPS few years ago but I need to rebase,
> however it isn't in the priority list.

Instead of doing a full codebase refactoring/cleanup, we can adopt a "as 
needed basis" approach.

Basically architectures that can have varying endianness must be handled 
(since their compilation units are duplicated for variants).
For the rest, as Richard mentioned on this series, the code will stay 
target specific, compiling with a single set of defines, which is what 
we really aim for.

Same discussion will happen for architectures with files duplicated 
between 32/64 bits variants.

  reply	other threads:[~2025-03-10 18:38 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-03-10  4:58 [PATCH 00/16] make system memory API available for common code Pierrick Bouvier
2025-03-10  4:58 ` [PATCH 01/16] exec/memory_ldst: extract memory_ldst declarations from cpu-all.h Pierrick Bouvier
2025-03-10 15:17   ` Richard Henderson
2025-03-10 16:03     ` Pierrick Bouvier
2025-03-11  0:04     ` Pierrick Bouvier
2025-03-11 14:40       ` Richard Henderson
2025-03-10  4:58 ` [PATCH 02/16] exec/memory_ldst_phys: extract memory_ldst_phys " Pierrick Bouvier
2025-03-11  0:08   ` Pierrick Bouvier
2025-03-10  4:58 ` [PATCH 03/16] include: move target_words_bigendian() from tswap to bswap Pierrick Bouvier
2025-03-10 15:21   ` Richard Henderson
2025-03-10 16:05     ` Pierrick Bouvier
2025-03-10  4:58 ` [PATCH 04/16] exec/memory.h: make devend_memop target agnostic Pierrick Bouvier
2025-03-10 15:25   ` Richard Henderson
2025-03-10 16:04     ` Pierrick Bouvier
2025-03-10 16:30   ` Richard Henderson
2025-03-10 16:38     ` Pierrick Bouvier
2025-03-10  4:58 ` [PATCH 05/16] qemu/bswap: implement {ld,st}.*_p as functions Pierrick Bouvier
2025-03-10 16:08   ` Richard Henderson
2025-03-10 16:14     ` Pierrick Bouvier
2025-03-10 16:37       ` Richard Henderson
2025-03-10 16:43         ` Pierrick Bouvier
2025-03-10 16:53           ` Richard Henderson
2025-03-10 17:09             ` Pierrick Bouvier
2025-03-10 20:17               ` BALATON Zoltan
2025-03-10 20:31                 ` Pierrick Bouvier
2025-03-10  4:58 ` [PATCH 06/16] exec/cpu-all.h: we can now remove ld/st macros Pierrick Bouvier
2025-03-10 16:39   ` Richard Henderson
2025-03-10 16:45     ` Pierrick Bouvier
2025-03-10  4:58 ` [PATCH 07/16] codebase: prepare to remove cpu.h from exec/exec-all.h Pierrick Bouvier
2025-03-10 17:22   ` Richard Henderson
2025-03-10  4:58 ` [PATCH 08/16] exec/exec-all: remove dependency on cpu.h Pierrick Bouvier
2025-03-10 17:29   ` Richard Henderson
2025-03-10  4:58 ` [PATCH 09/16] exec/memory-internal: " Pierrick Bouvier
2025-03-10 17:29   ` Richard Henderson
2025-03-10  4:58 ` [PATCH 10/16] exec/ram_addr: " Pierrick Bouvier
2025-03-10 17:29   ` Richard Henderson
2025-03-10  4:58 ` [PATCH 11/16] system/kvm: make kvm_flush_coalesced_mmio_buffer() accessible for common code Pierrick Bouvier
2025-03-10 17:30   ` Richard Henderson
2025-03-10  4:58 ` [PATCH 12/16] exec/ram_addr: call xen_hvm_modified_memory only if xen is enabled Pierrick Bouvier
2025-03-10 17:30   ` Richard Henderson
2025-03-10  4:58 ` [PATCH 13/16] hw/xen: add stubs for various functions Pierrick Bouvier
2025-03-10 17:32   ` Richard Henderson
2025-03-10  4:58 ` [PATCH 14/16] system/physmem: compilation unit is now common to all targets Pierrick Bouvier
2025-03-10 17:32   ` Richard Henderson
2025-03-10  4:58 ` [PATCH 15/16] system/memory: make compilation unit common Pierrick Bouvier
2025-03-10 17:43   ` Richard Henderson
2025-03-10 17:47     ` Pierrick Bouvier
2025-03-10 17:58       ` Richard Henderson
2025-03-10 18:04         ` Pierrick Bouvier
2025-03-10 18:10           ` Richard Henderson
2025-03-10 18:25             ` Pierrick Bouvier
2025-03-10 18:27           ` Philippe Mathieu-Daudé
2025-03-10 18:38             ` Pierrick Bouvier [this message]
2025-03-10  4:58 ` [PATCH 16/16] system/ioport: " Pierrick Bouvier
2025-03-10 17:43   ` Richard Henderson
2025-03-10 13:23 ` [PATCH 00/16] make system memory API available for common code BALATON Zoltan
2025-03-10 16:28   ` Pierrick Bouvier
2025-03-10 16:56     ` Pierrick Bouvier
2025-03-10 19:40       ` BALATON Zoltan
2025-03-10 20:26         ` Pierrick Bouvier
2025-03-10 21:02           ` BALATON Zoltan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ebcdf213-fcd7-4417-9b2e-8fb3826a8002@linaro.org \
    --to=pierrick.bouvier@linaro.org \
    --cc=philmd@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).