Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
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.
|
|
Now it actually confirms that we're talking to two different cores which
have different values in their registers. Previously it could have been
fooled if eg. the thread command was a nop.
|
|
Then for targets that can't handle this because they don't implement
hmode, add a target setting that allows that to be specified.
|
|
|
|
|
|
Instead of defining each target in targets.py, now each target gets its
own .py file. This means people can easily keep their own target files
around that they may not want to put into the main test source. As part
of that, I removed the freedom-u500-sim target since I assume it's only
used internally at SiFive.
Added a few cleanups as well:
* Update README examples, mostly --sim_cmd instead of --cmd.
* Allow defining misa in a target, to skip running of ExamineTarget.
* Rename target.target() to target.create(), which is less confusing.
* Default --sim_cmd to `spike`
* Got rid of `use_fpu`, instead looking at F or D in $misa.
|
|
|
|
If we want we can start using print(), but if so let's consistently use
it instead of piecemeal. See also
https://stackoverflow.com/questions/28694380/pylint-says-unnecessary-parens-after-r-keyword
|
|
|
|
|
|
|
|
|
|
|
|
spike passes the download test, but needs a 15 minute timeout. That's
too ridiculous to put in here, but 60s is reasonable.
|
|
|
|
This makes the test pass reliably (10/10) against the Arty board.
Previously it failed intermittently.
|
|
The main change was to read misa before running any other test. If misa
indicates C is supported, then use compressed code. This required
changing some tests, mostly to ensure correct alignment. The single
step test also needs to know the correct addresses to step through in
compressed code.
Only print at most 1000 lines from each log file.
|
|
At some point the program changed to use a different register and this
test was never updated. If $x1 pointed somewhere bad, that would result
in an exception.
|
|
|
|
|
|
This took a lot of refactoring to make it look reasonable.
There isn't actually any functional OpenOCD test yet. But a dummy test
runs a command (and fails).
|
|
|
|
|
|
M-mode writes to triggers with dmode set are now ignored instead of
raising an exception.
Also added -f/--fail-fast option to gdbserver.
|
|
|
|
|
|
No longer use unittest. Now tests can return not_applicable if eg. a
desired execution mode isn't implemented on a target. Also we do a
better job killing spike processes when a test fails.
Did a lot of code cleanup, partly by using pylint.
Fix the Makefile so that if the test fails, 'make' actually fails too.
|
|
|
|
|
|
|
|
|
|
Doesn't work with Python 2.7.9 which is the default in latest Debian.
|
|
|
|
|
|
|
|
Now it doesn't rely on malloc, which can be tricky to get to work in and
of itself.
|
|
|
|
Also minor style changes.
|