From: Hsiangkai Wang Date: Wed, 4 Sep 2013 05:21:59 +0000 (+0800) Subject: nds32: remove .soft_reset_halt dependency X-Git-Tag: v0.8.0-rc1~269 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=49d96b1b2e4000734499a369fe022035542b3e85;p=openocd nds32: remove .soft_reset_halt dependency .soft_reset_halt is not necessary for nds32 target. Remove the dependency. Change-Id: Ic3b126d6c7eb995583a661b762627e736222fcaa Signed-off-by: Hsiangkai Wang Reviewed-on: http://openocd.zylin.com/1612 Tested-by: jenkins Reviewed-by: Spencer Oliver --- diff --git a/src/target/nds32.c b/src/target/nds32.c index 4d256497..b171afeb 100644 --- a/src/target/nds32.c +++ b/src/target/nds32.c @@ -2164,6 +2164,27 @@ int nds32_resume(struct target *target, int current, return ERROR_OK; } +static int nds32_soft_reset_halt(struct target *target) +{ + /* TODO: test it */ + struct nds32 *nds32 = target_to_nds32(target); + struct aice_port_s *aice = target_to_aice(target); + + aice_assert_srst(aice, AICE_SRST); + + /* halt core and set pc to 0x0 */ + int retval = target_halt(target); + if (retval != ERROR_OK) + return retval; + + /* start fetching from IVB */ + uint32_t value_ir3; + nds32_get_mapped_reg(nds32, IR3, &value_ir3); + nds32_set_mapped_reg(nds32, PC, value_ir3 & 0xFFFF0000); + + return ERROR_OK; +} + int nds32_assert_reset(struct target *target) { struct nds32 *nds32 = target_to_nds32(target); @@ -2177,7 +2198,7 @@ int nds32_assert_reset(struct target *target) && (cpu_version->revision == 0x1C) && (cpu_version->cpu_id_family == 0xC) && (cpu_version->cpu_id_version == 0x0))) - target->type->soft_reset_halt(target); + nds32_soft_reset_halt(target); else aice_assert_srst(aice, AICE_RESET_HOLD); } else { diff --git a/src/target/nds32_v2.c b/src/target/nds32_v2.c index c774194e..24f5108c 100644 --- a/src/target/nds32_v2.c +++ b/src/target/nds32_v2.c @@ -388,27 +388,6 @@ static int nds32_v2_leave_debug_state(struct nds32 *nds32, bool enable_watchpoin return ERROR_OK; } -static int nds32_v2_soft_reset_halt(struct target *target) -{ - /* TODO: test it */ - struct nds32 *nds32 = target_to_nds32(target); - struct aice_port_s *aice = target_to_aice(target); - - aice_assert_srst(aice, AICE_SRST); - - /* halt core and set pc to 0x0 */ - int retval = target_halt(target); - if (retval != ERROR_OK) - return retval; - - /* start fetching from IVB */ - uint32_t value_ir3; - nds32_get_mapped_reg(nds32, IR3, &value_ir3); - nds32_set_mapped_reg(nds32, PC, value_ir3 & 0xFFFF0000); - - return ERROR_OK; -} - static int nds32_v2_deassert_reset(struct target *target) { int retval; @@ -774,7 +753,6 @@ struct target_type nds32_v2_target = { .assert_reset = nds32_assert_reset, .deassert_reset = nds32_v2_deassert_reset, - .soft_reset_halt = nds32_v2_soft_reset_halt, /* register access */ .get_gdb_reg_list = nds32_get_gdb_reg_list, diff --git a/src/target/nds32_v3.c b/src/target/nds32_v3.c index f1763cb0..ea9252e4 100644 --- a/src/target/nds32_v3.c +++ b/src/target/nds32_v3.c @@ -484,7 +484,6 @@ struct target_type nds32_v3_target = { .assert_reset = nds32_assert_reset, .deassert_reset = nds32_v3_deassert_reset, - .soft_reset_halt = nds32_v3_soft_reset_halt, /* register access */ .get_gdb_reg_list = nds32_get_gdb_reg_list, diff --git a/src/target/nds32_v3_common.c b/src/target/nds32_v3_common.c index 3930c250..531cab09 100644 --- a/src/target/nds32_v3_common.c +++ b/src/target/nds32_v3_common.c @@ -369,12 +369,6 @@ int nds32_v3_target_request_data(struct target *target, return ERROR_OK; } -int nds32_v3_soft_reset_halt(struct target *target) -{ - struct aice_port_s *aice = target_to_aice(target); - return aice_assert_srst(aice, AICE_RESET_HOLD); -} - int nds32_v3_checksum_memory(struct target *target, uint32_t address, uint32_t count, uint32_t *checksum) { diff --git a/src/target/nds32_v3_common.h b/src/target/nds32_v3_common.h index c62da9a3..fd4a5907 100644 --- a/src/target/nds32_v3_common.h +++ b/src/target/nds32_v3_common.h @@ -34,7 +34,6 @@ struct nds32_v3_common_callback { void nds32_v3_common_register_callback(struct nds32_v3_common_callback *callback); int nds32_v3_target_request_data(struct target *target, uint32_t size, uint8_t *buffer); -int nds32_v3_soft_reset_halt(struct target *target); int nds32_v3_checksum_memory(struct target *target, uint32_t address, uint32_t count, uint32_t *checksum); int nds32_v3_hit_watchpoint(struct target *target, diff --git a/src/target/nds32_v3m.c b/src/target/nds32_v3m.c index 35a76378..2c0d2557 100644 --- a/src/target/nds32_v3m.c +++ b/src/target/nds32_v3m.c @@ -473,7 +473,6 @@ struct target_type nds32_v3m_target = { .assert_reset = nds32_assert_reset, .deassert_reset = nds32_v3m_deassert_reset, - .soft_reset_halt = nds32_v3_soft_reset_halt, /* register access */ .get_gdb_reg_list = nds32_get_gdb_reg_list,