From: Richard Henderson <richard.henderson@linaro.org>
To: BALATON Zoltan <balaton@eik.bme.hu>,
Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Cc: qemu-devel@nongnu.org, laurent@vivier.eu
Subject: Re: [PATCH 2/2] target/m68k: pass alignment into TCG memory load/store routines
Date: Sun, 23 Jun 2024 12:56:03 -0700 [thread overview]
Message-ID: <80b6c7dc-1a85-4ad0-b715-8ead8c1c0448@linaro.org> (raw)
In-Reply-To: <9d74ba20-a17d-64fd-7203-e4d450f77472@eik.bme.hu>
On 6/23/24 08:23, BALATON Zoltan wrote:
> On Sun, 23 Jun 2024, Mark Cave-Ayland wrote:
>> Now that do_unaligned_access has been implemented for 68k CPUs, pass the required
>> alignment into the TCG memory load/store routines. This allows the TCG memory core
>> to generate an Address Error exception for unaligned memory accesses if required.
>>
>> Suggested-by: Laurent Vivier <laurent@vivier.eu>
>> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
>> Resolves: https://gitlab.com/qemu-project/qemu/-/issues/2165
>> ---
>> target/m68k/translate.c | 18 +++++++++++++++---
>> 1 file changed, 15 insertions(+), 3 deletions(-)
>>
>> diff --git a/target/m68k/translate.c b/target/m68k/translate.c
>> index 445966fb6a..661a7b4def 100644
>> --- a/target/m68k/translate.c
>> +++ b/target/m68k/translate.c
>> @@ -303,13 +303,18 @@ static inline TCGv gen_load(DisasContext *s, int opsize, TCGv addr,
>> int sign, int index)
>> {
>> TCGv tmp = tcg_temp_new_i32();
>> + MemOp memop = opsize | (sign ? MO_SIGN : 0) | MO_TE;
>>
>> switch (opsize) {
>> case OS_BYTE:
>> + tcg_gen_qemu_ld_tl(tmp, addr, index, memop);
>> + break;
>> case OS_WORD:
>> case OS_LONG:
>> - tcg_gen_qemu_ld_tl(tmp, addr, index,
>> - opsize | (sign ? MO_SIGN : 0) | MO_TE);
>> + if (!m68k_feature(s->env, M68K_FEATURE_UNALIGNED_DATA)) {
>> + memop |= MO_ALIGN_2;
>> + }
>> + tcg_gen_qemu_ld_tl(tmp, addr, index, memop);
>
> You could swap the order of these so byte comes last and fall through to it from word/long
> to avoid duplicated line.
>
> Maybe this answers my question about where it's restriced by CPU type. I wonder if this
> check for M68K_FEATURE_UNALIGNED_DATA could be avoded here and done by checking it in init
> and only set the unaligned method for CPUs that need it to not add overhead for most CPUs
> that don't need it.
No, there's no overhead in having the unaligned method present always.
But swapping the order of case labels, or sinking the tcg_gen_qemu_ld_tl call below the
switch, is a good idea.
r~
next prev parent reply other threads:[~2024-06-23 19:56 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-06-23 11:57 [PATCH 0/2] target/m68k: implement unaligned accesses for m68k CPUs Mark Cave-Ayland
2024-06-23 11:57 ` [PATCH 1/2] target/m68k: implement do_unaligned_access callback " Mark Cave-Ayland
2024-06-23 15:11 ` BALATON Zoltan
2024-06-24 5:41 ` Mark Cave-Ayland
2024-06-23 19:47 ` Richard Henderson
2024-06-24 5:55 ` Mark Cave-Ayland
2024-06-23 11:57 ` [PATCH 2/2] target/m68k: pass alignment into TCG memory load/store routines Mark Cave-Ayland
2024-06-23 15:23 ` BALATON Zoltan
2024-06-23 19:56 ` Richard Henderson [this message]
2024-06-24 5:44 ` Mark Cave-Ayland
2024-06-24 9:29 ` 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=80b6c7dc-1a85-4ad0-b715-8ead8c1c0448@linaro.org \
--to=richard.henderson@linaro.org \
--cc=balaton@eik.bme.hu \
--cc=laurent@vivier.eu \
--cc=mark.cave-ayland@ilande.co.uk \
--cc=qemu-devel@nongnu.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).