9os

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

commit c122ac8d4c8c6db695aabecb3dd303a8dcdd2f01
parent 26048154d918db90e932084b87f306a32b0df86e
Author: Dimitris Papastamos <dimitris.papastamos@arm.com>
Date:   Fri, 19 Oct 2018 18:43:06 +0100

Rename imm1/imm2 to class/func

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

Diffstat:
Minclude/rcode.h | 2+-
Msrc/rmc.c | 34+++++++++++++++++-----------------
Mtest/test1/test.c | 4++--
Mtest/test3/test.c | 2+-
4 files changed, 21 insertions(+), 21 deletions(-)

diff --git a/include/rcode.h b/include/rcode.h @@ -107,7 +107,7 @@ struct trapframe { }; struct rmucmd { - unsigned imm1, imm2; + unsigned class, func; struct trapframe *fp; jmp_buf recover; }; diff --git a/src/rmc.c b/src/rmc.c @@ -99,8 +99,8 @@ trap(struct trapframe *fp) halt(); } - cmd.imm1 = fp->esr & 0xff; - cmd.imm2 = (fp->esr >> 8) & 0xff; + cmd.class = fp->esr & 0xff; + cmd.func = (fp->esr >> 8) & 0xff; cmd.fp = fp; bss->cmd = &cmd; @@ -115,7 +115,7 @@ badcmd(int error) { Rmucmd *cmd = bss->cmd; - dbg("bad RMC: %d, %d = %d\n", cmd->imm1, cmd->imm2, error); + dbg("bad RMC: %d, %d = %d\n", cmd->class, cmd->func, error); cmd->fp->x0 = error; longjmp(cmd->recover, 1); } @@ -123,22 +123,22 @@ badcmd(int error) /* * The dispatcher cannot be implemented using a table * because the rmu command number is composed by two - * immediates, imm1 and imm2, which don't generate + * immediates, class and func, which don't generate * consecutive values. The approach is to use a sparse * matrix, where we store all the function pointers * consecutive and we create a row index table which * the offset from the beginning of the handler table * and number of entries in that table for that row. * - * rowidx handler - * --------------- -------- - * | off = 0,cnt=1 | | fun0 | - * --------------- -------- - * imm1--> | off = 1,cnt=2 | ---> off + imm2 --> | fun1 | - * --------------- -------- - * | off = 3,cnt=1 | | fun2 | - * --------------- -------- - * ... ... + * rowidx handler + * --------------- -------- + * | off = 0,cnt=1 | | fun0 | + * --------------- -------- + * class --> | off = 1,cnt=2 | ---> off + func --> | fun1 | + * --------------- -------- + * | off = 3,cnt=1 | | fun2 | + * --------------- -------- + * ... ... */ void rmc(Rmucmd *cmd) @@ -147,11 +147,11 @@ rmc(Rmucmd *cmd) void (*fp)(Rmucmd *cmd); char *bp; - if (cmd->imm1 > 255 || cmd->imm2 > 255) + if (cmd->class > 255 || cmd->func > 255) panic("rmc"); - idx = &rowidx[cmd->imm1]; - if (cmd->imm2 >= idx->cnt) + idx = &rowidx[cmd->class]; + if (cmd->func >= idx->cnt) badcmd(-1); /* TODO: put the correct code */ /* @@ -160,7 +160,7 @@ rmc(Rmucmd *cmd) * loaded at any address */ bp = bss->text; - bp += handler[idx->off + cmd->imm2]; + bp += handler[idx->off + cmd->func]; fp = (void (*)(Rmucmd *)) bp; (*fp)(cmd); diff --git a/test/test1/test.c b/test/test1/test.c @@ -14,8 +14,8 @@ main(int argc, char *argv[]) cmd.fp = &frame; for (i = 0; i < 256; i++) { for (j = 0; j < 256; j++) { - cmd.imm1 = i; - cmd.imm2 = j; + cmd.class = i; + cmd.func = j; bss->cmd = &cmd; dbg("%u\t%u\t", i, j); if (!setjmp(cmd.recover)) diff --git a/test/test3/test.c b/test/test3/test.c @@ -11,7 +11,7 @@ main(void) { struct trapframe frame; - frame.esr = RMC << 26; /* imm1 = imm2 = 0 */ + frame.esr = RMC << 26; /* class = func = 0 */ if (!setjmp(env)) trap(&frame); assert(frame.x0 == 0);