diff --git a/src/target/armv4_5.c b/src/target/armv4_5.c index 6c30acc46..30aeb43bb 100644 --- a/src/target/armv4_5.c +++ b/src/target/armv4_5.c @@ -1355,6 +1355,8 @@ int armv4_5_run_algorithm_inner(struct target *target, cpsr = buf_get_u32(arm->cpsr->value, 0, 32); for (i = 0; i < num_mem_params; i++) { + if (mem_params[i].direction == PARAM_IN) + continue; retval = target_write_buffer(target, mem_params[i].address, mem_params[i].size, mem_params[i].value); if (retval != ERROR_OK) diff --git a/src/target/armv7m.c b/src/target/armv7m.c index ecca0e752..ef00b9427 100644 --- a/src/target/armv7m.c +++ b/src/target/armv7m.c @@ -379,7 +379,8 @@ int armv7m_start_algorithm(struct target *target, } for (int i = 0; i < num_mem_params; i++) { - /* TODO: Write only out params */ + if (mem_params[i].direction == PARAM_IN) + continue; retval = target_write_buffer(target, mem_params[i].address, mem_params[i].size, mem_params[i].value); diff --git a/src/target/dsp563xx.c b/src/target/dsp563xx.c index e7306d2e4..899161694 100644 --- a/src/target/dsp563xx.c +++ b/src/target/dsp563xx.c @@ -1387,6 +1387,8 @@ static int dsp563xx_run_algorithm(struct target *target, } for (i = 0; i < num_mem_params; i++) { + if (mem_params[i].direction == PARAM_IN) + continue; retval = target_write_buffer(target, mem_params[i].address, mem_params[i].size, mem_params[i].value); if (retval != ERROR_OK) diff --git a/src/target/mips32.c b/src/target/mips32.c index abb425596..9ac2507a3 100644 --- a/src/target/mips32.c +++ b/src/target/mips32.c @@ -461,6 +461,8 @@ int mips32_run_algorithm(struct target *target, int num_mem_params, } for (int i = 0; i < num_mem_params; i++) { + if (mem_params[i].direction == PARAM_IN) + continue; retval = target_write_buffer(target, mem_params[i].address, mem_params[i].size, mem_params[i].value); if (retval != ERROR_OK) diff --git a/src/target/stm8.c b/src/target/stm8.c index f5df2481a..b62ff131d 100644 --- a/src/target/stm8.c +++ b/src/target/stm8.c @@ -1890,6 +1890,8 @@ static int stm8_run_algorithm(struct target *target, int num_mem_params, } for (int i = 0; i < num_mem_params; i++) { + if (mem_params[i].direction == PARAM_IN) + continue; retval = target_write_buffer(target, mem_params[i].address, mem_params[i].size, mem_params[i].value); if (retval != ERROR_OK)