riscv-isa-sim.git
9 years agoTake interrupts as soon as interrupts are enabled
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.

9 years agoMerge pull request #20 from palmer-dabbelt/package
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

9 years agoFix VM, MIP encoding
Andrew Waterman [Mon, 11 May 2015 21:21:03 +0000 (14:21 -0700)]
Fix VM, MIP encoding

9 years agoInstall "disasm.h"
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.

9 years agoautoreconf 126beb482ff6 ("Install pkg-config files for Spike")
Palmer Dabbelt [Wed, 13 May 2015 22:36:45 +0000 (15:36 -0700)]
autoreconf 126beb482ff6 ("Install pkg-config files for Spike")

9 years agoInstall 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).

9 years agoChange the behavior of the DESTDIR make variable
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]

9 years agoUpgrade to privileged architecture 1.7
Andrew Waterman [Sat, 9 May 2015 23:12:07 +0000 (16:12 -0700)]
Upgrade to privileged architecture 1.7

9 years agoFix commit log for CSR instructions
Andrew Waterman [Thu, 30 Apr 2015 21:31:25 +0000 (14:31 -0700)]
Fix commit log for CSR instructions

9 years agoFix I$ simulator hit count
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.

9 years agoMerge pull request #18 from wsong83/master
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

9 years agofix 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

9 years agoFix autoconf for RHEL6
Andrew Waterman [Thu, 9 Apr 2015 18:25:07 +0000 (11:25 -0700)]
Fix autoconf for RHEL6

9 years agoCheck for F extension when accessing FCSR
Andrew Waterman [Sat, 4 Apr 2015 22:17:13 +0000 (15:17 -0700)]
Check for F extension when accessing FCSR

9 years agoSupport setting ISA/subsets with --isa flag
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

9 years agoSimplify RV32 comparisons
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.

9 years agoAllow writing mstatus.fs even if FPU isn't present
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.

9 years agoImplement RVC draft
Andrew Waterman [Tue, 31 Mar 2015 03:28:55 +0000 (20:28 -0700)]
Implement RVC draft

9 years agoSerialize counters without throwing C++ exceptions
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.

9 years agoNew virtual memory implementation (Sv39)
Andrew Waterman [Tue, 24 Mar 2015 22:29:43 +0000 (15:29 -0700)]
New virtual memory implementation (Sv39)

9 years agoUpdate state.pc on every instruction
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.

9 years agoFor misaligned fetch, set mepc = addr of branch/jump
Andrew Waterman [Sat, 21 Mar 2015 06:11:49 +0000 (23:11 -0700)]
For misaligned fetch, set mepc = addr of branch/jump

9 years agobugfix, mbadaddr should be writable
Yunsup Lee [Tue, 17 Mar 2015 11:33:17 +0000 (04:33 -0700)]
bugfix, mbadaddr should be writable

9 years agochange hwacha cause to follow risc-v cause
Yunsup Lee [Tue, 17 Mar 2015 11:32:53 +0000 (04:32 -0700)]
change hwacha cause to follow risc-v cause

9 years agoMerge [shm]call into ecall, [shm]ret into eret
Andrew Waterman [Tue, 17 Mar 2015 08:19:40 +0000 (01:19 -0700)]
Merge [shm]call into ecall, [shm]ret into eret

9 years agobugfix in raising accelerator interrupts
Yunsup Lee [Mon, 16 Mar 2015 09:01:26 +0000 (02:01 -0700)]
bugfix in raising accelerator interrupts

9 years agovxcptsave->vxcptevac,vxcptrestore->vxcpthold
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.

9 years agoDelete all remaining junk on "make clean"
Andrew Waterman [Mon, 16 Mar 2015 03:41:24 +0000 (20:41 -0700)]
Delete all remaining junk on "make clean"

9 years agoDon't set dirty/referenced bits w/o permission
Andrew Waterman [Sat, 14 Mar 2015 09:05:15 +0000 (02:05 -0700)]
Don't set dirty/referenced bits w/o permission

9 years agoUse hcall instead of mcall
Andrew Waterman [Fri, 13 Mar 2015 06:06:40 +0000 (23:06 -0700)]
Use hcall instead of mcall

9 years agoImplement PTE referenced/dirty bits
Andrew Waterman [Fri, 13 Mar 2015 03:00:09 +0000 (20:00 -0700)]
Implement PTE referenced/dirty bits

9 years agoUpdate to new privileged spec
Andrew Waterman [Fri, 13 Mar 2015 00:32:43 +0000 (17:32 -0700)]
Update to new privileged spec

Sorry, everyone.

9 years agocorrectly parse extension for spike-disasm
Yunsup Lee [Thu, 12 Mar 2015 17:59:09 +0000 (10:59 -0700)]
correctly parse extension for spike-disasm

9 years agoSoftfloat fcvt.{w/l}.d now returns -MaxInt for -NaN
Andrew Waterman [Tue, 24 Feb 2015 02:35:14 +0000 (18:35 -0800)]
Softfloat fcvt.{w/l}.d now returns -MaxInt for -NaN

9 years agoSoftfloat fcvt.{w/h}.s 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.

9 years agohandle Makefile dependences for precompiled headers correctly
Andrew Waterman [Sun, 15 Feb 2015 00:38:48 +0000 (16:38 -0800)]
handle Makefile dependences for precompiled headers correctly

9 years agoInstall config.h with other headers
Andrew Waterman [Tue, 10 Feb 2015 01:42:19 +0000 (17:42 -0800)]
Install config.h with other headers

9 years agoUse xlen, not xprlen, to refer to x-register width
Andrew Waterman [Sun, 8 Feb 2015 08:13:48 +0000 (00:13 -0800)]
Use xlen, not xprlen, to refer to x-register width

9 years agoproperly sign-extend instructions in spike-dasm
Andrew Waterman [Thu, 29 Jan 2015 20:49:30 +0000 (12:49 -0800)]
properly sign-extend instructions in spike-dasm

9 years agoFixed masking/casting logic in commit log printf.
Christopher Celio [Tue, 27 Jan 2015 08:32:57 +0000 (00:32 -0800)]
Fixed masking/casting logic in commit log printf.

9 years agoFix commit log
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.

9 years agoDon't look for a simulator when cross compiling
Andrew Waterman [Sat, 10 Jan 2015 01:41:59 +0000 (17:41 -0800)]
Don't look for a simulator when cross compiling

9 years agoUse PATH_MAX instead of NAME_MAX
Andrew Waterman [Sat, 10 Jan 2015 01:41:43 +0000 (17:41 -0800)]
Use PATH_MAX instead of NAME_MAX

9 years agoFix bug where C compiler used instead of C++ for autoconf tests
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

9 years agocanonicalize assembler pseudo-ops
Andrew Waterman [Mon, 5 Jan 2015 03:40:13 +0000 (19:40 -0800)]
canonicalize assembler pseudo-ops

9 years agoRename riscv-dis to spike-dasm
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.

9 years agoDisassemble jalr x0, x1, 0 as ret
Andrew Waterman [Mon, 5 Jan 2015 01:30:40 +0000 (17:30 -0800)]
Disassemble jalr x0, x1, 0 as ret

9 years agoRequire 4-byte instruction alignment until RVC is reimplemented
Andrew Waterman [Sat, 3 Jan 2015 07:17:44 +0000 (23:17 -0800)]
Require 4-byte instruction alignment until RVC is reimplemented

9 years agoOn misaligned fetch, set EPC to target, not branch itself
Andrew Waterman [Sat, 3 Jan 2015 01:29:05 +0000 (17:29 -0800)]
On misaligned fetch, set EPC to target, not branch itself

9 years agoReduce dependences on auto-generated code
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.

9 years agoMerge branch 'netbsd-autoconf'
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.

9 years agoautoreconf 65ba70071d11cc19b3dc85c047c5fea6d4d7bc0d
Palmer Dabbelt [Mon, 29 Dec 2014 21:07:13 +0000 (13:07 -0800)]
autoreconf 65ba70071d11cc19b3dc85c047c5fea6d4d7bc0d

9 years agoAllow Spike to build on NetBSD
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.

9 years agoSupport building from within root directory
Andrew Waterman [Sat, 20 Dec 2014 21:37:14 +0000 (13:37 -0800)]
Support building from within root directory

9 years agoFix makefile race condition
Andrew Waterman [Sat, 20 Dec 2014 21:26:48 +0000 (13:26 -0800)]
Fix makefile race condition

9 years agoMerge pull request #11 from arunthomas/readme
Andrew Waterman [Fri, 12 Dec 2014 00:52:56 +0000 (16:52 -0800)]
Merge pull request #11 from arunthomas/readme

README: use gnu-toolchain

9 years agoREADME: use gnu-toolchain
Arun Thomas [Thu, 11 Dec 2014 16:20:22 +0000 (11:20 -0500)]
README: use gnu-toolchain

9 years agozero-extend 32b instructions for vxcptaux
Andrew Waterman [Fri, 5 Dec 2014 09:08:27 +0000 (01:08 -0800)]
zero-extend 32b instructions for vxcptaux

9 years agoSupport 2/4/6/8-byte instructions
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.

9 years agoSet badvaddr on instruction page faults
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).

9 years agoUpdate register names to match new ABI
Andrew Waterman [Wed, 3 Dec 2014 23:26:55 +0000 (15:26 -0800)]
Update register names to match new ABI

9 years agoImplement timer faithfully
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.

9 years agoFactor out the dummy RoCC accelerator
Andrew Waterman [Tue, 25 Nov 2014 21:39:53 +0000 (13:39 -0800)]
Factor out the dummy RoCC accelerator

10 years agoRevert "Enable support for the four custom instructions"
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.

10 years agoSuppress harmless warnings
Andrew Waterman [Thu, 20 Nov 2014 02:08:17 +0000 (18:08 -0800)]
Suppress harmless warnings

specifically, unused variables in auto-generated code.

10 years agoAdd missing makefile dependence
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.

10 years agoMerge pull request #8 from arunthomas/dummy_rocc_test
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

10 years agodummy-rocc-test build fix
Arun Thomas [Thu, 30 Oct 2014 14:20:08 +0000 (10:20 -0400)]
dummy-rocc-test build fix

10 years agoMerge pull request #4 from arunthomas/custom_inst
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

10 years agoEnable 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

10 years agoAvoid some unused variable warnings
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.

10 years agoAvoid use of __int128_t
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.

10 years agoMerge pull request #2 from arunthomas/build_fix
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

10 years agoUpdate 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

10 years agonow can build with clang
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

10 years agoUpdate configure to set CPPFLAGS instead of CFLAGS with fesvr include path.
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.

10 years agodon't include same flags twice
Scott Beamer [Thu, 28 Aug 2014 04:27:30 +0000 (21:27 -0700)]
don't include same flags twice

10 years agoclean up warnings from clang
Scott Beamer [Tue, 26 Aug 2014 01:23:47 +0000 (18:23 -0700)]
clean up warnings from clang

10 years agoAdded PC histogram option.
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.

10 years agoSupport uarch counters (degenerately)
Andrew Waterman [Fri, 8 Aug 2014 00:27:13 +0000 (17:27 -0700)]
Support uarch counters (degenerately)

10 years agofix typo in README
Scott Beamer [Thu, 7 Aug 2014 17:41:12 +0000 (10:41 -0700)]
fix typo in README

10 years agochange README to markdown
Sagar Karandikar [Tue, 5 Aug 2014 23:36:29 +0000 (16:36 -0700)]
change README to markdown

10 years agoadded support for register convention names in debug mode
Scott Beamer [Fri, 25 Jul 2014 00:05:53 +0000 (17:05 -0700)]
added support for register convention names in debug mode

10 years agocouple of more notes on debug mode
Scott Beamer [Wed, 16 Jul 2014 23:50:27 +0000 (16:50 -0700)]
couple of more notes on debug mode

10 years agonotes on using debug mode
Scott Beamer [Tue, 15 Jul 2014 17:50:22 +0000 (10:50 -0700)]
notes on using debug mode

10 years agoDisallow access to FCSR when FP is disabled
Andrew Waterman [Tue, 8 Jul 2014 20:25:04 +0000 (13:25 -0700)]
Disallow access to FCSR when FP is disabled

10 years agoUse precompiled headers to speed up compilation
Andrew Waterman [Mon, 7 Jul 2014 22:17:16 +0000 (15:17 -0700)]
Use precompiled headers to speed up compilation

10 years agoMinor refactoring
Andrew Waterman [Mon, 7 Jul 2014 21:03:27 +0000 (14:03 -0700)]
Minor refactoring

10 years agoCommit log now prints while interrupts are enabled.
Christopher Celio [Fri, 13 Jun 2014 10:52:48 +0000 (03:52 -0700)]
Commit log now prints while interrupts are enabled.

   - Previous behavior was to print the commit log only in user code.

10 years agoOnly print commit log if instruction commits
Andrew Waterman [Fri, 13 Jun 2014 09:42:54 +0000 (02:42 -0700)]
Only print commit log if instruction commits

10 years agoSet status.u64 to true on boot
Andrew Waterman [Thu, 12 Jun 2014 21:16:27 +0000 (14:16 -0700)]
Set status.u64 to true on boot

This isn't required by the ISA but it matches existing HW.

10 years agofix disassembly of bnez and friends
Andrew Waterman [Thu, 24 Apr 2014 23:01:33 +0000 (16:01 -0700)]
fix disassembly of bnez and friends

10 years agoMerge branch 'tm'
Stephen Twigg [Thu, 3 Apr 2014 23:54:34 +0000 (16:54 -0700)]
Merge branch 'tm'

10 years agoSync encoding in opcodes
Stephen Twigg [Thu, 3 Apr 2014 23:52:48 +0000 (16:52 -0700)]
Sync encoding in opcodes

10 years agoAdd ut_fclass_s/d hwacha (unused until encoding sync)
Stephen Twigg [Thu, 3 Apr 2014 23:52:34 +0000 (16:52 -0700)]
Add ut_fclass_s/d hwacha (unused until encoding sync)

10 years agoSupport RV32 RDTIMEH/RDCYCLEH/RDINSTRETH
Andrew Waterman [Tue, 18 Mar 2014 21:38:07 +0000 (14:38 -0700)]
Support RV32 RDTIMEH/RDCYCLEH/RDINSTRETH

10 years agospeed up compilation a bit
Andrew Waterman [Sat, 15 Mar 2014 23:48:16 +0000 (16:48 -0700)]
speed up compilation a bit

10 years agoNew FP encoding
Andrew Waterman [Wed, 12 Mar 2014 02:07:08 +0000 (19:07 -0700)]
New FP encoding

10 years agoAdd fclass.{s|d} instructions
Andrew Waterman [Fri, 7 Mar 2014 02:23:38 +0000 (18:23 -0800)]
Add fclass.{s|d} instructions

10 years agoadd hwacha vfmsv instructions
Yunsup Lee [Sun, 2 Mar 2014 08:49:32 +0000 (00:49 -0800)]
add hwacha vfmsv instructions