Age | Commit message (Collapse) | Author | Files | Lines |
|
The impetus for this was mostly that after my Ubuntu upgrade, pylint
suddenly starting to apply python3 rules, and I suppose it's time to
adopt python 3 now that it's been released for more than a decade.
|
|
* Let the debugger enable mstatus.F if necessary.
* Ignore (some) gdb debug output.
* Increase timeout.
* Make newer version of pylint happy.
|
|
|
|
Passes on spike and Arty. Won't merge until
https://github.com/riscv/riscv-openocd/pull/364 merges.
|
|
|
|
|
|
Only works against spike, where I've implemented some custom debug
registers to test against.
|
|
|
|
|
|
* Debug: Actually use the --32 and --64 command line arguments
* debug: make XLEN mismatch message clearer
|
|
|
|
Fixes #83.
|
|
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.
|
|
|
|
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.
|
|
I don't exactly understand why it has to be the way it is, but I just
want it to work.
Also fix a pylint complaint.
|
|
files.
|
|
Then for targets that can't handle this because they don't implement
hmode, add a target setting that allows that to be specified.
|
|
I'm using this for a target where misa is at an old address, to
set riscv use_compressed_breakpoints off
|
|
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.
|
|
The spike64 target now links all test programs at 0x7fff_ffff_ffff_0000.
Also a minor change to log file naming so that 'make all' works again.
I'll fix this better later.
|
|
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
|
|
|
|
|
|
|
|
(actually it just gets an exception anyway).
|
|
|
|
|
|
|
|
|
|
|
|
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.
|
|
|
|
Relying on something that the compiler automatically sets is apparently
not reliable.
|
|
|
|
It's not Just Working, and none of the tests so far actually care.
|
|
|
|
|
|
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).
|