From: Peter Maydell <peter.maydell@linaro.org>
To: qemu-devel@nongnu.org
Cc: patches@linaro.org, Richard Henderson <rth@twiddle.net>,
Paolo Bonzini <pbonzini@redhat.com>
Subject: [Qemu-devel] [PATCH 0/3] Add ldn_*_p() and stn_*_p() and use them in exec.c
Date: Mon, 11 Jun 2018 18:10:04 +0100 [thread overview]
Message-ID: <20180611171007.4165-1-peter.maydell@linaro.org> (raw)
There's a common pattern in QEMU where a function needs to perform
a data load or store of an N byte integer in a particular endianness.
At the moment this is handled by doing a switch() on the size and
calling the appropriate ld*_p or st*_p function for each size.
This patchset provides a new family of functions ldn_*_p() and stn_*_p()
which take the size as an argument and do the switch() themselves,
and uses them in 5 callsites in exec.c.
If people like the idea, naming convention, etc, we can look for
and convert other callsites, extend this to eg an address_space_ldn()
and address_space_stn() (sample use cases in watch_mem_read(),
watch_mem_write(), dino_chip_write_with_attrs(), tx_ppc_read(),
tx_ppc_write()...)
Patch 2 here fixes an apparently unintentional sign-extension in
subpage_read(), so that patch 3 is a no-behaviour-change patch.
thanks
-- PMM
Peter Maydell (3):
bswap: Add new stn_*_p() and ldn_*_p() memory access functions
exec.c: Don't accidentally sign-extend 4-byte loads in subpage_read()
exec.c: Use stn_p() and ldn_p() instead of explicit switches
include/exec/cpu-all.h | 4 ++
include/qemu/bswap.h | 52 +++++++++++++++++
exec.c | 112 +++---------------------------------
docs/devel/loads-stores.rst | 15 +++++
4 files changed, 79 insertions(+), 104 deletions(-)
--
2.17.1
next reply other threads:[~2018-06-11 17:10 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-06-11 17:10 Peter Maydell [this message]
2018-06-11 17:10 ` [Qemu-devel] [PATCH 1/3] bswap: Add new stn_*_p() and ldn_*_p() memory access functions Peter Maydell
2018-06-11 17:43 ` Philippe Mathieu-Daudé
2018-06-11 17:51 ` Peter Maydell
2018-06-11 17:52 ` Peter Maydell
2018-06-12 21:04 ` Richard Henderson
2018-06-11 17:10 ` [Qemu-devel] [PATCH 2/3] exec.c: Don't accidentally sign-extend 4-byte loads in subpage_read() Peter Maydell
2018-06-12 20:58 ` Richard Henderson
2018-06-11 17:10 ` [Qemu-devel] [PATCH 3/3] exec.c: Use stn_p() and ldn_p() instead of explicit switches Peter Maydell
2018-06-11 17:43 ` Philippe Mathieu-Daudé
2018-06-12 20:58 ` Richard Henderson
2018-06-11 17:40 ` [Qemu-devel] [PATCH 0/3] Add ldn_*_p() and stn_*_p() and use them in exec.c no-reply
2018-06-11 19:00 ` no-reply
2018-06-15 10:17 ` Peter Maydell
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=20180611171007.4165-1-peter.maydell@linaro.org \
--to=peter.maydell@linaro.org \
--cc=patches@linaro.org \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=rth@twiddle.net \
/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).