diff options
author | blueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-10-17 17:37:13 +0000 |
---|---|---|
committer | blueswir1 <blueswir1@c046a42c-6fe2-441c-8c8c-71466251a162> | 2007-10-17 17:37:13 +0000 |
commit | e909ec2f11550804d1a6c16ffa0e50acc4c1c077 (patch) | |
tree | 03c60c2655079eb1b294ee864421529ea71d4d60 /target-sparc/op_mem.h | |
parent | 8f577d3d29996ad5c60ac6419881557183806d8b (diff) | |
download | qemu-e909ec2f11550804d1a6c16ffa0e50acc4c1c077.zip qemu-e909ec2f11550804d1a6c16ffa0e50acc4c1c077.tar.gz qemu-e909ec2f11550804d1a6c16ffa0e50acc4c1c077.tar.bz2 |
Use ldq and stq for 8 byte accesses (original patch by Robert Reif)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3405 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-sparc/op_mem.h')
-rw-r--r-- | target-sparc/op_mem.h | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/target-sparc/op_mem.h b/target-sparc/op_mem.h index 96ad716..4af00b3 100644 --- a/target-sparc/op_mem.h +++ b/target-sparc/op_mem.h @@ -36,8 +36,9 @@ SPARC_ST_OP(sth, stw); void OPPROTO glue(op_std, MEMSUFFIX)(void) { - glue(stl, MEMSUFFIX)(ADDR(T0), T1); - glue(stl, MEMSUFFIX)((ADDR(T0 + 4)), T2); + uint64_t tmp = ((uint64_t)T1 << 32) | (uint64_t)(T2 & 0xffffffff); + + glue(stq, MEMSUFFIX)(ADDR(T0), tmp); } void OPPROTO glue(op_ldstub, MEMSUFFIX)(void) @@ -55,8 +56,11 @@ void OPPROTO glue(op_swap, MEMSUFFIX)(void) void OPPROTO glue(op_ldd, MEMSUFFIX)(void) { - T1 = glue(ldl, MEMSUFFIX)(ADDR(T0)); - T0 = glue(ldl, MEMSUFFIX)((ADDR(T0 + 4))); + uint64_t tmp; + + tmp = glue(ldq, MEMSUFFIX)(ADDR(T0)); + T1 = tmp >> 32; + T0 = tmp & 0xffffffff; } /*** Floating-point store ***/ |