History log of /seL4-camkes-master/kernel/tools/bitfield_gen.py
Revision Date Author Comments
# 5362c6b2 06-Aug-2020 Matthew Brecknell <Matthew.Brecknell@data61.csiro.au>

bitfield_gen: update proofs to support RISC-V MCS

Signed-off-by: Matthew Brecknell <Matthew.Brecknell@data61.csiro.au>


# a09d6f02 06-Aug-2020 Matthew Brecknell <Matthew.Brecknell@data61.csiro.au>

bitfield_gen: emit fields in visible order

Signed-off-by: Matthew Brecknell <Matthew.Brecknell@data61.csiro.au>


# 4c0f16c7 19-Jul-2020 Edward Pierzchalski <ed.pierzchalski@data61.csiro.au>

bitfield_gen: fixups for MCS

Changes the 'size suffix map' to be useful in more places. In general,
when we use the 'short name' of a variable in these generated proofs, we
run the risk of a change in variable declaration order breaking the
resulting proofs (since declaration order is how the C parser chooses
which variables get the short name). Best practice is to use the long
names whenever possible.

Uses the suffix map for some generated proofs.

Removes an unnecessary simp step.

Signed-off-by: Edward Pierzchalski <ed.pierzchalski@data61.csiro.au>


# 79da0792 01-Mar-2020 Gerwin Klein <gerwin.klein@data61.csiro.au>

Convert license tags to SPDX identifiers

This commit also converts our own copyright headers to directly use
SPDX, but leaves all other copyright header intact, only adding the
SPDX ident. As far as possible this commit also merges multiple
Data61 copyright statements/headers into one for consistency.


# 047ab927 24-Feb-2020 Luca(Wei) Chen <Wei@cvluca.com>

bitfield_gen: explicit branch predications

gcc8 might get wrong branch predications on these condition checks,
and it could break the code layout.


# 5ebe5526 11-Dec-2019 Matthew <matt.phillips121@gmail.com>

Add the suffix to the bitfield generation

Clang complains about shifting signed numbers so we need to make sure it
knows it is unsigned


# cfc544ab 30-Jul-2019 Edward Pierzchalski <ed.pierzchalski@data61.csiro.au>

bitfields: Specify iteration order over dicts

In Python 3, dict value iterators aren't deterministic between runs,
which causes nondeterministic definition output order. Some L4V proofs
are sensitive to this order.

Use sorted keys to guarantee order when iterating over values.


# bc61a7f3 24-Jun-2019 Anna Lyons <anna@gh.st>

python2 --> python3

Update all scripts and build system to call python3, given python2's
upcoming doom. Use sys.maxsize instead of sys.maxint in one script
(maxint does not exist in python3).


# cf57914c 26-Mar-2019 Anna Lyons <Anna.Lyons@data61.csiro.au>

style: run autopep8 on python files


# 1283345b 18-Jul-2018 Edward Pierzchalski <ed.pierzchalski@data61.csiro.au>

bitfield_gen: merge clarsimp/simp in generated proofs

The old generated proofs would fail if a simp set change made
`clarsimp` discharge what `simp` simplified.


# 880686dd 23-Aug-2018 Kent McLeod <Kent.Mcleod@data61.csiro.au>

bitfield_gen: Improve prune list generation time

Previously this would create a very big regex to parse the input
sources. This didn't scale as well on architectures with more bitfield
objects


# fe955b5b 19-Dec-2017 Matthew Brecknell <Matthew.Brecknell@data61.csiro.au>

Improve generated bitfield proofs

For bitfields requiring sign extension, the generated specs are nicer to
work with in proofs. The proofs also support an updated `sign_extend`
specification (in the l4v repository) which has nicer properties.

This change also speeds up some bitfield proofs.


# 960881d0 18-May-2017 Gerwin Klein <gerwin.klein@data61.csiro.au>

tools bitfield_gen: proof updates for new base + sign-extension mechanism


# 3b330f9a 17-May-2017 Gerwin Klein <gerwin.klein@data61.csiro.au>

tools bitfield_gen: use hex literals in proofs and specs


# 38ba9e40 17-May-2017 Gerwin Klein <gerwin.klein@data61.csiro.au>

tools bitfield_gen: simplify theory imports; conform to style


# 0a99d7d4 17-May-2017 Gerwin Klein <gerwin.klein@data61.csiro.au>

tools bitfield_gen: remove obsolete mask comments

(These masks existed in earlier versions of the bitfield proofs, removed
because the statements were stronger without them.)


# c57ea388 17-May-2017 Gerwin Klein <gerwin.klein@data61.csiro.au>

tools bitfield_gen: use generic base instead of word32 in proofs


# 64cf2308 18-Jun-2017 Anna Lyons <Anna.Lyons@data61.csiro.au>

tools: fix licenses


# 07f94833 18-Jun-2017 Anna Lyons <Anna.Lyons@data61.csiro.au>

libsel4: fix licenses

- some were incorrectly marked GPL (libsel4 is BSD)
- update NICTA --> DATA61 etc
- fix tags D61 --> DATA61
- update year to 2017


# 943f1ab0 20-May-2017 Matthew Brecknell <matthew@brecknell.net>

bitfield_gen: generate more efficient *_new and *_ptr_new functions

For blocks and unions, generate only one write for each word, rather
than an update for each bitfield.

For verification, this speeds up some automatically generated proofs.


# 85a0e441 04-May-2017 Luke Mondy <luke.mondy@data61.csiro.au>

By not writing a parse.py table, we avoid the parallel build issue of corrupted parse.py files


# 8c93b71c 21-Feb-2017 Stephen Sherratt <Stephen.Sherratt@data61.csiro.au>

Import reduce from functools in python scripts


# 803dd5c2 24-Nov-2016 Jeff Waugh <jdub@bethesignal.org>

libsel4: Optional public symbols for external interfaces

CONFIG_LIB_SEL4_PUBLIC_SYMBOLS=y will disable inlining for external
interfaces (except deprecated functions), thereby providing public
symbols for easy linkage with other languages.


# 79610f4c 29-Nov-2016 Stephen Sherratt <Stephen.Sherratt@data61.csiro.au>

Bitfields generated with ply rather than yacc


# 13ad834a 15-Sep-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Generated bitfield proofs: use hrs_mem_update.

This is a technical change to the proof mode of the bitfield
generator included in the seL4 source.

The postconditions of the generated specifications of the
*_ptr_set and *_ptr_new functions now describe the entire new
heap via (new_heap = hrs_mem_update (...) old_heap).
Previously they described the contents of various projections
of the heap, which is less precise.


# c517dba4 19-Jun-2016 Japheth Lim <Japheth.Lim@nicta.com.au>

bitfield_gen: write output files atomically


# 7a9b81d2 06-Jun-2016 Matthew Fernandez <matthew.fernandez@nicta.com.au>

Revert "bf gen: Add a backend for AutoCorres."

This reverts commit 5ee397156373709f58c37f217e9b914017d67e99. This backend was
previously used in an experiment towards libsel4 verification. That project has
since adopted a different strategy and this backend is now unused. Meanwhile
the backend has lagged behind breaking changes to AutoCorres. This commit
removes the backend to avoid confusion from users who believe it to be
functional.


# bea92de3 20-Mar-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Verification: adjust use of new bf proof features.

Apologies, some final adjustments got lost in the previous pull
request round. This version actually works.


# 13715658 14-Mar-2016 Thomas Sewell <Thomas.Sewell@nicta.com.au>

Verification: bf: use new proof features.

The plan here is to move some of the proof script complexity embedded
in the text of the bitfield_gen utility into generic proof helpers in the
l4v repository that bitfield_gen can use more modularly. This is a simple
first step.


# 41d98e45 24-Jan-2016 Corey Richardson <corey.richardson@nicta.com.au>

tools: bitfield_gen: use six to access range (py3) or xrange (py2)


# 8ab5e037 24-Jan-2016 Corey Richardson <corey.richardson@nicta.com.au>

tools: bitfield_gen: use itertools.chain instead of concatenating lists

This isn't efficient in Python, and moreover in python3 these methods
return iterables, not lists.


# 486aefc2 24-Jan-2016 Corey Richardson <corey.richardson@nicta.com.au>

tools: bitfield_gen: use integral (//) instead of duck-typed division (/)


# 6ad22730 24-Jan-2016 Corey Richardson <corey.richardson@nicta.com.au>

tools: bitfield_gen: iterable->list for optparse


# 22a1c15a 24-Jan-2016 Corey Richardson <corey.richardson@nicta.com.au>

tools: bitfield_gen: use '... in ...' instead of dict.has_key


# 424e74e8 21-Jan-2016 Corey Richardson <corey.richardson@nicta.com.au>

tools: bitfield_gen: use print_function


# 703dcaca 21-Jan-2016 Corey Richardson <corey.richardson@nicta.com.au>

tools: bitfield_gen: remove trailing whitespace


# 94b02162 07-Dec-2015 Joel Beeren <joel.beeren@nicta.com.au>

conversion: fixed bitfield generator, clz spec


# 7d3622f0 26-Jun-2015 Adrian Danis <Adrian.Danis@nicta.com.au>

bitfield: Correct assertions when using sign extended bases


# e653f8f6 09-Jul-2015 Wink Saville <wink@saville.com>

Streamline libsel4 and remove its libc dependencies.

There are now separate libs for benchmark, assert, printf, putchar
start/stop:

libs/libsel4benchmark
libs/libsel4assert
libs/libsel4printf
libs/libsel4putchar
libs/libsel4startstop

The primary changes are introducing sel4/sel4.h and removing std* types
plus porting assert and IO code from the kernel to libsel4assert,
libsel4printf, libsel4putchar.

This means the code within libsel4 and the newlibs do not overload any
typical libc entities. Instead the libraries use types like
seL4_Uint32 ... instead of uint32_t. And printf is now seL4_Printf and
assert is seL4_Assert ....

Finally, the only file modified that effects kernel code is
kernel/tools/bitfield_gen.py. It needed to be modified as it generates
files for both kernel and user space. And for user space the generated code
(types_gen.h) needed to use the new types and asserts. The changes should
not change what is generated for the kernel and I did a comparison of
kernel_final.{c|s} before and after my change and the only differences
were time stamps.

Bug: #15 Streamline kernel/libsel4 and remove its libc dependencies


# 8e5921c6 19-Jun-2015 Adrian Danis <Adrian.Danis@nicta.com.au>

bitfield: Allow for controlling how many bits of a word are actually used, and whether the rest of the bits are signed extended or not


# f8ea6f22 17-Jun-2015 Adrian Danis <Adrian.Danis@nicta.com.au>

bitfield: Allow for using different bases throughout a bitfield file


# a34bc7de 02-Jun-2015 Adrian Danis <Adrian.Danis@nicta.com.au>

bitfield: Extend bitfield generator to add a size suffix onto constant mask values


# 5ee39715 27-Oct-2014 Matthew Fernandez <matthew.fernandez@nicta.com.au>

bf gen: Add a backend for AutoCorres.

This commit adds a two new output targets for the bitfield generator,
--autocorres-defs and --autocorres-proofs. These produce, respectively,
abstract definitions of the generated C functions suitable for use in
AutoCorres proofs and WP/simp lemmas suitable for use within AutoCorres proofs
of functions that call the generated C functions. Existing behaviour and
functionality should be unaffected.


# 701b3bff 27-Oct-2014 Matthew Fernandez <matthew.fernandez@nicta.com.au>

bf gen: Fix: Check UMM types is known before generating HOL proofs.


# 9e6750e8 27-Oct-2014 Matthew Fernandez <matthew.fernandez@nicta.com.au>

bf gen: Fix: Prevent using stdout when writing HOL defs/proofs.

Stdout is not suitable as an output target for these things.


# 1d51025f 27-Oct-2014 Matthew Fernandez <matthew.fernandez@nicta.com.au>

bf gen: Removed some undefined bit shifts.

The bitfield generator constructs tags as enums. The compiler is free to back
these by any type big enough to cover the enum. The generator emits code that
uses these tag values in mask and shift operations where the target type is
typically a uint32_t. As a result, it can produce code involving undefined
shifts like:

(seL4_CapData_Badge & 0x1) << 31

This commit casts the tag value to the unsigned target type before masking to
ensure everything is done on an appropriate sized unsigned type.

JIRA: SELFOUR-193


# 3b6321f2 27-Oct-2014 Matthew Fernandez <matthew.fernandez@nicta.com.au>

bf gen: Fix missing include.

The bitfield generator uses the macros CONST and PURE which, for libsel4, are
defined in macros.h.


# 03ee240e 26-Oct-2014 Matthew Fernandez <matthew.fernandez@nicta.com.au>

bf gen: Fix whitespace in constructors and getters.


# 91b7da86 17-Jul-2014 TrusthworthySystems <gatekeeper@sel4.systems>

Release snapshot