diff options
| author | Peter Maydell <peter.maydell@linaro.org> | 2020-02-27 17:12:31 +0000 |
|---|---|---|
| committer | Peter Maydell <peter.maydell@linaro.org> | 2020-02-27 17:12:31 +0000 |
| commit | 8b6269c8ec14b9213dd22200c1c05aaecd6cbb9d (patch) | |
| tree | 6063a65140b9547b3679754d2c0c17a593195c6e /include/qemu | |
| parent | 2a7b18a3205bdc18403dfa48b9746fbafeac14a0 (diff) | |
| parent | bc97f9f64f8a4a84d0d06949749e9dbec143b9f5 (diff) | |
| download | focaccia-qemu-8b6269c8ec14b9213dd22200c1c05aaecd6cbb9d.tar.gz focaccia-qemu-8b6269c8ec14b9213dd22200c1c05aaecd6cbb9d.zip | |
Merge remote-tracking branch 'remotes/stsquad/tags/pull-testing-and-plugins-250220-1' into staging
Testing and plugin updates: - fix pauth TCG tests - tweak away rcutorture failures - various Travis updates - relax iotest size check a little - fix for -trace/-D clash - fix cross compile detection for tcg tests - document plugin query lifetime - fix missing break in plugin core - fix some plugin warnings - better progressive instruction decode - avoid trampling vaddr in plugins # gpg: Signature made Tue 25 Feb 2020 20:21:56 GMT # gpg: using RSA key 6685AE99E75167BCAFC8DF35FBD0DB095A9E2A44 # gpg: Good signature from "Alex Bennée (Master Work Key) <alex.bennee@linaro.org>" [full] # Primary key fingerprint: 6685 AE99 E751 67BC AFC8 DF35 FBD0 DB09 5A9E 2A44 * remotes/stsquad/tags/pull-testing-and-plugins-250220-1: tests/tcg: take into account expected clashes pauth-4 tests/tcg: fix typo in configure.sh test for v8.3 tcg: save vaddr temp for plugin usage tests/tcg: give debug builds a little bit longer tests/plugins: make howvec clean-up after itself. target/riscv: progressively load the instruction during decode qemu/bitops.h: Add extract8 and extract16 tests/plugin: prevent uninitialized warning plugins/core: add missing break in cb_to_tcg_flags docs/devel: document query handle lifetimes tracing: only allow -trace to override -D if set tests/iotests: be a little more forgiving on the size test travis.yml: single-thread build-tcg stages travis.yml: Fix Travis YAML configuration warnings travis.yml: Test the s390-ccw build, too tests/rcutorture: mild documenting refactor of update thread tests/rcutorture: better document locking of stats tests/rcutorture: update usage hint tests/tcg: include a skip runner for pauth3 with plugins Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'include/qemu')
| -rw-r--r-- | include/qemu/bitops.h | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/include/qemu/bitops.h b/include/qemu/bitops.h index 02c1ce6a5d..f55ce8b320 100644 --- a/include/qemu/bitops.h +++ b/include/qemu/bitops.h @@ -302,6 +302,44 @@ static inline uint32_t extract32(uint32_t value, int start, int length) } /** + * extract8: + * @value: the value to extract the bit field from + * @start: the lowest bit in the bit field (numbered from 0) + * @length: the length of the bit field + * + * Extract from the 8 bit input @value the bit field specified by the + * @start and @length parameters, and return it. The bit field must + * lie entirely within the 8 bit word. It is valid to request that + * all 8 bits are returned (ie @length 8 and @start 0). + * + * Returns: the value of the bit field extracted from the input value. + */ +static inline uint8_t extract8(uint8_t value, int start, int length) +{ + assert(start >= 0 && length > 0 && length <= 8 - start); + return extract32(value, start, length); +} + +/** + * extract16: + * @value: the value to extract the bit field from + * @start: the lowest bit in the bit field (numbered from 0) + * @length: the length of the bit field + * + * Extract from the 16 bit input @value the bit field specified by the + * @start and @length parameters, and return it. The bit field must + * lie entirely within the 16 bit word. It is valid to request that + * all 16 bits are returned (ie @length 16 and @start 0). + * + * Returns: the value of the bit field extracted from the input value. + */ +static inline uint16_t extract16(uint16_t value, int start, int length) +{ + assert(start >= 0 && length > 0 && length <= 16 - start); + return extract32(value, start, length); +} + +/** * extract64: * @value: the value to extract the bit field from * @start: the lowest bit in the bit field (numbered from 0) |