9os

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

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:
Minclude/rcode.h | 2--
Msrc/rmc.c | 6++----
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); } /*