Commit Graph

476 Commits

Author SHA1 Message Date
Alexandre Joannou
1a3915d8a2 Fix display message when running the dependency script 2020-04-27 15:27:16 +01:00
jon
13d020cb9e Merge branch 'parallel-build' into CHERI 2020-04-27 15:19:05 +01:00
jon
5693af05e5 Changes to make PCC consistent.
Specifically, attach the bounds to PC all the way back into the branch predictors.
2020-04-27 15:13:36 +01:00
Alexandre Joannou
dfde021eb6 Avoid creation of outputfile on failure of dependency script + add beri license header 2020-04-24 15:09:04 +01:00
jon
b31c299da6 Merge branch 'parallel-build' of https://github.com/CTSRD-CHERI/Toooba into parallel-build 2020-04-24 11:48:15 +01:00
jon
6222ff6c9a Merge branch 'CHERI' into parallel-build 2020-04-24 11:47:27 +01:00
jon
2251457840 Implement target bounds-check for CJALR. 2020-04-23 17:54:18 +01:00
Peter Rugg
df7dde5759 Bump cheri-cap-lib 2020-04-23 15:44:47 +01:00
Alexandre Joannou
370ed61bc4 Integrate the generation of dependenices to Makefiles 2020-04-23 14:55:28 +01:00
Peter Rugg
28c09ef1df Factor out SCR definitions 2020-04-23 13:15:26 +01:00
jon
92e3216c69 Don't use special recursive build for the top level, as this just rebuilds everything. 2020-04-23 10:42:45 +01:00
Alexandre Joannou
aa79240629 generalise genDependencies a bit with env variables (no obvious getoptsin tcl AFAIK) 2020-04-23 02:04:19 +01:00
jon
f6b7132d4f Makefile updates to do a parallel build, including the tcl script to generate a dependency graph using the Bluespec compiler (which was written by Alexandre). 2020-04-22 22:44:19 +01:00
Peter Rugg
1859e86b4e Merge branch 'pdr32-wip' into HEAD 2020-04-22 18:11:37 +01:00
Peter Rugg
3b30d2db36 Add BuildCap unsealing 2020-04-22 15:52:23 +01:00
Peter Rugg
8cc8f71cb9 Perform bounds check on requested length rather than rounded length.
This prevents issues with overflow in the top, and should be correct
based on the rounding used in the SetBounds function.
2020-04-22 14:27:11 +01:00
Peter Rugg
a89a606a6d Factor out Opcodes and CSRs into separate files 2020-04-21 20:36:56 +01:00
Peter Rugg
3693326b62 Don't sign extend CSetBoundsImm immediate 2020-04-21 16:45:04 +01:00
Peter Rugg
8a4fa786dd Add CToPtr special case 2020-04-21 13:52:33 +01:00
Peter Rugg
1773530c72 Attempt to enable AUIPCC 2020-04-20 23:11:58 +01:00
Peter Rugg
923d4915cb Make SetBounds legal 2020-04-20 23:05:26 +01:00
Peter Rugg
8e01cf68df More concise FShow for CapChecks 2020-04-20 21:28:09 +01:00
Peter Rugg
b4be80eba1 Bounds Check fixes 2020-04-20 21:23:42 +01:00
Peter Rugg
7db3fa539f Add ALU bounds check 2020-04-20 11:21:51 +01:00
Marno van der Maas
b063497052 CHERI update to ReadMe 2020-04-18 09:47:56 +01:00
Peter Rugg
1bb53e5e86 Merge branch 'CHERI' into pdr32-wip 2020-04-16 20:58:37 +01:00
Peter Rugg
f1e04486b7 Work on SCR-related instructions 2020-04-16 20:53:08 +01:00
Peter Rugg
34c4e0f2fa Comment out user exception delegation SCRs since the corresponding CSRs are not yet supported 2020-04-16 20:43:44 +01:00
Peter Rugg
8269a0625e Initial implementation of set bounds 2020-04-16 20:39:54 +01:00
jon
4b2c3b1114 An attempt at doing the "right thing" with Jr targets and links with respect to PCC.
This is not easy to test until we have CSetBounds.
2020-04-16 18:07:39 +01:00
Rishiyur S. Nikhil
30974aa761 Merge pull request #14 from jrtc27/uncached-amo
MMIOPlatform.bsv: Discard write response for uncached AMOs
2020-04-16 12:46:20 -04:00
jon
a77ecc59af Checkpoint work to propagate register numbers into the exception code.
There's another half of this left to do to propagate all the way into the CSR file.
2020-04-16 17:28:28 +01:00
Jessica Clarke
3add2cac5e Move MakeReset0.v to src_bsc_lib_RTL like Piccolo and Flute
This ensures it's shared across all simulator builds.
2020-04-16 17:19:16 +01:00
Jessica Clarke
a2aee1969d verilator_config.vlt: Revert "fix"
lint_off -rule is a very new feature that requires Verilator v4.026
released in Jan 2020, and is thus not in Ubuntu 18.04. Any breakage with
newer versions should be fixed in some other backwards-compatible way.
2020-04-16 17:12:27 +01:00
jon
9bb3e835ac Fix operand of CCall.
Also fix one case of CCopyType where it is meant to return nullWithAddr(-1).
2020-04-16 11:38:38 +01:00
Jessica Clarke
a76af876a1 MMIOPlatform.bsv: Discard write response for uncached AMOs
Otherwise, the next MMIO access will see the 0 from the write response
instead of its response, and every subsequent access will see the
previous's response, further accumulating if more uncached AMOs are
performed.
2020-04-15 16:45:28 +01:00
jon
c056d40a3a Trace the register that has been decoded rather than picking out the bits from the instruction.
Duh.
2020-04-15 14:08:36 +01:00
Peter Rugg
a0fb527ad7 Raise illegalInstruction for currently unsupported exceptions 2020-04-15 14:07:36 +01:00
Peter Rugg
e773cb0232 Add CIncOffsetImm 2020-04-15 14:06:46 +01:00
jon
9685bf1931 Implement CCall, hopefully as well as CJALR.
This passes the unmodified TestRIG routine for CHERI Control Flow, which is very promising indeed!
There are some cases that are not covered there, but a lot is covered.
2020-04-14 18:10:53 +01:00
Rishiyur S. Nikhil
dde283fc38 Merge pull request #13 from jrtc27/fetch-fixes
Various Fetch Fixes
2020-04-10 08:51:52 -04:00
Jessica Clarke
8455ee3f06 FetchStage.bsv: Fix fav_parse_insts when pending_straddle has "even" PC
Despite the name, we can end up having a pending_straddle at an "even"
PC (and thus an "odd" pc_start). In this case, we would erroneously
treat it as if pc_start were "even", effectively shifting all the
instruction parcels along by one and duplicating the first one, since
the first element of the parcels vector will be a copy of the straddle's
parcel itself. Instead, we should just ignore pending_straddle when
determining where to start in the parcels vector, as the two are
completely independent, and no longer hard-code that the straddle is
merged with element 0.

This can happen if we predict that the first half of an uncompressed
instruction is a taken branch. We will have the instruction bytes
available, but not the prediction information, so still have to do a
normal Fetch3 redirect in the same manner as an unaligned uncompressed
instruction. We could perhaps special-case with a fast-path (or query
the predictor directly in Fetch3), but it should hit in the TLB and L1
cache, and is probably not common enough to warrant the complexity.

The FreeRTOS-based netboot loader trips up on this as it overwrites
itself with the payload, and thus all the branch prediction still has
many taken branch entries, most of which will not be correct.
2020-04-08 04:47:55 +01:00
Jessica Clarke
10c983d101 FetchStage.bsv: Drop unused pc from Fetch3ToDecode
Each instruction carries its own PC by this point, so it just duplicates
the PC of the first item in the vector. Moreover, when including a
pending straddle at the head, the PC value was not set to the previous
half's, ie PC-2. We keep pred_next_pc as that's used to determine where
the bundle is predicted to go next, and the duplication avoids having to
dynamically index the vector based on the number of instructions fed to
decode.
2020-04-08 04:22:49 +01:00
Jessica Clarke
85b4a738a9 FetchStage.bsv: Fix a mkRegU that should be a mkReg
We should not use a mkRegU for rg_pending_n_items, as otherwise there is
a chance the epochs for rg_pending_f32d happen to match depending on the
uninitialised values. Instead ensure we always reset with no pending
items.
2020-04-08 04:21:13 +01:00
Peter Rugg
72dc8f8bad Fix cap instructions not being sent to ALU 2020-04-07 19:55:09 +01:00
jon
56885f06c0 Changes for CJALR-only TestRIG to work.
This includes replacing register read values with nullCap if reading x0, which is generally necessary.
This is more-or-less using a new mechanism which shouldn't actually be necessary if the default value in the register file is nullCap.
(In RVFI_DII, we initialise with the almightyCap instead.)
2020-04-07 16:32:31 +01:00
Rishiyur S. Nikhil
9e72052437 Merge pull request #12 from jrtc27/step-fix
RenameStage.bsv: Fix single-step when only one instruction available
2020-04-07 09:14:55 -04:00
Rishiyur S. Nikhil
7accf2c1a0 Merge pull request #11 from CTSRD-CHERI/mac_build
Resolve some issues to build on mac.
2020-04-07 09:13:19 -04:00
Peter Rugg
ae78cd3d6a Don't track built files 2020-04-07 13:56:34 +01:00
Alexandre Joannou
198ce853bf Bump BlueStuff, cheri-cap-lib and BSV-RVFI-DII submodules 2020-04-07 12:48:37 +01:00