Skip to content

Commit 060a08b

Browse files
author
Biancaa Ramesh
committed
added the necessary tests for progbufsize
1 parent eb01c63 commit 060a08b

File tree

1 file changed

+21
-1
lines changed

1 file changed

+21
-1
lines changed

src/target/riscv/riscv-013.c

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1385,6 +1385,11 @@ static int fpr_read_progbuf(struct target *target, uint64_t *value,
13851385
{
13861386
assert(target->state == TARGET_HALTED);
13871387
assert(number >= GDB_REGNO_FPR0 && number <= GDB_REGNO_FPR31);
1388+
if (!has_sufficient_progbuf(target, 2)) {
1389+
LOG_DEBUG("Skipping FPR read: insufficient progbuf (size=%d)",
1390+
get_info(target)->progbufsize);
1391+
return ERROR_FAIL;
1392+
}
13881393

13891394
const unsigned int freg = number - GDB_REGNO_FPR0;
13901395

@@ -1417,6 +1422,11 @@ static int csr_read_progbuf(struct target *target, uint64_t *value,
14171422
{
14181423
assert(target->state == TARGET_HALTED);
14191424
assert(number >= GDB_REGNO_CSR0 && number <= GDB_REGNO_CSR4095);
1425+
if (!has_sufficient_progbuf(target, 2)) {
1426+
LOG_DEBUG("Skipping CSR read: insufficient progbuf (size=%d)",
1427+
get_info(target)->progbufsize);
1428+
return ERROR_FAIL;
1429+
}
14201430

14211431
if (riscv013_reg_save(target, GDB_REGNO_S0) != ERROR_OK)
14221432
return ERROR_FAIL;
@@ -1484,6 +1494,11 @@ static int fpr_write_progbuf(struct target *target, enum gdb_regno number,
14841494
{
14851495
assert(target->state == TARGET_HALTED);
14861496
assert(number >= GDB_REGNO_FPR0 && number <= GDB_REGNO_FPR31);
1497+
if (!has_sufficient_progbuf(target, 2)) {
1498+
LOG_DEBUG("Skipping FPR Write: insufficient progbuf (size=%d)",
1499+
get_info(target)->progbufsize);
1500+
return ERROR_FAIL;
1501+
}
14871502
const unsigned int freg = number - GDB_REGNO_FPR0;
14881503

14891504
if (riscv013_reg_save(target, GDB_REGNO_S0) != ERROR_OK)
@@ -1559,6 +1574,11 @@ static int csr_write_progbuf(struct target *target, enum gdb_regno number,
15591574
{
15601575
assert(target->state == TARGET_HALTED);
15611576
assert(number >= GDB_REGNO_CSR0 && number <= GDB_REGNO_CSR4095);
1577+
if (!has_sufficient_progbuf(target, 2)) {
1578+
LOG_DEBUG("Skipping CSR write: insufficient progbuf (size=%d)",
1579+
get_info(target)->progbufsize);
1580+
return ERROR_FAIL;
1581+
}
15621582

15631583
if (riscv013_reg_save(target, GDB_REGNO_S0) != ERROR_OK)
15641584
return ERROR_FAIL;
@@ -5554,4 +5574,4 @@ static int riscv013_clear_abstract_error(struct target *target)
55545574
if (dm_write(target, DM_ABSTRACTCS, DM_ABSTRACTCS_CMDERR) != ERROR_OK)
55555575
result = ERROR_FAIL;
55565576
return result;
5557-
}
5577+
}

0 commit comments

Comments
 (0)