aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/debug
diff options
context:
space:
mode:
authorRandy Dunlap <rdunlap@infradead.org>2017-12-08 13:19:19 -0500
committerJason Wessel <jason.wessel@windriver.com>2018-01-25 09:41:07 -0500
commit1e0ce03bf142454f38a5fc050bf4fd698d2d36d8 (patch)
tree75272222ff9c084703ffecd31da4853522a1cfbd /kernel/debug
parent6909e29fdefbb7aa643021279daef6ed10c81528 (diff)
kdb: make "mdr" command repeat
The "mdr" command should repeat (continue) when only Enter/Return is pressed, so make it do so. Signed-off-by: Randy Dunlap <rdunlap@infradead.org> Cc: Daniel Thompson <daniel.thompson@linaro.org> Cc: Jason Wessel <jason.wessel@windriver.com> Cc: kgdb-bugreport@lists.sourceforge.net Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
Diffstat (limited to 'kernel/debug')
-rw-r--r--kernel/debug/kdb/kdb_main.c27
1 files changed, 21 insertions, 6 deletions
diff --git a/kernel/debug/kdb/kdb_main.c b/kernel/debug/kdb/kdb_main.c
index 69e70f4021fe..ff6047d3b73f 100644
--- a/kernel/debug/kdb/kdb_main.c
+++ b/kernel/debug/kdb/kdb_main.c
@@ -1566,6 +1566,7 @@ static int kdb_md(int argc, const char **argv)
1566 int symbolic = 0; 1566 int symbolic = 0;
1567 int valid = 0; 1567 int valid = 0;
1568 int phys = 0; 1568 int phys = 0;
1569 int raw = 0;
1569 1570
1570 kdbgetintenv("MDCOUNT", &mdcount); 1571 kdbgetintenv("MDCOUNT", &mdcount);
1571 kdbgetintenv("RADIX", &radix); 1572 kdbgetintenv("RADIX", &radix);
@@ -1575,9 +1576,10 @@ static int kdb_md(int argc, const char **argv)
1575 repeat = mdcount * 16 / bytesperword; 1576 repeat = mdcount * 16 / bytesperword;
1576 1577
1577 if (strcmp(argv[0], "mdr") == 0) { 1578 if (strcmp(argv[0], "mdr") == 0) {
1578 if (argc != 2) 1579 if (argc == 2 || (argc == 0 && last_addr != 0))
1580 valid = raw = 1;
1581 else
1579 return KDB_ARGCOUNT; 1582 return KDB_ARGCOUNT;
1580 valid = 1;
1581 } else if (isdigit(argv[0][2])) { 1583 } else if (isdigit(argv[0][2])) {
1582 bytesperword = (int)(argv[0][2] - '0'); 1584 bytesperword = (int)(argv[0][2] - '0');
1583 if (bytesperword == 0) { 1585 if (bytesperword == 0) {
@@ -1613,7 +1615,10 @@ static int kdb_md(int argc, const char **argv)
1613 radix = last_radix; 1615 radix = last_radix;
1614 bytesperword = last_bytesperword; 1616 bytesperword = last_bytesperword;
1615 repeat = last_repeat; 1617 repeat = last_repeat;
1616 mdcount = ((repeat * bytesperword) + 15) / 16; 1618 if (raw)
1619 mdcount = repeat;
1620 else
1621 mdcount = ((repeat * bytesperword) + 15) / 16;
1617 } 1622 }
1618 1623
1619 if (argc) { 1624 if (argc) {
@@ -1630,7 +1635,10 @@ static int kdb_md(int argc, const char **argv)
1630 diag = kdbgetularg(argv[nextarg], &val); 1635 diag = kdbgetularg(argv[nextarg], &val);
1631 if (!diag) { 1636 if (!diag) {
1632 mdcount = (int) val; 1637 mdcount = (int) val;
1633 repeat = mdcount * 16 / bytesperword; 1638 if (raw)
1639 repeat = mdcount;
1640 else
1641 repeat = mdcount * 16 / bytesperword;
1634 } 1642 }
1635 } 1643 }
1636 if (argc >= nextarg+1) { 1644 if (argc >= nextarg+1) {
@@ -1640,8 +1648,15 @@ static int kdb_md(int argc, const char **argv)
1640 } 1648 }
1641 } 1649 }
1642 1650
1643 if (strcmp(argv[0], "mdr") == 0) 1651 if (strcmp(argv[0], "mdr") == 0) {
1644 return kdb_mdr(addr, mdcount); 1652 int ret;
1653 last_addr = addr;
1654 ret = kdb_mdr(addr, mdcount);
1655 last_addr += mdcount;
1656 last_repeat = mdcount;
1657 last_bytesperword = bytesperword; // to make REPEAT happy
1658 return ret;
1659 }
1645 1660
1646 switch (radix) { 1661 switch (radix) {
1647 case 10: 1662 case 10: