Scott Beamer [Mon, 13 Jul 2015 23:17:13 +0000 (16:17 -0700)]
simplified default case and added comments
Andrew Waterman [Sat, 11 Jul 2015 03:16:34 +0000 (22:16 -0500)]
Merge pull request #27 from sbeamer/master
fix clang compile error
Scott Beamer [Sat, 11 Jul 2015 02:38:22 +0000 (19:38 -0700)]
fix clang compile error
Andrew Waterman [Sun, 5 Jul 2015 23:47:20 +0000 (16:47 -0700)]
New machine-mode timer facility
Andrew Waterman [Sat, 6 Jun 2015 02:00:16 +0000 (19:00 -0700)]
Merge pull request #25 from vapier/master
few more interactive cleanups and more functionality
Mike Frysinger [Fri, 5 Jun 2015 13:17:19 +0000 (21:17 +0800)]
allow interactive "reg" command to dump all registers
It you want to scan all the registers at once (or at least a few), having
to dump them one by one is kind of a pain. Change the behavior so that if
the register number is omitted, it'll dump all of them.
Mike Frysinger [Fri, 5 Jun 2015 13:13:04 +0000 (21:13 +0800)]
add an interactive "pc" command
This lets you show the current pc quickly. Sometimes when displaying
different state you can lose track of what the pc was. Add a simple
command that plumbs in the existing functions to the user interface.
Mike Frysinger [Fri, 5 Jun 2015 13:06:52 +0000 (21:06 +0800)]
unify interactive core processing
Different functions in here process the core argument in different ways.
Unify all of them with a utility function.
Andrew Waterman [Thu, 4 Jun 2015 23:06:47 +0000 (16:06 -0700)]
Merge pull request #24 from vapier/master
improve interactive behavior a bit more
Mike Frysinger [Thu, 4 Jun 2015 16:04:52 +0000 (00:04 +0800)]
add aliases for common interactive functions
Rather than using one letter commands everywhere, add support for "run"
and "quit" and "help" as aliases to "r" and "q" and "h" respectively.
This makes it a little inconsistent when some commands are one letters
but others are full words.
Mike Frysinger [Thu, 4 Jun 2015 15:59:00 +0000 (23:59 +0800)]
add a help screen to interactive mode
There's no documentation that covers all the available functionality
(in source or the accompanied docs). Start a help command so that the
info is always live and up-to-date for people.
Andrew Waterman [Wed, 3 Jun 2015 21:00:07 +0000 (14:00 -0700)]
Merge pull request #23 from vapier/master
move interactive function init out of main loop
Mike Frysinger [Wed, 3 Jun 2015 13:24:48 +0000 (21:24 +0800)]
move interactive function init out of main loop
These values don't change between runs, so there's no point in recreating
them on every instruction step. Pull it out to the top to simplify.
Andrew Waterman [Mon, 1 Jun 2015 01:28:53 +0000 (18:28 -0700)]
Use single, shared real-time counter
This required disentangling INSTRET/CYCLE from TIME.
Andrew Waterman [Mon, 1 Jun 2015 01:10:20 +0000 (18:10 -0700)]
Execute exactly the # of insns passed to step()
Previously, the value was treated as approximate.
Andrew Waterman [Sun, 31 May 2015 23:38:24 +0000 (16:38 -0700)]
Add rest of RV32C instructions
Andrew Waterman [Sun, 31 May 2015 22:47:11 +0000 (15:47 -0700)]
Fix performance bug when CSR accesses are common
processor_t::step was returning without doing much work, causing the HTIF
to be ticked far more often than necessary.
Andrew Waterman [Thu, 21 May 2015 18:55:52 +0000 (11:55 -0700)]
Fix c.slliw implementation
Andrew Waterman [Thu, 21 May 2015 07:21:46 +0000 (00:21 -0700)]
New RV64C proposal
Andrew Waterman [Wed, 20 May 2015 20:49:01 +0000 (13:49 -0700)]
Take interrupts as soon as interrupts are enabled
Previously, if interrupts were enabled then disabled quickly enough,
no interrupt would ever be taken, resulting in deadlock.
Andrew Waterman [Fri, 15 May 2015 00:35:18 +0000 (17:35 -0700)]
Merge pull request #20 from palmer-dabbelt/package
various fixes to make riscv-isa-sim installable
Andrew Waterman [Mon, 11 May 2015 21:21:03 +0000 (14:21 -0700)]
Fix VM, MIP encoding
Palmer Dabbelt [Wed, 13 May 2015 22:36:57 +0000 (15:36 -0700)]
Install "disasm.h"
Something includes this somewhere, so I see no reason not to just
install it.
Palmer Dabbelt [Wed, 13 May 2015 22:36:45 +0000 (15:36 -0700)]
autoreconf
126beb482ff6 ("Install pkg-config files for Spike")
Palmer Dabbelt [Wed, 13 May 2015 21:54:24 +0000 (14:54 -0700)]
Install pkg-config files for Spike
The actual Spike package consists of a whole bunch of libraries. This
installs a pkg-config file for each generated library, and a meta
pkg-config file (riscv-spike.pc) that links in all the other Spike
libraries except dummy_rocc (which I figure isn't interesting).
This allows me to package and install spike, and then use that package
to build an extension library (so I don't have to fork Spike for my
own ISA extension).
Palmer Dabbelt [Wed, 13 May 2015 21:52:19 +0000 (14:52 -0700)]
Change the behavior of the DESTDIR make variable
DESTDIR is a common make idiom. As per the GNU coding standards
https://www.gnu.org/prep/standards/html_node/DESTDIR.html
"DESTDIR is a variable prepended to each installed target file, like
this:
$(INSTALL_PROGRAM) foo $(DESTDIR)$(bindir)/foo
$(INSTALL_DATA) libfoo.a $(DESTDIR)$(libdir)/libfoo.a
The DESTDIR variable is specified by the user on the make command
line as an absolute file name. For example:
make DESTDIR=/tmp/stage install
DESTDIR should be supported only in the install* and uninstall*
targets, as those are the only targets where it is useful.
If your installation step would normally install /usr/local/bin/foo
and /usr/local/lib/libfoo.a, then an installation invoked as in the
example above would install /tmp/stage/usr/local/bin/foo and
/tmp/stage/usr/local/lib/libfoo.a instead."
The current Makefile.in uses DESTDIR, but has a slightly non-standard
behavior: the target install location doesn't include "$prefix". This
breaks package managers, because stuff ends up getting installed to
the wrong location.
Unfortunately the only way I can think of to fix this involves
silently changing the behavior of DESTDIR. Hopefully nobody is using
it...?
[port of
8a2088b59162fe16c16d26ddc1cfcaaaa8c4156f in riscv-fesvr]
Andrew Waterman [Sat, 9 May 2015 23:12:07 +0000 (16:12 -0700)]
Upgrade to privileged architecture 1.7
Andrew Waterman [Thu, 30 Apr 2015 21:31:25 +0000 (14:31 -0700)]
Fix commit log for CSR instructions
Andrew Waterman [Sun, 26 Apr 2015 00:51:23 +0000 (17:51 -0700)]
Fix I$ simulator hit count
Also, improve performance by allowing the soft-ITLB to refill.
Andrew Waterman [Tue, 14 Apr 2015 22:46:30 +0000 (15:46 -0700)]
Merge pull request #18 from wsong83/master
fix cache line index offset in cachesim.cc
Wei Song [Mon, 13 Apr 2015 15:35:13 +0000 (16:35 +0100)]
fix cache line index offset in cachesim.cc
Andrew Waterman [Thu, 9 Apr 2015 18:25:07 +0000 (11:25 -0700)]
Fix autoconf for RHEL6
Andrew Waterman [Sat, 4 Apr 2015 22:17:13 +0000 (15:17 -0700)]
Check for F extension when accessing FCSR
Andrew Waterman [Sat, 4 Apr 2015 04:53:22 +0000 (21:53 -0700)]
Support setting ISA/subsets with --isa flag
Default is RV64IMAFDC. Can do things like
--isa=RV32 (which implies IMAFDC)
--isa=IM (which implies RV64)
--isa=RV64IMAFDXhwacha
Andrew Waterman [Thu, 2 Apr 2015 21:23:30 +0000 (14:23 -0700)]
Simplify RV32 comparisons
No need to eliminate the upper 32 bits of the 64-bit x-register, as all
RV32 instructions should sign-extend their results to 64 bits.
Andrew Waterman [Tue, 31 Mar 2015 23:07:56 +0000 (16:07 -0700)]
Allow writing mstatus.fs even if FPU isn't present
This allows the OS to track FP state dirtiness.
Andrew Waterman [Tue, 31 Mar 2015 03:28:55 +0000 (20:28 -0700)]
Implement RVC draft
Andrew Waterman [Thu, 26 Mar 2015 07:28:10 +0000 (00:28 -0700)]
Serialize counters without throwing C++ exceptions
Ideally, a similar mechanism will apply to target machine exceptions.
Andrew Waterman [Tue, 24 Mar 2015 22:29:43 +0000 (15:29 -0700)]
New virtual memory implementation (Sv39)
Andrew Waterman [Thu, 26 Mar 2015 06:01:54 +0000 (23:01 -0700)]
Update state.pc on every instruction
This isn't a bug fix for Spike proper, but it makes it possible for
RoCC instructions to access the control thread's PC.
Andrew Waterman [Sat, 21 Mar 2015 06:11:49 +0000 (23:11 -0700)]
For misaligned fetch, set mepc = addr of branch/jump
Yunsup Lee [Tue, 17 Mar 2015 11:33:17 +0000 (04:33 -0700)]
bugfix, mbadaddr should be writable
Yunsup Lee [Tue, 17 Mar 2015 11:32:53 +0000 (04:32 -0700)]
change hwacha cause to follow risc-v cause
Andrew Waterman [Tue, 17 Mar 2015 08:19:40 +0000 (01:19 -0700)]
Merge [shm]call into ecall, [shm]ret into eret
Yunsup Lee [Mon, 16 Mar 2015 09:01:26 +0000 (02:01 -0700)]
bugfix in raising accelerator interrupts
Yunsup Lee [Mon, 16 Mar 2015 08:59:55 +0000 (01:59 -0700)]
vxcptsave->vxcptevac,vxcptrestore->vxcpthold
this change was necessary since the impl csr is gone.
Andrew Waterman [Mon, 16 Mar 2015 03:41:24 +0000 (20:41 -0700)]
Delete all remaining junk on "make clean"
Andrew Waterman [Sat, 14 Mar 2015 09:05:15 +0000 (02:05 -0700)]
Don't set dirty/referenced bits w/o permission
Andrew Waterman [Fri, 13 Mar 2015 06:06:40 +0000 (23:06 -0700)]
Use hcall instead of mcall
Andrew Waterman [Fri, 13 Mar 2015 03:00:09 +0000 (20:00 -0700)]
Implement PTE referenced/dirty bits
Andrew Waterman [Fri, 13 Mar 2015 00:32:43 +0000 (17:32 -0700)]
Update to new privileged spec
Sorry, everyone.
Yunsup Lee [Thu, 12 Mar 2015 17:59:09 +0000 (10:59 -0700)]
correctly parse extension for spike-disasm
Andrew Waterman [Tue, 24 Feb 2015 02:35:14 +0000 (18:35 -0800)]
Softfloat fcvt.{w/l}.d now returns -MaxInt for -NaN
Andrew Waterman [Mon, 23 Feb 2015 03:27:37 +0000 (19:27 -0800)]
Softfloat fcvt.{w/h}.s now returns -MaxInt for -NaN
Behavior now consistent with RISC-V user spec.
Andrew Waterman [Sun, 15 Feb 2015 00:38:48 +0000 (16:38 -0800)]
handle Makefile dependences for precompiled headers correctly
Andrew Waterman [Tue, 10 Feb 2015 01:42:19 +0000 (17:42 -0800)]
Install config.h with other headers
Andrew Waterman [Sun, 8 Feb 2015 08:13:48 +0000 (00:13 -0800)]
Use xlen, not xprlen, to refer to x-register width
Andrew Waterman [Thu, 29 Jan 2015 20:49:30 +0000 (12:49 -0800)]
properly sign-extend instructions in spike-dasm
Christopher Celio [Tue, 27 Jan 2015 08:32:57 +0000 (00:32 -0800)]
Fixed masking/casting logic in commit log printf.
Andrew Waterman [Mon, 26 Jan 2015 22:01:39 +0000 (14:01 -0800)]
Fix commit log
I screwed up some stuff in a recent refactoring.
Andrew Waterman [Sat, 10 Jan 2015 01:41:59 +0000 (17:41 -0800)]
Don't look for a simulator when cross compiling
Andrew Waterman [Sat, 10 Jan 2015 01:41:43 +0000 (17:41 -0800)]
Use PATH_MAX instead of NAME_MAX
Stephen Twigg [Fri, 9 Jan 2015 23:56:28 +0000 (15:56 -0800)]
Fix bug where C compiler used instead of C++ for autoconf tests
Andrew Waterman [Mon, 5 Jan 2015 03:40:13 +0000 (19:40 -0800)]
canonicalize assembler pseudo-ops
Andrew Waterman [Mon, 5 Jan 2015 01:31:11 +0000 (17:31 -0800)]
Rename riscv-dis to spike-dasm
This is a better name, since it looks for the string DASM(xxx), and it
fixes tab completion for the cross compiler.
Andrew Waterman [Mon, 5 Jan 2015 01:30:40 +0000 (17:30 -0800)]
Disassemble jalr x0, x1, 0 as ret
Andrew Waterman [Sat, 3 Jan 2015 07:17:44 +0000 (23:17 -0800)]
Require 4-byte instruction alignment until RVC is reimplemented
Andrew Waterman [Sat, 3 Jan 2015 01:29:05 +0000 (17:29 -0800)]
On misaligned fetch, set EPC to target, not branch itself
Andrew Waterman [Fri, 2 Jan 2015 23:09:04 +0000 (15:09 -0800)]
Reduce dependences on auto-generated code
In particular, precompiled headers ideally won't depend on any.
Palmer Dabbelt [Tue, 30 Dec 2014 21:24:51 +0000 (13:24 -0800)]
Merge branch 'netbsd-autoconf'
This contains some changes that fix the build on NetBSD.
Palmer Dabbelt [Mon, 29 Dec 2014 21:07:13 +0000 (13:07 -0800)]
Reinoud Zandijk [Mon, 29 Dec 2014 21:06:09 +0000 (13:06 -0800)]
Allow Spike to build on NetBSD
Under NetBSD, dlopen() is in libc so no extra libs are needed.
Andrew Waterman [Sat, 20 Dec 2014 21:37:14 +0000 (13:37 -0800)]
Support building from within root directory
Andrew Waterman [Sat, 20 Dec 2014 21:26:48 +0000 (13:26 -0800)]
Fix makefile race condition
Andrew Waterman [Fri, 12 Dec 2014 00:52:56 +0000 (16:52 -0800)]
Merge pull request #11 from arunthomas/readme
README: use gnu-toolchain
Arun Thomas [Thu, 11 Dec 2014 16:20:22 +0000 (11:20 -0500)]
README: use gnu-toolchain
Andrew Waterman [Fri, 5 Dec 2014 09:08:27 +0000 (01:08 -0800)]
zero-extend 32b instructions for vxcptaux
Andrew Waterman [Fri, 5 Dec 2014 07:10:33 +0000 (23:10 -0800)]
Support 2/4/6/8-byte instructions
Most of the complexity is in instruction address translation, since
instructions may span page boundaries.
Andrew Waterman [Fri, 5 Dec 2014 07:08:01 +0000 (23:08 -0800)]
Set badvaddr on instruction page faults
This supports distinguishing the EPC (the address of the first byte of the
faulting instruction) from the address of the page fault (potentially some
bytes later).
Andrew Waterman [Wed, 3 Dec 2014 23:26:55 +0000 (15:26 -0800)]
Update register names to match new ABI
Andrew Waterman [Mon, 1 Dec 2014 06:56:02 +0000 (22:56 -0800)]
Implement timer faithfully
rdcycle/rdinstret now have single-instruction granularity. Questionable
behavior when timer interrupts occurred around the same time as the compare
register is written should be fixed.
Andrew Waterman [Tue, 25 Nov 2014 21:39:53 +0000 (13:39 -0800)]
Factor out the dummy RoCC accelerator
Yunsup Lee [Sat, 22 Nov 2014 16:58:20 +0000 (08:58 -0800)]
Revert "Enable support for the four custom instructions"
This reverts commit
fd18dc43f64d1938144f6c883ba4a2ca247611c6.
Refactoring support for custom instructions.
Andrew Waterman [Thu, 20 Nov 2014 02:08:17 +0000 (18:08 -0800)]
Suppress harmless warnings
specifically, unused variables in auto-generated code.
Andrew Waterman [Thu, 20 Nov 2014 02:07:53 +0000 (18:07 -0800)]
Add missing makefile dependence
This manifested as a spurious compile warning when using make -j.
Andrew Waterman [Fri, 7 Nov 2014 22:52:44 +0000 (14:52 -0800)]
Merge pull request #8 from arunthomas/dummy_rocc_test
dummy-rocc-test build fix
Arun Thomas [Thu, 30 Oct 2014 14:20:08 +0000 (10:20 -0400)]
dummy-rocc-test build fix
Yunsup Lee [Fri, 24 Oct 2014 16:54:28 +0000 (09:54 -0700)]
Merge pull request #4 from arunthomas/custom_inst
Enable support for the four custom instructions
Arun Thomas [Thu, 23 Oct 2014 20:49:28 +0000 (16:49 -0400)]
Enable support for the four custom instructions
* Update generated encoding.h (generated from riscv-opcodes)
* Add empty implementations for the custom instructions
Andrew Waterman [Sat, 27 Sep 2014 18:18:15 +0000 (11:18 -0700)]
Avoid some unused variable warnings
...and also save some space by not defining the register names in a header.
Andrew Waterman [Sat, 27 Sep 2014 18:01:22 +0000 (11:01 -0700)]
Avoid use of __int128_t
It is nonstandard, and GCC doesn't support it on 32-bit platforms. The
resulting code for MULH[[S]U] is crappier, but that doesn't really matter,
as these instructions are dynamically infrequent.
Scott Beamer [Sun, 21 Sep 2014 19:20:57 +0000 (12:20 -0700)]
Merge pull request #2 from arunthomas/build_fix
Update riscv.ac to set CPPFLAGS with fesvr include path
Arun Thomas [Sun, 21 Sep 2014 01:35:11 +0000 (21:35 -0400)]
Update riscv.ac to set CPPFLAGS with fesvr include path
Need to set CPPFLAGS in riscv.ac in addition to configure
Scott Beamer [Sun, 14 Sep 2014 16:10:28 +0000 (09:10 -0700)]
now can build with clang
on os x, clang needs different flags than gcc to generate and use precompiled headers
Jim Lawson [Thu, 28 Aug 2014 22:22:05 +0000 (15:22 -0700)]
Update configure to set CPPFLAGS instead of CFLAGS with fesvr include path.
Since we no longer are duplicating CFLAGS, ensure CPPFLAGS are set
correctly.
Scott Beamer [Thu, 28 Aug 2014 04:27:30 +0000 (21:27 -0700)]
don't include same flags twice
Scott Beamer [Tue, 26 Aug 2014 01:23:47 +0000 (18:23 -0700)]
clean up warnings from clang
Christopher Celio [Fri, 15 Aug 2014 22:38:41 +0000 (15:38 -0700)]
Added PC histogram option.
- Spits out all PCs (on 4B granularity) executed with count.
- Requires a compile time configuration option.
- Also requires a run-time flag.
Andrew Waterman [Fri, 8 Aug 2014 00:27:13 +0000 (17:27 -0700)]
Support uarch counters (degenerately)
Scott Beamer [Thu, 7 Aug 2014 17:41:12 +0000 (10:41 -0700)]
fix typo in README