[RFC Patch 05/19] ACPI: Provide union for address_space64 and ext_address_space64

From: Jiang Liu
Date: Wed Jan 07 2015 - 21:35:00 EST


From: Thomas Gleixner <tglx@xxxxxxxxxxxxx>

address_space64 and ext_address_space64 share substracts just at
different offsets. To unify the parsing functions implement the two
structs as unions of their substructs, so we can extract the shared
data.

Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx>
Signed-off-by: Jiang Liu <jiang.liu@xxxxxxxxxxxxxxx>
---
include/acpi/acrestyp.h | 49 ++++++++++++++++++++++++++++++++++-------------
1 file changed, 36 insertions(+), 13 deletions(-)

diff --git a/include/acpi/acrestyp.h b/include/acpi/acrestyp.h
index eb760ca0b2e0..307d5b2605c8 100644
--- a/include/acpi/acrestyp.h
+++ b/include/acpi/acrestyp.h
@@ -326,23 +326,46 @@ struct acpi_resource_address32 {
struct acpi_resource_source resource_source;
};

-struct acpi_resource_address64 {
- ACPI_RESOURCE_ADDRESS_COMMON u64 granularity;
- u64 minimum;
- u64 maximum;
- u64 translation_offset;
+#define ACPI_RESOURCE_ADDRESS64_COMMON \
+ u64 granularity; \
+ u64 minimum; \
+ u64 maximum; \
+ u64 translation_offset; \
u64 address_length;
- struct acpi_resource_source resource_source;
+
+struct acpi_resource_address64_common {
+ACPI_RESOURCE_ADDRESS64_COMMON};
+
+struct acpi_resource_address64 {
+ union {
+ struct {
+ ACPI_RESOURCE_ADDRESS_COMMON
+ ACPI_RESOURCE_ADDRESS64_COMMON
+ struct acpi_resource_source resource_source;
+ };
+ struct {
+ struct acpi_resource_address base;
+ struct acpi_resource_address64_common addr;
+ struct acpi_resource_source resource_source;
+ } common;
+ };
};

struct acpi_resource_extended_address64 {
- ACPI_RESOURCE_ADDRESS_COMMON u8 revision_ID;
- u64 granularity;
- u64 minimum;
- u64 maximum;
- u64 translation_offset;
- u64 address_length;
- u64 type_specific;
+ union {
+ struct {
+ ACPI_RESOURCE_ADDRESS_COMMON
+ u8 revision_ID;
+ ACPI_RESOURCE_ADDRESS64_COMMON
+ u64 type_specific;
+ };
+ struct {
+ struct acpi_resource_address base;
+ u8 revision_ID;
+ struct acpi_resource_address64_common addr;
+ u64 type_specific;
+ } common;
+ };
};

struct acpi_resource_extended_irq {
--
1.7.10.4

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/