Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
|
|
|
|
Add interrupts to MulticoreRunHaltStepiTest.
|
|
Fixes #77.
|
|
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.
|
|
Then for targets that can't handle this because they don't implement
hmode, add a target setting that allows that to be specified.
|
|
This shouldn't affect triggers set by the debugger, because running code
can't change those. When it does affect them, it breaks Hwbp1 which sets
the breakpoint before running the program.
|
|
At least in the test programs. There are other places where this causes
trouble as well.
|
|
|
|
When connecting to gdb, select a random thread and use that for the
current test.
Also replace infinite_loop with something that will later allow
smoketesting of more than one thread.
|
|
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.
|
|
Spike appears to have a problem geterating DTS at 0x80000000.
|
|
|
|
(actually it just gets an exception anyway).
|
|
|
|
I've added an additional linker relaxation that relaxes two instruction
pc-relative sequences to one instruction gp relative sequences when
possible. This sequence now optimizes the initial gp generation to
mv gp, gp
which is obviously bogus. The fix is to disable relaxations when
setting up gp, preventing the linker from relaxing away this setup code.
|
|
This changed a while ago in binutils.
|
|
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.
|
|
All tests pass on spike32 and spike64 again.
|
|
Relying on something that the compiler automatically sets is apparently
not reliable.
|
|
|
|
M-mode writes to triggers with dmode set are now ignored instead of
raising an exception.
Also added -f/--fail-fast option to gdbserver.
|
|
If the last test leaves some triggers set they should be cleaned up.
|
|
|
|
|
|
|
|
Now it doesn't rely on malloc, which can be tricky to get to work in and
of itself.
|
|
Users can use this register to inspect and change the privilege level of
the core. It doesn't make any assumptions about the actual underlying
debug mechanism (as opposed to having the user change DCSR directly,
which may not exist in all debug implementations).
|
|
|
|
Now gdb can call functions and change strings.
|
|
|
|
|
|
|
|
|
|
Apparently the 32-bit compiler doesn't generate good enough debug info
for gdb to know what function we're in, which also means it doesn't know
where the local variables in those functions are stored.
|
|
Make the RegsTest case a bit more comprehensible.
|
|
|
|
I did comment out a couple.
|
|
I'm writing all the tests so they should just work on real hardware,
too.
|
|
./gdbserver.py --m2gl_m2s --openocd "$HOME/SiFive/openocd/src/openocd -s
$HOME/SiFive/openocd/tcl" -- RegsTest.test_write_gprs
doesn't fail in a completely crazy way.
|