Jonathan Neuschäfer [Sat, 4 Jun 2016 12:13:45 +0000 (14:13 +0200)]
make check: Fail if the tests failed
Tim Newsome [Thu, 9 Jun 2016 17:18:32 +0000 (10:18 -0700)]
Fix 2 bugs in Debug ROM: (#52)
1. Debug ROM wasn't actually writing 0xffffffff to the last word in
Debug RAM after an exception happened.
2. Fix a race where debug interrupts were cleared before that write
would have happened, so a debugger (gdbserver.cc in this case) might get
the wrong idea about whether an exception happened or not.
Why wasn't this wreaking havoc before?
Andrew Waterman [Thu, 9 Jun 2016 03:04:17 +0000 (20:04 -0700)]
Add degenerate HW breakpoint implementation
Tim Newsome [Fri, 3 Jun 2016 22:07:04 +0000 (15:07 -0700)]
Keep DCSR_XDEBUGVER unsigned.
neuschaefer [Fri, 3 Jun 2016 20:45:05 +0000 (22:45 +0200)]
Minor usability improvements (#48)
* spike_main/disasm.cc: Print unknown CSR numbers in hex
* interactive mode: Print "Unknown command" when appropriate
Tim Newsome [Fri, 3 Jun 2016 20:08:09 +0000 (13:08 -0700)]
DCSR cause was moved, bug debug ROM wasn't updated
As a result Debug ROM would always take the spontaneous halt code path.
This didn't hurt spike since (so far?) the spike debug handler doesn't
attempt to do anything quick while code is running. But now the ROM is
more correct.
Tim Newsome [Thu, 2 Jun 2016 18:01:37 +0000 (11:01 -0700)]
Fix 'make check' when run from build directory.
Andrew Waterman [Wed, 1 Jun 2016 20:54:46 +0000 (13:54 -0700)]
Fix build when not building inside root directory
Andrew Waterman [Wed, 1 Jun 2016 20:54:38 +0000 (13:54 -0700)]
Add gitignore
Tim Newsome [Wed, 1 Jun 2016 15:39:31 +0000 (08:39 -0700)]
Move sethaltnot and cleardebint.
Now it matches Krste's memory map.
Tim Newsome [Tue, 24 May 2016 21:37:23 +0000 (14:37 -0700)]
New encoding.h for new CSR addresses.
Tim Newsome [Tue, 24 May 2016 16:39:44 +0000 (09:39 -0700)]
Move cleardebint, per spec.
Tim Newsome [Mon, 23 May 2016 23:24:59 +0000 (16:24 -0700)]
Use .word for mret, for now.
The current assembler doesn't seem to know it?
Tim Newsome [Mon, 23 May 2016 23:17:28 +0000 (16:17 -0700)]
Change DCSR bits to match spec.
Cleaned up debug ROM code a little.
Tim Newsome [Mon, 23 May 2016 19:16:20 +0000 (12:16 -0700)]
Kill spike as soon as the test is done with it.
Tim Newsome [Sun, 22 May 2016 04:22:22 +0000 (21:22 -0700)]
Link standalone programs at 0x80010000.
This leaves some memory for pk, where it keeps tohost/fromhost which we
cannot just write to.
Tim Newsome [Wed, 11 May 2016 22:13:57 +0000 (15:13 -0700)]
Turn off debugging.
All the printfs would be pretty annoying if you're actually using this
to debug something.
Also fixed a small jump bug in halt.
Tim Newsome [Wed, 11 May 2016 02:29:17 +0000 (19:29 -0700)]
Tell gdb we can handle large packets.
This speeds up downloads to 93KB/s, which is starting to get usable.
Tim Newsome [Tue, 10 May 2016 20:53:16 +0000 (13:53 -0700)]
Fix writing odd numbers of bytes to odd addresses.
Tim Newsome [Tue, 10 May 2016 20:22:31 +0000 (13:22 -0700)]
Exceptions in Debug Mode don't update any regs.
Tim Newsome [Tue, 10 May 2016 18:36:33 +0000 (11:36 -0700)]
Ignore MPRV in Debug Mode.
Tim Newsome [Tue, 10 May 2016 17:03:28 +0000 (10:03 -0700)]
Write test for downloading a mostly random program
It passes, but it's slow.
Tim Newsome [Mon, 9 May 2016 21:43:12 +0000 (14:43 -0700)]
Remove already-implemented TODO.
Tim Newsome [Mon, 9 May 2016 21:38:06 +0000 (14:38 -0700)]
Move debug rom link map to the right place.
Turns out this doesn't actually matter, but it's better to be correct.
Tim Newsome [Mon, 9 May 2016 20:48:20 +0000 (13:48 -0700)]
Remove obsolete TODO.
Tim Newsome [Mon, 9 May 2016 20:47:44 +0000 (13:47 -0700)]
Implement ebreak[mhsu].
Tim Newsome [Mon, 9 May 2016 20:08:41 +0000 (13:08 -0700)]
Remove dependency on include file in my homedir.
Tim Newsome [Mon, 9 May 2016 16:41:01 +0000 (09:41 -0700)]
Force gdb to not print entry values.
All of a sudden gdb decided to start printing them, which messed up the
breakpoint test. It would only print them in the test, not if I manually
ran the same commands. I'm sure it's my fault somehow, but this should
keep things consistent in the future.
Tim Newsome [Sat, 7 May 2016 18:15:59 +0000 (11:15 -0700)]
mprv test now breaks like it's supposed to.
Tim Newsome [Fri, 6 May 2016 23:54:33 +0000 (16:54 -0700)]
Deal with escapes that gdb sends in binary data.
Tim Newsome [Fri, 6 May 2016 19:14:22 +0000 (12:14 -0700)]
Make -H halt the core right out of reset.
Added a test, too.
Tim Newsome [Fri, 6 May 2016 00:40:02 +0000 (17:40 -0700)]
Halt when gdb user hits ^C.
Tim Newsome [Thu, 5 May 2016 21:53:56 +0000 (14:53 -0700)]
Make sure to fence.i after setting/clearing a swbp
This doesn't change anything since Debug ROM already executes a fence.i,
but it will be more correct if that is no longer necessary.
Tim Newsome [Thu, 5 May 2016 20:45:14 +0000 (13:45 -0700)]
Implemented register writes.
All existing tests pass!
Tim Newsome [Thu, 5 May 2016 18:21:07 +0000 (11:21 -0700)]
Fix reading CSRs.
Tim Newsome [Thu, 5 May 2016 01:51:26 +0000 (18:51 -0700)]
Single step appears to work.
Tim Newsome [Wed, 4 May 2016 20:14:46 +0000 (13:14 -0700)]
Software breakpoints sort of work.
Tim Newsome [Wed, 4 May 2016 16:45:56 +0000 (09:45 -0700)]
Use fence.i in Debug ROM.
This replaces a hack that just disabled all of the icache.
Tim Newsome [Wed, 4 May 2016 16:40:20 +0000 (09:40 -0700)]
Fix off-by-two in general read registers.
Now the exit test passes!
Tim Newsome [Wed, 4 May 2016 01:53:16 +0000 (18:53 -0700)]
Walk page tables to translate addresses.
Tim Newsome [Tue, 3 May 2016 20:46:57 +0000 (13:46 -0700)]
Turn operation into a queue,
in preparation for address translation.
Tim Newsome [Tue, 3 May 2016 19:24:25 +0000 (12:24 -0700)]
Remove unused code.
Add some debug printfs, which I'll be wanting for at least a little
while.
Tim Newsome [Tue, 3 May 2016 17:55:00 +0000 (10:55 -0700)]
Save/restore mstatus, too.
Also read DCSR, which will be useful to figure out why we halted.
Tim Newsome [Tue, 3 May 2016 17:54:08 +0000 (10:54 -0700)]
Ignore more files.
Tim Newsome [Tue, 3 May 2016 17:43:27 +0000 (10:43 -0700)]
Properly read s0/s1.
Tim Newsome [Tue, 3 May 2016 01:07:51 +0000 (18:07 -0700)]
Add dret.
Tim Newsome [Mon, 2 May 2016 22:04:03 +0000 (15:04 -0700)]
Implement memory writes.
Tim Newsome [Sun, 1 May 2016 20:18:03 +0000 (13:18 -0700)]
Implement single memory read access.
Prevent unaligned accesses in memory read.
Also change how exceptions in Debug Mode are signaled.
Tim Newsome [Sun, 1 May 2016 16:53:23 +0000 (09:53 -0700)]
Properly save/restore dpc, mcause, mbadaddr.
Also clear dcsr.cause when leaving Debug Mode so future traps go where
they should.
Tim Newsome [Sat, 30 Apr 2016 22:24:38 +0000 (15:24 -0700)]
Exceptions in Debug Mode, stay in Debug Mode.
Now things don't blow up when reading a non-existent CSR.
Tim Newsome [Sun, 1 May 2016 19:26:29 +0000 (12:26 -0700)]
Remove debug printfs.
Tim Newsome [Sun, 1 May 2016 19:05:48 +0000 (12:05 -0700)]
Have Debug memory kind of working again.
Debug exception -> ROM -> RAM -> ROM, then something goes wrong.
Tim Newsome [Fri, 29 Apr 2016 20:38:59 +0000 (13:38 -0700)]
Read FP registers, and general CSRs*
*) Only works if you read CSRs that actually exist.
Tim Newsome [Fri, 29 Apr 2016 18:17:58 +0000 (11:17 -0700)]
Continue works well enough for DebugTest.test_exit
Tim Newsome [Thu, 28 Apr 2016 20:15:46 +0000 (13:15 -0700)]
Fix race using fence.
Tim Newsome [Wed, 27 Apr 2016 20:52:54 +0000 (13:52 -0700)]
Refactor how we track in-progress operations.
I think the functionality is unchanged.
Tim Newsome [Tue, 26 Apr 2016 21:32:08 +0000 (14:32 -0700)]
gdb can attach and read the PC:
(gdb) target remote localhost:1234
Remote debugging using localhost:1234
0x0000000000010178 in fib (n=0) at waste.c:1
1 unsigned int fib(unsigned int n) {
(gdb)
Tim Newsome [Tue, 26 Apr 2016 19:12:57 +0000 (12:12 -0700)]
processor_t unfriends gdbserver_t.
Tim Newsome [Tue, 26 Apr 2016 17:22:02 +0000 (10:22 -0700)]
Correctly read PC on halt.
Tim Newsome [Tue, 26 Apr 2016 15:29:17 +0000 (08:29 -0700)]
Fix store to clear debug interrupt.
Tim Newsome [Sun, 24 Apr 2016 15:54:19 +0000 (08:54 -0700)]
Add debug_module bus device.
This should replace the ROM hack I implemented earlier, but for now both
exist together.
Back to the point where gdb connects, core jumps to ROM->RAM->ROM.
Tim Newsome [Sat, 23 Apr 2016 18:09:07 +0000 (11:09 -0700)]
ROM -> RAM -> ROM, waiting for debug int.
Tim Newsome [Sat, 23 Apr 2016 17:40:23 +0000 (10:40 -0700)]
Make sure to translate Debug RAM addresses also.
Tim Newsome [Sat, 23 Apr 2016 17:25:57 +0000 (10:25 -0700)]
Jump to the correct (temporary) Debug RAM address.
Tim Newsome [Sat, 23 Apr 2016 17:18:05 +0000 (10:18 -0700)]
Clean up how Debug ROM is included.
I'm not thrilled about including a static copy in so many cc files, and
making the compiler throw it out. But without really grokking the
Makefile this is the best it's going to be.
Tim Newsome [Sat, 23 Apr 2016 03:11:29 +0000 (20:11 -0700)]
Can jump to and execute Debug ROM.
Connect with gdb, and the core will jump to Debug ROM and start
executing it. Then it crashes when it jumps to 0x400 because Debug RAM
isn't implemented (and doesn't live there anyway, for now).
Tim Newsome [Fri, 22 Apr 2016 22:11:26 +0000 (15:11 -0700)]
Check in compiled debug ROM.
Not everybody will have a cross-compiled toolchain set up when they
build spike.
Tim Newsome [Fri, 22 Apr 2016 22:10:23 +0000 (15:10 -0700)]
When gdb connects, jump to Debug ROM and segfault.
Tim Newsome [Fri, 22 Apr 2016 22:08:35 +0000 (15:08 -0700)]
Add debug rom code.
Tim Newsome [Fri, 22 Apr 2016 19:09:59 +0000 (12:09 -0700)]
Gutting direct-access gdb.
Tim Newsome [Thu, 21 Apr 2016 22:53:46 +0000 (15:53 -0700)]
Add writing to DCSR, DPC, DSCRATCH.
Make those 3 CSRs writable.
Tim Newsome [Wed, 30 Mar 2016 17:43:45 +0000 (10:43 -0700)]
Actually run the ebreak test.
Tim Newsome [Thu, 24 Mar 2016 00:42:17 +0000 (17:42 -0700)]
Only halt on ebreak if a debugger is attached.
Tim Newsome [Wed, 23 Mar 2016 23:14:50 +0000 (16:14 -0700)]
Test ebreak without gdb.
Currently this test fails.
Tim Newsome [Sat, 19 Mar 2016 20:39:41 +0000 (13:39 -0700)]
Document attaching with gdb.
Tim Newsome [Sat, 19 Mar 2016 20:33:58 +0000 (13:33 -0700)]
Add --gdb-port
It's necessary to be able to run multiple spikes at once on the same
box.
Tim Newsome [Thu, 17 Mar 2016 19:51:58 +0000 (12:51 -0700)]
Do a better job checking CSR functionality.
Tim Newsome [Wed, 16 Mar 2016 18:07:50 +0000 (11:07 -0700)]
Rename gdbserver-smoke.py to gdbserver.py.
It's not really a smoketest anymore.
Tim Newsome [Wed, 16 Mar 2016 18:02:52 +0000 (11:02 -0700)]
Test 'info registers all' as well as 'info all-registers'
Tim Newsome [Tue, 15 Mar 2016 23:15:53 +0000 (16:15 -0700)]
Minor cleanup.
Tim Newsome [Tue, 15 Mar 2016 20:50:17 +0000 (13:50 -0700)]
Update regnum handling to match gdb CSR changes.
Tim Newsome [Mon, 14 Mar 2016 20:39:47 +0000 (13:39 -0700)]
Forgot to add this source.
Tim Newsome [Mon, 14 Mar 2016 20:29:53 +0000 (13:29 -0700)]
Treat warnings as errors.
The code compiles cleanly right now. Let's keep it that way.
Tim Newsome [Mon, 14 Mar 2016 18:54:29 +0000 (11:54 -0700)]
Implement register writes.
Tim Newsome [Sun, 13 Mar 2016 23:23:59 +0000 (16:23 -0700)]
Properly clean up spike.
Tim Newsome [Sun, 13 Mar 2016 22:39:08 +0000 (15:39 -0700)]
Implement reading of CSRs.
Tim Newsome [Sun, 13 Mar 2016 20:13:15 +0000 (13:13 -0700)]
Add some tests that pass and test something.
Tim Newsome [Sun, 13 Mar 2016 01:50:32 +0000 (17:50 -0800)]
Flush icache when using swbps and report to gdb.
Tim Newsome [Fri, 11 Mar 2016 02:14:31 +0000 (18:14 -0800)]
Add very basic 'make check'.
The existing stuff all assumes you're writing your tests in C++.
Tim Newsome [Fri, 11 Mar 2016 01:57:23 +0000 (17:57 -0800)]
Make 'make check' not hang forever.
Tim Newsome [Thu, 10 Mar 2016 20:29:29 +0000 (12:29 -0800)]
Software breakpoints seem to work.
Tim Newsome [Thu, 10 Mar 2016 18:04:04 +0000 (10:04 -0800)]
Rewrite GPL'd code from OpenOCD.
Tim Newsome [Thu, 10 Mar 2016 02:48:20 +0000 (18:48 -0800)]
Looks like single step works.
Tim Newsome [Thu, 10 Mar 2016 01:16:26 +0000 (17:16 -0800)]
Add -H to start halted.
Tim Newsome [Wed, 9 Mar 2016 18:31:51 +0000 (10:31 -0800)]
Implement binary memory write.
Also set the simulation running again when gdb disconnects.
Tim Newsome [Wed, 9 Mar 2016 05:56:31 +0000 (21:56 -0800)]
Now you can halt/continue from gdb.
Tim Newsome [Wed, 9 Mar 2016 05:13:55 +0000 (21:13 -0800)]
Register read looks sane now.
Tim Newsome [Mon, 7 Mar 2016 23:44:20 +0000 (15:44 -0800)]
gdb can now read spike memory.
The endianness is wrong, but I think it might be that gdb doesn't have
it right. Need to investigate what architecture gdb thinks it's
debugging.
Tim Newsome [Mon, 7 Mar 2016 04:59:26 +0000 (20:59 -0800)]
Hack to the point where gdb reads a register.
Tim Newsome [Sun, 6 Mar 2016 01:35:06 +0000 (17:35 -0800)]
Listen on a socket for gdb to connect to.
So far it just listens, and gdb times out because it's not getting any
messages back.
Receive packets and verify their checksum.