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:
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",