aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/target/nds32.c23
-rw-r--r--src/target/nds32_v2.c22
-rw-r--r--src/target/nds32_v3.c1
-rw-r--r--src/target/nds32_v3_common.c6
-rw-r--r--src/target/nds32_v3_common.h1
-rw-r--r--src/target/nds32_v3m.c1
6 files changed, 22 insertions, 32 deletions
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,