summaryrefslogtreecommitdiffstats
path: root/include/hw/registerfields.h
diff options
context:
space:
mode:
authorPeter Maydell2017-12-18 15:17:42 +0100
committerPeter Maydell2017-12-18 15:17:42 +0100
commiteaefea537b476cb853e2edbdc68e969ec777e4bb (patch)
tree42e72f5f0b84e93c35aec2e93335dab2bc7a69ac /include/hw/registerfields.h
parentMerge remote-tracking branch 'remotes/stefanberger/tags/pull-tpm-2017-12-15-1... (diff)
parentmisc: drop old i386 dependency (diff)
downloadqemu-eaefea537b476cb853e2edbdc68e969ec777e4bb.tar.gz
qemu-eaefea537b476cb853e2edbdc68e969ec777e4bb.tar.xz
qemu-eaefea537b476cb853e2edbdc68e969ec777e4bb.zip
Merge remote-tracking branch 'remotes/mjt/tags/trivial-patches-fetch' into staging
trivial patches for 2017-12-18 # gpg: Signature made Mon 18 Dec 2017 14:08:51 GMT # gpg: using RSA key 0x701B4F6B1A693E59 # gpg: Good signature from "Michael Tokarev <mjt@tls.msk.ru>" # gpg: aka "Michael Tokarev <mjt@corpit.ru>" # gpg: aka "Michael Tokarev <mjt@debian.org>" # Primary key fingerprint: 6EE1 95D1 886E 8FFB 810D 4324 457C E0A0 8044 65C5 # Subkey fingerprint: 7B73 BAD6 8BE7 A2C2 8931 4B22 701B 4F6B 1A69 3E59 * remotes/mjt/tags/trivial-patches-fetch: (60 commits) misc: drop old i386 dependency i386/pc: move vmmouse.c to hw/i386/ i386/pc: move vmport.c to hw/i386/ hw/misc/pvpanic: extract public API from i386/pc to "hw/misc/pvpanic.h" hw/net/ne2000: extract ne2k-isa code from i386/pc to ne2000-isa.c hw/display/vga: extract public API from i386/pc to "hw/display/vga.h" hw/display/vga: "vga_int.h" requires "ui/console.h" hw/display/vga: "vga.h" only contains registers defs, rename it "vga_regs.h" hw/acpi/ich9: extract ACPI_PM_PROP_TCO_ENABLED from i386/pc hw/acpi: ACPI_PM_* defines are not restricted to i386 arch hw/timer/mc146818: rename rtc_init() -> mc146818_rtc_init() hw/timer/i8254: rename pit_init() -> i8254_pit_init() hw/unicore32: restrict hw addr defines to source file hw/virtio-balloon: remove old i386 dependency hw/tpm: remove old i386 dependency hw/i2c: remove old i386 dependency hw/ipmi: remove old i386 dependency hw/ide: remove old i386 dependency misc: remove old i386 dependency amd_iommu: avoid needless includes in header file ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'include/hw/registerfields.h')
-rw-r--r--include/hw/registerfields.h15
1 files changed, 14 insertions, 1 deletions
diff --git a/include/hw/registerfields.h b/include/hw/registerfields.h
index af101d5ae6..44e0b94edf 100644
--- a/include/hw/registerfields.h
+++ b/include/hw/registerfields.h
@@ -11,6 +11,8 @@
#ifndef REGISTERFIELDS_H
#define REGISTERFIELDS_H
+#include <qemu/bitops.h>
+
/* Define constants for a 32 bit register */
/* This macro will define A_FOO, for the byte address of a register
@@ -22,7 +24,7 @@
/* Define SHIFT, LENGTH and MASK constants for a field within a register */
-/* This macro will define FOO_BAR_MASK, FOO_BAR_SHIFT and FOO_BAR_LENGTH
+/* This macro will define R_FOO_BAR_MASK, R_FOO_BAR_SHIFT and R_FOO_BAR_LENGTH
* constants for field BAR in register FOO.
*/
#define FIELD(reg, field, shift, length) \
@@ -35,6 +37,9 @@
#define FIELD_EX32(storage, reg, field) \
extract32((storage), R_ ## reg ## _ ## field ## _SHIFT, \
R_ ## reg ## _ ## field ## _LENGTH)
+#define FIELD_EX64(storage, reg, field) \
+ extract64((storage), R_ ## reg ## _ ## field ## _SHIFT, \
+ R_ ## reg ## _ ## field ## _LENGTH)
/* Extract a field from an array of registers */
#define ARRAY_FIELD_EX32(regs, reg, field) \
@@ -52,6 +57,14 @@
d = deposit32((storage), R_ ## reg ## _ ## field ## _SHIFT, \
R_ ## reg ## _ ## field ## _LENGTH, v.v); \
d; })
+#define FIELD_DP64(storage, reg, field, val) ({ \
+ struct { \
+ unsigned int v:R_ ## reg ## _ ## field ## _LENGTH; \
+ } v = { .v = val }; \
+ uint64_t d; \
+ d = deposit64((storage), R_ ## reg ## _ ## field ## _SHIFT, \
+ R_ ## reg ## _ ## field ## _LENGTH, v.v); \
+ d; })
/* Deposit a field to array of registers. */
#define ARRAY_FIELD_DP32(regs, reg, field, val) \