summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2018-07-05restore missing RISC-V fence types in sail2; ignore io bits in fences more ↵Jon French
cleanly
2018-07-04mips: move rmem integration instructions into separate file (disabled for ↵Robert Norton
now) to avoid coverage noise.
2018-07-04AArch64 Prelude: Move cycle count primop to preludeAlastair Reid
2018-07-03Add htif tohost to the riscv tracecmp tool.Prashanth Mundkur
2018-07-03Allow the riscv htif_tohost mmio port to be readable, and ack writes to that ↵Prashanth Mundkur
port.
2018-07-03Fix a bug in foreach loopsAlasdair Armstrong
We should test before the first iteration in case 'to' starts out as less than 'from'.
2018-07-03cheri: refine lwl/lwr cap length checks to be exact. They were previously a ↵Robert Norton
bit loose, but conservative.
2018-07-03mips: just whitespace.Robert Norton
2018-07-03Fix letbind_effects on LEXP_deref with an effectful subexpressionBrian Campbell
2018-07-03Fill in a few Coq functions for CHERI from the MIPS preludeBrian Campbell
2018-07-03Main: fix SEE handlingAlastair Reid
If a SEE exception is not caught within the decoder, it is an error in the Sail implementation or in the instruction set spec. This change ensures that we promptly detect and unambiguously report such errors.
2018-07-03cheri: update to register file semantics. Most instructions now treat c0 as ↵Robert Norton
null capability while some still refer to DDC. Special registers moved out of general capability register file. All capabilties initialised to null except those required for MIPS compatibility.
2018-07-02Fix get_recursive_functions to not only pick up non-mutually recursive functionsAlasdair Armstrong
The code to do this is rather ugly. It would be nice to have a generic callgraph representation we could just query and not use the rewriter in a weird way to extract this info.
2018-07-02Coq: add some string functionsBrian Campbell
2018-07-02Coq: tidy up a bit of printingBrian Campbell
2018-07-02Coq modulus operation that fits the typeBrian Campbell
2018-07-02Coq: replace simpl in a tactic with a more precise "change"Brian Campbell
Prevents partial unfolding of Z.pow.
2018-07-02Coq: multiple record field updatesBrian Campbell
Uses simple method of printing the entire record, in lieu of any decent record update syntax.
2018-07-02Work around Coq issue with pattern bindersBrian Campbell
2018-07-02Coq building rule in MIPS makefileBrian Campbell
2018-07-02cheri: the default cap for 256-bits no longer has reserved bits set.Robert Norton
2018-07-02optimise cheri c build.Robert Norton
2018-07-01RTS: Fail on AArch32 and ASIMDAlastair Reid
This change causes execution of AArch32 code or ASIMD code to fail with an easily diagnosed error message of the form UNIMPLEMENTED: xxx support where xxx is either AArch32 or ASIMD. Having a clear error message allows these to be detected by triaging scripts. To make the AArch32 detection part work, you also need to change HaveAnyAArch32 to read like this instead of just returning false. function HaveAnyAArch32 () = return ((CFG_ID_AA64PFR0_EL1_EL0 == 0x2) || (CFG_ID_AA64PFR0_EL1_EL1 == 0x2) || (CFG_ID_AA64PFR0_EL1_EL2 == 0x2) || (CFG_ID_AA64PFR0_EL1_EL3 == 0x2))
2018-06-30RTS: fix replicate_bitsAlastair Reid
Fixes handling of Replicate(x, 0).
2018-06-30RTS: Add length asserts to bits opsAlastair Reid
Added assertions to check that length of bit operations is sensible (i.e., consistent with type system).
2018-06-30Main: trivial restructuring of print commands to make them easier to ↵Alastair Reid
read/maintain
2018-06-30Fix an issue with vector_update_subrangeAlasdair
vector_update_subrange wasn't setting its return length correctly
2018-06-29Constant folding improvementsAlasdair
2018-06-29Main: many small tweaks.Alastair Reid
While trying to track down some strange behaviour, I added a lot more try-catch blocks that I think will be useful in the future. Also dropped spurious escape effects on primops. Also, only advance PC if we executed an instruction.
2018-06-29RTS: tweak TIMEOUT messageAlastair Reid
Making the message more like archex messages simplifies tooling. Plus, it is a better message.
2018-06-29Prelude: drop escape effect from sleep/verbosity primopsAlastair Reid
It appears that primops that have the escape effect are required to write to the have_exception flag so I am dropping the effect from primops that don't actually escape.
2018-06-28RTS: Fix utterly broken command line parsingAlastair Reid
2018-06-28RTS: Add --verbosity flag to C modelAlastair Reid
This is interpreted as a set of bits that control various bits of output. Bit 0 is print the PC on every cycle. (It would probably be useful to standardise a few of these flags across all models. Other candidates are accesses to physical memory, throwing SAIL exceptions, current privilege level, ...)
2018-06-28Add tagged memory to C rts to cheri can be compiled to CAlasdair Armstrong
2018-06-28Fix warning in rts.cRobert Norton
2018-06-28further changes to support rmemJon French
2018-06-28Fix build of Aarch64_mono.thyThomas Bauereiss
2018-06-28Add patches to (monomorphised) AArch64Thomas Bauereiss
- Initialise fault typ field of result record to avoid an unitialised read that can lead to an early return with a fault. This looks like a bug in the ASL specification (the ASL tests probably assume that this field is initialised with Fault_None). - In ZeroExtend_slice_append (one of the helper functions for monomorphisation rewrites), use extzv instead of ZeroExtend. It allows not only extension, but also truncation, and in AArch64_TranslationTableWalk the ZeroExtend_slice_append function is used to construct a 52 bit physical address using parts of the 64 bit input address. - Use the Lem library function for reversing endianness
2018-06-28Add option to build ocaml with bisect_ppx coverage support. Add cheri ↵Robert Norton
targets using this.
2018-06-28RTS: Add missing #includeAlastair Reid
Every Unix is subtly different.
2018-06-28Deduplicate arguments for different constructors in undefined fnsBrian Campbell
Makes the generated undefined functions smaller, easier to read, and avoids excessive memory usage in Coq (e.g., for large AST types).
2018-06-28Main: exit if you hit IMPDEF behaviourAlastair Reid
If you don't exit immediately, the test will probably just jump off into the weeds and stay there until it times out. So better to exit early. But note that this is not all IMPDEF behaviour. Most IMPDEF such as 'Are SHA3 crypto instructions available?' are already being handled and either TRUE or FALSE is being returned. So this is just for the stuff where we don't have a good answer at all.
2018-06-27RTS/Main: tweaking cycle counter handlingAlastair Reid
2018-06-27Actually fix real literals, and add a test for various propertiesAlasdair Armstrong
2018-06-27Fix reading reals from strings in C libAlasdair Armstrong
2018-06-27libsail: optimise real_powerAlastair Reid
The Arm spec uses the value 2.0^1000000 to represent infinity so it is worth making real_power take logarithmic time.
2018-06-27Add a mips_c_gcov target that builds mips_c model with coverage reporting.Robert Norton
2018-06-27Add a new function cycle_limit_reached that returns bool, allowing for ↵Robert Norton
graceful exit on reaching cycle limit. This aids coverage and valgrind instrumentation.
2018-06-27Fix real implementation in C to use GMP rationalsAlasdair Armstrong
Implement square root function for rationals up to an arbitrary precision, currently 30 decimal places. May need to increase this for ARM tests.
2018-06-27Main: refactor fetch_and_executeAlastair Reid
No functional change