From 78572ba468f638fee31a48a3a6d782eaa3e51b49 Mon Sep 17 00:00:00 2001 From: SarahW Date: Sat, 30 Mar 2019 21:01:20 +0000 Subject: [PATCH] Added register barriers to LOOPE and LOOPNE. Fixes crash in Age of Empires II. --- src/codegen_ops_branch.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/codegen_ops_branch.c b/src/codegen_ops_branch.c index e41b9ee..ea9b986 100644 --- a/src/codegen_ops_branch.c +++ b/src/codegen_ops_branch.c @@ -965,6 +965,7 @@ uint32_t ropLOOPE(codeblock_t *block, ir_data_t *ir, uint8_t opcode, uint32_t fe } uop_MOV_IMM(ir, IREG_pc, dest_addr); uop_JMP(ir, codegen_exit_rout); + uop_NOP_BARRIER(ir); uop_set_jump_dest(ir, jump_uop); uop_set_jump_dest(ir, jump_uop2); @@ -1001,6 +1002,7 @@ uint32_t ropLOOPNE(codeblock_t *block, ir_data_t *ir, uint8_t opcode, uint32_t f } uop_MOV_IMM(ir, IREG_pc, dest_addr); uop_JMP(ir, codegen_exit_rout); + uop_NOP_BARRIER(ir); uop_set_jump_dest(ir, jump_uop); uop_set_jump_dest(ir, jump_uop2);