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 | 7 | void glue(do_lwl, MEMSUFFIX) (uint32_t tmp) |
2 | 8 | { |
3 | 9 | #if defined (DEBUG_OP) |
... | ... | @@ -7,7 +13,7 @@ void glue(do_lwl, MEMSUFFIX) (uint32_t tmp) |
7 | 13 | /* XXX: this is valid only in big-endian mode |
8 | 14 | * should be reverted for little-endian... |
9 | 15 | */ |
10 | - switch (T0 & 3) { | |
16 | + switch (GET_LMASK(T0)) { | |
11 | 17 | case 0: |
12 | 18 | T0 = tmp; |
13 | 19 | break; |
... | ... | @@ -39,7 +45,7 @@ void glue(do_lwr, MEMSUFFIX) (uint32_t tmp) |
39 | 45 | /* XXX: this is valid only in big-endian mode |
40 | 46 | * should be reverted for little-endian... |
41 | 47 | */ |
42 | - switch (T0 & 3) { | |
48 | + switch (GET_LMASK(T0)) { | |
43 | 49 | case 0: |
44 | 50 | T0 = (tmp >> 24) | (T1 & 0xFFFFFF00); |
45 | 51 | break; |
... | ... | @@ -74,7 +80,7 @@ uint32_t glue(do_swl, MEMSUFFIX) (uint32_t tmp) |
74 | 80 | /* XXX: this is valid only in big-endian mode |
75 | 81 | * should be reverted for little-endian... |
76 | 82 | */ |
77 | - switch (T0 & 3) { | |
83 | + switch (GET_LMASK(T0)) { | |
78 | 84 | case 0: |
79 | 85 | tmp = T1; |
80 | 86 | break; |
... | ... | @@ -110,7 +116,7 @@ uint32_t glue(do_swr, MEMSUFFIX) (uint32_t tmp) |
110 | 116 | /* XXX: this is valid only in big-endian mode |
111 | 117 | * should be reverted for little-endian... |
112 | 118 | */ |
113 | - switch (T0 & 3) { | |
119 | + switch (GET_LMASK(T0)) { | |
114 | 120 | case 0: |
115 | 121 | tmp = (tmp & 0x00FFFFFF) | (T1 << 24); |
116 | 122 | break; | ... | ... |