Revision 0411a972 target-ppc/op.c

b/target-ppc/op.c
22 22

  
23 23
#include "config.h"
24 24
#include "exec.h"
25
#include "helper_regs.h"
25 26
#include "op_helper.h"
26 27

  
27 28
#define REG 0
......
284 285

  
285 286
void OPPROTO op_load_xer (void)
286 287
{
287
    do_load_xer();
288
    T0 = hreg_load_xer(env);
288 289
    RETURN();
289 290
}
290 291

  
291 292
void OPPROTO op_store_xer (void)
292 293
{
293
    do_store_xer();
294
    hreg_store_xer(env, T0);
294 295
    RETURN();
295 296
}
296 297

  
......
358 359

  
359 360
void OPPROTO op_load_msr (void)
360 361
{
361
    T0 = do_load_msr(env);
362
    T0 = env->msr;
362 363
    RETURN();
363 364
}
364 365

  
365 366
void OPPROTO op_store_msr (void)
366 367
{
367
    if (do_store_msr(env, T0)) {
368
        env->halted = 1;
369
        do_raise_exception(EXCP_HLT);
370
    }
368
    do_store_msr();
371 369
    RETURN();
372 370
}
373 371

  
374
void OPPROTO op_update_riee (void)
372
#if defined (TARGET_PPC64)
373
void OPPROTO op_store_msr_32 (void)
375 374
{
376
    msr_ri = (T0 >> MSR_RI) & 1;
377
    msr_ee = (T0 >> MSR_EE) & 1;
375
    T0 = (env->msr & ~0xFFFFFFFFULL) | (T0 & 0xFFFFFFFF);
376
    do_store_msr();
378 377
    RETURN();
379 378
}
379
#endif
380 380

  
381
#if defined (TARGET_PPC64)
382
void OPPROTO op_store_msr_32 (void)
381
void OPPROTO op_update_riee (void)
383 382
{
384
    if (ppc_store_msr_32(env, T0)) {
385
        env->halted = 1;
386
        do_raise_exception(EXCP_HLT);
387
    }
383
    /* We don't call do_store_msr here as we won't trigger
384
     * any special case nor change hflags
385
     */
386
    T0 &= (1 << MSR_RI) | (1 << MSR_EE);
387
    env->msr &= ~(1 << MSR_RI) | (1 << MSR_EE);
388
    env->msr |= T0;
388 389
    RETURN();
389 390
}
390 391
#endif
391
#endif
392 392

  
393 393
/* SPR */
394 394
void OPPROTO op_load_spr (void)
......
2517 2517

  
2518 2518
void OPPROTO op_wrte (void)
2519 2519
{
2520
    msr_ee = T0 >> 16;
2520
    /* We don't call do_store_msr here as we won't trigger
2521
     * any special case nor change hflags
2522
     */
2523
    T0 &= 1 << MSR_EE;
2524
    env->msr &= ~(1 << MSR_EE);
2525
    env->msr |= T0;
2521 2526
    RETURN();
2522 2527
}
2523 2528

  

Also available in: Unified diff