diff options
Diffstat (limited to 'sys/cddl')
-rw-r--r-- | sys/cddl/dev/dtrace/riscv/dtrace_subr.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/sys/cddl/dev/dtrace/riscv/dtrace_subr.c b/sys/cddl/dev/dtrace/riscv/dtrace_subr.c index 68d98db30c83..ccc6b77090ab 100644 --- a/sys/cddl/dev/dtrace/riscv/dtrace_subr.c +++ b/sys/cddl/dev/dtrace/riscv/dtrace_subr.c @@ -255,6 +255,8 @@ dtrace_invop_start(struct trapframe *frame) int invop; invop = dtrace_invop(frame->tf_sepc, frame, frame->tf_sepc); + if (invop == 0) + return (-1); if (match_opcode(invop, (MATCH_SD | RS2_RA | RS1_SP), (MASK_SD | RS2_MASK | RS1_MASK))) { @@ -292,6 +294,10 @@ dtrace_invop_start(struct trapframe *frame) return (0); } +#ifdef INVARIANTS + panic("Instruction %x doesn't match any opcode.", invop); +#endif + return (-1); } |