9os

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

commit eb8bf4cbcdcf36baa063e27c6e9d96a21209bbe3
parent 4f5eca627a2749db773bccc7a76bcd535958fc47
Author: Dimitris Papastamos <dimitris.papastamos@arm.com>
Date:   Thu,  8 Nov 2018 11:35:16 +0000

[debuglang] Split rmc command into rmc and rmu

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

Diffstat:
Msrc/debuglang/debuglang.c | 51+++++++++++++++++++++++++++++----------------------
1 file changed, 29 insertions(+), 22 deletions(-)

diff --git a/src/debuglang/debuglang.c b/src/debuglang/debuglang.c @@ -187,30 +187,13 @@ do_rmc(const struct cmd *cmd, struct args *args) { unsigned char class; unsigned char func; - unsigned int base; - const struct rmudesc *rmudesc; - base = 0; - switch (args->argc) { - case 4: - base = estrtoull(args->argv[3], 10); - /* fallthrough */ - case 3: - class = estrtoull(args->argv[1], base); - func = estrtoull(args->argv[2], base); - break; - case 2: - rmudesc = get_rmudesc(args->argv[1]); - if (rmudesc == NULL) - error("rmc '%s' not found", args->argv[1]); - class = rmudesc->class; - func = rmudesc->func; - break; - default: + if (args->argc != 3) error(cmd->helpmsg); - } - dbg("class: %d,func:%d\n", class, func); + class = estrtoull(args->argv[1], 0); + func = estrtoull(args->argv[2], 0); + bss->fp->esr = (unsigned long long) RMC << 26; bss->fp->esr |= class; bss->fp->esr |= (func << 8); @@ -219,6 +202,25 @@ do_rmc(const struct cmd *cmd, struct args *args) } static int +do_rmu(const struct cmd *cmd, struct args *args) +{ + const struct rmudesc *rmudesc; + + if (args->argc != 2) + error(cmd->helpmsg); + + rmudesc = get_rmudesc(args->argv[1]); + if (rmudesc == NULL) + error("rmu: %s not found", args->argv[1]); + + bss->fp->esr = (unsigned long long) RMC << 26; + bss->fp->esr |= rmudesc->class; + bss->fp->esr |= (rmudesc->func << 8); + trap(bss->fp); + return 0; +} + +static int do_exit(const struct cmd *cmd, struct args *args) { switch (args->argc) { @@ -342,7 +344,12 @@ static const struct cmd cmds[] = { { .name = "rmc", .eval = do_rmc, - .helpmsg = "Call RMC handler: rmc", + .helpmsg = "Call RMC handler: rmc imm1 imm2", + }, + { + .name = "rmu", + .eval = do_rmu, + .helpmsg = "Call RMU handler: rmu rmucmd", }, { .name = "exit",