@@ -3782,23 +3782,11 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
3782
3782
ppc_addis (code , ppc_r12 , cfg -> frame_reg , ppc_ha (cfg -> stack_usage ));
3783
3783
ppc_addi (code , ppc_r12 , ppc_r12 , cfg -> stack_usage );
3784
3784
}
3785
- if (!cfg -> method -> save_lmf ) {
3786
- pos = 0 ;
3787
- for (i = 31 ; i >= 13 ; -- i ) {
3788
- if (cfg -> used_int_regs & (1 << i )) {
3789
- pos += sizeof (target_mgreg_t );
3790
- ppc_ldptr (code , i , - pos , ppc_r12 );
3791
- }
3792
- }
3793
- } else {
3794
- /* FIXME restore from MonoLMF: though this can't happen yet */
3795
- }
3796
3785
3797
3786
/* Copy arguments on the stack to our argument area */
3798
3787
if (call -> stack_usage ) {
3799
3788
code = emit_memcpy (code , call -> stack_usage , ppc_r12 , PPC_STACK_PARAM_OFFSET , ppc_sp , PPC_STACK_PARAM_OFFSET );
3800
3789
/* r12 was clobbered */
3801
- g_assert (cfg -> frame_reg == ppc_sp );
3802
3790
if (ppc_is_imm16 (cfg -> stack_usage )) {
3803
3791
ppc_addi (code , ppc_r12 , cfg -> frame_reg , cfg -> stack_usage );
3804
3792
} else {
@@ -3809,6 +3797,18 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
3809
3797
}
3810
3798
}
3811
3799
3800
+ if (!cfg -> method -> save_lmf ) {
3801
+ pos = 0 ;
3802
+ for (i = 31 ; i >= 13 ; -- i ) {
3803
+ if (cfg -> used_int_regs & (1 << i )) {
3804
+ pos += sizeof (target_mgreg_t );
3805
+ ppc_ldptr (code , i , - pos , ppc_r12 );
3806
+ }
3807
+ }
3808
+ } else {
3809
+ /* FIXME restore from MonoLMF: though this can't happen yet */
3810
+ }
3811
+
3812
3812
ppc_mr (code , ppc_sp , ppc_r12 );
3813
3813
mono_add_patch_info (cfg , (guint8 * ) code - cfg -> native_code , MONO_PATCH_INFO_METHOD_JUMP , call -> method );
3814
3814
cfg -> thunk_area += THUNK_SIZE ;
0 commit comments