On 11 June 2018 at 18:10, Peter Maydell <peter.mayd...@linaro.org> wrote: > 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
Thanks for the review; I plan to put these into target-arm.next (with the silly typo fixed). I have another series brewing which depends on this one, so having them in-tree will reduce the dependencies there. thanks -- PMM