From: oharboe Date: Tue, 28 Oct 2008 13:44:55 +0000 (+0000) Subject: Hongtao Zheng - fix a simulation error for "BX PC" X-Git-Tag: v0.1.0~207 X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=commitdiff_plain;h=5f993dc17c92630514287f886cffefc560a98c42;hp=f8cd20e28418704c572cf9e69138e1eb83fe4c0a Hongtao Zheng - fix a simulation error for "BX PC" git-svn-id: svn://svn.berlios.de/openocd/trunk@1109 b42882b7-edfa-0310-969c-e2dbd0fdcd60 --- diff --git a/src/target/arm_simulator.c b/src/target/arm_simulator.c index 2873a5a65f..217633e898 100644 --- a/src/target/arm_simulator.c +++ b/src/target/arm_simulator.c @@ -2,6 +2,9 @@ * Copyright (C) 2006 by Dominic Rath * * Dominic.Rath@gmx.de * * * + * Copyright (C) 2008 by Hongtao Zheng * + * hontor@126.com * + * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * @@ -349,6 +352,10 @@ int arm_simulate_step(target_t *target, u32 *dry_run_pc) else { target = buf_get_u32(ARMV4_5_CORE_REG_MODE(armv4_5->core_cache, armv4_5->core_mode, instruction.info.b_bl_bx_blx.reg_operand).value, 0, 32); + if(instruction.info.b_bl_bx_blx.reg_operand == 15) + { + target += 2 * instruction_size; + } } if (dry_run_pc)