summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-05-09Support short-circuiting of Boolean expressions in LemThomas Bauereiss
2018-05-09Generate initial register state recordThomas Bauereiss
Filled with default values (e.g., 0) and used to initialise the state monad. There is already code to generate a Sail function "initialize_registers", but this is monadic itself, so it cannot be used to initialise the monad.
2018-05-09Add type system documentationAlasdair Armstrong
2018-05-09Merge pull request #12 from emersion/fix-byte-sequenceRobert Norton
Fix Byte_sequence errors due to linksem update
2018-05-09Fix Byte_sequence errors due to linksem updateemersion
2018-05-08More work on Sail documentationAlasdair Armstrong
2018-05-07Add a register indicating no trigger/breakpoint support, which allows the ↵Prashanth Mundkur
breakpoint test to pass.
2018-05-07Fix another mask computation bug.Prashanth Mundkur
2018-05-07Adjust default pte update setting to match spike's default.Prashanth Mundkur
2018-05-07Log trap value on traps.Prashanth Mundkur
2018-05-07Fix a missed csr read.Prashanth Mundkur
2018-05-04Tweak the execution log.Prashanth Mundkur
2018-05-04Fix two bugs in the page-table walker, and add some comments.Prashanth Mundkur
2018-05-04Fix printing of ld.Prashanth Mundkur
2018-05-04Checked that variable names in split_fun rewrites are really variablesBrian Campbell
Otherwise some clauses disappear
2018-05-04Fix missing nexp id rewritingBrian Campbell
2018-05-04Rewrite constant nexps in specsBrian Campbell
(from Thomas)
2018-05-04Add support for top-level values to monomorphisation singleton rewriteBrian Campbell
2018-05-04Fix mono cast introduction to avoid a checking to inference changeBrian Campbell
Adds return type to pattern so that the original function body is still type checked, rather than switching to type inference which may fail.
2018-05-04Start updating monomorphisationBrian Campbell
+ add additional lexp + update aarch64 mono demo source - still needs support for tyvars from assignments in dependency analysis
2018-05-04Rename type vars in Coq backend when they clash with identifiersBrian Campbell
Add value-only version of compute_{pat,exp}_alg to help Experiment with adding equality constraints between type vars and args in Coq output
2018-05-04Basic Coq constraintsBrian Campbell
2018-05-03Fix a typo in sret decode and privilege checks in xret.Prashanth Mundkur
2018-05-03Add implementation of sfence with a fixme note.Prashanth Mundkur
2018-05-03Fix a bug in privilege transition, add better transition logging.Prashanth Mundkur
2018-05-03Implement wfi, and cleanup handling illegal operations.Prashanth Mundkur
2018-05-03Fix interrupt dispatch, improve execution logs, cleanup unused bits.Prashanth Mundkur
2018-05-03Simplify the top-level execute loop using the step function.Prashanth Mundkur
2018-05-03Fix up interrupt and exception dispatch.Prashanth Mundkur
2018-05-03Implement fetch to properly handle RVC and address translation, and add a ↵Prashanth Mundkur
step function for execution.
2018-05-03Flow typing and l-expression changes for ASL parserAlasdair Armstrong
1. Experiment with allowing some flow typing on mutable variables for translating ASL in a more idiomatic way. I realise after updating some of the test cases that this could have some problematic side effects for lem translation, where mutable variables are translated into monadic code. We'd need to ensure that whatever flow typing happens for mutable variables also works for monadic code, including within transformed loops. If this doesn't work out some of these changes may need to be reverted. 2. Make the type inference for l-expressions a bit smarter. Splits the type checking rules for l-expressions into a inference part and a checking part like the other bi-directional rules. Should not be able to type check slightly more l-expresions, such as nested vector slices that may not have checked previously. The l-expression rules for vector patterns should be simpler now, but they are also more strict about bounds checking. Previously the bounds checks were derived from the corresponding operations that would appear on the RHS (i.e. LEXP_vector would get it's check from vector_access). This meant that the l-expression bounds checks could be weakend by weakening the checks on those operations. Now this is no longer possible, there is a -no_lexp_bounds_check option which turns of bounds checking in l-expressions. Currently this is on for the generated ARM spec, but this should only be temporary. 3. Add a LEXP_vector_concat which mirrors P_vector_concat except in l-expressions. Previously there was a hack that overloaded LEXP_tup for this to translate some ASL patterns, but that was fairly ugly. Adapt the rewriter and other parts of the code to handle this. The rewriter for lexp tuple vector assignments is now a rewriter for vector concat assignments. 4. Include a newly generated version of aarch64_no_vector 5. Update the Ocaml test suite to use builtins in lib/
2018-05-03Fix duopod with latest riscv preludeAlasdair Armstrong
2018-05-03Add typing rule for checking tuples as well as inferring themAlasdair Armstrong
Removes some patches in ASL parser Allow immutable variables to shadow mutable ones. This is useful for translating ASL.
2018-05-03Fix interpreter messages for failing assertsAlasdair Armstrong
2018-05-03Hook in address translation for stores and atomics.Prashanth Mundkur
2018-05-03Log csr writes in the execution log.Prashanth Mundkur
2018-05-03Work in progress on the coq backendBrian Campbell
- originally based on the Lem backend - added externs to some of the library files and tests - added wildcard to extern valspecs in parser - added Type_check.get_val_spec_orig to return the valspec with the function's original names for bound type variables Note that most of the tests will fail currently
2018-05-02Hook in address translation for loads.Prashanth Mundkur
2018-05-02Finish up Sv39 address translation.Prashanth Mundkur
2018-05-02Tick cycle counter in execute loop.Prashanth Mundkur
2018-05-02Fix printing of csr immediates.Prashanth Mundkur
2018-05-02Fix typo in riscv model.Prashanth Mundkur
2018-05-01cheri128: remove unnecessary xor of E with 48. The zeroing of E in memory is ↵Robert Norton
achieved by xoring with null_cap_bits so this was only affecting register representation.
2018-05-01cheri256: minor optimisation -- factor out null_cap_bits as top level let.Robert Norton
2018-05-01cheri256: switch to using absolute address (cursor) instead of offset ↵Robert Norton
(relative) representation in capability registers, making register and memory format the same and slightly simplifying code. Next step: use struct representation in registers eliminating many conversions between struct and bits?
2018-05-01remove unneeded commented out code.Robert Norton
2018-05-01Implement new CGetAddr instruction. Note that we should possibly rename ↵Robert Norton
function getCapCursor to getCapAddr.
2018-04-30Make make uninstall a bit safer...Robert Norton
2018-04-27Cheri ISA change in CTestSubset -- ignore sealed bits when testing for ↵Robert Norton
subset (aids garbage collection).
2018-04-26Add riscv SV39 page-table walk.Prashanth Mundkur