This reverts commit bbfceba15f8d1260c328a254efc2b3f2deae4904. When DBG_MAX_REG_NUM is zero then a number of symbols are conditionally defined. It is therefore not possible to check it using C expressions.
Unified · Split
| @@ -543,8 +543,9 @@ int kdbgetaddrarg(int argc, const char **argv, int *nextarg, · 542 unmodified lines | ||
| 543 | 543 | if (diag) |
| 544 | 544 | return diag; |
| 545 | 545 | } else if (symname[0] == '%') { |
| 546 | − if (kdb_check_regs()) | |
| 547 | − return 0; | |
| 546 | + diag = kdb_check_regs(); | |
| 547 | + if (diag) | |
| 548 | + return diag; | |
| 548 | 549 | /* Implement register values with % at a later time as it is |
| 549 | 550 | * arch optional. |
| 550 | 551 | */ |
| @@ -1835,7 +1836,8 @@ static int kdb_go(int argc, const char **argv) · 1284 unmodified lines | ||
| 1835 | 1836 | */ |
| 1836 | 1837 | static int kdb_rd(int argc, const char **argv) |
| 1837 | 1838 | { |
| 1838 | − int len = 0; | |
| 1839 | + int len = kdb_check_regs(); | |
| 1840 | +#if DBG_MAX_REG_NUM > 0 | |
| 1839 | 1841 | int i; |
| 1840 | 1842 | char *rname; |
| 1841 | 1843 | int rsize; |
| @@ -1844,14 +1846,8 @@ static int kdb_rd(int argc, const char **argv) · 2 unmodified lines | ||
| 1844 | 1846 | u16 reg16; |
| 1845 | 1847 | u8 reg8; |
| 1846 | 1848 | |
| 1847 | − if (kdb_check_regs()) | |
| 1848 | − return 0; | |
| 1849 | − | |
| 1850 | − /* Fallback to Linux showregs() if we don't have DBG_MAX_REG_NUM */ | |
| 1851 | − if (DBG_MAX_REG_NUM <= 0) { | |
| 1852 | − kdb_dumpregs(kdb_current_regs); | |
| 1853 | − return 0; | |
| 1854 | − } | |
| 1849 | + if (len) | |
| 1850 | + return len; | |
| 1855 | 1851 | |
| 1856 | 1852 | for (i = 0; i < DBG_MAX_REG_NUM; i++) { |
| 1857 | 1853 | rsize = dbg_reg_def[i].size * 2; |
| @@ -1893,7 +1889,12 @@ static int kdb_rd(int argc, const char **argv) · 35 unmodified lines | ||
| 1893 | 1889 | } |
| 1894 | 1890 | } |
| 1895 | 1891 | kdb_printf("\n"); |
| 1892 | +#else | |
| 1893 | + if (len) | |
| 1894 | + return len; | |
| 1896 | 1895 | |
| 1896 | + kdb_dumpregs(kdb_current_regs); | |
| 1897 | +#endif | |
| 1897 | 1898 | return 0; |
| 1898 | 1899 | } |
| 1899 | 1900 | |
| @@ -1927,8 +1928,9 @@ static int kdb_rm(int argc, const char **argv) · 27 unmodified lines | ||
| 1927 | 1928 | if (diag) |
| 1928 | 1929 | return diag; |
| 1929 | 1930 | |
| 1930 | − if (kdb_check_regs()) | |
| 1931 | − return 0; | |
| 1931 | + diag = kdb_check_regs(); | |
| 1932 | + if (diag) | |
| 1933 | + return diag; | |
| 1932 | 1934 | |
| 1933 | 1935 | diag = KDB_BADREG; |
| 1934 | 1936 | for (i = 0; i < DBG_MAX_REG_NUM; i++) { |