Implement address and data triggers.
authorTim Newsome <tim@sifive.com>
Mon, 22 Aug 2016 16:49:20 +0000 (09:49 -0700)
committerTim Newsome <tim@sifive.com>
Mon, 22 Aug 2016 16:49:20 +0000 (09:49 -0700)
commitd6dae451821656d7676fec3ec515691d4c66e065
treeab8d1a8129710b380147cefc44e97c4dad28425b
parent5e1d0059353a4756740df709f85c35ee86138ad6
Implement address and data triggers.

So far I only have testcases for instruction and data address.
Not implemented is the mechanism that lets the debugger prevent a user
program from using triggers at all. I'll be adding that soonish.

The critical path is unchanged, but my experimenting shows the
simulation is slowed down about 8% by this code. Reducing the size of
trigger_match() (which is never called during my benchmark) fixes that,
but making it not be inlined has no effect. I suspect the slowdown comes
from cache alignment or something similar, and on a different CPU or
after more code changes the speed will come back.
riscv/encoding.h
riscv/execute.cc
riscv/gdbserver.cc
riscv/gdbserver.h
riscv/insns/dret.h
riscv/mmu.cc
riscv/mmu.h
riscv/processor.cc
riscv/processor.h