9os

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit ecdcf5acce1be22f4ff40e9aa7b94ddc1e708bc7
parent 9ff7053024b9e0ab35212a20c08fc4ed089cab8a
Author: Dimitris Papastamos <dimitris.papastamos@arm.com>
Date:   Wed,  7 Nov 2018 14:54:41 +0000

[debuglang] Use trapframe from bss

Change-Id: I23c4036bca1cbf786182096143690bbf513c4fec
Signed-off-by: Dimitris Papastamos <dimitris.papastamos@arm.com>

Diffstat:
March/amd64/ram.c | 5++---
March/amd64/rom.c | 5++---
Minclude/rcode.h | 2+-
Msrc/debuglang/debuglang.c | 42+++++++++++++++++++++---------------------
4 files changed, 26 insertions(+), 28 deletions(-)

diff --git a/arch/amd64/ram.c b/arch/amd64/ram.c @@ -3,8 +3,7 @@ int main(int argc, char *argv[]) { - struct trapframe frame = { 0 }; - - debug(&frame); + bss->fp = &(struct trapframe) {0}; + debug(); return 0; } diff --git a/arch/amd64/rom.c b/arch/amd64/rom.c @@ -3,8 +3,7 @@ int main(int argc, char *argv[]) { - struct trapframe frame = { 0 }; - - debug(&frame); + bss->fp = &(struct trapframe) {0}; + debug(); return 0; } diff --git a/include/rcode.h b/include/rcode.h @@ -160,7 +160,7 @@ extern void printk(const char * restrict fmt, ...) PRINTKFMT; extern void rmc(Rmucmd *cmd); extern _Noreturn void doswtch(struct trapframe *fp); extern _Noreturn void swtch(struct trapframe *fp); -extern void debug(struct trapframe *fp); +extern void debug(void); /* architectural functions */ extern _Noreturn void halt(void); diff --git a/src/debuglang/debuglang.c b/src/debuglang/debuglang.c @@ -15,7 +15,7 @@ struct cmd { char *name; - int (*eval)(char **argv, int argc, struct trapframe *fp); + int (*eval)(char **argv, int argc); char *helpmsg; }; @@ -93,7 +93,7 @@ estrtoull(char *str, int base) /* Get reg struct for named reg */ static unsigned long long * -get_named_reg(char *name, struct trapframe *fp) +get_named_reg(char *name) { char *regptr; const struct named_reg *rp; @@ -101,7 +101,7 @@ get_named_reg(char *name, struct trapframe *fp) regptr = NULL; for (rp = named_regs; rp->name; ++rp) { if (strcmp(name, rp->name) == 0) { - regptr = (char *) fp; + regptr = (char *) bss->fp; regptr += rp->offset; } } @@ -133,13 +133,13 @@ get_cmd(char *name) } static int -do_set(char **argv, int argc, struct trapframe *fp) +do_set(char **argv, int argc) { unsigned long long *reg = NULL; unsigned long long setval = 0; unsigned int base; - reg = get_named_reg(argv[1], fp); + reg = get_named_reg(argv[1]); if (reg == NULL) error("Register '%s' not found", argv[1]); @@ -160,12 +160,12 @@ do_set(char **argv, int argc, struct trapframe *fp) } static int -do_get(char **argv, int argc, struct trapframe *fp) +do_get(char **argv, int argc) { unsigned long long *reg = NULL; char *fmt; - reg = get_named_reg(argv[1], fp); + reg = get_named_reg(argv[1]); if (reg == NULL) error("Register '%s' not found", argv[1]); @@ -194,21 +194,21 @@ do_get(char **argv, int argc, struct trapframe *fp) } static int -do_dump(char **argv, int argc, struct trapframe *fp) +do_dump(char **argv, int argc) { - print_tf(fp); + print_tf(bss->fp); return 0; } static int -do_trap(char **argv, int argc, struct trapframe *fp) +do_trap(char **argv, int argc) { - trap(fp); + trap(bss->fp); return 0; } static int -do_rmc(char **argv, int argc, struct trapframe *fp) +do_rmc(char **argv, int argc) { unsigned char class; unsigned char func; @@ -235,15 +235,15 @@ do_rmc(char **argv, int argc, struct trapframe *fp) error("Invalid number of parameters for rmc"); } dbg("class: %d,func:%d\n", class, func); - fp->esr = (unsigned long long) RMC << 26; - fp->esr |= class; - fp->esr |= (func << 8); - trap(fp); + bss->fp->esr = (unsigned long long) RMC << 26; + bss->fp->esr |= class; + bss->fp->esr |= (func << 8); + trap(bss->fp); return 0; } static int -do_help(char **argv, int argc, struct trapframe *fp) +do_help(char **argv, int argc) { const struct cmd *cmd; @@ -278,7 +278,7 @@ parse_cmd(char *buf, struct args *args) } static int -run(struct trapframe *tf) +run(void) { const struct cmd *cmd; size_t len; @@ -294,13 +294,13 @@ run(struct trapframe *tf) buffer[len-1] = '\0'; cmd = parse_cmd(buffer, &args); if (cmd) - cmd->eval(args.argv, args.argc, tf); + cmd->eval(args.argv, args.argc); } return 1; } void -debug(struct trapframe *fp) +debug(void) { bss->in_debug = 1; @@ -310,7 +310,7 @@ debug(struct trapframe *fp) setjmp(bss->dbgrecover); - for (ready(); run(fp); ready()) + for (ready(); run(); ready()) ; if (ferror(stdout))