diff --git a/ka/main.k b/ka/main.k index 047ed5a..99f9288 100644 --- a/ka/main.k +++ b/ka/main.k @@ -32,6 +32,7 @@ cpudev_test: trap 0 trap 0 + trap 2 ret diff --git a/vm/pc/arch.h b/vm/pc/arch.h index 0a265e8..0e29565 100644 --- a/vm/pc/arch.h +++ b/vm/pc/arch.h @@ -62,6 +62,9 @@ struct ctx_t // Devices list head dev_t *dh; + + // Instructions executed so far + ulong ninstrs; }; #define R(X) ctx->rf[X] diff --git a/vm/pc/decd.c b/vm/pc/decd.c index e6af903..e6ac165 100644 --- a/vm/pc/decd.c +++ b/vm/pc/decd.c @@ -163,7 +163,7 @@ void decode(ctx_t *ctx) ulong pc = rip; // Instruction counter - R(RX0)++; + ctx->ninstrs++; // // Process the first word of the instruction diff --git a/vm/pc/regs.c b/vm/pc/regs.c index 7a6d189..e484e7c 100644 --- a/vm/pc/regs.c +++ b/vm/pc/regs.c @@ -100,7 +100,7 @@ void dumpregs(ctx_t *ctx) log("\n\nrip=0x%-16lX rsp=0x%-16lX rbp=0x%-16lX rx0=%-16lu\n\n", - rip, rsp, rbp, R(RX0)); + rip, rsp, rbp, ctx->ninstrs); log("CF=%x OF=%x\n" "ZF=%x SF=%x\n"