Skip to content
  • Anthony Liguori's avatar
    Add 64-bit Block Move support (Direct & Table Indirect) (Ryan Harper) · dd8edf01
    Anthony Liguori authored
    
    
    This patch adds support for 64-bit Block Move instructions.  There are multiple
    modes for 64-bit Block moves, direct, indirect, and table indirect.  This patch
    implements Direct and Table indirect moves which are needed by 64-bit windows
    and SYM_CONF_DMA_ADDRESSING_MODE=2 for the Linux sym53c8xx_2 driver respectively.
    
    Two helper functions are included to check which mode the guest is using.  For
     64-bit direct moves, we fetch a 3rd DWORD and store the value in the DBMS
    register.  For Table Indirect moves, we look into the table for which register
    contains the upper 32-bits of the 64-bit address.  This selector value indicates
    which register to pull the value from and into dnad64 register.
    
    Finally, lsi_do_dma is updated to use the approriate register to build a 64-bit
    DMA address if required.
    
    With this patch, Windows XP x64, 2003 SP2 x64, can now install to scsi devices.
    Linux SYM_CONF_DMA_ADDRESSING_MODE=2 need a quirk fixup in Patch 4 to function
    properly.
    
    Signed-off-by: default avatarRyan Harper <ryanh@us.ibm.com>
    Signed-off-by: default avatarAnthony Liguori <aliguori@us.ibm.com>
    
    
    
    git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5969 c046a42c-6fe2-441c-8c8c-71466251a162
    dd8edf01