Revision 3cc62370 target-ppc/op_helper.c
b/target-ppc/op_helper.c | ||
---|---|---|
188 | 188 |
} u; |
189 | 189 |
int i; |
190 | 190 |
|
191 |
u.s.u[0] = 0; |
|
192 |
u.s.u[1] = 0; |
|
191 |
#ifdef WORDS_BIGENDIAN |
|
192 |
#define WORD0 0 |
|
193 |
#define WORD1 1 |
|
194 |
#else |
|
195 |
#define WORD0 1 |
|
196 |
#define WORD1 0 |
|
197 |
#endif |
|
198 |
u.s.u[WORD0] = 0; |
|
199 |
u.s.u[WORD1] = 0; |
|
193 | 200 |
for (i = 0; i < 8; i++) |
194 |
u.s.u[1] |= env->fpscr[i] << (4 * i); |
|
201 |
u.s.u[WORD1] |= env->fpscr[i] << (4 * i);
|
|
195 | 202 |
FT0 = u.d; |
196 | 203 |
} |
197 | 204 |
|
... | ... | |
210 | 217 |
|
211 | 218 |
u.d = FT0; |
212 | 219 |
if (mask & 0x80) |
213 |
env->fpscr[0] = (env->fpscr[0] & 0x9) | ((u.s.u[1] >> 28) & ~0x9); |
|
220 |
env->fpscr[0] = (env->fpscr[0] & 0x9) | ((u.s.u[WORD1] >> 28) & ~0x9);
|
|
214 | 221 |
for (i = 1; i < 7; i++) { |
215 | 222 |
if (mask & (1 << (7 - i))) |
216 |
env->fpscr[i] = (u.s.u[1] >> (4 * (7 - i))) & 0xF; |
|
223 |
env->fpscr[i] = (u.s.u[WORD1] >> (4 * (7 - i))) & 0xF;
|
|
217 | 224 |
} |
218 | 225 |
/* TODO: update FEX & VX */ |
219 | 226 |
/* Set rounding mode */ |
Also available in: Unified diff