Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
Only works against spike, where I've implemented some custom debug
registers to test against.
|
|
Now that OpenOCD can tell gdb exactly which watchpoint was hit, this
test exposes another problem:
https://github.com/riscv/riscv-openocd/issues/295
For now neuter the test so the testsuite can still be useful.
|
|
|
|
@timsifive we are debugging intermittent failures.
|
|
|
|
Add debug test, which checks that openocd correctly switch active thread on any hart halt.
|
|
It's failing (intermittently?). See eg.
https://travis-ci.org/riscv/riscv-tools/builds/418928412?utm_source=github_status&utm_medium=notification
|
|
any hart halt.
|
|
|
|
Newer gdb requires more debug info in order to "watch data" in this
test. I'm not sure how to make that debug info happen, so instead we
tell it the address to use.
|
|
The test actually wasn't checking interrupt counts at all. Fixing it
required some other changes:
Make sure all harts get to run
Add some retries, since on a loaded machine against spike both harts
might not get to run, even if you give spike a generous amount of time
to do so.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ISA Manual does not require this register to be reset, and attempting to execute code with VM on when VM hasn't been set up is going to just lead to sadness.
|
|
The caller of gdb.command() should estimate how much work gdb needs to
do, and testlib then scales this up proportional to the general gdb
timeout we configured. This hopefully allows us to configure a tighter
timeout, so we don't have to have a multi-hour timeout just for
something that takes long like `load` on a really slow simulator.
Hopefully this addresses #122.
|
|
|
|
|
|
It's an optional register.
|
|
Specifically, make sure that after resuming all cores, and halting core
0, that OpenOCD's poll() doesn't mess up the currently selected hart to
the point where memory accesses intended for core 0 go to core 1.
|
|
Cover all combinations of 32,64 bit XLEN with F and FD extensions.
Finishes Issue https://github.com/riscv/riscv-openocd/issues/110
|
|
|
|
|
|
|
|
* Debug: Actually use the --32 and --64 command line arguments
* debug: make XLEN mismatch message clearer
|
|
|
|
|
|
When not passed, they are no longer printed out.
|
|
|
|
|
|
This test would fail intermittently if gdb on the first hart managed to
set a breakpoint, resume, halt, and clear the breakpoint before the
second hart got a chance to resume.
|
|
|
|
|
|
|
|
The Gdb class now can handle connecting to more than one gdb. It
enumerates the harts across all connections, and when asked to select a
hart, it transparently sends future gdb commands to the correct
instance.
Multicore tests still have to be aware of some differences. The main one
is that when executing 'c' in RTOS mode, all harts resume, while in
multi-gdb mode only the current one resumes. Additionally, gdb doesn't
set breakpoints until 'c' is issued, so the hart where breakpoints are
set needs to be resumed before other harts might see them.
|
|
Some boards have jumpers that control the reset vector, and forcing them
one way or another is more annoying than dealing with it in software.
|
|
Just to hammer on anything at once, and hopefully catch weird
interactions if they exist.
|
|
|
|
When compiling, define the number of harts. This means we only need to
allocate a lot of stack if there are a lot of harts.
|
|
|
|
|
|
|
|
|
|
Targets now contain an array of harts. When running a regular test, one
hart is selected to run the test on while the remaining harts are parked
in a safe infinite loop.
There's currently only one test that tests multicore behavior, but there
could be more.
The infrastructure should be able to support heterogeneous multicore,
but I don't have a target like that to test with.
|
|
When a machine is very loaded, otherwise it could happen that we send
the interrupt before the resume has actually happened.
|
|
For one of the test addresses, use the highest possible one to ensure
that OpenOCD isn't secretly reading/writing more words than requested.
|