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