History log of /seL4-l4v-10.1.1/HOL4/examples/ARM/v7/arm_stepLib.sml
Revision Date Author Comments
# e5fc0f36 11-Sep-2017 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Improving naming of bit-vector signed division constants.

This renaming introduces incompatibilities:

• words$word_sdiv -> words$word_quot (this is proved to be related to int_quot for a non-zero divisor).
• words$word_srem -> words$word_rem (this is proved to be related to int_rem for a non-zero divisor).
• integer_word$word_sdiv (this is a new constant defined directly in terms of int_div).
• words$word_smod -> integer_word$word_smod (this is now defined directly in terms of int_mod).


# 1e9dd5f9 11-Apr-2013 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Improvements to updateLib. Added some comments describing the various conversions.

Note that the interface has changed a bit. Some conversions now take a compset (and/or a conversion) instead of a list of theorems.


# 32efb827 18-Oct-2011 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Support for evaluating instructions of the form "ldr pc,[pc,rn,lsl #2]".

Previously this would not work for certain registers "rn". This now works but a
precondition is added, namely: ARM_READ_REG rn state << 2 <> 0xFFFFFFF8w.
This ensures that the branch destination is not the machine-code value of the
instruction.


# a2328149 23-Sep-2011 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Adopt ML-style syntax for case expressions and use freed up "||" for bitwise-or. See issue #24.


# 4a1c116e 04-Apr-2011 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Move some definitions from arm_opsem to arm_coretypes.


# 25cfe5f7 16-Mar-2011 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Added word_sign_extend to src/n-bit.


# d60adf99 01-Feb-2011 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Change the specification wrt interrupt masking. The function arm_next no
longer masks interrupts -- this is instead left to the level above,
e.g. arm_run.

Other changes include more checking of step theorems in selftest. Also made use
of tools in updateLib.


# 87203f85 24-Sep-2010 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Add simplification for offsets. For example, where arm_step would give

r1 + 4w + 1w

it will now give

r1 + 5w


# c1e0d4fe 22-Sep-2010 Anthony Fox <anthony.fox@cl.cam.ac.uk>

A few changes:

- Make use of the new zDefine
- Moved some theorems from arm_stepTheory to arm_opsemTheory and
arm_coretypeTheory, e.g. change_processor_state_thm and encode_psr_bit
- Changed some instruction specifications -- moving the call to
current_mode_is_user_or_system.
- Remove unwanted application of WORD_ARITH_ss in arm_stepLib. This was
inadvertently added in a previous check-in.


# 2d28b95c 24-Jun-2010 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Update that adds support for ThumbEE.

/* From the ARM reference...

ThumbEE

Is a variant of the Thumb instruction set that is designed as a target for
dynamically generated code. It is:
* a required extension to the ARMv7-A profile
* an optional extension to the ARMv7-R profile. */


# 469ce305 03-Jun-2010 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Added support for hardware interrupts: reset, fiq and irq. This adds an extra
argument to the next state functions, i.e. we now have

arm_next : iiid -> HWInterrupt -> unit M

and

ARM_NEXT : HWInterrupt -> arm_state -> arm_state option

In the absence of an interrupt, the previous behaviour is obtained with

ARM_NEXT NoInterrupt : arm_state -> arm_state option

The single-step behaviour for interrupts can be obtained with

armLib.arm_step "" "reset" (* ARM_NEXT HW_Reset *)
armLib.arm_step "" "irq" (* ARM_NEXT HW_Irq *)
armLib.arm_step "" "fiq" (* ARM_NEXT HW_Fiq *)

There has also been some minor tidying-up to the code.


# eee9a561 23-Mar-2010 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Fixes for EmitML script.

Also, get RFE instructions working (albeit very slowly) with arm_step.


# a6b4a573 01-Mar-2010 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Numerous assorted changes, including:

- renamed some constants, e.g. sN -> psrN etc.
- changed handling of IT state for architecture versions < v6T2.
- some fixes to the parser and to the handling of the ADR instruction.
- added a couple of functions (arm_parserLib.calc_itstate and
arm_random_testingLib.arm_step_updates).


# 2d69be00 11-Dec-2009 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Fix bug with condition test for le/gt.


# c6842bb3 02-Dec-2009 Anthony Fox <anthony.fox@cl.cam.ac.uk>

add_with_carry has moved to wordsTheory. Also made some tweaks to evaluation.


# 443fcc45 01-Dec-2009 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Make arm_stepLib much more robust with regard to possible
constant name clashes.


# a6edb681 24-Nov-2009 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Support for ground-term evaluation of the ARM model within HOL -- the program
memory is implemented as a Patricia tree.


# fe82a4e4 30-Oct-2009 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Add a new function "instruction_type" that gives the instruction
type (e.g. "ldr (imm)") for a given op-code.

Also minor tweak to arm_stepLib.


# 83dfb4a7 17-Oct-2009 Anthony Fox <anthony.fox@cl.cam.ac.uk>

A few changes:

1. Make it clear that the ARMv7-M profile is not properly supported (yet).
2. Fix for EmitML script (following changes to memory).
3. Fixed parsing/encoding for 16-bit Thumb MOV (register) instruction.
4. Fixed bugs in model for BFI, SSAT and SSAT16.


# e152be20 14-Oct-2009 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Changes to the memory, to conform with the approach that Magnus explored in
ARM/experimental.

The memory now has type :address -> word8, instead of :address -> word8 option.
Accesses are recorded in a component state.accesses : memory_access list.


# 6913e4d7 29-Sep-2009 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Some fixes to the parser and encoder.

Added a new tool "arm_random_testingLib". This randomly generates
instructions and derives test vectors (where registers and memory
represented as free variables). Magnus will use this to carry out
validation checks on hardware.


# 48439e18 15-Sep-2009 Anthony Fox <anthony.fox@cl.cam.ac.uk>

Fix overflow problem with parser under Mosml.


# 9dfee26e 18-Aug-2009 Anthony Fox <anthony.fox@cl.cam.ac.uk>

A new Monadic ARM instruction set specification. Covers all current ISA
versions i.e. ARMv4 to ARMv7.

Doesn't cover the ThumbEE, VFP and Advanced SIMD extensions. Also doesn't
model hardware interrupts - these will be added at a later date.

To use the armLib tools, Moscow ML users will likely have to apply the patch to
avoid the Chr exception.
<http://hol.sourceforge.net/mosml-chr-instructions.html>