qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 0/3] Add ldn_*_p() and stn_*_p() and use them in exe


From: Peter Maydell
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

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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]