ppc: Don't update NIP if not taking alignment exceptions
Move the NIP update to after the conditional branch so that we don't do it if we aren't going to take the alignment exception Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
This commit is contained in:
		
							parent
							
								
									72073dcce0
								
							
						
					
					
						commit
						573708e329
					
				| 
						 | 
				
			
			@ -2414,12 +2414,11 @@ static inline void gen_check_align(DisasContext *ctx, TCGv EA, int mask)
 | 
			
		|||
    TCGLabel *l1 = gen_new_label();
 | 
			
		||||
    TCGv t0 = tcg_temp_new();
 | 
			
		||||
    TCGv_i32 t1, t2;
 | 
			
		||||
    /* NIP cannot be restored if the memory exception comes from an helper */
 | 
			
		||||
    gen_update_nip(ctx, ctx->nip - 4);
 | 
			
		||||
    tcg_gen_andi_tl(t0, EA, mask);
 | 
			
		||||
    tcg_gen_brcondi_tl(TCG_COND_EQ, t0, 0, l1);
 | 
			
		||||
    t1 = tcg_const_i32(POWERPC_EXCP_ALIGN);
 | 
			
		||||
    t2 = tcg_const_i32(0);
 | 
			
		||||
    gen_update_nip(ctx, ctx->nip - 4);
 | 
			
		||||
    gen_helper_raise_exception_err(cpu_env, t1, t2);
 | 
			
		||||
    tcg_temp_free_i32(t1);
 | 
			
		||||
    tcg_temp_free_i32(t2);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue