Commit 9f25f11fe58e48d735339e1c8362e8ff242f02f5
1 parent
909a8762
fix for mipsel (will need change for softmmu case)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1701 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
10 additions
and
4 deletions
target-mips/op_helper_mem.c
1 | +#ifdef TARGET_WORDS_BIGENDIAN | ||
2 | +#define GET_LMASK(v) ((v) & 3) | ||
3 | +#else | ||
4 | +#define GET_LMASK(v) (((v) & 3) ^ 3) | ||
5 | +#endif | ||
6 | + | ||
1 | void glue(do_lwl, MEMSUFFIX) (uint32_t tmp) | 7 | void glue(do_lwl, MEMSUFFIX) (uint32_t tmp) |
2 | { | 8 | { |
3 | #if defined (DEBUG_OP) | 9 | #if defined (DEBUG_OP) |
@@ -7,7 +13,7 @@ void glue(do_lwl, MEMSUFFIX) (uint32_t tmp) | @@ -7,7 +13,7 @@ void glue(do_lwl, MEMSUFFIX) (uint32_t tmp) | ||
7 | /* XXX: this is valid only in big-endian mode | 13 | /* XXX: this is valid only in big-endian mode |
8 | * should be reverted for little-endian... | 14 | * should be reverted for little-endian... |
9 | */ | 15 | */ |
10 | - switch (T0 & 3) { | 16 | + switch (GET_LMASK(T0)) { |
11 | case 0: | 17 | case 0: |
12 | T0 = tmp; | 18 | T0 = tmp; |
13 | break; | 19 | break; |
@@ -39,7 +45,7 @@ void glue(do_lwr, MEMSUFFIX) (uint32_t tmp) | @@ -39,7 +45,7 @@ void glue(do_lwr, MEMSUFFIX) (uint32_t tmp) | ||
39 | /* XXX: this is valid only in big-endian mode | 45 | /* XXX: this is valid only in big-endian mode |
40 | * should be reverted for little-endian... | 46 | * should be reverted for little-endian... |
41 | */ | 47 | */ |
42 | - switch (T0 & 3) { | 48 | + switch (GET_LMASK(T0)) { |
43 | case 0: | 49 | case 0: |
44 | T0 = (tmp >> 24) | (T1 & 0xFFFFFF00); | 50 | T0 = (tmp >> 24) | (T1 & 0xFFFFFF00); |
45 | break; | 51 | break; |
@@ -74,7 +80,7 @@ uint32_t glue(do_swl, MEMSUFFIX) (uint32_t tmp) | @@ -74,7 +80,7 @@ uint32_t glue(do_swl, MEMSUFFIX) (uint32_t tmp) | ||
74 | /* XXX: this is valid only in big-endian mode | 80 | /* XXX: this is valid only in big-endian mode |
75 | * should be reverted for little-endian... | 81 | * should be reverted for little-endian... |
76 | */ | 82 | */ |
77 | - switch (T0 & 3) { | 83 | + switch (GET_LMASK(T0)) { |
78 | case 0: | 84 | case 0: |
79 | tmp = T1; | 85 | tmp = T1; |
80 | break; | 86 | break; |
@@ -110,7 +116,7 @@ uint32_t glue(do_swr, MEMSUFFIX) (uint32_t tmp) | @@ -110,7 +116,7 @@ uint32_t glue(do_swr, MEMSUFFIX) (uint32_t tmp) | ||
110 | /* XXX: this is valid only in big-endian mode | 116 | /* XXX: this is valid only in big-endian mode |
111 | * should be reverted for little-endian... | 117 | * should be reverted for little-endian... |
112 | */ | 118 | */ |
113 | - switch (T0 & 3) { | 119 | + switch (GET_LMASK(T0)) { |
114 | case 0: | 120 | case 0: |
115 | tmp = (tmp & 0x00FFFFFF) | (T1 << 24); | 121 | tmp = (tmp & 0x00FFFFFF) | (T1 << 24); |
116 | break; | 122 | break; |