aboutsummaryrefslogtreecommitdiff
path: root/src/target/x86_32_common.c
diff options
context:
space:
mode:
authorPaul Fertser <fercerpav@gmail.com>2018-01-17 22:00:42 +0300
committerPaul Fertser <fercerpav@gmail.com>2018-01-30 07:34:32 +0000
commitfa86553e76ebf6285d5b580a08bfbecdd9ec38c1 (patch)
treea35f06a4d773be9472b8857c3e181d0912310b48 /src/target/x86_32_common.c
parentdd890d4cad7c62a65d0efd04c5e0b700eeb5928d (diff)
downloadriscv-openocd-fa86553e76ebf6285d5b580a08bfbecdd9ec38c1.zip
riscv-openocd-fa86553e76ebf6285d5b580a08bfbecdd9ec38c1.tar.gz
riscv-openocd-fa86553e76ebf6285d5b580a08bfbecdd9ec38c1.tar.bz2
x86_32_common: fix some warnings
Mostly "Dead assignment" reported by Clang static analyzer. Change-Id: Ibf81d2ba2462570ee3a40e57a60c55a1d1fa0c00 Signed-off-by: Paul Fertser <fercerpav@gmail.com> Reviewed-on: http://openocd.zylin.com/4351 Tested-by: jenkins
Diffstat (limited to 'src/target/x86_32_common.c')
-rw-r--r--src/target/x86_32_common.c43
1 files changed, 28 insertions, 15 deletions
diff --git a/src/target/x86_32_common.c b/src/target/x86_32_common.c
index 0d87ba5..ef4f806 100644
--- a/src/target/x86_32_common.c
+++ b/src/target/x86_32_common.c
@@ -209,15 +209,16 @@ static int read_phys_mem(struct target *t, uint32_t phys_address,
LOG_ERROR("%s invalid read size", __func__);
break;
}
+ if (retval != ERROR_OK)
+ break;
}
/* restore CR0.PG bit if needed (regardless of retval) */
if (pg_disabled) {
- retval = x86_32->enable_paging(t);
- if (retval != ERROR_OK) {
+ int retval2 = x86_32->enable_paging(t);
+ if (retval2 != ERROR_OK) {
LOG_ERROR("%s could not enable paging", __func__);
- return retval;
+ return retval2;
}
- pg_disabled = true;
}
/* TODO: After reading memory from target, we must replace
* software breakpoints with the original instructions again.
@@ -364,6 +365,9 @@ static int read_mem(struct target *t, uint32_t size,
break;
}
+ if (retval != ERROR_OK)
+ return retval;
+
/* read_hw_reg() will write to 4 bytes (uint32_t)
* Watch out, the buffer passed into read_mem() might be 1 or 2 bytes.
*/
@@ -436,6 +440,10 @@ static int write_mem(struct target *t, uint32_t size,
LOG_ERROR("%s invalid write mem size", __func__);
return ERROR_FAIL;
}
+
+ if (retval != ERROR_OK)
+ return retval;
+
retval = x86_32->transaction_status(t);
if (retval != ERROR_OK) {
LOG_ERROR("%s error on mem write", __func__);
@@ -606,7 +614,6 @@ int x86_32_common_read_memory(struct target *t, target_addr_t addr,
&& x86_32_common_read_phys_mem(t, physaddr, size, count, buf) != ERROR_OK) {
LOG_ERROR("%s failed to read memory from physical address " TARGET_ADDR_FMT,
__func__, physaddr);
- retval = ERROR_FAIL;
}
/* restore PG bit if it was cleared prior (regardless of retval) */
retval = x86_32->enable_paging(t);
@@ -662,7 +669,6 @@ int x86_32_common_write_memory(struct target *t, target_addr_t addr,
&& x86_32_common_write_phys_mem(t, physaddr, size, count, buf) != ERROR_OK) {
LOG_ERROR("%s failed to write memory to physical address " TARGET_ADDR_FMT,
__func__, physaddr);
- retval = ERROR_FAIL;
}
/* restore PG bit if it was cleared prior (regardless of retval) */
retval = x86_32->enable_paging(t);
@@ -733,15 +739,19 @@ int x86_32_common_read_io(struct target *t, uint32_t addr,
LOG_ERROR("%s invalid read io size", __func__);
return ERROR_FAIL;
}
+
/* restore CR0.PG bit if needed */
if (pg_disabled) {
- retval = x86_32->enable_paging(t);
- if (retval != ERROR_OK) {
+ int retval2 = x86_32->enable_paging(t);
+ if (retval2 != ERROR_OK) {
LOG_ERROR("%s could not enable paging", __func__);
- return retval;
+ return retval2;
}
- pg_disabled = false;
}
+
+ if (retval != ERROR_OK)
+ return retval;
+
uint32_t regval = 0;
retval = x86_32->read_hw_reg(t, EAX, &regval, 0);
if (retval != ERROR_OK) {
@@ -818,15 +828,19 @@ int x86_32_common_write_io(struct target *t, uint32_t addr,
LOG_ERROR("%s invalid write io size", __func__);
return ERROR_FAIL;
}
+
/* restore CR0.PG bit if needed */
if (pg_disabled) {
- retval = x86_32->enable_paging(t);
- if (retval != ERROR_OK) {
+ int retval2 = x86_32->enable_paging(t);
+ if (retval2 != ERROR_OK) {
LOG_ERROR("%s could not enable paging", __func__);
- return retval;
+ return retval2;
}
- pg_disabled = false;
}
+
+ if (retval != ERROR_OK)
+ return retval;
+
retval = x86_32->transaction_status(t);
if (retval != ERROR_OK) {
LOG_ERROR("%s error on io write", __func__);
@@ -1141,7 +1155,6 @@ static int set_breakpoint(struct target *t, struct breakpoint *bp)
}
} else {
LOG_ERROR("%s core doesn't support SW breakpoints", __func__);
- error = ERROR_FAIL;
return ERROR_FAIL;
}
}