Revision 30032c94 target-ppc/translate.c
b/target-ppc/translate.c | ||
---|---|---|
2634 | 2634 |
/* lwarx */ |
2635 | 2635 |
GEN_HANDLER(lwarx, 0x1F, 0x14, 0x00, 0x00000001, PPC_RES) |
2636 | 2636 |
{ |
2637 |
/* NIP cannot be restored if the memory exception comes from an helper */ |
|
2638 |
gen_update_nip(ctx, ctx->nip - 4); |
|
2637 | 2639 |
gen_addr_reg_index(ctx); |
2638 | 2640 |
op_lwarx(); |
2639 | 2641 |
gen_op_store_T1_gpr(rD(ctx->opcode)); |
... | ... | |
2642 | 2644 |
/* stwcx. */ |
2643 | 2645 |
GEN_HANDLER(stwcx_, 0x1F, 0x16, 0x04, 0x00000000, PPC_RES) |
2644 | 2646 |
{ |
2647 |
/* NIP cannot be restored if the memory exception comes from an helper */ |
|
2648 |
gen_update_nip(ctx, ctx->nip - 4); |
|
2645 | 2649 |
gen_addr_reg_index(ctx); |
2646 | 2650 |
gen_op_load_gpr_T1(rS(ctx->opcode)); |
2647 | 2651 |
op_stwcx(); |
... | ... | |
2689 | 2693 |
/* ldarx */ |
2690 | 2694 |
GEN_HANDLER(ldarx, 0x1F, 0x14, 0x02, 0x00000001, PPC_64B) |
2691 | 2695 |
{ |
2696 |
/* NIP cannot be restored if the memory exception comes from an helper */ |
|
2697 |
gen_update_nip(ctx, ctx->nip - 4); |
|
2692 | 2698 |
gen_addr_reg_index(ctx); |
2693 | 2699 |
op_ldarx(); |
2694 | 2700 |
gen_op_store_T1_gpr(rD(ctx->opcode)); |
... | ... | |
2697 | 2703 |
/* stdcx. */ |
2698 | 2704 |
GEN_HANDLER(stdcx_, 0x1F, 0x16, 0x06, 0x00000000, PPC_64B) |
2699 | 2705 |
{ |
2706 |
/* NIP cannot be restored if the memory exception comes from an helper */ |
|
2707 |
gen_update_nip(ctx, ctx->nip - 4); |
|
2700 | 2708 |
gen_addr_reg_index(ctx); |
2701 | 2709 |
gen_op_load_gpr_T1(rS(ctx->opcode)); |
2702 | 2710 |
op_stdcx(); |
... | ... | |
3612 | 3620 |
|
3613 | 3621 |
GEN_HANDLER(icbi, 0x1F, 0x16, 0x1E, 0x03E00001, PPC_CACHE) |
3614 | 3622 |
{ |
3623 |
/* NIP cannot be restored if the memory exception comes from an helper */ |
|
3624 |
gen_update_nip(ctx, ctx->nip - 4); |
|
3615 | 3625 |
gen_addr_reg_index(ctx); |
3616 | 3626 |
op_icbi(); |
3617 | 3627 |
} |
Also available in: Unified diff