qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/3] Add ldn_*_p() and stn_*_p() and use them in exec.c
@ 2018-06-11 17:10 Peter Maydell
  2018-06-11 17:10 ` [Qemu-devel] [PATCH 1/3] bswap: Add new stn_*_p() and ldn_*_p() memory access functions Peter Maydell
                   ` (5 more replies)
  0 siblings, 6 replies; 14+ messages in thread
From: Peter Maydell @ 2018-06-11 17:10 UTC (permalink / raw)
  To: qemu-devel; +Cc: patches, Richard Henderson, Paolo Bonzini

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

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

end of thread, other threads:[~2018-06-15 10:17 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2018-06-11 17:10 [Qemu-devel] [PATCH 0/3] Add ldn_*_p() and stn_*_p() and use them in exec.c Peter Maydell
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

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).