fix: change x paddr to vaddr

This commit is contained in:
xinyangli 2024-02-05 22:53:15 +08:00
parent 4aa536e1ef
commit 2675a647b0
No known key found for this signature in database
3 changed files with 18 additions and 19 deletions

View file

@ -1,3 +1,2 @@
SRCS-y += src/monitor/sdb/addrexp.tag.c src/monitor/sdb/addrexp.yy.c
INC_PATH += src/monitor/sdb
LFLAGS += -DYY_NO_UNPUT -DYY_NO_INPUT

View file

@ -19,7 +19,7 @@
#include <cpu/cpu.h>
#include <errno.h>
#include <isa.h>
#include <memory/paddr.h>
#include <memory/vaddr.h>
#include <readline/history.h>
#include <readline/readline.h>
#include <stdint.h>
@ -125,17 +125,13 @@ static word_t parse_uint(const char *arg, bool *success) {
}
}
static paddr_t parse_expr(const char *arg, bool *success) {
static vaddr_t parse_expr(const char *arg, bool *success) {
if (arg == NULL) {
puts("Invalid expr argument.");
*success = false;
return 0;
} else {
// bool res = false;
// FIXME: We cannot use `parse_uint` here, it accept `-1234` as input
// paddr_t addr = parse_uint(arg, &res);
// *success = res;
paddr_t addr;
vaddr_t addr;
yy_scan_string(arg);
*success = !yyparse(&addr);
yylex_destroy();
@ -193,15 +189,15 @@ static int cmd_x(char *args) {
goto wrong_usage;
// No deliminter here, just pass all the remain argument to `parse_expr()`
arg = strtok(NULL, "");
word_t addr = parse_expr(arg, &res);
word_t start_addr = parse_expr(arg, &res);
if (!res)
goto wrong_usage;
addr = addr & ~(WORD_BYTES - 1);
for (paddr_t paddr = addr; paddr < addr + n; paddr += WORD_BYTES) {
word_t value = paddr_read(addr, WORD_BYTES);
start_addr = start_addr & ~(WORD_BYTES - 1);
for (vaddr_t vaddr = start_addr; vaddr < start_addr + n; vaddr += WORD_BYTES) {
word_t value = vaddr_read(vaddr, WORD_BYTES);
printf("\e[1;34m" FMT_PADDR "\e[0m"
" " FMT_WORD "\n",
paddr, value);
vaddr, value);
}
return 0;