Index: arch/ia32/include/acpi/madt.h
===================================================================
--- arch/ia32/include/acpi/madt.h	(revision 10a2e2286c964c27a26a6a74e033a32fa0c92749)
+++ arch/ia32/include/acpi/madt.h	(revision 47d78c6b7e84f7a6010baa23b8d356f10ea71f3f)
@@ -31,12 +31,5 @@
 
 #include <arch/acpi/acpi.h>
-
-/* Multiple APIC Description Table */
-struct acpi_madt {
-	struct acpi_sdt_header header;
-	__u32 l_apic_address;
-	__u32 flags;
-	__u8  apic_strucure[];
-} __attribute__ ((packed));
+#include <arch/smp/apic.h>
 
 #define	MADT_L_APIC			0
@@ -52,9 +45,21 @@
 #define MADT_RESERVED_SKIP_END		127
 #define MADT_RESERVED_OEM_BEGIN		128
-#define MADT_RESERVED_OEM_END		255
+
+struct madt_apic_header {
+	__u8 type;
+	__u8 length;
+} __attribute__ ((packed));
+
+
+/* Multiple APIC Description Table */
+struct acpi_madt {
+	struct acpi_sdt_header header;
+	__u32 l_apic_address;
+	__u32 flags;
+	struct madt_apic_header apic_header[];
+} __attribute__ ((packed));
 
 struct madt_l_apic {
-	__u8 type;
-	__u8 length;
+	struct madt_apic_header header;
 	__u8 acpi_id;
 	__u8 apic_id;
@@ -63,6 +68,5 @@
 
 struct madt_io_apic {
-	__u8 type;
-	__u8 length;
+	struct madt_apic_header header;
 	__u8 io_apic_id;
 	__u8 reserved;
@@ -72,6 +76,5 @@
 
 struct madt_intr_src_ovrd {
-	__u8 type;
-	__u8 length;
+	struct madt_apic_header header;
 	__u8 bus;
 	__u8 source;
@@ -81,6 +84,5 @@
 
 struct madt_nmi_src {
-	__u8 type;
-	__u8 length;
+	struct madt_apic_header header;
 	__u16 flags;
 	__u32 global_intr;
@@ -88,6 +90,5 @@
 
 struct madt_l_apic_nmi {
-	__u8 type;
-	__u8 length;
+	struct madt_apic_header header;
 	__u8 acpi_id;
 	__u16 flags;
@@ -96,6 +97,5 @@
 
 struct madt_l_apic_addr_ovrd {
-	__u8 type;
-	__u8 length;
+	struct madt_apic_header header;
 	__u16 reserved;
 	__u64 l_apic_address;
@@ -103,6 +103,5 @@
 
 struct madt_io_sapic {
-	__u8 type;
-	__u8 length;
+	struct madt_apic_header header;
 	__u8 io_apic_id;
 	__u8 reserved;
@@ -112,6 +111,5 @@
 
 struct madt_l_sapic {
-	__u8 type;
-	__u8 length;
+	struct madt_apic_header header;
 	__u8 acpi_id;
 	__u8 sapic_id;
@@ -124,6 +122,5 @@
 
 struct madt_platform_intr_src {
-	__u8 type;
-	__u8 length;
+	struct madt_apic_header header;
 	__u16 flags;
 	__u8 intr_type;
@@ -137,3 +134,5 @@
 extern struct acpi_madt *acpi_madt;
 
+extern void acpi_madt_parse(void);
+
 #endif /* __MADT_H__ */
