commit 82a782caae33d0420624e7b76f23c02eb10d2043
parent 35bb1f4cf94ec5cf45b086f7129db46df5cb2bf8
Author: Dimitris Papastamos <dimitris.papastamos@arm.com>
Date: Mon, 29 Oct 2018 12:25:03 +0000
[arm64] No need to use setjmp/longjmp just swtch() directly from badcmd()
(This was Roberto's idea!)
Change-Id: I6200a2f1242046c917ff34b894b48c4cb7537096
Signed-off-by: Dimitris Papastamos <dimitris.papastamos@arm.com>
Diffstat:
2 files changed, 2 insertions(+), 6 deletions(-)
diff --git a/include/rcode.h b/include/rcode.h
@@ -1,4 +1,3 @@
-#include <setjmp.h>
#include <stddef.h>
#include <stdint.h>
@@ -117,7 +116,6 @@ struct trapframe {
struct rmucmd {
unsigned class, func;
struct trapframe *fp;
- jmp_buf recover;
};
static inline volatile struct bssmap *
diff --git a/src/rmc.c b/src/rmc.c
@@ -104,9 +104,7 @@ trap(struct trapframe *fp)
cmd.fp = fp;
bss->cmd = &cmd;
- if (!setjmp(cmd.recover))
- rmc(&cmd);
-
+ rmc(&cmd);
swtch(fp);
}
@@ -117,7 +115,7 @@ badcmd(int error)
dbg("bad RMC: %d, %d = %d\n", cmd->class, cmd->func, error);
cmd->fp->x0 = error;
- longjmp(cmd->recover, 1);
+ swtch(cmd->fp);
}
/*