summaryrefslogtreecommitdiff
path: root/src
AgeCommit message (Collapse)Author
2017-06-14Add a work-in-progress version of sail_values.lemBrian Campbell
that uses the new Lem machine words library.
2017-06-05Attempt to make Lem-prettyprinting of function clauses more robustThomas Bauereiss
Instead of abusing patterns as expressions, bind patterns to names (if they are more complex than an identifier or literal and don't have a name already) and generate expressions referring to those names (which we then pass as arguments to the auxiliary functions).
2017-06-05Fix pretty-printing of function clauses with wildcards for LemThomas Bauereiss
Before, wildcards sometimes ended up in the arguments to the function call on the RHS, in particular when using vector patterns (which implicitly introduce wildcards for the order and index parameters).
2017-06-02Add tag memory to Lem shallow embeddingThomas Bauereiss
2017-05-28fixed exmemShaked Flur
2017-05-26fix run_with builds after build_context gained an extra argument.Robert Norton
2017-05-24fixed missing _tag bitsShaked Flur
2017-05-24Merge branch 'master' of bitbucket.org:Peter_Sewell/sailShaked Flur
# Conflicts: # src/lem_interp/interp.lem # src/lem_interp/interp_inter_imp.lem # src/lem_interp/interp_interface.lem # src/parser.mly # src/pretty_print_lem.ml
2017-05-24added the exmem effect for AArch64 store-exclusiveShaked Flur
2017-05-24Change types of MEMr_tag, MEMval_tag and co. so that tag is separate from ↵Robert Norton
data and invent rmemt and wmvt effects for them. Extend the interpreter context to include lists of tagged memory read and write functions. The memory model must round down the address to the nearest capability aligned address when reading/writing tags. Remove TAGw which is no longer needed as a result.
2017-05-24it turns out that Zarith has a divide function which does truncation towards ↵Robert Norton
zero but it is not exposed via Bit_int_Z. Use it instead of rolling our own. Also ocaml / and mod already do the right thing.
2017-05-10Build Cheri_embed_types.thy together with Cheri_embed_sequential.thyThomas Bauereiss
2017-05-08add make rules to (attempt to) build arm and power ml.Robert Norton
2017-05-08add some missing things in sail_values and make big_int version the default ↵Robert Norton
for set_vector_subrange_bit.
2017-05-08add error messages for unhandled pattern match nodes in ocaml pretty printer.Robert Norton
2017-05-08put failwith in brackets to avoid parse error.Robert Norton
2017-05-02docPeter Sewell
2017-04-27add command line argument for setting undef values to all zero or all one. ↵Robert Norton
Some tests intentionally produce undefined values (e.g. divide by zero) and this might be required for them to work.
2017-04-25optimise to_vec_int because it is used by MEMr to convert each byte to vector.Robert Norton
2017-04-25replace memory representation with map of 1MB pages rather than map of ↵Robert Norton
bytes. This makes loading binaries much quicker but doesn't seem to make a big difference to execution speed.
2017-04-25remove unused function.Robert Norton
2017-04-25Add support for uart terminal. Also add read_bit_reg function for faster and ↵Robert Norton
neater access to registers of single bit.
2017-04-24added register_value_for_regShaked Flur
2017-04-21it turns out zarith has a function for printing big_ints in hex. Remove the ↵Robert Norton
dependency on ocaml uint library by using it.
2017-04-21define some big_int literals in sail_values.ml to avoid lots of calls to ↵Robert Norton
bit_int_of_int. Likely very little performance benefit but slightly more readable.
2017-04-21Revert change to check in type_check.ml.Alasdair Armstrong
2017-04-21Fixes stack overflow in sail caused by list append in type_internal.ml.Alasdair Armstrong
Also makes the check function in type_check tail recursive.
2017-04-21implement to_vec_big using zarith extract for some speedup.Robert Norton
2017-04-21suppress register field tracing if not enabled (missed in previous commit)Robert Norton
2017-04-21add make variable for setting ocaml compilation options (e.g. set to -p to ↵Robert Norton
enable gprof profiling)
2017-04-20more library optimisation. Implement int_of_bit_array using shift, avoiding ↵Robert Norton
need to use power.
2017-04-20implement vector subrange using Array.sub for approx 10% speedup.Robert Norton
2017-04-20remove unnecessary lemlib include in compile.Robert Norton
2017-04-20add support for cheri128 ocaml shallow embeddingRobert Norton
2017-04-20add brackets around integer literals so that ocaml parses them correctly and ↵Robert Norton
doesn't mistake the - for minus operator
2017-04-20build a single run_embed.native with mips and cheri models linked and choose ↵Robert Norton
between them using a command line switch.
2017-04-20attempt to optimise performance if not tracing writes.Robert Norton
2017-04-20add missing min and max functions, overriding built-in ocaml ones. Also ↵Robert Norton
neq_range.
2017-04-20add missing KD_nabbrev support in ocaml shallow embedding.Robert Norton
2017-04-20support assert in ocaml shallow embedding.Robert Norton
2017-04-20use mangled field name when accessing record field.Robert Norton
2017-04-20add name to register representation and print it on write.Robert Norton
2017-04-18make ocaml embedding of foreach use (now universal) big_ints.Robert Norton
2017-04-18fix definition of mask -- Vregister and VvectorR were swapped.Robert Norton
2017-04-18Implement return using an exception caught in the function body. Polymorphic ↵Robert Norton
exceptions are not permitted so a local mutable variable, ret, is used in ocaml to store the return value. This avoids having to define a new exception type for each function. Ocaml infers the type of the option when it is assigned at the return site.
2017-04-18Generate runtime error for L_undef. Existing code was broken except for type ↵Robert Norton
bit (specifically it caused generated ocaml to fail to type check for an undef number.
2017-04-18added transactional memory supportShaked Flur
2017-04-07fix error in generated ocaml where writing single bit of register was not ↵Robert Norton
taking account of register direction.
2017-04-07implement quot and mod with truncation towards zero which is not the ocaml ↵Robert Norton
way but standard for C and most hw.
2017-04-07simplify xor using ocaml <> operator which also has the advantage of being ↵Robert Norton
more correct