On 10/30/2011 09:02 AM, Avi Kivity wrote:
This somewhat controversial patchset converts internal arithmetic in the
memory API to 128 bits.
It has been argued that with careful coding we can make 64-bit work as
well. I don't think this is true in general - a memory router can adjust
addresses either forwards or backwards, and some buses (PCIe) need the
full 64-bit space - though it's probably the case for all the configurations
we support today. Regardless, the need for careful coding means subtle bugs,
which I don't want in a core API that is driven by guest supplied values.
The primary need for signed arithmetic is aliases, correct?
Where do we actually make use of this in practice? I think having negative
address spaces is a weird aspect of the memory api and wonder if refactoring it
away is a better solution tot he problem.
Regards,
Anthony Liguori
Avi Kivity (3):
Add support for 128-bit arithmetic
memory: use 128-bit integers for sizes and intermediates
Adjust system and pci address spaces to full 64-bit
exec.c | 2 +-
hw/pc_piix.c | 2 +-
hw/pci_bridge.c | 2 +-
int128.h | 116 ++++++++++++++++++++++++++++++++
memory.c | 196 ++++++++++++++++++++++++++++++++----------------------
memory.h | 3 +-
6 files changed, 237 insertions(+), 84 deletions(-)
create mode 100644 int128.h