Revision 3a3f24fc target-mips/op_helper_mem.c
b/target-mips/op_helper_mem.c | ||
---|---|---|
1 |
#undef DEBUG_OP |
|
2 |
|
|
1 | 3 |
#ifdef TARGET_WORDS_BIGENDIAN |
2 | 4 |
#define GET_LMASK(v) ((v) & 3) |
3 | 5 |
#else |
... | ... | |
12 | 14 |
|
13 | 15 |
switch (GET_LMASK(T0)) { |
14 | 16 |
case 0: |
15 |
T0 = tmp; |
|
17 |
T0 = (int32_t)tmp;
|
|
16 | 18 |
break; |
17 | 19 |
case 1: |
18 |
T0 = (tmp << 8) | (T1 & 0x000000FF);
|
|
20 |
T0 = (int32_t)((tmp << 8) | (T1 & 0x000000FF));
|
|
19 | 21 |
break; |
20 | 22 |
case 2: |
21 |
T0 = (tmp << 16) | (T1 & 0x0000FFFF);
|
|
23 |
T0 = (int32_t)((tmp << 16) | (T1 & 0x0000FFFF));
|
|
22 | 24 |
break; |
23 | 25 |
case 3: |
24 |
T0 = (tmp << 24) | (T1 & 0x00FFFFFF);
|
|
26 |
T0 = (int32_t)((tmp << 24) | (T1 & 0x00FFFFFF));
|
|
25 | 27 |
break; |
26 | 28 |
} |
27 | 29 |
#if defined (DEBUG_OP) |
28 | 30 |
if (logfile) { |
29 |
fprintf(logfile, "%s: %08x - %08x %08x => %08x\n",
|
|
31 |
fprintf(logfile, "%s: " TLSZ " - %08x " TLSZ " => " TLSZ "\n",
|
|
30 | 32 |
__func__, sav, tmp, T1, T0); |
31 | 33 |
} |
32 | 34 |
#endif |
... | ... | |
41 | 43 |
|
42 | 44 |
switch (GET_LMASK(T0)) { |
43 | 45 |
case 0: |
44 |
T0 = (tmp >> 24) | (T1 & 0xFFFFFF00);
|
|
46 |
T0 = (int32_t)((tmp >> 24) | (T1 & 0xFFFFFF00));
|
|
45 | 47 |
break; |
46 | 48 |
case 1: |
47 |
T0 = (tmp >> 16) | (T1 & 0xFFFF0000);
|
|
49 |
T0 = (int32_t)((tmp >> 16) | (T1 & 0xFFFF0000));
|
|
48 | 50 |
break; |
49 | 51 |
case 2: |
50 |
T0 = (tmp >> 8) | (T1 & 0xFF000000);
|
|
52 |
T0 = (int32_t)((tmp >> 8) | (T1 & 0xFF000000));
|
|
51 | 53 |
break; |
52 | 54 |
case 3: |
53 |
T0 = tmp; |
|
55 |
T0 = (int32_t)tmp;
|
|
54 | 56 |
break; |
55 | 57 |
} |
56 | 58 |
#if defined (DEBUG_OP) |
57 | 59 |
if (logfile) { |
58 |
fprintf(logfile, "%s: %08x - %08x %08x => %08x\n",
|
|
60 |
fprintf(logfile, "%s: " TLSZ " - %08x " TLSZ " => " TLSZ "\n",
|
|
59 | 61 |
__func__, sav, tmp, T1, T0); |
60 | 62 |
} |
61 | 63 |
#endif |
... | ... | |
70 | 72 |
|
71 | 73 |
switch (GET_LMASK(T0)) { |
72 | 74 |
case 0: |
73 |
tmp = T1; |
|
75 |
tmp = (int32_t)T1;
|
|
74 | 76 |
break; |
75 | 77 |
case 1: |
76 |
tmp = (tmp & 0xFF000000) | (T1 >> 8);
|
|
78 |
tmp = (int32_t)((tmp & 0xFF000000) | ((uint32_t)T1 >> 8));
|
|
77 | 79 |
break; |
78 | 80 |
case 2: |
79 |
tmp = (tmp & 0xFFFF0000) | (T1 >> 16);
|
|
81 |
tmp = (int32_t)((tmp & 0xFFFF0000) | ((uint32_t)T1 >> 16));
|
|
80 | 82 |
break; |
81 | 83 |
case 3: |
82 |
tmp = (tmp & 0xFFFFFF00) | (T1 >> 24);
|
|
84 |
tmp = (int32_t)((tmp & 0xFFFFFF00) | ((uint32_t)T1 >> 24));
|
|
83 | 85 |
break; |
84 | 86 |
} |
85 | 87 |
#if defined (DEBUG_OP) |
86 | 88 |
if (logfile) { |
87 |
fprintf(logfile, "%s: %08x - %08x %08x => %08x\n",
|
|
89 |
fprintf(logfile, "%s: " TLSZ " - " TLSZ " " TLSZ " => %08x\n",
|
|
88 | 90 |
__func__, T0, sav, T1, tmp); |
89 | 91 |
} |
90 | 92 |
#endif |
... | ... | |
100 | 102 |
|
101 | 103 |
switch (GET_LMASK(T0)) { |
102 | 104 |
case 0: |
103 |
tmp = (tmp & 0x00FFFFFF) | (T1 << 24);
|
|
105 |
tmp = (int32_t)((tmp & 0x00FFFFFF) | (T1 << 24));
|
|
104 | 106 |
break; |
105 | 107 |
case 1: |
106 |
tmp = (tmp & 0x0000FFFF) | (T1 << 16);
|
|
108 |
tmp = (int32_t)((tmp & 0x0000FFFF) | (T1 << 16));
|
|
107 | 109 |
break; |
108 | 110 |
case 2: |
109 |
tmp = (tmp & 0x000000FF) | (T1 << 8);
|
|
111 |
tmp = (int32_t)((tmp & 0x000000FF) | (T1 << 8));
|
|
110 | 112 |
break; |
111 | 113 |
case 3: |
112 |
tmp = T1; |
|
114 |
tmp = (int32_t)T1;
|
|
113 | 115 |
break; |
114 | 116 |
} |
115 | 117 |
#if defined (DEBUG_OP) |
116 | 118 |
if (logfile) { |
117 |
fprintf(logfile, "%s: %08x - %08x %08x => %08x\n",
|
|
119 |
fprintf(logfile, "%s: " TLSZ " - " TLSZ " " TLSZ " => %08x\n",
|
|
118 | 120 |
__func__, T0, sav, T1, tmp); |
119 | 121 |
} |
120 | 122 |
#endif |
... | ... | |
164 | 166 |
} |
165 | 167 |
#if defined (DEBUG_OP) |
166 | 168 |
if (logfile) { |
167 |
fprintf(logfile, "%s: %08x - %08x %08x => %08x\n",
|
|
169 |
fprintf(logfile, "%s: " TLSZ " - " TLSZ " " TLSZ " => " TLSZ "\n",
|
|
168 | 170 |
__func__, sav, tmp, T1, T0); |
169 | 171 |
} |
170 | 172 |
#endif |
... | ... | |
205 | 207 |
} |
206 | 208 |
#if defined (DEBUG_OP) |
207 | 209 |
if (logfile) { |
208 |
fprintf(logfile, "%s: %08x - %08x %08x => %08x\n",
|
|
210 |
fprintf(logfile, "%s: " TLSZ " - " TLSZ " " TLSZ " => " TLSZ "\n",
|
|
209 | 211 |
__func__, sav, tmp, T1, T0); |
210 | 212 |
} |
211 | 213 |
#endif |
... | ... | |
246 | 248 |
} |
247 | 249 |
#if defined (DEBUG_OP) |
248 | 250 |
if (logfile) { |
249 |
fprintf(logfile, "%s: %08x - %08x %08x => %08x\n",
|
|
251 |
fprintf(logfile, "%s: " TLSZ " - " TLSZ " " TLSZ " => " TLSZ "\n",
|
|
250 | 252 |
__func__, T0, sav, T1, tmp); |
251 | 253 |
} |
252 | 254 |
#endif |
... | ... | |
288 | 290 |
} |
289 | 291 |
#if defined (DEBUG_OP) |
290 | 292 |
if (logfile) { |
291 |
fprintf(logfile, "%s: %08x - %08x %08x => %08x\n",
|
|
293 |
fprintf(logfile, "%s: " TLSZ " - " TLSZ " " TLSZ " => " TLSZ "\n",
|
|
292 | 294 |
__func__, T0, sav, T1, tmp); |
293 | 295 |
} |
294 | 296 |
#endif |
Also available in: Unified diff