188 |
} u; |
} u; |
189 |
int i; |
int i; |
190 |
|
|
191 |
u.s.u[0] = 0; |
#ifdef WORDS_BIGENDIAN |
192 |
u.s.u[1] = 0; |
#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; |
200 |
for (i = 0; i < 8; i++) |
for (i = 0; i < 8; i++) |
201 |
u.s.u[1] |= env->fpscr[i] << (4 * i); |
u.s.u[WORD1] |= env->fpscr[i] << (4 * i); |
202 |
FT0 = u.d; |
FT0 = u.d; |
203 |
} |
} |
204 |
|
|
217 |
|
|
218 |
u.d = FT0; |
u.d = FT0; |
219 |
if (mask & 0x80) |
if (mask & 0x80) |
220 |
env->fpscr[0] = (env->fpscr[0] & 0x9) | ((u.s.u[1] >> 28) & ~0x9); |
env->fpscr[0] = (env->fpscr[0] & 0x9) | ((u.s.u[WORD1] >> 28) & ~0x9); |
221 |
for (i = 1; i < 7; i++) { |
for (i = 1; i < 7; i++) { |
222 |
if (mask & (1 << (7 - i))) |
if (mask & (1 << (7 - i))) |
223 |
env->fpscr[i] = (u.s.u[1] >> (4 * (7 - i))) & 0xF; |
env->fpscr[i] = (u.s.u[WORD1] >> (4 * (7 - i))) & 0xF; |
224 |
} |
} |
225 |
/* TODO: update FEX & VX */ |
/* TODO: update FEX & VX */ |
226 |
/* Set rounding mode */ |
/* Set rounding mode */ |