From 71235e4b2a1d4015557818957bff75d7df5e711d Mon Sep 17 00:00:00 2001 From: Matthew Berry Date: Fri, 9 Oct 2020 20:17:51 -0700 Subject: [PATCH] arm fix negative branch offset --- src/crab/arm/branch.cr | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/crab/arm/branch.cr b/src/crab/arm/branch.cr index ad8b42d..bf26d15 100644 --- a/src/crab/arm/branch.cr +++ b/src/crab/arm/branch.cr @@ -2,8 +2,7 @@ module ARM def arm_branch(instr : Word) : Nil link = bit?(instr, 24) offset = instr & 0xFFFFFF - offset = (~offset &+ 1).to_i32 if bit?(offset, 23) # negative - offset <<= 2 + offset = (offset << 8).to_i32! >> 6 @r[14] = @r[15] - 4 if link @r[15] &+= offset clear_pipeline