WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-changelog

[Xen-changelog] [xen-unstable] [HVM] ACPI: Clean up table definitions, m

To: xen-changelog@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-changelog] [xen-unstable] [HVM] ACPI: Clean up table definitions, move under hvmloader/
From: Xen patchbot-unstable <patchbot-unstable@xxxxxxxxxxxxxxxxxxx>
Date: Tue, 31 Oct 2006 17:40:17 +0000
Delivery-date: Thu, 02 Nov 2006 13:33:51 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
List-help: <mailto:xen-changelog-request@lists.xensource.com?subject=help>
List-id: BK change log <xen-changelog.lists.xensource.com>
List-post: <mailto:xen-changelog@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-changelog>, <mailto:xen-changelog-request@lists.xensource.com?subject=unsubscribe>
Reply-to: xen-devel@xxxxxxxxxxxxxxxxxxx
Sender: xen-changelog-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User kfraser@xxxxxxxxxxxxxxxxxxxxx
# Node ID 1bf4f15c5141edb20bddacc09ec64db550236e05
# Parent  15b5cc51db30383648375c3517879b7b623c34ca
[HVM] ACPI: Clean up table definitions, move under hvmloader/
directory pending tighter integration of table generation
into hvmloader. This patch also includes the TPM TIS SSDT
generator from Stefan Berger at IBM.

Signed-off-by: Keir Fraser <keir@xxxxxxxxxxxxx>
---
 tools/firmware/acpi/Makefile                  |   68 ---
 tools/firmware/acpi/README                    |   22 -
 tools/firmware/acpi/acpi2_0.h                 |  331 ----------------
 tools/firmware/acpi/acpi_build.c              |  232 -----------
 tools/firmware/acpi/acpi_dsdt.asl             |  521 --------------------------
 tools/firmware/acpi/acpi_dsdt.c               |  300 --------------
 tools/firmware/acpi/acpi_facs.c               |   72 ---
 tools/firmware/acpi/acpi_facs.h               |   32 -
 tools/firmware/acpi/acpi_fadt.c               |  193 ---------
 tools/firmware/acpi/acpi_fadt.h               |  166 --------
 tools/firmware/acpi/acpi_gen.c                |   53 --
 tools/firmware/acpi/acpi_madt.c               |   68 ---
 tools/firmware/acpi/acpi_madt.h               |   44 --
 tools/firmware/acpi/acpi_rsdt.c               |   68 ---
 tools/firmware/Makefile                       |    1 
 tools/firmware/hvmloader/Makefile             |   11 
 tools/firmware/hvmloader/acpi/Makefile        |   63 +++
 tools/firmware/hvmloader/acpi/README          |   24 +
 tools/firmware/hvmloader/acpi/acpi2_0.h       |  324 ++++++++++++++++
 tools/firmware/hvmloader/acpi/build.c         |  241 ++++++++++++
 tools/firmware/hvmloader/acpi/dsdt.asl        |  521 ++++++++++++++++++++++++++
 tools/firmware/hvmloader/acpi/dsdt.c          |  300 ++++++++++++++
 tools/firmware/hvmloader/acpi/gen.c           |   53 ++
 tools/firmware/hvmloader/acpi/static_tables.c |  184 +++++++++
 tools/firmware/hvmloader/acpi_madt.c          |  176 +++-----
 tools/firmware/hvmloader/acpi_ssdt_tpm.asl    |   29 +
 tools/firmware/hvmloader/acpi_ssdt_tpm.h      |   25 +
 tools/firmware/hvmloader/acpi_utils.c         |  207 ++++++++++
 tools/firmware/hvmloader/acpi_utils.h         |   36 +
 tools/firmware/hvmloader/hvmloader.c          |    9 
 tools/firmware/hvmloader/util.c               |    2 
 31 files changed, 2098 insertions(+), 2278 deletions(-)

diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/Makefile
--- a/tools/firmware/Makefile   Tue Oct 31 11:44:47 2006 +0000
+++ b/tools/firmware/Makefile   Tue Oct 31 12:42:50 2006 +0000
@@ -9,7 +9,6 @@ SUBDIRS :=
 SUBDIRS :=
 SUBDIRS += rombios
 SUBDIRS += vgabios
-SUBDIRS += acpi
 SUBDIRS += vmxassist
 SUBDIRS += hvmloader
 
diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/Makefile
--- a/tools/firmware/hvmloader/Makefile Tue Oct 31 11:44:47 2006 +0000
+++ b/tools/firmware/hvmloader/Makefile Tue Oct 31 12:42:50 2006 +0000
@@ -40,11 +40,14 @@ CFLAGS  += $(DEFINES) -I. $(XENINC) -fno
 CFLAGS  += $(DEFINES) -I. $(XENINC) -fno-builtin -O2 -msoft-float
 LDFLAGS  = -nostdlib -Wl,-N -Wl,-Ttext -Wl,$(LOADADDR)
 
-SRCS = hvmloader.c acpi_madt.c mp_tables.c util.c smbios.c
+SRCS = hvmloader.c acpi_madt.c mp_tables.c util.c smbios.c acpi_utils.c
 OBJS = $(patsubst %.c,%.o,$(SRCS))
 
 .PHONY: all
 all: hvmloader
+
+acpi/acpi.bin:
+       $(MAKE) -C acpi
 
 hvmloader: roms.h $(SRCS)
        $(CC) $(CFLAGS) -c $(SRCS)
@@ -52,15 +55,15 @@ hvmloader: roms.h $(SRCS)
        $(OBJCOPY) hvmloader.tmp hvmloader
        rm -f hvmloader.tmp
 
-roms.h:        ../rombios/BIOS-bochs-latest ../vgabios/VGABIOS-lgpl-latest.bin 
../vgabios/VGABIOS-lgpl-latest.cirrus.bin ../vmxassist/vmxassist.bin 
../acpi/acpi.bin
+roms.h:        ../rombios/BIOS-bochs-latest ../vgabios/VGABIOS-lgpl-latest.bin 
../vgabios/VGABIOS-lgpl-latest.cirrus.bin ../vmxassist/vmxassist.bin 
acpi/acpi.bin
        sh ./mkhex rombios ../rombios/BIOS-bochs-latest > roms.h
        sh ./mkhex vgabios_stdvga ../vgabios/VGABIOS-lgpl-latest.bin >> roms.h
        sh ./mkhex vgabios_cirrusvga ../vgabios/VGABIOS-lgpl-latest.cirrus.bin 
>> roms.h
        sh ./mkhex vmxassist ../vmxassist/vmxassist.bin >> roms.h
-       sh ./mkhex acpi ../acpi/acpi.bin >> roms.h
+       sh ./mkhex acpi acpi/acpi.bin >> roms.h
 
 .PHONY: clean
 clean:
        rm -f roms.h acpi.h
        rm -f hvmloader hvmloader.tmp hvmloader.o $(OBJS)
-
+       $(MAKE) -C acpi clean
diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/acpi_madt.c
--- a/tools/firmware/hvmloader/acpi_madt.c      Tue Oct 31 11:44:47 2006 +0000
+++ b/tools/firmware/hvmloader/acpi_madt.c      Tue Oct 31 12:42:50 2006 +0000
@@ -18,9 +18,9 @@
  * Place - Suite 330, Boston, MA 02111-1307 USA.
  */
 
-#include "../acpi/acpi2_0.h"
-#include "../acpi/acpi_madt.h"
+#include "acpi/acpi2_0.h"
 #include "util.h"
+#include "acpi_utils.h"
 #include <xen/hvm/hvm_info_table.h>
 
 #define NULL ((void*)0)
@@ -29,160 +29,134 @@ static struct hvm_info_table *table = NU
 
 static int validate_hvm_info(struct hvm_info_table *t)
 {
-       char signature[] = "HVM INFO";
-       uint8_t *ptr = (uint8_t *)t;
-       uint8_t sum = 0;
-       int i;
+    char signature[] = "HVM INFO";
+    uint8_t *ptr = (uint8_t *)t;
+    uint8_t sum = 0;
+    int i;
 
-       /* strncmp(t->signature, "HVM INFO", 8) */
-       for (i = 0; i < 8; i++) {
-               if (signature[i] != t->signature[i]) {
-                       puts("Bad hvm info signature\n");
-                       return 0;
-               }
-       }
+    /* strncmp(t->signature, "HVM INFO", 8) */
+    for (i = 0; i < 8; i++) {
+        if (signature[i] != t->signature[i]) {
+            puts("Bad hvm info signature\n");
+            return 0;
+        }
+    }
 
-       for (i = 0; i < t->length; i++)
-               sum += ptr[i];
+    for (i = 0; i < t->length; i++)
+        sum += ptr[i];
 
-       return (sum == 0);
+    return (sum == 0);
 }
 
 /* xc_vmx_builder wrote hvm info at 0x9F800. Return it. */
 struct hvm_info_table *
 get_hvm_info_table(void)
 {
-       struct hvm_info_table *t;
+    struct hvm_info_table *t;
 
-       if (table != NULL)
-               return table;
+    if (table != NULL)
+        return table;
 
-       t = (struct hvm_info_table *)HVM_INFO_PADDR;
+    t = (struct hvm_info_table *)HVM_INFO_PADDR;
 
-       if (!validate_hvm_info(t)) {
-               puts("Bad hvm info table\n");
-               return NULL;
-       }
+    if (!validate_hvm_info(t)) {
+        puts("Bad hvm info table\n");
+        return NULL;
+    }
 
-       table = t;
+    table = t;
 
-       return table;
+    return table;
 }
 
 int
 get_vcpu_nr(void)
 {
-       struct hvm_info_table *t = get_hvm_info_table();
-       return (t ? t->nr_vcpus : 1); /* default 1 vcpu */
+    struct hvm_info_table *t = get_hvm_info_table();
+    return (t ? t->nr_vcpus : 1); /* default 1 vcpu */
 }
 
 int
 get_acpi_enabled(void)
 {
-       struct hvm_info_table *t = get_hvm_info_table();
-       return (t ? t->acpi_enabled : 0); /* default no acpi */
+    struct hvm_info_table *t = get_hvm_info_table();
+    return (t ? t->acpi_enabled : 0); /* default no acpi */
 }
 
 
 static void *
 acpi_madt_get_madt(unsigned char *acpi_start)
 {
-       ACPI_2_0_RSDP *rsdp=NULL;
-       ACPI_2_0_RSDT *rsdt=NULL;
-       ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE *madt;
+    struct acpi_20_rsdt *rsdt;
+    struct acpi_20_madt *madt;
 
-       rsdp = (ACPI_2_0_RSDP *)(acpi_start + sizeof(ACPI_2_0_FACS));
-       if (rsdp->Signature != ACPI_2_0_RSDP_SIGNATURE) {
-               puts("Bad RSDP signature\n");
-               return NULL;
-       }
+    rsdt = acpi_rsdt_get(acpi_start);
+    if (rsdt == NULL)
+        return NULL;
 
-       rsdt= (ACPI_2_0_RSDT *)
-               (acpi_start + rsdp->RsdtAddress - ACPI_PHYSICAL_ADDRESS);
-       if (rsdt->Header.Signature != ACPI_2_0_RSDT_SIGNATURE) {
-               puts("Bad RSDT signature\n");
-               return NULL;
-       }
+    madt = (struct acpi_20_madt *)(acpi_start + rsdt->entry[1] -
+                                   ACPI_PHYSICAL_ADDRESS);
+    if (madt->header.header.signature != ACPI_2_0_MADT_SIGNATURE) {
+        puts("Bad MADT signature \n");
+        return NULL;
+    }
 
-       madt = (ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE *)
-               ( acpi_start+ rsdt->Entry[1] - ACPI_PHYSICAL_ADDRESS);
-       if (madt->Header.Header.Signature !=
-           ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE) {
-               puts("Bad MADT signature \n");
-               return NULL;
-       }
-
-       return madt;
-}
-
-static void
-set_checksum(void *start, int checksum_offset, int len)
-{
-       unsigned char sum = 0;
-       unsigned char *ptr;
-
-       ptr = start;
-       ptr[checksum_offset] = 0;
-       while (len--)
-               sum += *ptr++;
-
-       ptr = start;
-       ptr[checksum_offset] = -sum;
+    return madt;
 }
 
 static int
 acpi_madt_set_local_apics(
-       int nr_vcpu,
-       ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE *madt)
+    int nr_vcpu,
+    struct acpi_20_madt *madt)
 {
-       int i;
+    int i;
 
-       if ((nr_vcpu > MAX_VIRT_CPUS) || (nr_vcpu < 0) || !madt)
-               return -1;
+    if ((nr_vcpu > MAX_VIRT_CPUS) || (nr_vcpu < 0) || !madt)
+        return -1;
 
-       for (i = 0; i < nr_vcpu; i++) {
-               madt->LocalApic[i].Type            = ACPI_PROCESSOR_LOCAL_APIC;
-               madt->LocalApic[i].Length          = sizeof 
(ACPI_LOCAL_APIC_STRUCTURE);
-               madt->LocalApic[i].AcpiProcessorId = i;
-               madt->LocalApic[i].ApicId          = i;
-               madt->LocalApic[i].Flags           = 1;
-       }
+    for (i = 0; i < nr_vcpu; i++) {
+        madt->lapic[i].type    = ACPI_PROCESSOR_LOCAL_APIC;
+        madt->lapic[i].length  = sizeof(struct acpi_20_madt_lapic);
+        madt->lapic[i].acpi_processor_id = i;
+        madt->lapic[i].apic_id = i;
+        madt->lapic[i].flags   = 1;
+    }
 
-       madt->Header.Header.Length =
-               sizeof(ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE) -
-               (MAX_VIRT_CPUS - nr_vcpu)* sizeof(ACPI_LOCAL_APIC_STRUCTURE);
+    madt->header.header.length =
+        sizeof(struct acpi_20_madt) -
+        (MAX_VIRT_CPUS - nr_vcpu) * sizeof(struct acpi_20_madt_lapic);
 
-       return 0;
+    return 0;
 }
 
 #define FIELD_OFFSET(TYPE,Field) ((unsigned int)(&(((TYPE *) 0)->Field)))
 
 int acpi_madt_update(unsigned char *acpi_start)
 {
-       int rc;
-       ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE *madt;
+    int rc;
+    struct acpi_20_madt *madt;
 
-       madt = acpi_madt_get_madt(acpi_start);
-       if (!madt)
-               return -1;
+    madt = acpi_madt_get_madt(acpi_start);
+    if (!madt)
+        return -1;
 
-       rc = acpi_madt_set_local_apics(get_vcpu_nr(), madt);
-       if (rc != 0)
-               return rc;
+    rc = acpi_madt_set_local_apics(get_vcpu_nr(), madt);
+    if (rc != 0)
+        return rc;
 
-       set_checksum(
-               madt, FIELD_OFFSET(ACPI_TABLE_HEADER, Checksum),
-               madt->Header.Header.Length);
+    set_checksum(
+        madt, FIELD_OFFSET(struct acpi_header, checksum),
+        madt->header.header.length);
 
-       return 0;
+    return 0;
 }
 
 /*
  * Local variables:
- *  c-file-style: "linux"
- *  indent-tabs-mode: t
- *  c-indent-level: 8
- *  c-basic-offset: 8
- *  tab-width: 8
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
  * End:
  */
diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/hvmloader.c
--- a/tools/firmware/hvmloader/hvmloader.c      Tue Oct 31 11:44:47 2006 +0000
+++ b/tools/firmware/hvmloader/hvmloader.c      Tue Oct 31 12:42:50 2006 +0000
@@ -22,9 +22,10 @@
  * Place - Suite 330, Boston, MA 02111-1307 USA.
  */
 #include "roms.h"
-#include "../acpi/acpi2_0.h"  /* for ACPI_PHYSICAL_ADDRESS */
+#include "acpi/acpi2_0.h"  /* for ACPI_PHYSICAL_ADDRESS */
 #include "hypercall.h"
 #include "util.h"
+#include "acpi_utils.h"
 #include "smbios.h"
 #include <xen/version.h>
 #include <xen/hvm/params.h>
@@ -195,12 +196,18 @@ main(void)
                puts("Loading ACPI ...\n");
                acpi_madt_update((unsigned char *) acpi);
                if (ACPI_PHYSICAL_ADDRESS+sizeof(acpi) <= 0xF0000) {
+                       unsigned char *freemem = (unsigned char *)
+                                (ACPI_PHYSICAL_ADDRESS + sizeof(acpi));
                        /*
                         * Make sure acpi table does not overlap rombios
                         * currently acpi less than 8K will be OK.
                         */
                         memcpy((void *)ACPI_PHYSICAL_ADDRESS, acpi,
                                                                sizeof(acpi));
+                       acpi_update((unsigned char *)ACPI_PHYSICAL_ADDRESS,
+                                   sizeof(acpi),
+                                   (unsigned char *)0xF0000,
+                                   &freemem);
                }
        }
 
diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/util.c
--- a/tools/firmware/hvmloader/util.c   Tue Oct 31 11:44:47 2006 +0000
+++ b/tools/firmware/hvmloader/util.c   Tue Oct 31 12:42:50 2006 +0000
@@ -18,7 +18,7 @@
  * Place - Suite 330, Boston, MA 02111-1307 USA.
  */
 
-#include "../acpi/acpi2_0.h"  /* for ACPI_PHYSICAL_ADDRESS */
+#include "acpi/acpi2_0.h"  /* for ACPI_PHYSICAL_ADDRESS */
 #include "util.h"
 #include <stdint.h>
 
diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/acpi/Makefile
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/firmware/hvmloader/acpi/Makefile    Tue Oct 31 12:42:50 2006 +0000
@@ -0,0 +1,63 @@
+#
+# Copyright (c) 2004, Intel Corporation.
+#
+# This program is free software; you can redistribute it and/or modify it
+# under the terms and conditions of the GNU General Public License,
+# version 2, as published by the Free Software Foundation.
+#
+# This program is distributed in the hope it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+# more details.
+#
+# You should have received a copy of the GNU General Public License along with
+# this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+# Place - Suite 330, Boston, MA 02111-1307 USA.
+#
+
+XEN_ROOT = ../../../..
+include $(XEN_ROOT)/tools/Rules.mk
+
+HOSTCFLAGS += -I. -I.. -I$(XEN_ROOT)/tools/libxc
+
+C_SRC = build.c dsdt.c gen.c static_tables.c
+H_SRC = $(wildcard *.h)
+ACPI_GEN = acpigen
+ACPI_BIN = acpi.bin
+
+IASL_VER = acpica-unix-20050513
+IASL_URL = 
http://developer.intel.com/technology/iapc/acpi/downloads/$(IASL_VER).tar.gz
+
+vpath iasl $(PATH)
+all:$(ACPI_BIN)
+
+dsdt.c: dsdt.asl
+       $(MAKE) iasl
+       iasl -tc dsdt.asl
+       mv dsdt.hex dsdt.c
+       echo "int DsdtLen=sizeof(AmlCode);" >> dsdt.c
+       rm *.aml
+
+iasl:
+       @echo
+       @echo "ACPI ASL compiler(iasl) is needed"
+       @echo "Download Intel ACPI CA"
+       @echo "If wget failed, please download and compile manually from"
+       @echo "http://developer.intel.com/technology/iapc/acpi/downloads.htm";
+       @echo 
+       wget $(IASL_URL)
+       tar xzf $(IASL_VER).tar.gz
+       make -C $(IASL_VER)/compiler
+       $(INSTALL_PROG) $(IASL_VER)/compiler/iasl /usr/bin/iasl
+
+$(ACPI_GEN): $(C_SRC) $(H_SRC)
+       $(HOSTCC) -o $(ACPI_GEN) $(HOSTCFLAGS) $(C_SRC)
+
+$(ACPI_BIN): $(ACPI_GEN)
+       ./$(ACPI_GEN) $(ACPI_BIN)
+
+clean:
+       rm -rf *.o $(ACPI_GEN) $(ACPI_BIN) $(IASL_VER) 
+       rm -rf  $(IASL_VER).tar.gz
+
+install: all
diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/acpi/README
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/firmware/hvmloader/acpi/README      Tue Oct 31 12:42:50 2006 +0000
@@ -0,0 +1,24 @@
+ACPI Table for domain firmware
+
+
+INSTALL
+-----------------
+Simply make is OK.
+# make 
+
+
+Note on DSDT Table
+------------------
+DSDT table source code is acpi_dsdt.asl
+It is already compiled and the output is acpi_dsdt.c
+Usually, user is not expected to change the acpi_dsdt.asl.
+In case that the acpi_dsdt.asl need to be updated, please 
+Follow the instruction:
+
+# make acpi_dsdt.c
+
+Note:
+DSDT compiler "iasl" is needed. By default, it will be downloaded 
+using wget in Makefile. if it failed, please download manually from 
+http://developer.intel.com/technology/iapc/acpi/downloads.htm. 
+then compile and install iasl
diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/acpi/acpi2_0.h
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/firmware/hvmloader/acpi/acpi2_0.h   Tue Oct 31 12:42:50 2006 +0000
@@ -0,0 +1,324 @@
+/*
+ * Copyright (c) 2004, Intel Corporation.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307 USA.
+ *
+ */
+#ifndef _ACPI_2_0_H_
+#define _ACPI_2_0_H_
+
+typedef unsigned char  uint8_t;
+typedef   signed char  int8_t;
+typedef unsigned short uint16_t;
+typedef   signed short int16_t;
+typedef unsigned int   uint32_t;
+typedef   signed int   int32_t;
+#ifdef __i386__
+typedef unsigned long long uint64_t;
+typedef   signed long long int64_t;
+#else
+typedef unsigned long uint64_t;
+typedef   signed long int64_t;
+#endif
+
+#include <xen/xen.h>
+
+#pragma pack (1)
+
+/*
+ * Common ACPI header.
+ */
+struct acpi_header {
+    uint32_t signature;
+    uint32_t length;
+    uint8_t  revision;
+    uint8_t  checksum;
+    uint8_t  oem_id[6];
+    uint64_t oem_table_id;
+    uint32_t oem_revision;
+    uint32_t creator_id;
+    uint32_t creator_revision;
+};
+
+#define ACPI_OEM_ID             {'I','N','T','E','L',' '}
+#define ACPI_OEM_TABLE_ID       0x544244   /* "TBD" */
+#define ACPI_OEM_REVISION       0x00000002
+#define ACPI_CREATOR_ID         0x00       /* TBD */
+#define ACPI_CREATOR_REVISION   0x00000002
+
+/*
+ * ACPI 2.0 Generic Address Space definition.
+ */
+struct acpi_20_generic_address {
+    uint8_t  address_space_id;
+    uint8_t  register_bit_width;
+    uint8_t  register_bit_offset;
+    uint8_t  reserved;
+    uint64_t address;
+};
+
+/*
+ * Generic Address Space Address IDs.
+ */
+#define ACPI_SYSTEM_MEMORY 0
+#define ACPI_SYSTEM_IO 1
+#define ACPI_PCI_CONFIGURATION_SPACE 2
+#define ACPI_EMBEDDED_CONTROLLER 3
+#define ACPI_SMBUS 4
+#define ACPI_FUNCTIONAL_FIXED_HARDWARE 0x7F
+
+/*
+ * Root System Description Pointer Structure in ACPI 1.0.
+ */
+struct acpi_10_rsdp {
+    uint64_t signature;
+    uint8_t  checksum;
+    uint8_t  oem_id[6];
+    uint8_t  reserved;
+    uint32_t rsdt_address;
+};
+
+/*
+ * Root System Description Pointer Structure.
+ */
+struct acpi_20_rsdp {
+    uint64_t signature;
+    uint8_t  checksum;
+    uint8_t  oem_id[6];
+    uint8_t  revision;
+    uint32_t rsdt_address;
+    uint32_t length;
+    uint64_t xsdt_address;
+    uint8_t  extended_checksum;
+    uint8_t  reserved[3];
+};
+
+/*
+ * The maximum number of entrys in RSDT or XSDT.
+ */
+#define ACPI_MAX_NUM_TABLES 5
+
+/*
+ * Root System Description Table (RSDT).
+ */
+struct acpi_20_rsdt {
+    struct acpi_header header;
+    uint32_t entry[ACPI_MAX_NUM_TABLES];
+};
+#define ACPI_2_0_RSDT_REVISION 0x01
+
+/*
+ * Extended System Description Table (XSDT).
+ */
+struct acpi_20_xsdt {
+    struct acpi_header header;
+    uint64_t entry[ACPI_MAX_NUM_TABLES];
+};
+#define ACPI_2_0_XSDT_REVISION 0x01
+
+/*
+ * Fixed ACPI Description Table Structure (FADT).
+ */
+struct acpi_20_fadt {
+    struct acpi_header header;
+    uint32_t firmware_ctrl;
+    uint32_t dsdt;
+    uint8_t  reserved0;
+    uint8_t  preferred_pm_profile;
+    uint16_t sci_int;
+    uint32_t smi_cmd;
+    uint8_t  acpi_enable;
+    uint8_t  acpi_disable;
+    uint8_t  s4bios_req;
+    uint8_t  pstate_cnt;
+    uint32_t pm1a_evt_blk;
+    uint32_t pm1b_evt_blk;
+    uint32_t pm1a_cnt_blk;
+    uint32_t pm1b_cnt_blk;
+    uint32_t pm2_cnt_blk;
+    uint32_t pm_tmr_blk;
+    uint32_t gpe0_blk;
+    uint32_t gpe1_blk;
+    uint8_t  pm1_evt_len;
+    uint8_t  pm1_cnt_len;
+    uint8_t  pm2_cnt_len;
+    uint8_t  pm_tmr_len;
+    uint8_t  gpe0_blk_len;
+    uint8_t  gpe1_blk_len;
+    uint8_t  gpe1_base;
+    uint8_t  cst_cnt;
+    uint16_t p_lvl2_lat;
+    uint16_t p_lvl3_lat;
+    uint16_t flush_size;
+    uint16_t flush_stride;
+    uint8_t  duty_offset;
+    uint8_t  duty_width;
+    uint8_t  day_alrm;
+    uint8_t  mon_alrm;
+    uint8_t  century;
+    uint16_t iapc_boot_arch;
+    uint8_t  reserved1;
+    uint32_t flags;
+    struct acpi_20_generic_address reset_reg;
+    uint8_t  reset_value;
+    uint8_t  reserved2[3];
+    uint64_t x_firmware_ctrl;
+    uint64_t x_dsdt;
+    struct acpi_20_generic_address x_pm1a_evt_blk;
+    struct acpi_20_generic_address x_pm1b_evt_blk;
+    struct acpi_20_generic_address x_pm1a_cnt_blk;
+    struct acpi_20_generic_address x_pm1b_cnt_blk;
+    struct acpi_20_generic_address x_pm2_cnt_blk;
+    struct acpi_20_generic_address x_pm_tmr_blk;
+    struct acpi_20_generic_address x_gpe0_blk;
+    struct acpi_20_generic_address x_gpe1_blk;
+};
+#define ACPI_2_0_FADT_REVISION 0x03
+
+/*
+ * FADT Boot Architecture Flags.
+ */
+#define ACPI_LEGACY_DEVICES (1 << 0)
+#define ACPI_8042           (1 << 1)
+
+/*
+ * FADT Fixed Feature Flags.
+ */
+#define ACPI_WBINVD         (1 << 0)
+#define ACPI_WBINVD_FLUSH   (1 << 1)
+#define ACPI_PROC_C1        (1 << 2)
+#define ACPI_P_LVL2_UP      (1 << 3)
+#define ACPI_PWR_BUTTON     (1 << 4)
+#define ACPI_SLP_BUTTON     (1 << 5)
+#define ACPI_FIX_RTC        (1 << 6)
+#define ACPI_RTC_S4         (1 << 7)
+#define ACPI_TMR_VAL_EXT    (1 << 8)
+#define ACPI_DCK_CAP        (1 << 9)
+#define ACPI_RESET_REG_SUP  (1 << 10)
+#define ACPI_SEALED_CASE    (1 << 11)
+#define ACPI_HEADLESS       (1 << 12)
+#define ACPI_CPU_SW_SLP     (1 << 13)
+
+/*
+ * Firmware ACPI Control Structure (FACS).
+ */
+struct acpi_20_facs {
+    uint32_t signature;
+    uint32_t length;
+    uint32_t hardware_signature;
+    uint32_t firmware_waking_vector;
+    uint32_t global_lock;
+    uint32_t flags;
+    uint64_t x_firmware_waking_vector;
+    uint8_t  version;
+    uint8_t  reserved[31];
+};
+
+#define ACPI_2_0_FACS_VERSION 0x01
+
+/*
+ * Multiple APIC Description Table header definition (MADT).
+ */
+struct acpi_20_madt_header {
+    struct acpi_header header;
+    uint32_t lapic_addr;
+    uint32_t flags;
+};
+
+#define ACPI_2_0_MADT_REVISION 0x01
+
+/*
+ * Multiple APIC Flags.
+ */
+#define ACPI_PCAT_COMPAT (1 << 0)
+
+/*
+ * Multiple APIC Description Table APIC structure types.
+ */
+#define ACPI_PROCESSOR_LOCAL_APIC           0x00
+#define ACPI_IO_APIC                        0x01
+#define ACPI_INTERRUPT_SOURCE_OVERRIDE      0x02
+#define ACPI_NON_MASKABLE_INTERRUPT_SOURCE  0x03
+#define ACPI_LOCAL_APIC_NMI                 0x04
+#define ACPI_LOCAL_APIC_ADDRESS_OVERRIDE    0x05
+#define ACPI_IO_SAPIC                       0x06
+#define ACPI_PROCESSOR_LOCAL_SAPIC          0x07
+#define ACPI_PLATFORM_INTERRUPT_SOURCES     0x08
+
+/*
+ * APIC Structure Definitions.
+ */
+
+/*
+ * Processor Local APIC Structure Definition.
+ */
+struct acpi_20_madt_lapic {
+    uint8_t  type;
+    uint8_t  length;
+    uint8_t  acpi_processor_id;
+    uint8_t  apic_id;
+    uint32_t flags;
+};
+
+/*
+ * Local APIC Flags.  All other bits are reserved and must be 0.
+ */
+#define ACPI_LOCAL_APIC_ENABLED (1 << 0)
+
+/*
+ * IO APIC Structure.
+ */
+struct acpi_20_madt_ioapic {
+    uint8_t  type;
+    uint8_t  length;
+    uint8_t  ioapic_id;
+    uint8_t  reserved;
+    uint32_t ioapic_addr;
+    uint32_t gsi_base;
+};
+
+struct acpi_20_madt {
+    struct acpi_20_madt_header header;
+    struct acpi_20_madt_ioapic io_apic[1];
+    struct acpi_20_madt_lapic  lapic[32];
+};
+
+/*
+ * Table Signatures.
+ */
+#define ACPI_2_0_RSDP_SIGNATURE 0x2052545020445352LL /* "RSD PTR " */
+#define ACPI_2_0_FACS_SIGNATURE 0x53434146 /* "FACS" */
+#define ACPI_2_0_FADT_SIGNATURE 0x50434146 /* "FADT" */
+#define ACPI_2_0_MADT_SIGNATURE 0x43495041 /* "APIC" */
+#define ACPI_2_0_RSDT_SIGNATURE 0x54445352 /* "RSDT" */
+#define ACPI_2_0_XSDT_SIGNATURE 0x54445358 /* "XSDT" */
+
+#pragma pack ()
+
+#define ACPI_PHYSICAL_ADDRESS 0xEA000
+#define ACPI_TABLE_SIZE (4*1024)
+
+void AcpiBuildTable(uint8_t *buf);
+
+#endif /* _ACPI_2_0_H_ */
+
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/acpi/build.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/firmware/hvmloader/acpi/build.c     Tue Oct 31 12:42:50 2006 +0000
@@ -0,0 +1,241 @@
+/*
+ * Copyright (c) 2004, Intel Corporation.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307 USA.
+ *
+ */
+
+#include "acpi2_0.h"
+
+extern struct acpi_20_rsdp Rsdp;
+extern struct acpi_20_rsdt Rsdt;
+extern struct acpi_20_xsdt Xsdt;
+extern struct acpi_20_fadt Fadt;
+extern struct acpi_20_madt Madt;
+extern struct acpi_20_facs Facs;
+extern unsigned char *AmlCode;
+extern int DsdtLen;
+
+
+typedef struct _ACPI_TABLE_ALL{
+    struct acpi_20_rsdp *Rsdp;
+    struct acpi_20_rsdt *Rsdt;
+    struct acpi_20_xsdt *Xsdt;
+    struct acpi_20_fadt *Fadt;
+    struct acpi_20_madt *Madt;
+    struct acpi_20_facs *Facs;
+    unsigned char *Dsdt;
+    uint32_t RsdpOffset;
+    uint32_t RsdtOffset;
+    uint32_t XsdtOffset;
+    uint32_t FadtOffset;
+    uint32_t MadtOffset;
+    uint32_t FacsOffset;
+    uint32_t DsdtOffset;
+}ACPI_TABLE_ALL;
+
+static 
+void
+MemCopy(void* src, void* dst, int len){
+
+    uint8_t* src0=src;
+    uint8_t* dst0=dst; 
+
+    while(len--){
+        *(dst0++)=*(src0++);
+    }
+}
+
+static
+void
+SetCheckSum(
+    void*  Table, 
+    uint32_t ChecksumOffset,
+    uint32_t Length
+    )
+/*
+ * Routine Description:
+ *      Calculate Checksum and store the result in the checksum 
+ *     filed of the table      
+ *
+ * INPUT:
+ *     Table:          Start pointer of table
+ *     ChecksumOffset: Offset of checksum field in the table
+ *     Length:         Length of Table
+ */
+{
+    uint8_t Sum = 0;  
+    uint8_t *Ptr;
+
+    Ptr=Table;
+    Ptr[ChecksumOffset]=0;
+    while (Length--) {    
+        Sum = (uint8_t)(Sum + (*Ptr++));
+    }
+       
+    Ptr = Table;
+    Ptr[ChecksumOffset] = (uint8_t) (0xff - Sum + 1);
+}
+
+//
+//  FIELD_OFFSET - returns the byte offset to a field within a structure
+//
+#define FIELD_OFFSET(TYPE,Field) ((uint32_t)(&(((TYPE *) 0)->Field)))
+
+static
+void
+UpdateTable(
+    ACPI_TABLE_ALL *table
+    )
+/*
+ * Update the ACPI table:
+ *             fill in the actuall physical address of RSDT, XSDT, FADT, MADT, 
FACS
+ *             Caculate the checksum
+ */
+{
+    // RSDP Update     
+    table->Rsdp->rsdt_address = (uint32_t)(ACPI_PHYSICAL_ADDRESS+
+                                           table->RsdtOffset);
+    table->Rsdp->xsdt_address = (uint64_t)(ACPI_PHYSICAL_ADDRESS+
+                                           table->XsdtOffset);
+    SetCheckSum(table->Rsdp,
+                FIELD_OFFSET(struct acpi_10_rsdp, checksum),
+                sizeof(struct acpi_10_rsdp)
+        );
+    SetCheckSum(table->Rsdp,
+                FIELD_OFFSET(struct acpi_20_rsdp,
+                             extended_checksum),
+                sizeof(struct acpi_20_rsdp)
+        );
+
+       
+    //RSDT Update
+    table->Rsdt->entry[0] = (uint32_t)(ACPI_PHYSICAL_ADDRESS + 
+                                       table->FadtOffset);     
+    table->Rsdt->entry[1] = (uint32_t)(ACPI_PHYSICAL_ADDRESS + 
+                                       table->MadtOffset);
+    table->Rsdt->header.length = sizeof (struct acpi_header) +
+        2*sizeof(uint32_t);
+    SetCheckSum(table->Rsdt,
+                FIELD_OFFSET(struct acpi_header, checksum),
+                table->Rsdt->header.length
+        );     
+
+    //XSDT     Update
+    table->Xsdt->entry[0] = (uint64_t)(ACPI_PHYSICAL_ADDRESS +
+                                       table->FadtOffset);
+    table->Xsdt->entry[1] = (uint64_t)(ACPI_PHYSICAL_ADDRESS + 
+                                       table->MadtOffset);     
+    table->Xsdt->header.length = sizeof (struct acpi_header) + 
+        2*sizeof(uint64_t);
+    SetCheckSum(table->Xsdt,
+                FIELD_OFFSET(struct acpi_header, checksum),
+                table->Xsdt->header.length
+        );
+
+    // FADT Update
+    table->Fadt->dsdt = (uint32_t)(ACPI_PHYSICAL_ADDRESS + 
+                                   table->DsdtOffset); 
+    table->Fadt->x_dsdt = (uint64_t)(ACPI_PHYSICAL_ADDRESS + 
+                                     table->DsdtOffset);
+    table->Fadt->firmware_ctrl = (uint32_t)(ACPI_PHYSICAL_ADDRESS +
+                                            table->FacsOffset);
+    table->Fadt->x_firmware_ctrl = (uint64_t)(ACPI_PHYSICAL_ADDRESS + 
+                                              table->FacsOffset);      
+    SetCheckSum(table->Fadt,
+                FIELD_OFFSET(struct acpi_header, checksum),
+                sizeof(struct acpi_20_fadt)
+        );
+       
+    // MADT update
+    SetCheckSum(table->Madt,
+                FIELD_OFFSET(struct acpi_header, checksum),
+                sizeof(struct acpi_20_madt)
+        );
+}
+
+void
+AcpiBuildTable(uint8_t* buf)
+/*
+ * Copy all the ACPI table to buffer
+ * Buffer Layout:
+ *             FACS
+ *             RSDP
+ *             RSDT
+ *             XSDT
+ *             FADT
+ *             MADT
+ *             DSDT            
+ *
+ */            
+{
+    ACPI_TABLE_ALL table;
+    int offset=0;
+
+    // FACS: should be 64-bit alignment        
+    // so it is put at the start of buffer
+    // as the buffer is 64 bit alignment
+    table.FacsOffset = offset;
+    table.Facs = (struct acpi_20_facs *)(&buf[offset]);
+    MemCopy(&Facs, table.Facs, sizeof(struct acpi_20_facs));
+    offset += sizeof(struct acpi_20_facs);
+
+    // RSDP
+    table.RsdpOffset = offset;
+    table.Rsdp = (struct acpi_20_rsdp *)(&buf[offset]);
+    MemCopy(&Rsdp, table.Rsdp, sizeof(struct acpi_20_rsdp));
+    offset += sizeof(struct acpi_20_rsdp);
+
+    // RSDT
+    table.RsdtOffset = offset;
+    table.Rsdt = (struct acpi_20_rsdt *)(&buf[offset]);
+    MemCopy(&Rsdt, table.Rsdt, sizeof(struct acpi_20_rsdt));
+    offset += sizeof(struct acpi_20_rsdt);
+       
+    // XSDT
+    table.XsdtOffset = offset;
+    table.Xsdt = (struct acpi_20_xsdt *)(&buf[offset]);
+    MemCopy(&Xsdt, table.Xsdt, sizeof(struct acpi_20_xsdt));
+    offset += sizeof(struct acpi_20_xsdt);
+       
+    // FADT
+    table.FadtOffset = offset;
+    table.Fadt = (struct acpi_20_fadt *)(&buf[offset]);
+    MemCopy(&Fadt, table.Fadt, sizeof(struct acpi_20_fadt));
+    offset += sizeof(struct acpi_20_fadt);
+       
+    // MADT
+    table.MadtOffset = offset;
+    table.Madt = (struct acpi_20_madt*)(&buf[offset]);
+    MemCopy(&Madt, table.Madt, sizeof(struct acpi_20_madt));
+    offset += sizeof(struct acpi_20_madt);
+
+    // DSDT
+    table.DsdtOffset = offset;
+    table.Dsdt = (unsigned char *)(&buf[offset]);
+    MemCopy(&AmlCode, table.Dsdt, DsdtLen);
+    offset += DsdtLen; 
+       
+    UpdateTable(&table);
+}
+
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/acpi/dsdt.asl
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/firmware/hvmloader/acpi/dsdt.asl    Tue Oct 31 12:42:50 2006 +0000
@@ -0,0 +1,521 @@
+//**********************************************************************//
+//*
+//* Copyright (c) 2004, Intel Corporation.
+//*
+//* This program is free software; you can redistribute it and/or modify it
+//* under the terms and conditions of the GNU General Public License,
+//* version 2, as published by the Free Software Foundation.
+//*
+//* This program is distributed in the hope it will be useful, but WITHOUT
+//* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+//* FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+//* more details.
+//*
+//* You should have received a copy of the GNU General Public License along 
with
+//* this program; if not, write to the Free Software Foundation, Inc., 59 
Temple
+//* Place - Suite 330, Boston, MA 02111-1307 USA.
+
+//**
+//**  DSDT for Xen with Qemu device model
+//**
+//**
+
+DefinitionBlock ("DSDT.aml", "DSDT", 1, "INTEL","int-xen", 2006)
+{
+    Name (\PMBS, 0x0C00)
+    Name (\PMLN, 0x08)
+    Name (\IOB1, 0x00)
+    Name (\IOL1, 0x00)
+    Name (\APCB, 0xFEC00000)
+    Name (\APCL, 0x00010000)
+    Name (\PUID, 0x00)
+
+    Scope (\_PR)
+    {
+        Processor (CPU0, 0x00, 0x00000000, 0x00) {}
+        Processor (CPU1, 0x01, 0x00000000, 0x00) {}
+        Processor (CPU2, 0x02, 0x00000000, 0x00) {}
+        Processor (CPU3, 0x03, 0x00000000, 0x00) {}
+
+    }
+
+/* Poweroff support - ties in with qemu emulation */
+
+    Name (\_S5, Package (0x04)
+    {
+        0x07,
+        0x07,
+        0x00,
+        0x00
+    })
+
+
+    Name(PICD, 0)
+
+    Method(_PIC, 1) { 
+ 
+    Store(Arg0, PICD) 
+    }
+    Scope (\_SB)
+    {
+       /* Fix HCT test for 0x400 pci memory - need to report low 640 MB mem as 
motherboard resource            */
+
+       Device(MEM0) {
+           Name(_HID, EISAID("PNP0C02"))
+           Name(_CRS, ResourceTemplate() {
+           QWordMemory (ResourceConsumer, PosDecode, MinFixed, MaxFixed, 
Cacheable, ReadWrite,
+                    0x00000000,
+                    0x00000000,
+                    0x0009ffff,
+                    0x00000000,
+                    0x000a0000)
+           }
+           )
+       }
+
+       Device (PCI0)
+        {
+           Name (_HID, EisaId ("PNP0A03"))
+           Name (_UID, 0x00)
+           Name (_ADR, 0x00)
+           Name (_BBN, 0x00)
+           OperationRegion (PIRP, PCI_Config, 0x3c, 0x10)
+           Field(PIRP, ByteAcc, NoLock, Preserve){        
+          IRQ3,3,
+          IRQ5,5,
+          IRQ7,7,
+          IRQ9,9,
+          IRQA,10,
+          IRQB,11
+         }
+ 
+            Method (_CRS, 0, NotSerialized)
+            {
+          
+               Name (PRT0, ResourceTemplate ()
+                {
+         /* bus number is from 0 - 255*/
+                    WordBusNumber (ResourceConsumer, MinFixed, MaxFixed, 
SubDecode,
+                        0x0000,
+                        0x0000,
+                        0x00FF,
+                        0x0000,
+                        0x0100)
+                    IO (Decode16, 0x0CF8, 0x0CF8, 0x01, 0x08)
+                    WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, 
EntireRange,
+                        0x0000,
+                        0x0000,
+                        0x0CF7,
+                        0x0000,
+                        0x0CF8)
+                    WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, 
EntireRange,
+                        0x0000,
+                        0x0D00,
+                        0xFFFF,
+                        0x0000,
+                        0xF300)
+
+                /* reserve memory for pci devices */
+
+                    DWordMemory (ResourceConsumer, PosDecode, MinFixed, 
MaxFixed, Cacheable, ReadWrite,
+                        0x00000000,
+                        0xF0000000,
+                        0xF4FFFFFF,
+                        0x00000000,
+                        0x05000000)
+
+                })
+                Return (PRT0)
+            }
+       Name(BUFA, ResourceTemplate() {
+                IRQ(Level, ActiveLow, Shared) {
+                        3,4,5,6,7,10,11,12,14,15} 
+                }) 
+
+                Name(BUFB, Buffer(){
+                0x23, 0x00, 0x00, 0x18,
+                0x79, 0})
+
+                CreateWordField(BUFB, 0x01, IRQV)
+
+                Name(BUFC, Buffer(){
+                5, 7, 10, 11
+                 })
+                
+                CreateByteField(BUFC, 0x01, PIQA)
+                CreateByteField(BUFC, 0x01, PIQB)
+                CreateByteField(BUFC, 0x01, PIQC)
+                CreateByteField(BUFC, 0x01, PIQD)
+                
+                Device(LNKA)    {
+                Name(_HID, EISAID("PNP0C0F")) // PCI interrupt link
+                Name(_UID, 1)
+                Method(_STA, 0) {
+                               And(PIRA, 0x80, Local0)
+                        If(LEqual(Local0, 0x80)) {
+                                Return(0x09)   
+                                }
+                        Else {
+                                Return(0x0B) 
+                                }
+                        }
+
+                Method(_PRS) {
+
+                        Return(BUFA)
+                } // Method(_PRS)
+
+                Method(_DIS) {
+                               Or(PIRA, 0x80, PIRA)
+                }
+
+                Method(_CRS) {
+                        And(PIRB, 0x0f, Local0) 
+                        ShiftLeft(0x1, Local0, IRQV) 
+                        Return(BUFB) 
+                } 
+
+                Method(_SRS, 1) {
+                                CreateWordField(ARG0, 0x01, IRQ1) 
+                        FindSetRightBit(IRQ1, Local0) 
+                        Decrement(Local0) 
+                        Store(Local0, PIRA)
+                 } // Method(_SRS)
+        }
+
+        Device(LNKB){
+                Name(_HID, EISAID("PNP0C0F"))  
+                Name(_UID, 2)
+                Method(_STA, 0) {
+                               And(PIRB, 0x80, Local0)
+                        If(LEqual(Local0, 0x80)) {
+                                Return(0x09) 
+                                }
+                        Else {
+                                Return(0x0B) 
+                                }
+                        }
+
+                Method(_PRS) {
+                                Return(BUFA) 
+                } // Method(_PRS)
+
+                Method(_DIS) {
+
+                               Or(PIRB, 0x80, PIRB)
+                }
+
+                Method(_CRS) {
+                        And(PIRB, 0x0f, Local0) 
+                        ShiftLeft(0x1, Local0, IRQV) 
+                        Return(BUFB) 
+                } // Method(_CRS)
+
+                Method(_SRS, 1) {
+                        CreateWordField(ARG0, 0x01, IRQ1) 
+                        FindSetRightBit(IRQ1, Local0) 
+                        Decrement(Local0)
+                        Store(Local0, PIRB) 
+                 } // Method(_SRS)
+        }
+
+        Device(LNKC){
+                Name(_HID, EISAID("PNP0C0F")) // PCI interrupt link
+                Name(_UID, 3)
+                Method(_STA, 0) {
+                        And(PIRC, 0x80, Local0)
+                        If(LEqual(Local0, 0x80)) {
+                                Return(0x09) 
+                        }
+                        Else {
+                                Return(0x0B)
+                        }
+                }
+
+                Method(_PRS) { 
+                        Return(BUFA)
+                } // Method(_PRS)
+
+                Method(_DIS) {
+
+                               Or(PIRC, 0x80, PIRC)
+                }
+
+                Method(_CRS) {
+                        And(PIRC, 0x0f, Local0) 
+                        ShiftLeft(0x1, Local0, IRQV) 
+                        Return(BUFB) 
+                } // Method(_CRS)
+
+                Method(_SRS, 1) {
+                                CreateWordField(ARG0, 0x01, IRQ1) 
+                        FindSetRightBit(IRQ1, Local0) 
+                        Decrement(Local0) 
+                        Store(Local0, PIRC)
+                 } // Method(_SRS)
+        }
+
+        Device(LNKD) {
+                Name(_HID, EISAID("PNP0C0F"))  
+                Name(_UID, 4)
+                Method(_STA, 0) {
+                               And(PIRD, 0x80, Local0)
+                        If(LEqual(Local0, 0x80)) {
+                                Return(0x09) 
+                        }
+                        Else {
+                                Return(0x0B) 
+                        }
+                }
+
+                Method(_PRS) { 
+                        Return(BUFA) 
+                } // Method(_PRS)
+
+                Method(_DIS) {
+                               Or(PIRD, 0x80, PIRD)
+                }
+
+                Method(_CRS) {
+                        And(PIRD, 0x0f, Local0) 
+                        ShiftLeft(0x1, Local0, IRQV) 
+                        Return(BUFB) 
+                } // Method(_CRS)
+
+                Method(_SRS, 1) {
+                                CreateWordField(ARG0, 0x01, IRQ1) 
+                        FindSetRightBit(IRQ1, Local0) 
+                        Decrement(Local0) 
+                        Store(Local0, PIRD) 
+                 } // Method(_SRS)
+        }
+        Method(_PRT,0) {
+               If(PICD) {Return(PRTA)}  
+               Return (PRTP)  
+               } // end _PRT
+
+        Name(PRTP, Package() {
+                        // Slot 1, INTA - INTD
+                        Package(){0x0000ffff, 0, \_SB.PCI0.LNKA, 0},
+                        Package(){0x0000ffff, 1, \_SB.PCI0.LNKB, 0},
+                        Package(){0x0000ffff, 2, \_SB.PCI0.LNKC, 0},
+                        Package(){0x0000ffff, 3, \_SB.PCI0.LNKD, 0},
+
+                        // Slot 2, INTA - INTD
+                        Package(){0x0001ffff, 0, \_SB.PCI0.LNKB, 0},
+                        Package(){0x0001ffff, 1, \_SB.PCI0.LNKC, 0},
+                        Package(){0x0001ffff, 2, \_SB.PCI0.LNKD, 0},
+                        Package(){0x0001ffff, 3, \_SB.PCI0.LNKA, 0},
+                        
+                        // Slot 3, INTA - INTD
+                        Package(){0x0002ffff, 0, \_SB.PCI0.LNKC, 0},
+                        Package(){0x0002ffff, 1, \_SB.PCI0.LNKD, 0},
+                        Package(){0x0002ffff, 2, \_SB.PCI0.LNKA, 0},
+                        Package(){0x0002ffff, 3, \_SB.PCI0.LNKB, 0},
+                        
+                        // Slot 4, INTA - INTD
+                        Package(){0x0003ffff, 0, \_SB.PCI0.LNKD, 0},
+                        Package(){0x0003ffff, 1, \_SB.PCI0.LNKA, 0},
+                        Package(){0x0003ffff, 2, \_SB.PCI0.LNKB, 0},
+                        Package(){0x0003ffff, 3, \_SB.PCI0.LNKC, 0},
+                        
+                        // Slot 5, INTA - INTD
+                        Package(){0x0004ffff, 0, \_SB.PCI0.LNKA, 0},
+                        Package(){0x0004ffff, 1, \_SB.PCI0.LNKB, 0},
+                        Package(){0x0004ffff, 2, \_SB.PCI0.LNKC, 0},
+                        Package(){0x0004ffff, 3, \_SB.PCI0.LNKD, 0},
+                        }
+            )
+        Name(PRTA, Package(){
+                        Package(){0x0001ffff, 0, 0, 5},  // Device 1, INTA
+                        Package(){0x0002ffff, 0, 0, 7},  // Device 2, INTA
+                        Package(){0x0003ffff, 0, 0, 10}, // Device 3, INTA
+                        Package(){0x0004ffff, 0, 0, 11}, // Device 4, INTA
+                        }
+            )
+            
+            Device (ISA)
+            {
+                Name (_ADR, 0x00000000) /* device id, PCI bus num, ... */
+ 
+            OperationRegion(PIRQ, PCI_Config, 0x60, 0x4)
+                        Scope(\) {
+                                 Field (\_SB.PCI0.ISA.PIRQ, ByteAcc, NoLock, 
Preserve) {
+                                        PIRA, 8,
+                                        PIRB, 8,
+                                        PIRC, 8,
+                                        PIRD, 8
+                                        }
+                                 }
+                Device (SYSR)
+                {
+                    Name (_HID, EisaId ("PNP0C02"))
+                    Name (_UID, 0x01)
+                    Name (CRS, ResourceTemplate ()
+                    {
+               /* TODO: list hidden resources */
+                        IO (Decode16, 0x0010, 0x0010, 0x00, 0x10)
+                        IO (Decode16, 0x0022, 0x0022, 0x00, 0x0C)
+                        IO (Decode16, 0x0030, 0x0030, 0x00, 0x10)
+                        IO (Decode16, 0x0044, 0x0044, 0x00, 0x1C)
+                        IO (Decode16, 0x0062, 0x0062, 0x00, 0x02)
+                        IO (Decode16, 0x0065, 0x0065, 0x00, 0x0B)
+                        IO (Decode16, 0x0072, 0x0072, 0x00, 0x0E)
+                        IO (Decode16, 0x0080, 0x0080, 0x00, 0x01)
+                        IO (Decode16, 0x0084, 0x0084, 0x00, 0x03)
+                        IO (Decode16, 0x0088, 0x0088, 0x00, 0x01)
+                        IO (Decode16, 0x008C, 0x008C, 0x00, 0x03)
+                        IO (Decode16, 0x0090, 0x0090, 0x00, 0x10)
+                        IO (Decode16, 0x00A2, 0x00A2, 0x00, 0x1C)
+                        IO (Decode16, 0x00E0, 0x00E0, 0x00, 0x10)
+                        IO (Decode16, 0x08A0, 0x08A0, 0x00, 0x04)
+                        IO (Decode16, 0x0CC0, 0x0CC0, 0x00, 0x10)
+                        IO (Decode16, 0x04D0, 0x04D0, 0x00, 0x02)
+                    })
+                    Method (_CRS, 0, NotSerialized)
+                    {
+                        Return (CRS)
+                    }
+                }
+
+                Device (PIC)
+                {
+                    Name (_HID, EisaId ("PNP0000"))
+                    Name (_CRS, ResourceTemplate ()
+                    {
+                        IO (Decode16, 0x0020, 0x0020, 0x01, 0x02)
+                        IO (Decode16, 0x00A0, 0x00A0, 0x01, 0x02)
+                        IRQNoFlags () {2}
+                    })
+                }
+
+                Device (DMA0)
+                {
+                    Name (_HID, EisaId ("PNP0200"))
+                    Name (_CRS, ResourceTemplate ()
+                    {
+                        DMA (Compatibility, BusMaster, Transfer8) {4}
+                        IO (Decode16, 0x0000, 0x0000, 0x00, 0x10)
+                        IO (Decode16, 0x0081, 0x0081, 0x00, 0x03)
+                        IO (Decode16, 0x0087, 0x0087, 0x00, 0x01)
+                        IO (Decode16, 0x0089, 0x0089, 0x00, 0x03)
+                        IO (Decode16, 0x008F, 0x008F, 0x00, 0x01)
+                        IO (Decode16, 0x00C0, 0x00C0, 0x00, 0x20)
+                        IO (Decode16, 0x0480, 0x0480, 0x00, 0x10)
+                    })
+                }
+
+                Device (TMR)
+                {
+                    Name (_HID, EisaId ("PNP0100"))
+                    Name (_CRS, ResourceTemplate ()
+                    {
+                        IO (Decode16, 0x0040, 0x0040, 0x00, 0x04)
+                        IRQNoFlags () {0}
+                    })
+                }
+
+                Device (RTC)
+                {
+                    Name (_HID, EisaId ("PNP0B00"))
+                    Name (_CRS, ResourceTemplate ()
+                    {
+                        IO (Decode16, 0x0070, 0x0070, 0x00, 0x02)
+                        IRQNoFlags () {8}
+                    })
+                }
+
+                Device (SPKR)
+                {
+                    Name (_HID, EisaId ("PNP0800"))
+                    Name (_CRS, ResourceTemplate ()
+                    {
+                        IO (Decode16, 0x0061, 0x0061, 0x00, 0x01)
+                    })
+                }
+
+                Device (PS2M)
+                {
+                    Name (_HID, EisaId ("PNP0F13"))
+                    Name (_CID, 0x130FD041)
+                    Method (_STA, 0, NotSerialized)
+                    {
+                        Return (0x0F)
+                    }
+
+                    Name (_CRS, ResourceTemplate ()
+                    {
+                        IRQNoFlags () {12}
+                    })
+                }
+
+                Device (PS2K)
+                {
+                    Name (_HID, EisaId ("PNP0303"))
+                    Name (_CID, 0x0B03D041)
+                    Method (_STA, 0, NotSerialized)
+                    {
+                        Return (0x0F)
+                    }
+
+                    Name (_CRS, ResourceTemplate ()
+                    {
+                        IO (Decode16, 0x0060, 0x0060, 0x00, 0x01)
+                        IO (Decode16, 0x0064, 0x0064, 0x00, 0x01)
+                        IRQNoFlags () {1}
+                    })
+                }
+
+                Device (FDC0)
+                {
+                    Name (_HID, EisaId ("PNP0700"))
+                    Method (_STA, 0, NotSerialized)
+                    {
+                          Return (0x0F)
+                    }
+
+                    Name (_CRS, ResourceTemplate ()
+                    {
+                        IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06)
+                        IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
+                        IRQNoFlags () {6}
+                        DMA (Compatibility, NotBusMaster, Transfer8) {2}
+                    })
+                }
+
+                Device (UAR1)
+                {
+                    Name (_HID, EisaId ("PNP0501"))
+                    Name (_UID, 0x01)
+                    Method (_STA, 0, NotSerialized)
+                    {
+                        Return (0x0F)
+                    }
+
+                    Name (_CRS, ResourceTemplate()
+                    {
+                        IO (Decode16, 0x03F8, 0x03F8, 0x01, 0x08)
+                        IRQNoFlags () {4}
+                    })
+                }
+
+                Device (LTP1)
+                {
+                    Name (_HID, EisaId ("PNP0400"))
+                    Name (_UID, 0x02)
+                    Method (_STA, 0, NotSerialized)
+                    {
+                        Return (0x0F)
+                    }
+
+                    Name (_CRS, ResourceTemplate()
+                    {
+                        IO (Decode16, 0x0378, 0x0378, 0x08, 0x08)
+                        IRQNoFlags () {7}
+                    })
+                } 
+            }
+        }
+    }
+}
+
diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/acpi/dsdt.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/firmware/hvmloader/acpi/dsdt.c      Tue Oct 31 12:42:50 2006 +0000
@@ -0,0 +1,300 @@
+/*
+ * 
+ * Intel ACPI Component Architecture
+ * ASL Optimizing Compiler / AML Disassembler version 20050513 [Oct 12 2006]
+ * Copyright (C) 2000 - 2005 Intel Corporation
+ * Supports ACPI Specification Revision 3.0
+ * 
+ * Compilation of "acpi_dsdt.asl" - Thu Oct 12 14:08:49 2006
+ * 
+ * C source code output
+ *
+ */
+unsigned char AmlCode[] = 
+{
+    0x44,0x53,0x44,0x54,0xDA,0x08,0x00,0x00,  /* 00000000    "DSDT...." */
+    0x01,0x26,0x49,0x4E,0x54,0x45,0x4C,0x00,  /* 00000008    ".&INTEL." */
+    0x69,0x6E,0x74,0x2D,0x78,0x65,0x6E,0x00,  /* 00000010    "int-xen." */
+    0xD6,0x07,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
+    0x13,0x05,0x05,0x20,0x08,0x50,0x4D,0x42,  /* 00000020    "... .PMB" */
+    0x53,0x0B,0x00,0x0C,0x08,0x50,0x4D,0x4C,  /* 00000028    "S....PML" */
+    0x4E,0x0A,0x08,0x08,0x49,0x4F,0x42,0x31,  /* 00000030    "N...IOB1" */
+    0x00,0x08,0x49,0x4F,0x4C,0x31,0x00,0x08,  /* 00000038    "..IOL1.." */
+    0x41,0x50,0x43,0x42,0x0C,0x00,0x00,0xC0,  /* 00000040    "APCB...." */
+    0xFE,0x08,0x41,0x50,0x43,0x4C,0x0C,0x00,  /* 00000048    "..APCL.." */
+    0x00,0x01,0x00,0x08,0x50,0x55,0x49,0x44,  /* 00000050    "....PUID" */
+    0x00,0x10,0x39,0x5F,0x50,0x52,0x5F,0x5B,  /* 00000058    "..9_PR_[" */
+    0x83,0x0B,0x43,0x50,0x55,0x30,0x00,0x00,  /* 00000060    "..CPU0.." */
+    0x00,0x00,0x00,0x00,0x5B,0x83,0x0B,0x43,  /* 00000068    "....[..C" */
+    0x50,0x55,0x31,0x01,0x00,0x00,0x00,0x00,  /* 00000070    "PU1....." */
+    0x00,0x5B,0x83,0x0B,0x43,0x50,0x55,0x32,  /* 00000078    ".[..CPU2" */
+    0x02,0x00,0x00,0x00,0x00,0x00,0x5B,0x83,  /* 00000080    "......[." */
+    0x0B,0x43,0x50,0x55,0x33,0x03,0x00,0x00,  /* 00000088    ".CPU3..." */
+    0x00,0x00,0x00,0x08,0x5F,0x53,0x35,0x5F,  /* 00000090    "...._S5_" */
+    0x12,0x08,0x04,0x0A,0x07,0x0A,0x07,0x00,  /* 00000098    "........" */
+    0x00,0x08,0x50,0x49,0x43,0x44,0x00,0x14,  /* 000000A0    "..PICD.." */
+    0x0C,0x5F,0x50,0x49,0x43,0x01,0x70,0x68,  /* 000000A8    "._PIC.ph" */
+    0x50,0x49,0x43,0x44,0x10,0x45,0x82,0x5F,  /* 000000B0    "PICD.E._" */
+    0x53,0x42,0x5F,0x5B,0x82,0x49,0x04,0x4D,  /* 000000B8    "SB_[.I.M" */
+    0x45,0x4D,0x30,0x08,0x5F,0x48,0x49,0x44,  /* 000000C0    "EM0._HID" */
+    0x0C,0x41,0xD0,0x0C,0x02,0x08,0x5F,0x43,  /* 000000C8    ".A...._C" */
+    0x52,0x53,0x11,0x33,0x0A,0x30,0x8A,0x2B,  /* 000000D0    "RS.3.0.+" */
+    0x00,0x00,0x0D,0x03,0x00,0x00,0x00,0x00,  /* 000000D8    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000E0    "........" */
+    0x00,0x00,0x00,0x00,0xFF,0xFF,0x09,0x00,  /* 000000E8    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000F0    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x00,  /* 000000F8    "........" */
+    0x00,0x00,0x00,0x00,0x79,0x00,0x5B,0x82,  /* 00000100    "....y.[." */
+    0x42,0x7D,0x50,0x43,0x49,0x30,0x08,0x5F,  /* 00000108    "B}PCI0._" */
+    0x48,0x49,0x44,0x0C,0x41,0xD0,0x0A,0x03,  /* 00000110    "HID.A..." */
+    0x08,0x5F,0x55,0x49,0x44,0x00,0x08,0x5F,  /* 00000118    "._UID.._" */
+    0x41,0x44,0x52,0x00,0x08,0x5F,0x42,0x42,  /* 00000120    "ADR.._BB" */
+    0x4E,0x00,0x5B,0x80,0x50,0x49,0x52,0x50,  /* 00000128    "N.[.PIRP" */
+    0x02,0x0A,0x3C,0x0A,0x10,0x5B,0x81,0x24,  /* 00000130    "..<..[.$" */
+    0x50,0x49,0x52,0x50,0x01,0x49,0x52,0x51,  /* 00000138    "PIRP.IRQ" */
+    0x33,0x03,0x49,0x52,0x51,0x35,0x05,0x49,  /* 00000140    "3.IRQ5.I" */
+    0x52,0x51,0x37,0x07,0x49,0x52,0x51,0x39,  /* 00000148    "RQ7.IRQ9" */
+    0x09,0x49,0x52,0x51,0x41,0x0A,0x49,0x52,  /* 00000150    ".IRQA.IR" */
+    0x51,0x42,0x0B,0x14,0x4A,0x06,0x5F,0x43,  /* 00000158    "QB..J._C" */
+    0x52,0x53,0x00,0x08,0x50,0x52,0x54,0x30,  /* 00000160    "RS..PRT0" */
+    0x11,0x48,0x05,0x0A,0x54,0x88,0x0D,0x00,  /* 00000168    ".H..T..." */
+    0x02,0x0F,0x00,0x00,0x00,0x00,0x00,0xFF,  /* 00000170    "........" */
+    0x00,0x00,0x00,0x00,0x01,0x47,0x01,0xF8,  /* 00000178    ".....G.." */
+    0x0C,0xF8,0x0C,0x01,0x08,0x88,0x0D,0x00,  /* 00000180    "........" */
+    0x01,0x0C,0x03,0x00,0x00,0x00,0x00,0xF7,  /* 00000188    "........" */
+    0x0C,0x00,0x00,0xF8,0x0C,0x88,0x0D,0x00,  /* 00000190    "........" */
+    0x01,0x0C,0x03,0x00,0x00,0x00,0x0D,0xFF,  /* 00000198    "........" */
+    0xFF,0x00,0x00,0x00,0xF3,0x87,0x17,0x00,  /* 000001A0    "........" */
+    0x00,0x0D,0x03,0x00,0x00,0x00,0x00,0x00,  /* 000001A8    "........" */
+    0x00,0x00,0xF0,0xFF,0xFF,0xFF,0xF4,0x00,  /* 000001B0    "........" */
+    0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x79,  /* 000001B8    ".......y" */
+    0x00,0xA4,0x50,0x52,0x54,0x30,0x08,0x42,  /* 000001C0    "..PRT0.B" */
+    0x55,0x46,0x41,0x11,0x09,0x0A,0x06,0x23,  /* 000001C8    "UFA....#" */
+    0xF8,0xDC,0x18,0x79,0x00,0x08,0x42,0x55,  /* 000001D0    "...y..BU" */
+    0x46,0x42,0x11,0x09,0x0A,0x06,0x23,0x00,  /* 000001D8    "FB....#." */
+    0x00,0x18,0x79,0x00,0x8B,0x42,0x55,0x46,  /* 000001E0    "..y..BUF" */
+    0x42,0x01,0x49,0x52,0x51,0x56,0x08,0x42,  /* 000001E8    "B.IRQV.B" */
+    0x55,0x46,0x43,0x11,0x07,0x0A,0x04,0x05,  /* 000001F0    "UFC....." */
+    0x07,0x0A,0x0B,0x8C,0x42,0x55,0x46,0x43,  /* 000001F8    "....BUFC" */
+    0x01,0x50,0x49,0x51,0x41,0x8C,0x42,0x55,  /* 00000200    ".PIQA.BU" */
+    0x46,0x43,0x01,0x50,0x49,0x51,0x42,0x8C,  /* 00000208    "FC.PIQB." */
+    0x42,0x55,0x46,0x43,0x01,0x50,0x49,0x51,  /* 00000210    "BUFC.PIQ" */
+    0x43,0x8C,0x42,0x55,0x46,0x43,0x01,0x50,  /* 00000218    "C.BUFC.P" */
+    0x49,0x51,0x44,0x5B,0x82,0x48,0x08,0x4C,  /* 00000220    "IQD[.H.L" */
+    0x4E,0x4B,0x41,0x08,0x5F,0x48,0x49,0x44,  /* 00000228    "NKA._HID" */
+    0x0C,0x41,0xD0,0x0C,0x0F,0x08,0x5F,0x55,  /* 00000230    ".A...._U" */
+    0x49,0x44,0x01,0x14,0x1C,0x5F,0x53,0x54,  /* 00000238    "ID..._ST" */
+    0x41,0x00,0x7B,0x50,0x49,0x52,0x41,0x0A,  /* 00000240    "A.{PIRA." */
+    0x80,0x60,0xA0,0x08,0x93,0x60,0x0A,0x80,  /* 00000248    ".`...`.." */
+    0xA4,0x0A,0x09,0xA1,0x04,0xA4,0x0A,0x0B,  /* 00000250    "........" */
+    0x14,0x0B,0x5F,0x50,0x52,0x53,0x00,0xA4,  /* 00000258    ".._PRS.." */
+    0x42,0x55,0x46,0x41,0x14,0x11,0x5F,0x44,  /* 00000260    "BUFA.._D" */
+    0x49,0x53,0x00,0x7D,0x50,0x49,0x52,0x41,  /* 00000268    "IS.}PIRA" */
+    0x0A,0x80,0x50,0x49,0x52,0x41,0x14,0x1A,  /* 00000270    "..PIRA.." */
+    0x5F,0x43,0x52,0x53,0x00,0x7B,0x50,0x49,  /* 00000278    "_CRS.{PI" */
+    0x52,0x42,0x0A,0x0F,0x60,0x79,0x01,0x60,  /* 00000280    "RB..`y.`" */
+    0x49,0x52,0x51,0x56,0xA4,0x42,0x55,0x46,  /* 00000288    "IRQV.BUF" */
+    0x42,0x14,0x1B,0x5F,0x53,0x52,0x53,0x01,  /* 00000290    "B.._SRS." */
+    0x8B,0x68,0x01,0x49,0x52,0x51,0x31,0x82,  /* 00000298    ".h.IRQ1." */
+    0x49,0x52,0x51,0x31,0x60,0x76,0x60,0x70,  /* 000002A0    "IRQ1`v`p" */
+    0x60,0x50,0x49,0x52,0x41,0x5B,0x82,0x49,  /* 000002A8    "`PIRA[.I" */
+    0x08,0x4C,0x4E,0x4B,0x42,0x08,0x5F,0x48,  /* 000002B0    ".LNKB._H" */
+    0x49,0x44,0x0C,0x41,0xD0,0x0C,0x0F,0x08,  /* 000002B8    "ID.A...." */
+    0x5F,0x55,0x49,0x44,0x0A,0x02,0x14,0x1C,  /* 000002C0    "_UID...." */
+    0x5F,0x53,0x54,0x41,0x00,0x7B,0x50,0x49,  /* 000002C8    "_STA.{PI" */
+    0x52,0x42,0x0A,0x80,0x60,0xA0,0x08,0x93,  /* 000002D0    "RB..`..." */
+    0x60,0x0A,0x80,0xA4,0x0A,0x09,0xA1,0x04,  /* 000002D8    "`......." */
+    0xA4,0x0A,0x0B,0x14,0x0B,0x5F,0x50,0x52,  /* 000002E0    "....._PR" */
+    0x53,0x00,0xA4,0x42,0x55,0x46,0x41,0x14,  /* 000002E8    "S..BUFA." */
+    0x11,0x5F,0x44,0x49,0x53,0x00,0x7D,0x50,  /* 000002F0    "._DIS.}P" */
+    0x49,0x52,0x42,0x0A,0x80,0x50,0x49,0x52,  /* 000002F8    "IRB..PIR" */
+    0x42,0x14,0x1A,0x5F,0x43,0x52,0x53,0x00,  /* 00000300    "B.._CRS." */
+    0x7B,0x50,0x49,0x52,0x42,0x0A,0x0F,0x60,  /* 00000308    "{PIRB..`" */
+    0x79,0x01,0x60,0x49,0x52,0x51,0x56,0xA4,  /* 00000310    "y.`IRQV." */
+    0x42,0x55,0x46,0x42,0x14,0x1B,0x5F,0x53,  /* 00000318    "BUFB.._S" */
+    0x52,0x53,0x01,0x8B,0x68,0x01,0x49,0x52,  /* 00000320    "RS..h.IR" */
+    0x51,0x31,0x82,0x49,0x52,0x51,0x31,0x60,  /* 00000328    "Q1.IRQ1`" */
+    0x76,0x60,0x70,0x60,0x50,0x49,0x52,0x42,  /* 00000330    "v`p`PIRB" */
+    0x5B,0x82,0x49,0x08,0x4C,0x4E,0x4B,0x43,  /* 00000338    "[.I.LNKC" */
+    0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,  /* 00000340    "._HID.A." */
+    0x0C,0x0F,0x08,0x5F,0x55,0x49,0x44,0x0A,  /* 00000348    "..._UID." */
+    0x03,0x14,0x1C,0x5F,0x53,0x54,0x41,0x00,  /* 00000350    "..._STA." */
+    0x7B,0x50,0x49,0x52,0x43,0x0A,0x80,0x60,  /* 00000358    "{PIRC..`" */
+    0xA0,0x08,0x93,0x60,0x0A,0x80,0xA4,0x0A,  /* 00000360    "...`...." */
+    0x09,0xA1,0x04,0xA4,0x0A,0x0B,0x14,0x0B,  /* 00000368    "........" */
+    0x5F,0x50,0x52,0x53,0x00,0xA4,0x42,0x55,  /* 00000370    "_PRS..BU" */
+    0x46,0x41,0x14,0x11,0x5F,0x44,0x49,0x53,  /* 00000378    "FA.._DIS" */
+    0x00,0x7D,0x50,0x49,0x52,0x43,0x0A,0x80,  /* 00000380    ".}PIRC.." */
+    0x50,0x49,0x52,0x43,0x14,0x1A,0x5F,0x43,  /* 00000388    "PIRC.._C" */
+    0x52,0x53,0x00,0x7B,0x50,0x49,0x52,0x43,  /* 00000390    "RS.{PIRC" */
+    0x0A,0x0F,0x60,0x79,0x01,0x60,0x49,0x52,  /* 00000398    "..`y.`IR" */
+    0x51,0x56,0xA4,0x42,0x55,0x46,0x42,0x14,  /* 000003A0    "QV.BUFB." */
+    0x1B,0x5F,0x53,0x52,0x53,0x01,0x8B,0x68,  /* 000003A8    "._SRS..h" */
+    0x01,0x49,0x52,0x51,0x31,0x82,0x49,0x52,  /* 000003B0    ".IRQ1.IR" */
+    0x51,0x31,0x60,0x76,0x60,0x70,0x60,0x50,  /* 000003B8    "Q1`v`p`P" */
+    0x49,0x52,0x43,0x5B,0x82,0x49,0x08,0x4C,  /* 000003C0    "IRC[.I.L" */
+    0x4E,0x4B,0x44,0x08,0x5F,0x48,0x49,0x44,  /* 000003C8    "NKD._HID" */
+    0x0C,0x41,0xD0,0x0C,0x0F,0x08,0x5F,0x55,  /* 000003D0    ".A...._U" */
+    0x49,0x44,0x0A,0x04,0x14,0x1C,0x5F,0x53,  /* 000003D8    "ID...._S" */
+    0x54,0x41,0x00,0x7B,0x50,0x49,0x52,0x44,  /* 000003E0    "TA.{PIRD" */
+    0x0A,0x80,0x60,0xA0,0x08,0x93,0x60,0x0A,  /* 000003E8    "..`...`." */
+    0x80,0xA4,0x0A,0x09,0xA1,0x04,0xA4,0x0A,  /* 000003F0    "........" */
+    0x0B,0x14,0x0B,0x5F,0x50,0x52,0x53,0x00,  /* 000003F8    "..._PRS." */
+    0xA4,0x42,0x55,0x46,0x41,0x14,0x11,0x5F,  /* 00000400    ".BUFA.._" */
+    0x44,0x49,0x53,0x00,0x7D,0x50,0x49,0x52,  /* 00000408    "DIS.}PIR" */
+    0x44,0x0A,0x80,0x50,0x49,0x52,0x44,0x14,  /* 00000410    "D..PIRD." */
+    0x1A,0x5F,0x43,0x52,0x53,0x00,0x7B,0x50,  /* 00000418    "._CRS.{P" */
+    0x49,0x52,0x44,0x0A,0x0F,0x60,0x79,0x01,  /* 00000420    "IRD..`y." */
+    0x60,0x49,0x52,0x51,0x56,0xA4,0x42,0x55,  /* 00000428    "`IRQV.BU" */
+    0x46,0x42,0x14,0x1B,0x5F,0x53,0x52,0x53,  /* 00000430    "FB.._SRS" */
+    0x01,0x8B,0x68,0x01,0x49,0x52,0x51,0x31,  /* 00000438    "..h.IRQ1" */
+    0x82,0x49,0x52,0x51,0x31,0x60,0x76,0x60,  /* 00000440    ".IRQ1`v`" */
+    0x70,0x60,0x50,0x49,0x52,0x44,0x14,0x16,  /* 00000448    "p`PIRD.." */
+    0x5F,0x50,0x52,0x54,0x00,0xA0,0x0A,0x50,  /* 00000450    "_PRT...P" */
+    0x49,0x43,0x44,0xA4,0x50,0x52,0x54,0x41,  /* 00000458    "ICD.PRTA" */
+    0xA4,0x50,0x52,0x54,0x50,0x08,0x50,0x52,  /* 00000460    ".PRTP.PR" */
+    0x54,0x50,0x12,0x4D,0x11,0x14,0x12,0x0B,  /* 00000468    "TP.M...." */
+    0x04,0x0B,0xFF,0xFF,0x00,0x4C,0x4E,0x4B,  /* 00000470    ".....LNK" */
+    0x41,0x00,0x12,0x0B,0x04,0x0B,0xFF,0xFF,  /* 00000478    "A......." */
+    0x01,0x4C,0x4E,0x4B,0x42,0x00,0x12,0x0C,  /* 00000480    ".LNKB..." */
+    0x04,0x0B,0xFF,0xFF,0x0A,0x02,0x4C,0x4E,  /* 00000488    "......LN" */
+    0x4B,0x43,0x00,0x12,0x0C,0x04,0x0B,0xFF,  /* 00000490    "KC......" */
+    0xFF,0x0A,0x03,0x4C,0x4E,0x4B,0x44,0x00,  /* 00000498    "...LNKD." */
+    0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x01,0x00,  /* 000004A0    "........" */
+    0x00,0x4C,0x4E,0x4B,0x42,0x00,0x12,0x0D,  /* 000004A8    ".LNKB..." */
+    0x04,0x0C,0xFF,0xFF,0x01,0x00,0x01,0x4C,  /* 000004B0    ".......L" */
+    0x4E,0x4B,0x43,0x00,0x12,0x0E,0x04,0x0C,  /* 000004B8    "NKC....." */
+    0xFF,0xFF,0x01,0x00,0x0A,0x02,0x4C,0x4E,  /* 000004C0    "......LN" */
+    0x4B,0x44,0x00,0x12,0x0E,0x04,0x0C,0xFF,  /* 000004C8    "KD......" */
+    0xFF,0x01,0x00,0x0A,0x03,0x4C,0x4E,0x4B,  /* 000004D0    ".....LNK" */
+    0x41,0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,  /* 000004D8    "A......." */
+    0x02,0x00,0x00,0x4C,0x4E,0x4B,0x43,0x00,  /* 000004E0    "...LNKC." */
+    0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x02,0x00,  /* 000004E8    "........" */
+    0x01,0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0E,  /* 000004F0    ".LNKD..." */
+    0x04,0x0C,0xFF,0xFF,0x02,0x00,0x0A,0x02,  /* 000004F8    "........" */
+    0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0E,0x04,  /* 00000500    "LNKA...." */
+    0x0C,0xFF,0xFF,0x02,0x00,0x0A,0x03,0x4C,  /* 00000508    ".......L" */
+    0x4E,0x4B,0x42,0x00,0x12,0x0D,0x04,0x0C,  /* 00000510    "NKB....." */
+    0xFF,0xFF,0x03,0x00,0x00,0x4C,0x4E,0x4B,  /* 00000518    ".....LNK" */
+    0x44,0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,  /* 00000520    "D......." */
+    0x03,0x00,0x01,0x4C,0x4E,0x4B,0x41,0x00,  /* 00000528    "...LNKA." */
+    0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x03,0x00,  /* 00000530    "........" */
+    0x0A,0x02,0x4C,0x4E,0x4B,0x42,0x00,0x12,  /* 00000538    "..LNKB.." */
+    0x0E,0x04,0x0C,0xFF,0xFF,0x03,0x00,0x0A,  /* 00000540    "........" */
+    0x03,0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D,  /* 00000548    ".LNKC..." */
+    0x04,0x0C,0xFF,0xFF,0x04,0x00,0x00,0x4C,  /* 00000550    ".......L" */
+    0x4E,0x4B,0x41,0x00,0x12,0x0D,0x04,0x0C,  /* 00000558    "NKA....." */
+    0xFF,0xFF,0x04,0x00,0x01,0x4C,0x4E,0x4B,  /* 00000560    ".....LNK" */
+    0x42,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,  /* 00000568    "B......." */
+    0x04,0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x43,  /* 00000570    "....LNKC" */
+    0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x04,  /* 00000578    "........" */
+    0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x44,0x00,  /* 00000580    "...LNKD." */
+    0x08,0x50,0x52,0x54,0x41,0x12,0x32,0x04,  /* 00000588    ".PRTA.2." */
+    0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x01,0x00,  /* 00000590    "........" */
+    0x00,0x00,0x0A,0x05,0x12,0x0B,0x04,0x0C,  /* 00000598    "........" */
+    0xFF,0xFF,0x02,0x00,0x00,0x00,0x0A,0x07,  /* 000005A0    "........" */
+    0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x03,0x00,  /* 000005A8    "........" */
+    0x00,0x00,0x0A,0x0A,0x12,0x0B,0x04,0x0C,  /* 000005B0    "........" */
+    0xFF,0xFF,0x04,0x00,0x00,0x00,0x0A,0x0B,  /* 000005B8    "........" */
+    0x5B,0x82,0x48,0x31,0x49,0x53,0x41,0x5F,  /* 000005C0    "[.H1ISA_" */
+    0x08,0x5F,0x41,0x44,0x52,0x00,0x5B,0x80,  /* 000005C8    "._ADR.[." */
+    0x50,0x49,0x52,0x51,0x02,0x0A,0x60,0x0A,  /* 000005D0    "PIRQ..`." */
+    0x04,0x10,0x2E,0x5C,0x00,0x5B,0x81,0x29,  /* 000005D8    "...\.[.)" */
+    0x5C,0x2F,0x04,0x5F,0x53,0x42,0x5F,0x50,  /* 000005E0    "\/._SB_P" */
+    0x43,0x49,0x30,0x49,0x53,0x41,0x5F,0x50,  /* 000005E8    "CI0ISA_P" */
+    0x49,0x52,0x51,0x01,0x50,0x49,0x52,0x41,  /* 000005F0    "IRQ.PIRA" */
+    0x08,0x50,0x49,0x52,0x42,0x08,0x50,0x49,  /* 000005F8    ".PIRB.PI" */
+    0x52,0x43,0x08,0x50,0x49,0x52,0x44,0x08,  /* 00000600    "RC.PIRD." */
+    0x5B,0x82,0x46,0x0B,0x53,0x59,0x53,0x52,  /* 00000608    "[.F.SYSR" */
+    0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,  /* 00000610    "._HID.A." */
+    0x0C,0x02,0x08,0x5F,0x55,0x49,0x44,0x01,  /* 00000618    "..._UID." */
+    0x08,0x43,0x52,0x53,0x5F,0x11,0x4E,0x08,  /* 00000620    ".CRS_.N." */
+    0x0A,0x8A,0x47,0x01,0x10,0x00,0x10,0x00,  /* 00000628    "..G....." */
+    0x00,0x10,0x47,0x01,0x22,0x00,0x22,0x00,  /* 00000630    "..G."."." */
+    0x00,0x0C,0x47,0x01,0x30,0x00,0x30,0x00,  /* 00000638    "..G.0.0." */
+    0x00,0x10,0x47,0x01,0x44,0x00,0x44,0x00,  /* 00000640    "..G.D.D." */
+    0x00,0x1C,0x47,0x01,0x62,0x00,0x62,0x00,  /* 00000648    "..G.b.b." */
+    0x00,0x02,0x47,0x01,0x65,0x00,0x65,0x00,  /* 00000650    "..G.e.e." */
+    0x00,0x0B,0x47,0x01,0x72,0x00,0x72,0x00,  /* 00000658    "..G.r.r." */
+    0x00,0x0E,0x47,0x01,0x80,0x00,0x80,0x00,  /* 00000660    "..G....." */
+    0x00,0x01,0x47,0x01,0x84,0x00,0x84,0x00,  /* 00000668    "..G....." */
+    0x00,0x03,0x47,0x01,0x88,0x00,0x88,0x00,  /* 00000670    "..G....." */
+    0x00,0x01,0x47,0x01,0x8C,0x00,0x8C,0x00,  /* 00000678    "..G....." */
+    0x00,0x03,0x47,0x01,0x90,0x00,0x90,0x00,  /* 00000680    "..G....." */
+    0x00,0x10,0x47,0x01,0xA2,0x00,0xA2,0x00,  /* 00000688    "..G....." */
+    0x00,0x1C,0x47,0x01,0xE0,0x00,0xE0,0x00,  /* 00000690    "..G....." */
+    0x00,0x10,0x47,0x01,0xA0,0x08,0xA0,0x08,  /* 00000698    "..G....." */
+    0x00,0x04,0x47,0x01,0xC0,0x0C,0xC0,0x0C,  /* 000006A0    "..G....." */
+    0x00,0x10,0x47,0x01,0xD0,0x04,0xD0,0x04,  /* 000006A8    "..G....." */
+    0x00,0x02,0x79,0x00,0x14,0x0B,0x5F,0x43,  /* 000006B0    "..y..._C" */
+    0x52,0x53,0x00,0xA4,0x43,0x52,0x53,0x5F,  /* 000006B8    "RS..CRS_" */
+    0x5B,0x82,0x2B,0x50,0x49,0x43,0x5F,0x08,  /* 000006C0    "[.+PIC_." */
+    0x5F,0x48,0x49,0x44,0x0B,0x41,0xD0,0x08,  /* 000006C8    "_HID.A.." */
+    0x5F,0x43,0x52,0x53,0x11,0x18,0x0A,0x15,  /* 000006D0    "_CRS...." */
+    0x47,0x01,0x20,0x00,0x20,0x00,0x01,0x02,  /* 000006D8    "G. . ..." */
+    0x47,0x01,0xA0,0x00,0xA0,0x00,0x01,0x02,  /* 000006E0    "G......." */
+    0x22,0x04,0x00,0x79,0x00,0x5B,0x82,0x47,  /* 000006E8    ""..y.[.G" */
+    0x05,0x44,0x4D,0x41,0x30,0x08,0x5F,0x48,  /* 000006F0    ".DMA0._H" */
+    0x49,0x44,0x0C,0x41,0xD0,0x02,0x00,0x08,  /* 000006F8    "ID.A...." */
+    0x5F,0x43,0x52,0x53,0x11,0x41,0x04,0x0A,  /* 00000700    "_CRS.A.." */
+    0x3D,0x2A,0x10,0x04,0x47,0x01,0x00,0x00,  /* 00000708    "=*..G..." */
+    0x00,0x00,0x00,0x10,0x47,0x01,0x81,0x00,  /* 00000710    "....G..." */
+    0x81,0x00,0x00,0x03,0x47,0x01,0x87,0x00,  /* 00000718    "....G..." */
+    0x87,0x00,0x00,0x01,0x47,0x01,0x89,0x00,  /* 00000720    "....G..." */
+    0x89,0x00,0x00,0x03,0x47,0x01,0x8F,0x00,  /* 00000728    "....G..." */
+    0x8F,0x00,0x00,0x01,0x47,0x01,0xC0,0x00,  /* 00000730    "....G..." */
+    0xC0,0x00,0x00,0x20,0x47,0x01,0x80,0x04,  /* 00000738    "... G..." */
+    0x80,0x04,0x00,0x10,0x79,0x00,0x5B,0x82,  /* 00000740    "....y.[." */
+    0x25,0x54,0x4D,0x52,0x5F,0x08,0x5F,0x48,  /* 00000748    "%TMR_._H" */
+    0x49,0x44,0x0C,0x41,0xD0,0x01,0x00,0x08,  /* 00000750    "ID.A...." */
+    0x5F,0x43,0x52,0x53,0x11,0x10,0x0A,0x0D,  /* 00000758    "_CRS...." */
+    0x47,0x01,0x40,0x00,0x40,0x00,0x00,0x04,  /* 00000760    "G.@.@..." */
+    0x22,0x01,0x00,0x79,0x00,0x5B,0x82,0x25,  /* 00000768    ""..y.[.%" */
+    0x52,0x54,0x43,0x5F,0x08,0x5F,0x48,0x49,  /* 00000770    "RTC_._HI" */
+    0x44,0x0C,0x41,0xD0,0x0B,0x00,0x08,0x5F,  /* 00000778    "D.A...._" */
+    0x43,0x52,0x53,0x11,0x10,0x0A,0x0D,0x47,  /* 00000780    "CRS....G" */
+    0x01,0x70,0x00,0x70,0x00,0x00,0x02,0x22,  /* 00000788    ".p.p..."" */
+    0x00,0x01,0x79,0x00,0x5B,0x82,0x22,0x53,  /* 00000790    "..y.[."S" */
+    0x50,0x4B,0x52,0x08,0x5F,0x48,0x49,0x44,  /* 00000798    "PKR._HID" */
+    0x0C,0x41,0xD0,0x08,0x00,0x08,0x5F,0x43,  /* 000007A0    ".A...._C" */
+    0x52,0x53,0x11,0x0D,0x0A,0x0A,0x47,0x01,  /* 000007A8    "RS....G." */
+    0x61,0x00,0x61,0x00,0x00,0x01,0x79,0x00,  /* 000007B0    "a.a...y." */
+    0x5B,0x82,0x31,0x50,0x53,0x32,0x4D,0x08,  /* 000007B8    "[.1PS2M." */
+    0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x0F,  /* 000007C0    "_HID.A.." */
+    0x13,0x08,0x5F,0x43,0x49,0x44,0x0C,0x41,  /* 000007C8    ".._CID.A" */
+    0xD0,0x0F,0x13,0x14,0x09,0x5F,0x53,0x54,  /* 000007D0    "....._ST" */
+    0x41,0x00,0xA4,0x0A,0x0F,0x08,0x5F,0x43,  /* 000007D8    "A....._C" */
+    0x52,0x53,0x11,0x08,0x0A,0x05,0x22,0x00,  /* 000007E0    "RS...."." */
+    0x10,0x79,0x00,0x5B,0x82,0x42,0x04,0x50,  /* 000007E8    ".y.[.B.P" */
+    0x53,0x32,0x4B,0x08,0x5F,0x48,0x49,0x44,  /* 000007F0    "S2K._HID" */
+    0x0C,0x41,0xD0,0x03,0x03,0x08,0x5F,0x43,  /* 000007F8    ".A...._C" */
+    0x49,0x44,0x0C,0x41,0xD0,0x03,0x0B,0x14,  /* 00000800    "ID.A...." */
+    0x09,0x5F,0x53,0x54,0x41,0x00,0xA4,0x0A,  /* 00000808    "._STA..." */
+    0x0F,0x08,0x5F,0x43,0x52,0x53,0x11,0x18,  /* 00000810    ".._CRS.." */
+    0x0A,0x15,0x47,0x01,0x60,0x00,0x60,0x00,  /* 00000818    "..G.`.`." */
+    0x00,0x01,0x47,0x01,0x64,0x00,0x64,0x00,  /* 00000820    "..G.d.d." */
+    0x00,0x01,0x22,0x02,0x00,0x79,0x00,0x5B,  /* 00000828    ".."..y.[" */
+    0x82,0x3A,0x46,0x44,0x43,0x30,0x08,0x5F,  /* 00000830    ".:FDC0._" */
+    0x48,0x49,0x44,0x0C,0x41,0xD0,0x07,0x00,  /* 00000838    "HID.A..." */
+    0x14,0x09,0x5F,0x53,0x54,0x41,0x00,0xA4,  /* 00000840    ".._STA.." */
+    0x0A,0x0F,0x08,0x5F,0x43,0x52,0x53,0x11,  /* 00000848    "..._CRS." */
+    0x1B,0x0A,0x18,0x47,0x01,0xF0,0x03,0xF0,  /* 00000850    "...G...." */
+    0x03,0x01,0x06,0x47,0x01,0xF7,0x03,0xF7,  /* 00000858    "...G...." */
+    0x03,0x01,0x01,0x22,0x40,0x00,0x2A,0x04,  /* 00000860    "..."@.*." */
+    0x00,0x79,0x00,0x5B,0x82,0x35,0x55,0x41,  /* 00000868    ".y.[.5UA" */
+    0x52,0x31,0x08,0x5F,0x48,0x49,0x44,0x0C,  /* 00000870    "R1._HID." */
+    0x41,0xD0,0x05,0x01,0x08,0x5F,0x55,0x49,  /* 00000878    "A...._UI" */
+    0x44,0x01,0x14,0x09,0x5F,0x53,0x54,0x41,  /* 00000880    "D..._STA" */
+    0x00,0xA4,0x0A,0x0F,0x08,0x5F,0x43,0x52,  /* 00000888    "....._CR" */
+    0x53,0x11,0x10,0x0A,0x0D,0x47,0x01,0xF8,  /* 00000890    "S....G.." */
+    0x03,0xF8,0x03,0x01,0x08,0x22,0x10,0x00,  /* 00000898    ".....".." */
+    0x79,0x00,0x5B,0x82,0x36,0x4C,0x54,0x50,  /* 000008A0    "y.[.6LTP" */
+    0x31,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,  /* 000008A8    "1._HID.A" */
+    0xD0,0x04,0x00,0x08,0x5F,0x55,0x49,0x44,  /* 000008B0    "...._UID" */
+    0x0A,0x02,0x14,0x09,0x5F,0x53,0x54,0x41,  /* 000008B8    "...._STA" */
+    0x00,0xA4,0x0A,0x0F,0x08,0x5F,0x43,0x52,  /* 000008C0    "....._CR" */
+    0x53,0x11,0x10,0x0A,0x0D,0x47,0x01,0x78,  /* 000008C8    "S....G.x" */
+    0x03,0x78,0x03,0x08,0x08,0x22,0x80,0x00,  /* 000008D0    ".x...".." */
+    0x79,0x00,
+};
+int DsdtLen=sizeof(AmlCode);
diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/acpi/gen.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/firmware/hvmloader/acpi/gen.c       Tue Oct 31 12:42:50 2006 +0000
@@ -0,0 +1,53 @@
+/*
+ * Copyright (c) 2004, Intel Corporation.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307 USA.
+ *
+ */
+#include "acpi2_0.h"
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+
+#define USAGE  "Usage: acpi_gen filename \n"                           \
+               "       generage acpitable and write to the binary \n"  \
+               "       filename - the binary name\n"
+
+int main(int argc, char **argv)
+{
+       char *filename;
+       char  buf[ACPI_TABLE_SIZE] = { 0 };
+       FILE *f;
+
+       if (argc < 2) {
+               fprintf(stderr,"%s",USAGE);
+               exit(1);
+       }
+
+       filename = argv[1];
+               
+       if ((f = fopen(filename, "w+")) == NULL) {
+               fprintf(stderr,"Can not open %s", filename);
+               exit(1);
+       }
+
+       AcpiBuildTable((uint8_t *)buf);
+
+       if (fwrite(buf, ACPI_TABLE_SIZE, 1, f) < 1) {
+               fprintf(stderr,"Can not write to %s\n", filename);
+               exit(1);
+       }
+
+       return 0;
+}
diff -r 15b5cc51db30 -r 1bf4f15c5141 
tools/firmware/hvmloader/acpi/static_tables.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/firmware/hvmloader/acpi/static_tables.c     Tue Oct 31 12:42:50 
2006 +0000
@@ -0,0 +1,184 @@
+/*
+ * Copyright (c) 2004, Intel Corporation.
+ * Copyright (c) 2006, Keir Fraser, XenSource Inc.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307 USA.
+ */
+
+#include "acpi2_0.h"
+#include <xen/hvm/ioreq.h>
+
+/*
+ * Multiple APIC Description Table (MADT).
+ */
+
+struct acpi_20_madt Madt = {
+    .header = {
+        .header = {
+            .signature    = ACPI_2_0_MADT_SIGNATURE,
+            .length       = sizeof(struct acpi_20_madt),
+            .revision     = ACPI_2_0_MADT_REVISION,
+            .oem_id       = ACPI_OEM_ID, 
+            .oem_table_id = ACPI_OEM_TABLE_ID,
+            .oem_revision = ACPI_OEM_REVISION,
+            .creator_id   = ACPI_CREATOR_ID,
+            .creator_revision = ACPI_CREATOR_REVISION
+        },
+        .lapic_addr = 0xFEE00000,
+        .flags      = ACPI_PCAT_COMPAT
+    },
+
+    /* IO APIC */
+    .io_apic = {
+        [0] = {
+            .type        = ACPI_IO_APIC,                         
+            .length      = sizeof(struct acpi_20_madt_ioapic),
+            .ioapic_addr = 0xFEC00000
+        }
+    },
+
+    /* Local APIC entries for up to 32 processors. */
+    .lapic = {
+        [0] = {
+            .type   = ACPI_PROCESSOR_LOCAL_APIC,
+            .length = sizeof(struct acpi_20_madt_lapic),
+            .flags  = 0x00000001
+        }
+    }
+};
+
+
+/*
+ * Firmware ACPI Control Structure (FACS).
+ */
+
+struct acpi_20_facs Facs = {
+    .signature = ACPI_2_0_FACS_SIGNATURE,
+    .length    = sizeof(struct acpi_20_facs),
+    .version   = ACPI_2_0_FACS_VERSION
+};
+
+
+/*
+ * Fixed ACPI Description Table (FADT).
+ */
+
+#define ACPI_PM1A_EVT_BLK_BIT_WIDTH         0x20
+#define ACPI_PM1A_EVT_BLK_BIT_OFFSET        0x00
+#define ACPI_PM1A_CNT_BLK_BIT_WIDTH         0x10
+#define ACPI_PM1A_CNT_BLK_BIT_OFFSET        0x00
+#define ACPI_PM_TMR_BLK_BIT_WIDTH           0x20
+#define ACPI_PM_TMR_BLK_BIT_OFFSET          0x00
+
+struct acpi_20_fadt Fadt = {
+    .header = {
+        .signature    = ACPI_2_0_FADT_SIGNATURE,
+        .length       = sizeof(struct acpi_20_fadt),
+        .revision     = ACPI_2_0_FADT_REVISION,
+        .oem_id       = ACPI_OEM_ID, 
+        .oem_table_id = ACPI_OEM_TABLE_ID,
+        .oem_revision = ACPI_OEM_REVISION,
+        .creator_id   = ACPI_CREATOR_ID,
+        .creator_revision = ACPI_CREATOR_REVISION
+    },
+
+    .sci_int = 9,
+
+    .pm1a_evt_blk = ACPI_PM1A_EVT_BLK_ADDRESS,
+    .pm1a_cnt_blk = ACPI_PM1A_CNT_BLK_ADDRESS,
+    .pm_tmr_blk = ACPI_PM_TMR_BLK_ADDRESS,
+    .pm1_evt_len = ACPI_PM1A_EVT_BLK_BIT_WIDTH / 8,
+    .pm1_cnt_len = ACPI_PM1A_CNT_BLK_BIT_WIDTH / 8,
+    .pm_tmr_len = ACPI_PM_TMR_BLK_BIT_WIDTH / 8,
+
+    .p_lvl2_lat = 0x0fff, /* >100,  means we do not support C2 state */
+    .p_lvl3_lat = 0x0fff, /* >1000, means we do not support C3 state */
+    .iapc_boot_arch = ACPI_LEGACY_DEVICES | ACPI_8042,
+    .flags = (ACPI_PROC_C1 | ACPI_SLP_BUTTON |
+              ACPI_WBINVD | ACPI_PWR_BUTTON |
+              ACPI_FIX_RTC | ACPI_TMR_VAL_EXT),
+
+    .reset_reg = {
+        .address_space_id    = ACPI_SYSTEM_IO,
+        .register_bit_width  = 8, /* *must* be 8 */
+        .register_bit_offset = 0, /* *must* be 0 */
+        .address             = 0xcf9
+    },
+    .reset_value = 6,
+
+    .x_pm1a_evt_blk = {
+        .address_space_id    = ACPI_SYSTEM_IO,
+        .register_bit_width  = ACPI_PM1A_EVT_BLK_BIT_WIDTH,
+        .register_bit_offset = ACPI_PM1A_EVT_BLK_BIT_OFFSET,
+        .address             = ACPI_PM1A_EVT_BLK_ADDRESS,
+    },
+
+    .x_pm1a_cnt_blk = {
+        .address_space_id    = ACPI_SYSTEM_IO,
+        .register_bit_width  = ACPI_PM1A_CNT_BLK_BIT_WIDTH,
+        .register_bit_offset = ACPI_PM1A_CNT_BLK_BIT_OFFSET,
+        .address             = ACPI_PM1A_CNT_BLK_ADDRESS,
+    },
+
+    .x_pm_tmr_blk = {
+        .address_space_id    = ACPI_SYSTEM_IO,
+        .register_bit_width  = ACPI_PM_TMR_BLK_BIT_WIDTH,
+        .register_bit_offset = ACPI_PM_TMR_BLK_BIT_OFFSET,
+        .address             = ACPI_PM_TMR_BLK_ADDRESS,
+    }
+};
+
+struct acpi_20_rsdt Rsdt = {
+    .header = {
+        .signature    = ACPI_2_0_RSDT_SIGNATURE,
+        .length       = sizeof(struct acpi_header),
+        .revision     = ACPI_2_0_RSDT_REVISION,
+        .oem_id       = ACPI_OEM_ID, 
+        .oem_table_id = ACPI_OEM_TABLE_ID,
+        .oem_revision = ACPI_OEM_REVISION,
+        .creator_id   = ACPI_CREATOR_ID,
+        .creator_revision = ACPI_CREATOR_REVISION
+    }
+};
+
+struct acpi_20_xsdt Xsdt = {
+    .header = {
+        .signature    = ACPI_2_0_XSDT_SIGNATURE,
+        .length       = sizeof(struct acpi_header),
+        .revision     = ACPI_2_0_XSDT_REVISION,
+        .oem_id       = ACPI_OEM_ID, 
+        .oem_table_id = ACPI_OEM_TABLE_ID,
+        .oem_revision = ACPI_OEM_REVISION,
+        .creator_id   = ACPI_CREATOR_ID,
+        .creator_revision = ACPI_CREATOR_REVISION
+    }
+};
+
+
+struct acpi_20_rsdp Rsdp = {
+    .signature = ACPI_2_0_RSDP_SIGNATURE,
+    .oem_id    = ACPI_OEM_ID,
+    .revision  = ACPI_OEM_REVISION, 
+    .length    = sizeof(struct acpi_20_rsdp)
+};
+
+/*
+ * Local variables:
+ * mode: C
+ * c-set-style: "BSD"
+ * c-basic-offset: 4
+ * tab-width: 4
+ * indent-tabs-mode: nil
+ * End:
+ */
diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/acpi_ssdt_tpm.asl
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/firmware/hvmloader/acpi_ssdt_tpm.asl        Tue Oct 31 12:42:50 
2006 +0000
@@ -0,0 +1,29 @@
+//**********************************************************************//
+//*
+//* Copyright (c) 2006, IBM Corporation.
+//*
+//* This program is free software; you can redistribute it and/or modify it
+//* under the terms and conditions of the GNU General Public License,
+//* version 2, as published by the Free Software Foundation.
+//*
+//* This program is distributed in the hope it will be useful, but WITHOUT
+//* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+//* FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+//* more details.
+//*
+//* You should have received a copy of the GNU General Public License along 
with
+//* this program; if not, write to the Free Software Foundation, Inc., 59 
Temple
+//* Place - Suite 330, Boston, MA 02111-1307 USA.
+
+//*  SSDT for TPM TIS Interface for Xen with Qemu device model
+
+DefinitionBlock ("SSDT_TPM.aml", "SSDT", 1, "IBM","xen", 2006)
+{
+    Device (TPM) {
+        Name (_HID, EisaId ("PNP0C31"))
+        Name (_CRS, ResourceTemplate ()
+        {
+            Memory32Fixed (ReadWrite, 0xFED40000, 0x5000,)
+        })
+    }
+}
\ No newline at end of file
diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/acpi_ssdt_tpm.h
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/firmware/hvmloader/acpi_ssdt_tpm.h  Tue Oct 31 12:42:50 2006 +0000
@@ -0,0 +1,25 @@
+/*
+ * 
+ * Intel ACPI Component Architecture
+ * ASL Optimizing Compiler version 20060707 [Sep 11 2006]
+ * Copyright (C) 2000 - 2006 Intel Corporation
+ * Supports ACPI Specification Revision 3.0a
+ * 
+ * Compilation of "acpi_ssdt_tpm.asl" - Mon Oct 30 11:28:27 2006
+ * 
+ * C source code output
+ *
+ */
+unsigned char AmlCode_TPM[] =
+{
+    0x53,0x53,0x44,0x54,0x4C,0x00,0x00,0x00,  /* 00000000    "SSDTL..." */
+    0x01,0x6D,0x49,0x42,0x4D,0x00,0x00,0x00,  /* 00000008    ".mIBM..." */
+    0x78,0x65,0x6E,0x00,0x00,0x00,0x00,0x00,  /* 00000010    "xen....." */
+    0xD6,0x07,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
+    0x07,0x07,0x06,0x20,0x5B,0x82,0x26,0x54,  /* 00000020    "... [.&T" */
+    0x50,0x4D,0x5F,0x08,0x5F,0x48,0x49,0x44,  /* 00000028    "PM_._HID" */
+    0x0C,0x41,0xD0,0x0C,0x31,0x08,0x5F,0x43,  /* 00000030    ".A..1._C" */
+    0x52,0x53,0x11,0x11,0x0A,0x0E,0x86,0x09,  /* 00000038    "RS......" */
+    0x00,0x01,0x00,0x00,0xD4,0xFE,0x00,0x50,  /* 00000040    ".......P" */
+    0x00,0x00,0x79,0x00,
+};
diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/acpi_utils.c
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/firmware/hvmloader/acpi_utils.c     Tue Oct 31 12:42:50 2006 +0000
@@ -0,0 +1,207 @@
+/*
+ * Commonly used ACPI utility functions.
+ * Probing for devices and writing SSDT entries into XSDT and RSDT tables.
+ *
+ * Yu Ke, ke.yu@xxxxxxxxx
+ * Copyright (c) 2005, Intel Corporation.
+ * Copyright (c) 2006, IBM Corporation.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307 USA.
+ */
+
+#include "acpi/acpi2_0.h"
+#include "acpi_utils.h"
+#include "util.h"
+
+static int acpi_rsdt_add_entry_pointer(unsigned char *acpi_start,
+                                       unsigned char *entry);
+static unsigned char *acpi_xsdt_add_entry(unsigned char *acpi_start,
+                                          unsigned char **freemem,
+                                          unsigned char *limit,
+                                          unsigned char *table,
+                                          unsigned int table_size);
+
+void set_checksum(void *start, int checksum_offset, int len)
+{
+       unsigned char sum = 0;
+       unsigned char *ptr;
+
+       ptr = start;
+       ptr[checksum_offset] = 0;
+       while (len--)
+               sum += *ptr++;
+
+       ptr = start;
+       ptr[checksum_offset] = -sum;
+}
+
+
+#include "acpi_ssdt_tpm.h"
+static int acpi_tpm_tis_probe(unsigned char *acpi_start,
+                              unsigned char **freemem,
+                              unsigned char *limit)
+{
+       int success = 1; /* not successful means 'out of memory' */
+       unsigned char *addr;
+       /* check TPM_DID, TPM_VID, TPM_RID in ioemu/hw/tpm_tis.c */
+       uint16_t tis_did_vid_rid[] = {0x0001, 0x0001, 0x0001};
+
+       /* probe for TIS interface ... */
+       if (memcmp((char *)(0xFED40000 + 0xF00),
+                  tis_did_vid_rid,
+                  sizeof(tis_did_vid_rid)) == 0) {
+               puts("TIS is available\n");
+               addr = acpi_xsdt_add_entry(acpi_start, freemem, limit,
+                                          AmlCode_TPM, sizeof(AmlCode_TPM));
+               if (addr == NULL)
+                       success = 0;
+               else {
+                       /* legacy systems need an RSDT entry */
+                       acpi_rsdt_add_entry_pointer(acpi_start,
+                                                   addr);
+               }
+       }
+       return success;
+}
+
+
+/*
+ * Call functions that probe for devices and have them register their
+ * SSDT entries with the XSDT and RSDT tables.
+ */
+void acpi_update(unsigned char *acpi_start,
+                 unsigned long acpi_size,
+                 unsigned char *limit,
+                 unsigned char **freemem)
+{
+    acpi_tpm_tis_probe(acpi_start, freemem, limit);
+}
+
+
+struct acpi_20_rsdt *acpi_rsdt_get(unsigned char *acpi_start)
+{
+    struct acpi_20_rsdp *rsdp;
+    struct acpi_20_rsdt *rsdt;
+
+    rsdp = (struct acpi_20_rsdp *)(acpi_start + sizeof(struct acpi_20_facs));
+    if (rsdp->signature != ACPI_2_0_RSDP_SIGNATURE) {
+        puts("Bad RSDP signature\n");
+        return NULL;
+    }
+
+    rsdt = (struct acpi_20_rsdt *)
+        (acpi_start + rsdp->rsdt_address - ACPI_PHYSICAL_ADDRESS);
+    if (rsdt->header.signature != ACPI_2_0_RSDT_SIGNATURE) {
+        puts("Bad RSDT signature\n");
+        return NULL;
+    }
+    return rsdt;
+}
+
+/*
+ * Add an entry to the RSDT table given the pointer to the entry.
+ */
+static int acpi_rsdt_add_entry_pointer(unsigned char *acpi_start,
+                                       unsigned char *entry)
+{
+    struct acpi_20_rsdt *rsdt = acpi_rsdt_get(acpi_start);
+    int found = 0;
+    int i = 0;
+
+    /* get empty slot in the RSDT table */
+    while (i < ACPI_MAX_NUM_TABLES) {
+        if (rsdt->entry[i] == 0) {
+            found = 1;
+            break;
+        }
+        i++;
+    }
+
+    if (found) {
+        rsdt->entry[i] = (uint64_t)(long)entry;
+        rsdt->header.length =
+            sizeof(struct acpi_header) +
+            (i + 1) * sizeof(uint64_t);
+        set_checksum(rsdt,
+                     FIELD_OFFSET(struct acpi_header, checksum),
+                     rsdt->header.length);
+    }
+
+    return found;
+}
+
+/* Get the XSDT table */
+struct acpi_20_xsdt *acpi_xsdt_get(unsigned char *acpi_start)
+{
+    struct acpi_20_rsdp *rsdp;
+    struct acpi_20_xsdt *xsdt;
+
+    rsdp = (struct acpi_20_rsdp *)(acpi_start + sizeof(struct acpi_20_facs));
+    if (rsdp->signature != ACPI_2_0_RSDP_SIGNATURE) {
+        puts("Bad RSDP signature\n");
+        return NULL;
+    }
+
+    xsdt = (struct acpi_20_xsdt *)
+        (acpi_start + rsdp->xsdt_address - ACPI_PHYSICAL_ADDRESS);
+    if (xsdt->header.signature != ACPI_2_0_XSDT_SIGNATURE) {
+        puts("Bad XSDT signature\n");
+        return NULL;
+    }
+    return xsdt;
+}
+
+/*
+   add an entry to the xdst table entry pointers
+   copy the given ssdt data to the current available memory at
+   freemem, if it does not exceed the limit
+ */
+static unsigned char *acpi_xsdt_add_entry(unsigned char *acpi_start,
+                                          unsigned char **freemem,
+                                          unsigned char *limit,
+                                          unsigned char *table,
+                                          unsigned int table_size)
+{
+    struct acpi_20_xsdt *xsdt = acpi_xsdt_get(acpi_start);
+    int found = 0, i = 0;
+    unsigned char *addr = NULL;
+
+    /* get empty slot in the Xsdt table */
+    while (i < ACPI_MAX_NUM_TABLES) {
+        if (xsdt->entry[i] == 0) {
+            found = 1;
+            break;
+        }
+        i++;
+    }
+
+    if (found) {
+        /* memory below hard limit ? */
+        if (*freemem + table_size <= limit) {
+            puts("Copying SSDT entry!\n");
+            addr = *freemem;
+            memcpy(addr, table, table_size);
+            xsdt->entry[i] = (uint64_t)(long)addr;
+            *freemem += table_size;
+            /* update the XSDT table */
+            xsdt->header.length =
+                sizeof(struct acpi_header) +
+                (i + 1) * sizeof(uint64_t);
+            set_checksum(xsdt,
+                         FIELD_OFFSET(struct acpi_header, checksum),
+                         xsdt->header.length);
+        }
+    }
+    return addr;
+}
diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/hvmloader/acpi_utils.h
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/tools/firmware/hvmloader/acpi_utils.h     Tue Oct 31 12:42:50 2006 +0000
@@ -0,0 +1,36 @@
+/*
+ * Commonly used ACPI utility functions.
+ *
+ * Yu Ke, ke.yu@xxxxxxxxx
+ * Copyright (c) 2005, Intel Corporation.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms and conditions of the GNU General Public License,
+ * version 2, as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
+ * more details.
+ *
+ * You should have received a copy of the GNU General Public License along with
+ * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
+ * Place - Suite 330, Boston, MA 02111-1307 USA.
+ */
+#ifndef ACPI_UTILS_H
+#define ACPI_UTILS_H
+
+#define FIELD_OFFSET(TYPE,Field) ((unsigned int)(&(((TYPE *) 0)->Field)))
+
+#define NULL ((void*)0)
+
+void set_checksum(void *start, int checksum_offset, int len);
+void acpi_update(unsigned char *acpi_start,
+                 unsigned long acpi_size,
+                 unsigned char *limit,
+                 unsigned char **freemem);
+
+struct acpi_20_rsdt *acpi_rsdt_get(unsigned char *acpi_start);
+struct acpi_20_xsdt *acpi_xsdt_get(unsigned char *acpi_start);
+
+#endif
diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/acpi/Makefile
--- a/tools/firmware/acpi/Makefile      Tue Oct 31 11:44:47 2006 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-#/*
-# * Copyright (c) 2004, Intel Corporation.
-# *
-# * This program is free software; you can redistribute it and/or modify it
-# * under the terms and conditions of the GNU General Public License,
-# * version 2, as published by the Free Software Foundation.
-# *
-# * This program is distributed in the hope it will be useful, but WITHOUT
-# * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-# * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
-# * more details.
-# *
-# * You should have received a copy of the GNU General Public License along 
with
-# * this program; if not, write to the Free Software Foundation, Inc., 59 
Temple
-# * Place - Suite 330, Boston, MA 02111-1307 USA.
-# *
-# */
-#
-
-XEN_ROOT = ../../..
-include $(XEN_ROOT)/tools/Rules.mk
-
-# Compiler flag
-HOSTCFLAGS += -I. -I../../libxc
-
-# TARGET
-C_SRC=$(shell ls *.c)
-H_SRC=$(shell ls *.h)
-ACPI_GEN=acpigen
-ACPI_BIN=acpi.bin
-
-IASL_VER=acpica-unix-20050513
-IASL_URL=http://developer.intel.com/technology/iapc/acpi/downloads/$(IASL_VER).tar.gz
-
-vpath iasl $(PATH)
-all:$(ACPI_BIN)
-
-acpi_dsdt.c:acpi_dsdt.asl
-       $(MAKE) iasl
-       iasl  -tc acpi_dsdt.asl
-       mv acpi_dsdt.hex acpi_dsdt.c
-       echo "int DsdtLen=sizeof(AmlCode);" >> acpi_dsdt.c
-       rm *.aml
-#        iasl -oa -tc acpi_dsdt.asl
-
-iasl:
-       @echo
-       @echo "ACPI ASL compiler(iasl) is needed"
-       @echo "Download Intel ACPI CA"
-       @echo "If wget failed, please download and compile manually from"
-       @echo "http://developer.intel.com/technology/iapc/acpi/downloads.htm";
-       @echo 
-       wget $(IASL_URL)
-       tar xzf $(IASL_VER).tar.gz
-       make -C $(IASL_VER)/compiler
-       $(INSTALL_PROG) $(IASL_VER)/compiler/iasl /usr/bin/iasl
-
-$(ACPI_GEN):$(C_SRC) $(H_SRC) acpi_dsdt.c
-       $(HOSTCC) -o $(ACPI_GEN) $(HOSTCFLAGS) $(shell ls *.c)
-
-$(ACPI_BIN):$(ACPI_GEN)
-       ./$(ACPI_GEN) $(ACPI_BIN)
-
-clean:
-       rm -rf *.o $(ACPI_GEN) $(ACPI_BIN) $(IASL_VER) 
-       rm -rf  $(IASL_VER).tar.gz
-
-install: all
diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/acpi/README
--- a/tools/firmware/acpi/README        Tue Oct 31 11:44:47 2006 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,24 +0,0 @@
-ACPI Table for domain firmware
-
-
-INSTALL
------------------
-Simply make is OK.
-# make 
-
-
-Note on DSDT Table
-------------------
-DSDT table source code is acpi_dsdt.asl
-It is already compiled and the output is acpi_dsdt.c
-Usually, user is not expected to change the acpi_dsdt.asl.
-In case that the acpi_dsdt.asl need to be updated, please 
-Follow the instruction:
-
-# make acpi_dsdt.c
-
-Note:
-DSDT compiler "iasl" is needed. By default, it will be downloaded 
-using wget in Makefile. if it failed, please download manually from 
-http://developer.intel.com/technology/iapc/acpi/downloads.htm. 
-then compile and install iasl
diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/acpi/acpi2_0.h
--- a/tools/firmware/acpi/acpi2_0.h     Tue Oct 31 11:44:47 2006 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,331 +0,0 @@
-/*
- * Copyright (c) 2004, Intel Corporation.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place - Suite 330, Boston, MA 02111-1307 USA.
- *
- */
-#ifndef _ACPI_2_0_H_
-#define _ACPI_2_0_H_
-
-typedef unsigned char  uint8_t;
-typedef   signed char  int8_t;
-typedef unsigned short uint16_t;
-typedef   signed short int16_t;
-typedef unsigned int   uint32_t;
-typedef   signed int   int32_t;
-#ifdef __i386__
-typedef unsigned long long uint64_t;
-typedef   signed long long int64_t;
-#else
-typedef unsigned long uint64_t;
-typedef   signed long int64_t;
-#endif
-
-#include <xen/xen.h>
-
-#pragma pack (1)
-
-//
-// common ACPI header.  
-//
-
-typedef struct {
-               uint32_t                        Signature;
-               uint32_t        Length;
-               uint8_t                 Revision;
-               uint8_t                 Checksum;
-               uint8_t                 OemId[6];
-               uint64_t                        OemTableId;
-               uint32_t                        OemRevision;
-               uint32_t                        CreatorId;
-               uint32_t                        CreatorRevision;
-} ACPI_TABLE_HEADER;
-
-
-#define ACPI_OEM_ID                    {'I','N','T','E','L',' '}
-#define ACPI_OEM_TABLE_ID              0x544244                // "TBD"
-#define ACPI_OEM_REVISION              0x00000002
-#define ACPI_CREATOR_ID                0x00                    // TBD 
-#define ACPI_CREATOR_REVISION  0x00000002              
-
-//
-// ACPI 2.0 Generic Address Space definition
-//
-typedef struct {
-               uint8_t                            AddressSpaceId;
-               uint8_t                            RegisterBitWidth;
-               uint8_t                            RegisterBitOffset;
-               uint8_t                            Reserved;
-               uint64_t                           Address;
-} ACPI_GENERIC_ADDRESS_STRUCTURE;
-
-//
-// Generic Address Space Address IDs
-//
-#define ACPI_SYSTEM_MEMORY 0
-#define ACPI_SYSTEM_IO 1
-#define ACPI_PCI_CONFIGURATION_SPACE 2
-#define ACPI_EMBEDDED_CONTROLLER 3
-#define ACPI_SMBUS 4
-#define ACPI_FUNCTIONAL_FIXED_HARDWARE 0x7F
-
-//
-// Root System Description Pointer Structure in ACPI 1.0
-//
-typedef struct {
-               uint64_t                           Signature;
-               uint8_t                            Checksum;
-               uint8_t                            OemId[6];
-               uint8_t                            Reserved;
-               uint32_t                           RsdtAddress;
-} ACPI_1_0_RSDP;
-
-
-//
-// Root System Description Pointer Structure
-//
-typedef struct {
-               uint64_t                           Signature;
-               uint8_t                            Checksum;
-               uint8_t                            OemId[6];
-               uint8_t                            Revision;
-               uint32_t                           RsdtAddress;
-               uint32_t                           Length;
-               uint64_t                           XsdtAddress;
-               uint8_t                            ExtendedChecksum;
-               uint8_t                            Reserved[3];
-} ACPI_2_0_RSDP;
-
-
-//
-// The maximum number of entrys in RSDT or XSDT
-//
-#define ACPI_MAX_NUM_TABLES 2
-
-//
-// Root System Description Table (RSDT)
-//
-
-typedef struct {
-               ACPI_TABLE_HEADER Header;
-               uint32_t Entry[ACPI_MAX_NUM_TABLES];
-}ACPI_2_0_RSDT;
-
-//
-// RSDT Revision (as defined in ACPI 2.0 spec.)
-//
-
-#define ACPI_2_0_RSDT_REVISION 0x01
-
-//
-// Extended System Description Table (XSDT)
-//
-
-typedef struct _ACPI_2_0_XSDT{
-               ACPI_TABLE_HEADER Header;
-               uint64_t Entry[ACPI_MAX_NUM_TABLES];
-}ACPI_2_0_XSDT;
-#define ACPI_2_0_XSDT_REVISION 0x01
-
-//
-// Fixed ACPI Description Table Structure (FADT)
-// 
-
-typedef struct  {
-               ACPI_TABLE_HEADER               Header;
-               uint32_t                                    FirmwareCtrl;
-               uint32_t                                    Dsdt;
-               uint8_t                                     Reserved0;
-               uint8_t                                     PreferredPmProfile;
-               uint16_t                                    SciInt;
-               uint32_t                                    SmiCmd;
-               uint8_t                                     AcpiEnable;
-               uint8_t                                     AcpiDisable;
-               uint8_t                                     S4BiosReq;
-               uint8_t                                     PstateCnt;
-               uint32_t                                    Pm1aEvtBlk;
-               uint32_t                                    Pm1bEvtBlk;
-               uint32_t                                    Pm1aCntBlk;
-               uint32_t                                    Pm1bCntBlk;
-               uint32_t                                    Pm2CntBlk;
-               uint32_t                                    PmTmrBlk;
-               uint32_t                                    Gpe0Blk;
-               uint32_t                                    Gpe1Blk;
-               uint8_t                                     Pm1EvtLen;
-               uint8_t                                     Pm1CntLen;
-               uint8_t                                     Pm2CntLen;
-               uint8_t                                     PmTmrLen;
-               uint8_t                                     Gpe0BlkLen;
-               uint8_t                                     Gpe1BlkLen;
-               uint8_t                                     Gpe1Base;
-               uint8_t                                     CstCnt;
-               uint16_t                                    PLvl2Lat;
-               uint16_t                                    PLvl3Lat;
-               uint16_t                                    FlushSize;
-               uint16_t                                    FlushStride;
-               uint8_t                                     DutyOffset;
-               uint8_t                                     DutyWidth;
-               uint8_t                                     DayAlrm;
-               uint8_t                                     MonAlrm;
-               uint8_t                                     Century;
-               uint16_t                                    IaPcBootArch;
-               uint8_t                                     Reserved1;
-               uint32_t                                    Flags;
-               ACPI_GENERIC_ADDRESS_STRUCTURE    ResetReg;
-               uint8_t                                     ResetValue;
-               uint8_t                                     Reserved2[3];
-               uint64_t                                    XFirmwareCtrl;
-               uint64_t                                    XDsdt;
-               ACPI_GENERIC_ADDRESS_STRUCTURE    XPm1aEvtBlk;
-               ACPI_GENERIC_ADDRESS_STRUCTURE    XPm1bEvtBlk;
-               ACPI_GENERIC_ADDRESS_STRUCTURE    XPm1aCntBlk;
-               ACPI_GENERIC_ADDRESS_STRUCTURE    XPm1bCntBlk;
-               ACPI_GENERIC_ADDRESS_STRUCTURE    XPm2CntBlk;
-               ACPI_GENERIC_ADDRESS_STRUCTURE    XPmTmrBlk;
-               ACPI_GENERIC_ADDRESS_STRUCTURE    XGpe0Blk;
-               ACPI_GENERIC_ADDRESS_STRUCTURE    XGpe1Blk;
-} ACPI_2_0_FADT;
-#define ACPI_2_0_FADT_REVISION 0x03
-
-//
-// FADT Boot Architecture Flags
-//
-#define ACPI_LEGACY_DEVICES (1 << 0)
-#define ACPI_8042           (1 << 1)
-
-//
-// FADT Fixed Feature Flags
-//
-#define ACPI_WBINVD         (1 << 0)
-#define ACPI_WBINVD_FLUSH   (1 << 1)
-#define ACPI_PROC_C1        (1 << 2)
-#define ACPI_P_LVL2_UP      (1 << 3)
-#define ACPI_PWR_BUTTON     (1 << 4)
-#define ACPI_SLP_BUTTON     (1 << 5)
-#define ACPI_FIX_RTC        (1 << 6)
-#define ACPI_RTC_S4         (1 << 7)
-#define ACPI_TMR_VAL_EXT    (1 << 8)
-#define ACPI_DCK_CAP        (1 << 9)
-#define ACPI_RESET_REG_SUP  (1 << 10)
-#define ACPI_SEALED_CASE    (1 << 11)
-#define ACPI_HEADLESS       (1 << 12)
-#define ACPI_CPU_SW_SLP     (1 << 13)
-
-//
-// Firmware ACPI Control Structure (FACS)
-//
-typedef struct {
-               uint32_t                               Signature;
-               uint32_t                               Length;
-               uint32_t                               HardwareSignature;
-               uint32_t                               FirmwareWakingVector;
-               uint32_t                               GlobalLock;
-               uint32_t                               Flags;
-               uint64_t                               XFirmwareWakingVector;
-               uint8_t                                Version;
-               uint8_t                                Reserved[31];
-} ACPI_2_0_FACS;
-
-#define ACPI_2_0_FACS_VERSION 0x01
-
-//
-// Multiple APIC Description Table header definition (MADT)
-//
-typedef struct {
-               ACPI_TABLE_HEADER                       Header;
-               uint32_t                                     LocalApicAddress;
-               uint32_t                                     Flags;
-} ACPI_2_0_MADT;
-
-#define ACPI_2_0_MADT_REVISION 0x01
-
-//
-// Multiple APIC Flags
-//
-#define ACPI_PCAT_COMPAT (1 << 0)
-
-//
-// Multiple APIC Description Table APIC structure types
-//
-#define ACPI_PROCESSOR_LOCAL_APIC           0x00
-#define ACPI_IO_APIC                        0x01
-#define ACPI_INTERRUPT_SOURCE_OVERRIDE      0x02
-#define ACPI_NON_MASKABLE_INTERRUPT_SOURCE  0x03
-#define ACPI_LOCAL_APIC_NMI                 0x04
-#define ACPI_LOCAL_APIC_ADDRESS_OVERRIDE    0x05
-#define ACPI_IO_SAPIC                       0x06
-#define ACPI_PROCESSOR_LOCAL_SAPIC          0x07
-#define ACPI_PLATFORM_INTERRUPT_SOURCES     0x08
-
-//
-// APIC Structure Definitions
-//
-
-//
-// Processor Local APIC Structure Definition
-//
-
-typedef struct {
-               uint8_t                                             Type;
-               uint8_t                                             Length;
-               uint8_t                                             
AcpiProcessorId;
-               uint8_t                                             ApicId;
-               uint32_t                                            Flags;
-} ACPI_LOCAL_APIC_STRUCTURE;
-
-//
-// Local APIC Flags.  All other bits are reserved and must be 0.
-//
-
-#define ACPI_LOCAL_APIC_ENABLED (1 << 0)
-
-//
-// IO APIC Structure
-//
-
-typedef struct {
-               uint8_t                                             Type;
-               uint8_t                                             Length;
-               uint8_t                                             IoApicId;
-               uint8_t                                             Reserved;
-               uint32_t                                            
IoApicAddress;
-               uint32_t                                            
GlobalSystemInterruptBase;
-} ACPI_IO_APIC_STRUCTURE;
-
-// Tabel Signature
-#define ACPI_2_0_RSDP_SIGNATURE 0x2052545020445352LL  // "RSD PTR "
-
-#define ACPI_DIFFERENTIATED_SYSTEM_DESCRIPTION_TABLE_SIGNATURE 0x54445344  
//"DSDT"
-
-#define ACPI_2_0_FACS_SIGNATURE 0x53434146 // "FACS"
-
-#define ACPI_2_0_FADT_SIGNATURE 0x50434146 // "FADT"
-
-#define ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE 0x43495041  // "APIC"
-
-#define ACPI_2_0_RSDT_SIGNATURE 0x54445352  // "RSDT"
-
-#define ACPI_2_0_XSDT_SIGNATURE 0x54445358  // "XSDT"
-
-#pragma pack ()
-
-// The physical that acpi table reside in the guest BIOS
-//#define ACPI_PHYSICAL_ADDRESS 0xE2000
-#define ACPI_PHYSICAL_ADDRESS 0xEA000
-#define ACPI_TABLE_SIZE (4*1024)  //Currently 4K is enough
-
-void
-AcpiBuildTable(uint8_t* buf);
-
-#endif
diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/acpi/acpi_build.c
--- a/tools/firmware/acpi/acpi_build.c  Tue Oct 31 11:44:47 2006 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,232 +0,0 @@
-/*
- * Copyright (c) 2004, Intel Corporation.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place - Suite 330, Boston, MA 02111-1307 USA.
- *
- */
-
-#include "acpi2_0.h"
-#include "acpi_madt.h"
-
-extern ACPI_2_0_RSDP Rsdp;
-extern ACPI_2_0_RSDT Rsdt;
-extern ACPI_2_0_XSDT Xsdt;
-extern ACPI_2_0_FADT Fadt;
-extern ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE Madt;
-extern ACPI_2_0_FACS Facs;
-extern unsigned char *AmlCode;
-extern int DsdtLen;
-
-
-typedef struct _ACPI_TABLE_ALL{
-               ACPI_2_0_RSDP *Rsdp;
-               ACPI_2_0_RSDT *Rsdt;
-               ACPI_2_0_XSDT *Xsdt;
-               ACPI_2_0_FADT *Fadt;
-               ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE *Madt;
-               ACPI_2_0_FACS *Facs;
-               unsigned char* Dsdt;
-               uint32_t RsdpOffset;
-               uint32_t RsdtOffset;
-               uint32_t XsdtOffset;
-               uint32_t FadtOffset;
-               uint32_t MadtOffset;
-               uint32_t FacsOffset;
-               uint32_t DsdtOffset;
-}ACPI_TABLE_ALL;
-
-static 
-void
-MemCopy(void* src, void* dst, int len){
-
-       uint8_t* src0=src;
-       uint8_t* dst0=dst;      
-
-       while(len--){
-               *(dst0++)=*(src0++);
-       }
-}
-
-static
-void
-SetCheckSum(
-  void*  Table, 
-  uint32_t ChecksumOffset,
-  uint32_t Length
-)
-/*
- * Routine Description:
- *      Calculate Checksum and store the result in the checksum 
- *     filed of the table      
- *
- * INPUT:
- *     Table:          Start pointer of table
- *     ChecksumOffset: Offset of checksum field in the table
- *     Length:         Length of Table
- */
-{
-       uint8_t Sum = 0;  
-       uint8_t *Ptr;
-
-       Ptr=Table;
-       Ptr[ChecksumOffset]=0;
-       while (Length--) {    
-               Sum = (uint8_t)(Sum + (*Ptr++));
-       }
-       
-       Ptr = Table;
-       Ptr[ChecksumOffset] = (uint8_t) (0xff - Sum + 1);
-}
-
-//
-//  FIELD_OFFSET - returns the byte offset to a field within a structure
-//
-#define FIELD_OFFSET(TYPE,Field) ((uint32_t)(&(((TYPE *) 0)->Field)))
-
-static
-void
-UpdateTable(
-       ACPI_TABLE_ALL *table
-)
-/*
- * Update the ACPI table:
- *             fill in the actuall physical address of RSDT, XSDT, FADT, MADT, 
FACS
- *             Caculate the checksum
- */
-{    
-       // RSDP Update  
-       table->Rsdp->RsdtAddress = (uint32_t)(ACPI_PHYSICAL_ADDRESS+
-                                       table->RsdtOffset);
-       table->Rsdp->XsdtAddress = (uint64_t)(ACPI_PHYSICAL_ADDRESS+
-                                       table->XsdtOffset);
-       SetCheckSum(table->Rsdp,
-                                       FIELD_OFFSET(ACPI_1_0_RSDP, Checksum),
-                                       sizeof(ACPI_1_0_RSDP)
-                          );
-       SetCheckSum(table->Rsdp,
-                                       FIELD_OFFSET(ACPI_2_0_RSDP,
-                                                       ExtendedChecksum),
-                                       sizeof(ACPI_2_0_RSDP)
-                          );
-
-       
-       //RSDT Update
-       table->Rsdt->Entry[0] = (uint32_t)(ACPI_PHYSICAL_ADDRESS + 
-                                       table->FadtOffset);     
-       table->Rsdt->Entry[1] = (uint32_t)(ACPI_PHYSICAL_ADDRESS + 
-                                       table->MadtOffset);
-       table->Rsdt->Header.Length = sizeof (ACPI_TABLE_HEADER) +
-                                       2*sizeof(uint32_t);
-       SetCheckSum(table->Rsdt,
-                                       FIELD_OFFSET(ACPI_TABLE_HEADER, 
Checksum),
-                                       table->Rsdt->Header.Length
-                          );   
-       
-       //XSDT  Update
-       table->Xsdt->Entry[0] = (uint64_t)(ACPI_PHYSICAL_ADDRESS +
-                                       table->FadtOffset);
-       table->Xsdt->Entry[1] = (uint64_t)(ACPI_PHYSICAL_ADDRESS + 
-                                       table->MadtOffset);     
-       table->Xsdt->Header.Length = sizeof (ACPI_TABLE_HEADER) + 
-                                       2*sizeof(uint64_t);
-       SetCheckSum(table->Xsdt,
-                                       FIELD_OFFSET(ACPI_TABLE_HEADER, 
Checksum),
-                                       table->Xsdt->Header.Length
-                          );
-
-       // FADT Update
-       table->Fadt->Dsdt = (uint32_t)(ACPI_PHYSICAL_ADDRESS + 
-                                       table->DsdtOffset);     
-       table->Fadt->XDsdt = (uint64_t)(ACPI_PHYSICAL_ADDRESS + 
-                                  table->DsdtOffset);
-       table->Fadt->FirmwareCtrl = (uint32_t)(ACPI_PHYSICAL_ADDRESS +
-                                       table->FacsOffset);
-       table->Fadt->XFirmwareCtrl = (uint64_t)(ACPI_PHYSICAL_ADDRESS + 
-                                       table->FacsOffset);     
-       SetCheckSum(table->Fadt,
-                                       FIELD_OFFSET(ACPI_TABLE_HEADER, 
Checksum),
-                                       sizeof(ACPI_2_0_FADT)
-                          );
-       
-       // MADT update
-       SetCheckSum(table->Madt,
-                                       FIELD_OFFSET(ACPI_TABLE_HEADER, 
Checksum),
-                                       
sizeof(ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE)
-                          );
-}
-
-void
-AcpiBuildTable(uint8_t* buf)
-/*
- * Copy all the ACPI table to buffer
- * Buffer Layout:
- *             FACS
- *             RSDP
- *             RSDT
- *             XSDT
- *             FADT
- *             MADT
- *             DSDT            
- *
- */            
-{
-       ACPI_TABLE_ALL table;
-       int offset=0;
-
-       // FACS: should be 64-bit alignment     
-       // so it is put at the start of buffer
-       // as the buffer is 64 bit alignment
-       table.FacsOffset = offset;
-       table.Facs = (ACPI_2_0_FACS*)(&buf[offset]);
-       MemCopy(&Facs, table.Facs, sizeof(ACPI_2_0_FACS));
-       offset += sizeof(ACPI_2_0_FACS);
-
-       // RSDP
-       table.RsdpOffset = offset;
-       table.Rsdp = (ACPI_2_0_RSDP*)(&buf[offset]);
-       MemCopy(&Rsdp, table.Rsdp, sizeof(ACPI_2_0_RSDP));
-       offset+=sizeof(ACPI_2_0_RSDP);
-
-       // RSDT
-       table.RsdtOffset = offset;
-       table.Rsdt = (ACPI_2_0_RSDT*)(&buf[offset]);
-       MemCopy(&Rsdt, table.Rsdt, sizeof(ACPI_2_0_RSDT));
-       offset+=sizeof(ACPI_2_0_RSDT);
-       
-       // XSDT
-       table.XsdtOffset = offset;
-       table.Xsdt = (ACPI_2_0_XSDT*)(&buf[offset]);
-       MemCopy(&Xsdt, table.Xsdt, sizeof(ACPI_2_0_XSDT));
-       offset+=sizeof(ACPI_2_0_XSDT);
-       
-       // FADT
-       table.FadtOffset = offset;
-       table.Fadt = (ACPI_2_0_FADT*)(&buf[offset]);
-       MemCopy(&Fadt, table.Fadt, sizeof(ACPI_2_0_FADT));
-       offset+=sizeof(ACPI_2_0_FADT);
-       
-       // MADT
-       table.MadtOffset = offset;
-       table.Madt = (ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE*)(&buf[offset]);
-       MemCopy(&Madt, table.Madt, 
sizeof(ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE));
-       offset+=sizeof(ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE);
-
-       // DSDT
-       table.DsdtOffset = offset;
-       table.Dsdt = (unsigned char*)(&buf[offset]);
-       MemCopy(&AmlCode, table.Dsdt, DsdtLen);
-       offset+=DsdtLen; 
-       
-       UpdateTable(&table);
-}
diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/acpi/acpi_dsdt.asl
--- a/tools/firmware/acpi/acpi_dsdt.asl Tue Oct 31 11:44:47 2006 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,521 +0,0 @@
-//**********************************************************************//
-//*
-//* Copyright (c) 2004, Intel Corporation.
-//*
-//* This program is free software; you can redistribute it and/or modify it
-//* under the terms and conditions of the GNU General Public License,
-//* version 2, as published by the Free Software Foundation.
-//*
-//* This program is distributed in the hope it will be useful, but WITHOUT
-//* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
-//* FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
-//* more details.
-//*
-//* You should have received a copy of the GNU General Public License along 
with
-//* this program; if not, write to the Free Software Foundation, Inc., 59 
Temple
-//* Place - Suite 330, Boston, MA 02111-1307 USA.
-
-//**
-//**  DSDT for Xen with Qemu device model
-//**
-//**
-
-DefinitionBlock ("DSDT.aml", "DSDT", 1, "INTEL","int-xen", 2006)
-{
-    Name (\PMBS, 0x0C00)
-    Name (\PMLN, 0x08)
-    Name (\IOB1, 0x00)
-    Name (\IOL1, 0x00)
-    Name (\APCB, 0xFEC00000)
-    Name (\APCL, 0x00010000)
-    Name (\PUID, 0x00)
-
-    Scope (\_PR)
-    {
-        Processor (CPU0, 0x00, 0x00000000, 0x00) {}
-        Processor (CPU1, 0x01, 0x00000000, 0x00) {}
-        Processor (CPU2, 0x02, 0x00000000, 0x00) {}
-        Processor (CPU3, 0x03, 0x00000000, 0x00) {}
-
-    }
-
-/* Poweroff support - ties in with qemu emulation */
-
-    Name (\_S5, Package (0x04)
-    {
-        0x07,
-        0x07,
-        0x00,
-        0x00
-    })
-
-
-    Name(PICD, 0)
-
-    Method(_PIC, 1) { 
- 
-    Store(Arg0, PICD) 
-    }
-    Scope (\_SB)
-    {
-       /* Fix HCT test for 0x400 pci memory - need to report low 640 MB mem as 
motherboard resource            */
-
-       Device(MEM0) {
-           Name(_HID, EISAID("PNP0C02"))
-           Name(_CRS, ResourceTemplate() {
-           QWordMemory (ResourceConsumer, PosDecode, MinFixed, MaxFixed, 
Cacheable, ReadWrite,
-                    0x00000000,
-                    0x00000000,
-                    0x0009ffff,
-                    0x00000000,
-                    0x000a0000)
-           }
-           )
-       }
-
-       Device (PCI0)
-        {
-           Name (_HID, EisaId ("PNP0A03"))
-           Name (_UID, 0x00)
-           Name (_ADR, 0x00)
-           Name (_BBN, 0x00)
-           OperationRegion (PIRP, PCI_Config, 0x3c, 0x10)
-           Field(PIRP, ByteAcc, NoLock, Preserve){        
-          IRQ3,3,
-          IRQ5,5,
-          IRQ7,7,
-          IRQ9,9,
-          IRQA,10,
-          IRQB,11
-         }
- 
-            Method (_CRS, 0, NotSerialized)
-            {
-          
-               Name (PRT0, ResourceTemplate ()
-                {
-         /* bus number is from 0 - 255*/
-                    WordBusNumber (ResourceConsumer, MinFixed, MaxFixed, 
SubDecode,
-                        0x0000,
-                        0x0000,
-                        0x00FF,
-                        0x0000,
-                        0x0100)
-                    IO (Decode16, 0x0CF8, 0x0CF8, 0x01, 0x08)
-                    WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, 
EntireRange,
-                        0x0000,
-                        0x0000,
-                        0x0CF7,
-                        0x0000,
-                        0x0CF8)
-                    WordIO (ResourceProducer, MinFixed, MaxFixed, PosDecode, 
EntireRange,
-                        0x0000,
-                        0x0D00,
-                        0xFFFF,
-                        0x0000,
-                        0xF300)
-
-                /* reserve memory for pci devices */
-
-                    DWordMemory (ResourceConsumer, PosDecode, MinFixed, 
MaxFixed, Cacheable, ReadWrite,
-                        0x00000000,
-                        0xF0000000,
-                        0xF4FFFFFF,
-                        0x00000000,
-                        0x05000000)
-
-                })
-                Return (PRT0)
-            }
-       Name(BUFA, ResourceTemplate() {
-                IRQ(Level, ActiveLow, Shared) {
-                        3,4,5,6,7,10,11,12,14,15} 
-                }) 
-
-                Name(BUFB, Buffer(){
-                0x23, 0x00, 0x00, 0x18,
-                0x79, 0})
-
-                CreateWordField(BUFB, 0x01, IRQV)
-
-                Name(BUFC, Buffer(){
-                5, 7, 10, 11
-                 })
-                
-                CreateByteField(BUFC, 0x01, PIQA)
-                CreateByteField(BUFC, 0x01, PIQB)
-                CreateByteField(BUFC, 0x01, PIQC)
-                CreateByteField(BUFC, 0x01, PIQD)
-                
-                Device(LNKA)    {
-                Name(_HID, EISAID("PNP0C0F")) // PCI interrupt link
-                Name(_UID, 1)
-                Method(_STA, 0) {
-                               And(PIRA, 0x80, Local0)
-                        If(LEqual(Local0, 0x80)) {
-                                Return(0x09)   
-                                }
-                        Else {
-                                Return(0x0B) 
-                                }
-                        }
-
-                Method(_PRS) {
-
-                        Return(BUFA)
-                } // Method(_PRS)
-
-                Method(_DIS) {
-                               Or(PIRA, 0x80, PIRA)
-                }
-
-                Method(_CRS) {
-                        And(PIRB, 0x0f, Local0) 
-                        ShiftLeft(0x1, Local0, IRQV) 
-                        Return(BUFB) 
-                } 
-
-                Method(_SRS, 1) {
-                                CreateWordField(ARG0, 0x01, IRQ1) 
-                        FindSetRightBit(IRQ1, Local0) 
-                        Decrement(Local0) 
-                        Store(Local0, PIRA)
-                 } // Method(_SRS)
-        }
-
-        Device(LNKB){
-                Name(_HID, EISAID("PNP0C0F"))  
-                Name(_UID, 2)
-                Method(_STA, 0) {
-                               And(PIRB, 0x80, Local0)
-                        If(LEqual(Local0, 0x80)) {
-                                Return(0x09) 
-                                }
-                        Else {
-                                Return(0x0B) 
-                                }
-                        }
-
-                Method(_PRS) {
-                                Return(BUFA) 
-                } // Method(_PRS)
-
-                Method(_DIS) {
-
-                               Or(PIRB, 0x80, PIRB)
-                }
-
-                Method(_CRS) {
-                        And(PIRB, 0x0f, Local0) 
-                        ShiftLeft(0x1, Local0, IRQV) 
-                        Return(BUFB) 
-                } // Method(_CRS)
-
-                Method(_SRS, 1) {
-                        CreateWordField(ARG0, 0x01, IRQ1) 
-                        FindSetRightBit(IRQ1, Local0) 
-                        Decrement(Local0)
-                        Store(Local0, PIRB) 
-                 } // Method(_SRS)
-        }
-
-        Device(LNKC){
-                Name(_HID, EISAID("PNP0C0F")) // PCI interrupt link
-                Name(_UID, 3)
-                Method(_STA, 0) {
-                        And(PIRC, 0x80, Local0)
-                        If(LEqual(Local0, 0x80)) {
-                                Return(0x09) 
-                        }
-                        Else {
-                                Return(0x0B)
-                        }
-                }
-
-                Method(_PRS) { 
-                        Return(BUFA)
-                } // Method(_PRS)
-
-                Method(_DIS) {
-
-                               Or(PIRC, 0x80, PIRC)
-                }
-
-                Method(_CRS) {
-                        And(PIRC, 0x0f, Local0) 
-                        ShiftLeft(0x1, Local0, IRQV) 
-                        Return(BUFB) 
-                } // Method(_CRS)
-
-                Method(_SRS, 1) {
-                                CreateWordField(ARG0, 0x01, IRQ1) 
-                        FindSetRightBit(IRQ1, Local0) 
-                        Decrement(Local0) 
-                        Store(Local0, PIRC)
-                 } // Method(_SRS)
-        }
-
-        Device(LNKD) {
-                Name(_HID, EISAID("PNP0C0F"))  
-                Name(_UID, 4)
-                Method(_STA, 0) {
-                               And(PIRD, 0x80, Local0)
-                        If(LEqual(Local0, 0x80)) {
-                                Return(0x09) 
-                        }
-                        Else {
-                                Return(0x0B) 
-                        }
-                }
-
-                Method(_PRS) { 
-                        Return(BUFA) 
-                } // Method(_PRS)
-
-                Method(_DIS) {
-                               Or(PIRD, 0x80, PIRD)
-                }
-
-                Method(_CRS) {
-                        And(PIRD, 0x0f, Local0) 
-                        ShiftLeft(0x1, Local0, IRQV) 
-                        Return(BUFB) 
-                } // Method(_CRS)
-
-                Method(_SRS, 1) {
-                                CreateWordField(ARG0, 0x01, IRQ1) 
-                        FindSetRightBit(IRQ1, Local0) 
-                        Decrement(Local0) 
-                        Store(Local0, PIRD) 
-                 } // Method(_SRS)
-        }
-        Method(_PRT,0) {
-               If(PICD) {Return(PRTA)}  
-               Return (PRTP)  
-               } // end _PRT
-
-        Name(PRTP, Package() {
-                        // Slot 1, INTA - INTD
-                        Package(){0x0000ffff, 0, \_SB.PCI0.LNKA, 0},
-                        Package(){0x0000ffff, 1, \_SB.PCI0.LNKB, 0},
-                        Package(){0x0000ffff, 2, \_SB.PCI0.LNKC, 0},
-                        Package(){0x0000ffff, 3, \_SB.PCI0.LNKD, 0},
-
-                        // Slot 2, INTA - INTD
-                        Package(){0x0001ffff, 0, \_SB.PCI0.LNKB, 0},
-                        Package(){0x0001ffff, 1, \_SB.PCI0.LNKC, 0},
-                        Package(){0x0001ffff, 2, \_SB.PCI0.LNKD, 0},
-                        Package(){0x0001ffff, 3, \_SB.PCI0.LNKA, 0},
-                        
-                        // Slot 3, INTA - INTD
-                        Package(){0x0002ffff, 0, \_SB.PCI0.LNKC, 0},
-                        Package(){0x0002ffff, 1, \_SB.PCI0.LNKD, 0},
-                        Package(){0x0002ffff, 2, \_SB.PCI0.LNKA, 0},
-                        Package(){0x0002ffff, 3, \_SB.PCI0.LNKB, 0},
-                        
-                        // Slot 4, INTA - INTD
-                        Package(){0x0003ffff, 0, \_SB.PCI0.LNKD, 0},
-                        Package(){0x0003ffff, 1, \_SB.PCI0.LNKA, 0},
-                        Package(){0x0003ffff, 2, \_SB.PCI0.LNKB, 0},
-                        Package(){0x0003ffff, 3, \_SB.PCI0.LNKC, 0},
-                        
-                        // Slot 5, INTA - INTD
-                        Package(){0x0004ffff, 0, \_SB.PCI0.LNKA, 0},
-                        Package(){0x0004ffff, 1, \_SB.PCI0.LNKB, 0},
-                        Package(){0x0004ffff, 2, \_SB.PCI0.LNKC, 0},
-                        Package(){0x0004ffff, 3, \_SB.PCI0.LNKD, 0},
-                        }
-            )
-        Name(PRTA, Package(){
-                        Package(){0x0001ffff, 0, 0, 5},  // Device 1, INTA
-                        Package(){0x0002ffff, 0, 0, 7},  // Device 2, INTA
-                        Package(){0x0003ffff, 0, 0, 10}, // Device 3, INTA
-                        Package(){0x0004ffff, 0, 0, 11}, // Device 4, INTA
-                        }
-            )
-            
-            Device (ISA)
-            {
-                Name (_ADR, 0x00000000) /* device id, PCI bus num, ... */
- 
-            OperationRegion(PIRQ, PCI_Config, 0x60, 0x4)
-                        Scope(\) {
-                                 Field (\_SB.PCI0.ISA.PIRQ, ByteAcc, NoLock, 
Preserve) {
-                                        PIRA, 8,
-                                        PIRB, 8,
-                                        PIRC, 8,
-                                        PIRD, 8
-                                        }
-                                 }
-                Device (SYSR)
-                {
-                    Name (_HID, EisaId ("PNP0C02"))
-                    Name (_UID, 0x01)
-                    Name (CRS, ResourceTemplate ()
-                    {
-               /* TODO: list hidden resources */
-                        IO (Decode16, 0x0010, 0x0010, 0x00, 0x10)
-                        IO (Decode16, 0x0022, 0x0022, 0x00, 0x0C)
-                        IO (Decode16, 0x0030, 0x0030, 0x00, 0x10)
-                        IO (Decode16, 0x0044, 0x0044, 0x00, 0x1C)
-                        IO (Decode16, 0x0062, 0x0062, 0x00, 0x02)
-                        IO (Decode16, 0x0065, 0x0065, 0x00, 0x0B)
-                        IO (Decode16, 0x0072, 0x0072, 0x00, 0x0E)
-                        IO (Decode16, 0x0080, 0x0080, 0x00, 0x01)
-                        IO (Decode16, 0x0084, 0x0084, 0x00, 0x03)
-                        IO (Decode16, 0x0088, 0x0088, 0x00, 0x01)
-                        IO (Decode16, 0x008C, 0x008C, 0x00, 0x03)
-                        IO (Decode16, 0x0090, 0x0090, 0x00, 0x10)
-                        IO (Decode16, 0x00A2, 0x00A2, 0x00, 0x1C)
-                        IO (Decode16, 0x00E0, 0x00E0, 0x00, 0x10)
-                        IO (Decode16, 0x08A0, 0x08A0, 0x00, 0x04)
-                        IO (Decode16, 0x0CC0, 0x0CC0, 0x00, 0x10)
-                        IO (Decode16, 0x04D0, 0x04D0, 0x00, 0x02)
-                    })
-                    Method (_CRS, 0, NotSerialized)
-                    {
-                        Return (CRS)
-                    }
-                }
-
-                Device (PIC)
-                {
-                    Name (_HID, EisaId ("PNP0000"))
-                    Name (_CRS, ResourceTemplate ()
-                    {
-                        IO (Decode16, 0x0020, 0x0020, 0x01, 0x02)
-                        IO (Decode16, 0x00A0, 0x00A0, 0x01, 0x02)
-                        IRQNoFlags () {2}
-                    })
-                }
-
-                Device (DMA0)
-                {
-                    Name (_HID, EisaId ("PNP0200"))
-                    Name (_CRS, ResourceTemplate ()
-                    {
-                        DMA (Compatibility, BusMaster, Transfer8) {4}
-                        IO (Decode16, 0x0000, 0x0000, 0x00, 0x10)
-                        IO (Decode16, 0x0081, 0x0081, 0x00, 0x03)
-                        IO (Decode16, 0x0087, 0x0087, 0x00, 0x01)
-                        IO (Decode16, 0x0089, 0x0089, 0x00, 0x03)
-                        IO (Decode16, 0x008F, 0x008F, 0x00, 0x01)
-                        IO (Decode16, 0x00C0, 0x00C0, 0x00, 0x20)
-                        IO (Decode16, 0x0480, 0x0480, 0x00, 0x10)
-                    })
-                }
-
-                Device (TMR)
-                {
-                    Name (_HID, EisaId ("PNP0100"))
-                    Name (_CRS, ResourceTemplate ()
-                    {
-                        IO (Decode16, 0x0040, 0x0040, 0x00, 0x04)
-                        IRQNoFlags () {0}
-                    })
-                }
-
-                Device (RTC)
-                {
-                    Name (_HID, EisaId ("PNP0B00"))
-                    Name (_CRS, ResourceTemplate ()
-                    {
-                        IO (Decode16, 0x0070, 0x0070, 0x00, 0x02)
-                        IRQNoFlags () {8}
-                    })
-                }
-
-                Device (SPKR)
-                {
-                    Name (_HID, EisaId ("PNP0800"))
-                    Name (_CRS, ResourceTemplate ()
-                    {
-                        IO (Decode16, 0x0061, 0x0061, 0x00, 0x01)
-                    })
-                }
-
-                Device (PS2M)
-                {
-                    Name (_HID, EisaId ("PNP0F13"))
-                    Name (_CID, 0x130FD041)
-                    Method (_STA, 0, NotSerialized)
-                    {
-                        Return (0x0F)
-                    }
-
-                    Name (_CRS, ResourceTemplate ()
-                    {
-                        IRQNoFlags () {12}
-                    })
-                }
-
-                Device (PS2K)
-                {
-                    Name (_HID, EisaId ("PNP0303"))
-                    Name (_CID, 0x0B03D041)
-                    Method (_STA, 0, NotSerialized)
-                    {
-                        Return (0x0F)
-                    }
-
-                    Name (_CRS, ResourceTemplate ()
-                    {
-                        IO (Decode16, 0x0060, 0x0060, 0x00, 0x01)
-                        IO (Decode16, 0x0064, 0x0064, 0x00, 0x01)
-                        IRQNoFlags () {1}
-                    })
-                }
-
-                Device (FDC0)
-                {
-                    Name (_HID, EisaId ("PNP0700"))
-                    Method (_STA, 0, NotSerialized)
-                    {
-                          Return (0x0F)
-                    }
-
-                    Name (_CRS, ResourceTemplate ()
-                    {
-                        IO (Decode16, 0x03F0, 0x03F0, 0x01, 0x06)
-                        IO (Decode16, 0x03F7, 0x03F7, 0x01, 0x01)
-                        IRQNoFlags () {6}
-                        DMA (Compatibility, NotBusMaster, Transfer8) {2}
-                    })
-                }
-
-                Device (UAR1)
-                {
-                    Name (_HID, EisaId ("PNP0501"))
-                    Name (_UID, 0x01)
-                    Method (_STA, 0, NotSerialized)
-                    {
-                        Return (0x0F)
-                    }
-
-                    Name (_CRS, ResourceTemplate()
-                    {
-                        IO (Decode16, 0x03F8, 0x03F8, 0x01, 0x08)
-                        IRQNoFlags () {4}
-                    })
-                }
-
-                Device (LTP1)
-                {
-                    Name (_HID, EisaId ("PNP0400"))
-                    Name (_UID, 0x02)
-                    Method (_STA, 0, NotSerialized)
-                    {
-                        Return (0x0F)
-                    }
-
-                    Name (_CRS, ResourceTemplate()
-                    {
-                        IO (Decode16, 0x0378, 0x0378, 0x08, 0x08)
-                        IRQNoFlags () {7}
-                    })
-                } 
-            }
-        }
-    }
-}
-
diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/acpi/acpi_dsdt.c
--- a/tools/firmware/acpi/acpi_dsdt.c   Tue Oct 31 11:44:47 2006 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,300 +0,0 @@
-/*
- * 
- * Intel ACPI Component Architecture
- * ASL Optimizing Compiler / AML Disassembler version 20050513 [Oct 12 2006]
- * Copyright (C) 2000 - 2005 Intel Corporation
- * Supports ACPI Specification Revision 3.0
- * 
- * Compilation of "acpi_dsdt.asl" - Thu Oct 12 14:08:49 2006
- * 
- * C source code output
- *
- */
-unsigned char AmlCode[] = 
-{
-    0x44,0x53,0x44,0x54,0xDA,0x08,0x00,0x00,  /* 00000000    "DSDT...." */
-    0x01,0x26,0x49,0x4E,0x54,0x45,0x4C,0x00,  /* 00000008    ".&INTEL." */
-    0x69,0x6E,0x74,0x2D,0x78,0x65,0x6E,0x00,  /* 00000010    "int-xen." */
-    0xD6,0x07,0x00,0x00,0x49,0x4E,0x54,0x4C,  /* 00000018    "....INTL" */
-    0x13,0x05,0x05,0x20,0x08,0x50,0x4D,0x42,  /* 00000020    "... .PMB" */
-    0x53,0x0B,0x00,0x0C,0x08,0x50,0x4D,0x4C,  /* 00000028    "S....PML" */
-    0x4E,0x0A,0x08,0x08,0x49,0x4F,0x42,0x31,  /* 00000030    "N...IOB1" */
-    0x00,0x08,0x49,0x4F,0x4C,0x31,0x00,0x08,  /* 00000038    "..IOL1.." */
-    0x41,0x50,0x43,0x42,0x0C,0x00,0x00,0xC0,  /* 00000040    "APCB...." */
-    0xFE,0x08,0x41,0x50,0x43,0x4C,0x0C,0x00,  /* 00000048    "..APCL.." */
-    0x00,0x01,0x00,0x08,0x50,0x55,0x49,0x44,  /* 00000050    "....PUID" */
-    0x00,0x10,0x39,0x5F,0x50,0x52,0x5F,0x5B,  /* 00000058    "..9_PR_[" */
-    0x83,0x0B,0x43,0x50,0x55,0x30,0x00,0x00,  /* 00000060    "..CPU0.." */
-    0x00,0x00,0x00,0x00,0x5B,0x83,0x0B,0x43,  /* 00000068    "....[..C" */
-    0x50,0x55,0x31,0x01,0x00,0x00,0x00,0x00,  /* 00000070    "PU1....." */
-    0x00,0x5B,0x83,0x0B,0x43,0x50,0x55,0x32,  /* 00000078    ".[..CPU2" */
-    0x02,0x00,0x00,0x00,0x00,0x00,0x5B,0x83,  /* 00000080    "......[." */
-    0x0B,0x43,0x50,0x55,0x33,0x03,0x00,0x00,  /* 00000088    ".CPU3..." */
-    0x00,0x00,0x00,0x08,0x5F,0x53,0x35,0x5F,  /* 00000090    "...._S5_" */
-    0x12,0x08,0x04,0x0A,0x07,0x0A,0x07,0x00,  /* 00000098    "........" */
-    0x00,0x08,0x50,0x49,0x43,0x44,0x00,0x14,  /* 000000A0    "..PICD.." */
-    0x0C,0x5F,0x50,0x49,0x43,0x01,0x70,0x68,  /* 000000A8    "._PIC.ph" */
-    0x50,0x49,0x43,0x44,0x10,0x45,0x82,0x5F,  /* 000000B0    "PICD.E._" */
-    0x53,0x42,0x5F,0x5B,0x82,0x49,0x04,0x4D,  /* 000000B8    "SB_[.I.M" */
-    0x45,0x4D,0x30,0x08,0x5F,0x48,0x49,0x44,  /* 000000C0    "EM0._HID" */
-    0x0C,0x41,0xD0,0x0C,0x02,0x08,0x5F,0x43,  /* 000000C8    ".A...._C" */
-    0x52,0x53,0x11,0x33,0x0A,0x30,0x8A,0x2B,  /* 000000D0    "RS.3.0.+" */
-    0x00,0x00,0x0D,0x03,0x00,0x00,0x00,0x00,  /* 000000D8    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000E0    "........" */
-    0x00,0x00,0x00,0x00,0xFF,0xFF,0x09,0x00,  /* 000000E8    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,  /* 000000F0    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x0A,0x00,  /* 000000F8    "........" */
-    0x00,0x00,0x00,0x00,0x79,0x00,0x5B,0x82,  /* 00000100    "....y.[." */
-    0x42,0x7D,0x50,0x43,0x49,0x30,0x08,0x5F,  /* 00000108    "B}PCI0._" */
-    0x48,0x49,0x44,0x0C,0x41,0xD0,0x0A,0x03,  /* 00000110    "HID.A..." */
-    0x08,0x5F,0x55,0x49,0x44,0x00,0x08,0x5F,  /* 00000118    "._UID.._" */
-    0x41,0x44,0x52,0x00,0x08,0x5F,0x42,0x42,  /* 00000120    "ADR.._BB" */
-    0x4E,0x00,0x5B,0x80,0x50,0x49,0x52,0x50,  /* 00000128    "N.[.PIRP" */
-    0x02,0x0A,0x3C,0x0A,0x10,0x5B,0x81,0x24,  /* 00000130    "..<..[.$" */
-    0x50,0x49,0x52,0x50,0x01,0x49,0x52,0x51,  /* 00000138    "PIRP.IRQ" */
-    0x33,0x03,0x49,0x52,0x51,0x35,0x05,0x49,  /* 00000140    "3.IRQ5.I" */
-    0x52,0x51,0x37,0x07,0x49,0x52,0x51,0x39,  /* 00000148    "RQ7.IRQ9" */
-    0x09,0x49,0x52,0x51,0x41,0x0A,0x49,0x52,  /* 00000150    ".IRQA.IR" */
-    0x51,0x42,0x0B,0x14,0x4A,0x06,0x5F,0x43,  /* 00000158    "QB..J._C" */
-    0x52,0x53,0x00,0x08,0x50,0x52,0x54,0x30,  /* 00000160    "RS..PRT0" */
-    0x11,0x48,0x05,0x0A,0x54,0x88,0x0D,0x00,  /* 00000168    ".H..T..." */
-    0x02,0x0F,0x00,0x00,0x00,0x00,0x00,0xFF,  /* 00000170    "........" */
-    0x00,0x00,0x00,0x00,0x01,0x47,0x01,0xF8,  /* 00000178    ".....G.." */
-    0x0C,0xF8,0x0C,0x01,0x08,0x88,0x0D,0x00,  /* 00000180    "........" */
-    0x01,0x0C,0x03,0x00,0x00,0x00,0x00,0xF7,  /* 00000188    "........" */
-    0x0C,0x00,0x00,0xF8,0x0C,0x88,0x0D,0x00,  /* 00000190    "........" */
-    0x01,0x0C,0x03,0x00,0x00,0x00,0x0D,0xFF,  /* 00000198    "........" */
-    0xFF,0x00,0x00,0x00,0xF3,0x87,0x17,0x00,  /* 000001A0    "........" */
-    0x00,0x0D,0x03,0x00,0x00,0x00,0x00,0x00,  /* 000001A8    "........" */
-    0x00,0x00,0xF0,0xFF,0xFF,0xFF,0xF4,0x00,  /* 000001B0    "........" */
-    0x00,0x00,0x00,0x00,0x00,0x00,0x05,0x79,  /* 000001B8    ".......y" */
-    0x00,0xA4,0x50,0x52,0x54,0x30,0x08,0x42,  /* 000001C0    "..PRT0.B" */
-    0x55,0x46,0x41,0x11,0x09,0x0A,0x06,0x23,  /* 000001C8    "UFA....#" */
-    0xF8,0xDC,0x18,0x79,0x00,0x08,0x42,0x55,  /* 000001D0    "...y..BU" */
-    0x46,0x42,0x11,0x09,0x0A,0x06,0x23,0x00,  /* 000001D8    "FB....#." */
-    0x00,0x18,0x79,0x00,0x8B,0x42,0x55,0x46,  /* 000001E0    "..y..BUF" */
-    0x42,0x01,0x49,0x52,0x51,0x56,0x08,0x42,  /* 000001E8    "B.IRQV.B" */
-    0x55,0x46,0x43,0x11,0x07,0x0A,0x04,0x05,  /* 000001F0    "UFC....." */
-    0x07,0x0A,0x0B,0x8C,0x42,0x55,0x46,0x43,  /* 000001F8    "....BUFC" */
-    0x01,0x50,0x49,0x51,0x41,0x8C,0x42,0x55,  /* 00000200    ".PIQA.BU" */
-    0x46,0x43,0x01,0x50,0x49,0x51,0x42,0x8C,  /* 00000208    "FC.PIQB." */
-    0x42,0x55,0x46,0x43,0x01,0x50,0x49,0x51,  /* 00000210    "BUFC.PIQ" */
-    0x43,0x8C,0x42,0x55,0x46,0x43,0x01,0x50,  /* 00000218    "C.BUFC.P" */
-    0x49,0x51,0x44,0x5B,0x82,0x48,0x08,0x4C,  /* 00000220    "IQD[.H.L" */
-    0x4E,0x4B,0x41,0x08,0x5F,0x48,0x49,0x44,  /* 00000228    "NKA._HID" */
-    0x0C,0x41,0xD0,0x0C,0x0F,0x08,0x5F,0x55,  /* 00000230    ".A...._U" */
-    0x49,0x44,0x01,0x14,0x1C,0x5F,0x53,0x54,  /* 00000238    "ID..._ST" */
-    0x41,0x00,0x7B,0x50,0x49,0x52,0x41,0x0A,  /* 00000240    "A.{PIRA." */
-    0x80,0x60,0xA0,0x08,0x93,0x60,0x0A,0x80,  /* 00000248    ".`...`.." */
-    0xA4,0x0A,0x09,0xA1,0x04,0xA4,0x0A,0x0B,  /* 00000250    "........" */
-    0x14,0x0B,0x5F,0x50,0x52,0x53,0x00,0xA4,  /* 00000258    ".._PRS.." */
-    0x42,0x55,0x46,0x41,0x14,0x11,0x5F,0x44,  /* 00000260    "BUFA.._D" */
-    0x49,0x53,0x00,0x7D,0x50,0x49,0x52,0x41,  /* 00000268    "IS.}PIRA" */
-    0x0A,0x80,0x50,0x49,0x52,0x41,0x14,0x1A,  /* 00000270    "..PIRA.." */
-    0x5F,0x43,0x52,0x53,0x00,0x7B,0x50,0x49,  /* 00000278    "_CRS.{PI" */
-    0x52,0x42,0x0A,0x0F,0x60,0x79,0x01,0x60,  /* 00000280    "RB..`y.`" */
-    0x49,0x52,0x51,0x56,0xA4,0x42,0x55,0x46,  /* 00000288    "IRQV.BUF" */
-    0x42,0x14,0x1B,0x5F,0x53,0x52,0x53,0x01,  /* 00000290    "B.._SRS." */
-    0x8B,0x68,0x01,0x49,0x52,0x51,0x31,0x82,  /* 00000298    ".h.IRQ1." */
-    0x49,0x52,0x51,0x31,0x60,0x76,0x60,0x70,  /* 000002A0    "IRQ1`v`p" */
-    0x60,0x50,0x49,0x52,0x41,0x5B,0x82,0x49,  /* 000002A8    "`PIRA[.I" */
-    0x08,0x4C,0x4E,0x4B,0x42,0x08,0x5F,0x48,  /* 000002B0    ".LNKB._H" */
-    0x49,0x44,0x0C,0x41,0xD0,0x0C,0x0F,0x08,  /* 000002B8    "ID.A...." */
-    0x5F,0x55,0x49,0x44,0x0A,0x02,0x14,0x1C,  /* 000002C0    "_UID...." */
-    0x5F,0x53,0x54,0x41,0x00,0x7B,0x50,0x49,  /* 000002C8    "_STA.{PI" */
-    0x52,0x42,0x0A,0x80,0x60,0xA0,0x08,0x93,  /* 000002D0    "RB..`..." */
-    0x60,0x0A,0x80,0xA4,0x0A,0x09,0xA1,0x04,  /* 000002D8    "`......." */
-    0xA4,0x0A,0x0B,0x14,0x0B,0x5F,0x50,0x52,  /* 000002E0    "....._PR" */
-    0x53,0x00,0xA4,0x42,0x55,0x46,0x41,0x14,  /* 000002E8    "S..BUFA." */
-    0x11,0x5F,0x44,0x49,0x53,0x00,0x7D,0x50,  /* 000002F0    "._DIS.}P" */
-    0x49,0x52,0x42,0x0A,0x80,0x50,0x49,0x52,  /* 000002F8    "IRB..PIR" */
-    0x42,0x14,0x1A,0x5F,0x43,0x52,0x53,0x00,  /* 00000300    "B.._CRS." */
-    0x7B,0x50,0x49,0x52,0x42,0x0A,0x0F,0x60,  /* 00000308    "{PIRB..`" */
-    0x79,0x01,0x60,0x49,0x52,0x51,0x56,0xA4,  /* 00000310    "y.`IRQV." */
-    0x42,0x55,0x46,0x42,0x14,0x1B,0x5F,0x53,  /* 00000318    "BUFB.._S" */
-    0x52,0x53,0x01,0x8B,0x68,0x01,0x49,0x52,  /* 00000320    "RS..h.IR" */
-    0x51,0x31,0x82,0x49,0x52,0x51,0x31,0x60,  /* 00000328    "Q1.IRQ1`" */
-    0x76,0x60,0x70,0x60,0x50,0x49,0x52,0x42,  /* 00000330    "v`p`PIRB" */
-    0x5B,0x82,0x49,0x08,0x4C,0x4E,0x4B,0x43,  /* 00000338    "[.I.LNKC" */
-    0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,  /* 00000340    "._HID.A." */
-    0x0C,0x0F,0x08,0x5F,0x55,0x49,0x44,0x0A,  /* 00000348    "..._UID." */
-    0x03,0x14,0x1C,0x5F,0x53,0x54,0x41,0x00,  /* 00000350    "..._STA." */
-    0x7B,0x50,0x49,0x52,0x43,0x0A,0x80,0x60,  /* 00000358    "{PIRC..`" */
-    0xA0,0x08,0x93,0x60,0x0A,0x80,0xA4,0x0A,  /* 00000360    "...`...." */
-    0x09,0xA1,0x04,0xA4,0x0A,0x0B,0x14,0x0B,  /* 00000368    "........" */
-    0x5F,0x50,0x52,0x53,0x00,0xA4,0x42,0x55,  /* 00000370    "_PRS..BU" */
-    0x46,0x41,0x14,0x11,0x5F,0x44,0x49,0x53,  /* 00000378    "FA.._DIS" */
-    0x00,0x7D,0x50,0x49,0x52,0x43,0x0A,0x80,  /* 00000380    ".}PIRC.." */
-    0x50,0x49,0x52,0x43,0x14,0x1A,0x5F,0x43,  /* 00000388    "PIRC.._C" */
-    0x52,0x53,0x00,0x7B,0x50,0x49,0x52,0x43,  /* 00000390    "RS.{PIRC" */
-    0x0A,0x0F,0x60,0x79,0x01,0x60,0x49,0x52,  /* 00000398    "..`y.`IR" */
-    0x51,0x56,0xA4,0x42,0x55,0x46,0x42,0x14,  /* 000003A0    "QV.BUFB." */
-    0x1B,0x5F,0x53,0x52,0x53,0x01,0x8B,0x68,  /* 000003A8    "._SRS..h" */
-    0x01,0x49,0x52,0x51,0x31,0x82,0x49,0x52,  /* 000003B0    ".IRQ1.IR" */
-    0x51,0x31,0x60,0x76,0x60,0x70,0x60,0x50,  /* 000003B8    "Q1`v`p`P" */
-    0x49,0x52,0x43,0x5B,0x82,0x49,0x08,0x4C,  /* 000003C0    "IRC[.I.L" */
-    0x4E,0x4B,0x44,0x08,0x5F,0x48,0x49,0x44,  /* 000003C8    "NKD._HID" */
-    0x0C,0x41,0xD0,0x0C,0x0F,0x08,0x5F,0x55,  /* 000003D0    ".A...._U" */
-    0x49,0x44,0x0A,0x04,0x14,0x1C,0x5F,0x53,  /* 000003D8    "ID...._S" */
-    0x54,0x41,0x00,0x7B,0x50,0x49,0x52,0x44,  /* 000003E0    "TA.{PIRD" */
-    0x0A,0x80,0x60,0xA0,0x08,0x93,0x60,0x0A,  /* 000003E8    "..`...`." */
-    0x80,0xA4,0x0A,0x09,0xA1,0x04,0xA4,0x0A,  /* 000003F0    "........" */
-    0x0B,0x14,0x0B,0x5F,0x50,0x52,0x53,0x00,  /* 000003F8    "..._PRS." */
-    0xA4,0x42,0x55,0x46,0x41,0x14,0x11,0x5F,  /* 00000400    ".BUFA.._" */
-    0x44,0x49,0x53,0x00,0x7D,0x50,0x49,0x52,  /* 00000408    "DIS.}PIR" */
-    0x44,0x0A,0x80,0x50,0x49,0x52,0x44,0x14,  /* 00000410    "D..PIRD." */
-    0x1A,0x5F,0x43,0x52,0x53,0x00,0x7B,0x50,  /* 00000418    "._CRS.{P" */
-    0x49,0x52,0x44,0x0A,0x0F,0x60,0x79,0x01,  /* 00000420    "IRD..`y." */
-    0x60,0x49,0x52,0x51,0x56,0xA4,0x42,0x55,  /* 00000428    "`IRQV.BU" */
-    0x46,0x42,0x14,0x1B,0x5F,0x53,0x52,0x53,  /* 00000430    "FB.._SRS" */
-    0x01,0x8B,0x68,0x01,0x49,0x52,0x51,0x31,  /* 00000438    "..h.IRQ1" */
-    0x82,0x49,0x52,0x51,0x31,0x60,0x76,0x60,  /* 00000440    ".IRQ1`v`" */
-    0x70,0x60,0x50,0x49,0x52,0x44,0x14,0x16,  /* 00000448    "p`PIRD.." */
-    0x5F,0x50,0x52,0x54,0x00,0xA0,0x0A,0x50,  /* 00000450    "_PRT...P" */
-    0x49,0x43,0x44,0xA4,0x50,0x52,0x54,0x41,  /* 00000458    "ICD.PRTA" */
-    0xA4,0x50,0x52,0x54,0x50,0x08,0x50,0x52,  /* 00000460    ".PRTP.PR" */
-    0x54,0x50,0x12,0x4D,0x11,0x14,0x12,0x0B,  /* 00000468    "TP.M...." */
-    0x04,0x0B,0xFF,0xFF,0x00,0x4C,0x4E,0x4B,  /* 00000470    ".....LNK" */
-    0x41,0x00,0x12,0x0B,0x04,0x0B,0xFF,0xFF,  /* 00000478    "A......." */
-    0x01,0x4C,0x4E,0x4B,0x42,0x00,0x12,0x0C,  /* 00000480    ".LNKB..." */
-    0x04,0x0B,0xFF,0xFF,0x0A,0x02,0x4C,0x4E,  /* 00000488    "......LN" */
-    0x4B,0x43,0x00,0x12,0x0C,0x04,0x0B,0xFF,  /* 00000490    "KC......" */
-    0xFF,0x0A,0x03,0x4C,0x4E,0x4B,0x44,0x00,  /* 00000498    "...LNKD." */
-    0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x01,0x00,  /* 000004A0    "........" */
-    0x00,0x4C,0x4E,0x4B,0x42,0x00,0x12,0x0D,  /* 000004A8    ".LNKB..." */
-    0x04,0x0C,0xFF,0xFF,0x01,0x00,0x01,0x4C,  /* 000004B0    ".......L" */
-    0x4E,0x4B,0x43,0x00,0x12,0x0E,0x04,0x0C,  /* 000004B8    "NKC....." */
-    0xFF,0xFF,0x01,0x00,0x0A,0x02,0x4C,0x4E,  /* 000004C0    "......LN" */
-    0x4B,0x44,0x00,0x12,0x0E,0x04,0x0C,0xFF,  /* 000004C8    "KD......" */
-    0xFF,0x01,0x00,0x0A,0x03,0x4C,0x4E,0x4B,  /* 000004D0    ".....LNK" */
-    0x41,0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,  /* 000004D8    "A......." */
-    0x02,0x00,0x00,0x4C,0x4E,0x4B,0x43,0x00,  /* 000004E0    "...LNKC." */
-    0x12,0x0D,0x04,0x0C,0xFF,0xFF,0x02,0x00,  /* 000004E8    "........" */
-    0x01,0x4C,0x4E,0x4B,0x44,0x00,0x12,0x0E,  /* 000004F0    ".LNKD..." */
-    0x04,0x0C,0xFF,0xFF,0x02,0x00,0x0A,0x02,  /* 000004F8    "........" */
-    0x4C,0x4E,0x4B,0x41,0x00,0x12,0x0E,0x04,  /* 00000500    "LNKA...." */
-    0x0C,0xFF,0xFF,0x02,0x00,0x0A,0x03,0x4C,  /* 00000508    ".......L" */
-    0x4E,0x4B,0x42,0x00,0x12,0x0D,0x04,0x0C,  /* 00000510    "NKB....." */
-    0xFF,0xFF,0x03,0x00,0x00,0x4C,0x4E,0x4B,  /* 00000518    ".....LNK" */
-    0x44,0x00,0x12,0x0D,0x04,0x0C,0xFF,0xFF,  /* 00000520    "D......." */
-    0x03,0x00,0x01,0x4C,0x4E,0x4B,0x41,0x00,  /* 00000528    "...LNKA." */
-    0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x03,0x00,  /* 00000530    "........" */
-    0x0A,0x02,0x4C,0x4E,0x4B,0x42,0x00,0x12,  /* 00000538    "..LNKB.." */
-    0x0E,0x04,0x0C,0xFF,0xFF,0x03,0x00,0x0A,  /* 00000540    "........" */
-    0x03,0x4C,0x4E,0x4B,0x43,0x00,0x12,0x0D,  /* 00000548    ".LNKC..." */
-    0x04,0x0C,0xFF,0xFF,0x04,0x00,0x00,0x4C,  /* 00000550    ".......L" */
-    0x4E,0x4B,0x41,0x00,0x12,0x0D,0x04,0x0C,  /* 00000558    "NKA....." */
-    0xFF,0xFF,0x04,0x00,0x01,0x4C,0x4E,0x4B,  /* 00000560    ".....LNK" */
-    0x42,0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,  /* 00000568    "B......." */
-    0x04,0x00,0x0A,0x02,0x4C,0x4E,0x4B,0x43,  /* 00000570    "....LNKC" */
-    0x00,0x12,0x0E,0x04,0x0C,0xFF,0xFF,0x04,  /* 00000578    "........" */
-    0x00,0x0A,0x03,0x4C,0x4E,0x4B,0x44,0x00,  /* 00000580    "...LNKD." */
-    0x08,0x50,0x52,0x54,0x41,0x12,0x32,0x04,  /* 00000588    ".PRTA.2." */
-    0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x01,0x00,  /* 00000590    "........" */
-    0x00,0x00,0x0A,0x05,0x12,0x0B,0x04,0x0C,  /* 00000598    "........" */
-    0xFF,0xFF,0x02,0x00,0x00,0x00,0x0A,0x07,  /* 000005A0    "........" */
-    0x12,0x0B,0x04,0x0C,0xFF,0xFF,0x03,0x00,  /* 000005A8    "........" */
-    0x00,0x00,0x0A,0x0A,0x12,0x0B,0x04,0x0C,  /* 000005B0    "........" */
-    0xFF,0xFF,0x04,0x00,0x00,0x00,0x0A,0x0B,  /* 000005B8    "........" */
-    0x5B,0x82,0x48,0x31,0x49,0x53,0x41,0x5F,  /* 000005C0    "[.H1ISA_" */
-    0x08,0x5F,0x41,0x44,0x52,0x00,0x5B,0x80,  /* 000005C8    "._ADR.[." */
-    0x50,0x49,0x52,0x51,0x02,0x0A,0x60,0x0A,  /* 000005D0    "PIRQ..`." */
-    0x04,0x10,0x2E,0x5C,0x00,0x5B,0x81,0x29,  /* 000005D8    "...\.[.)" */
-    0x5C,0x2F,0x04,0x5F,0x53,0x42,0x5F,0x50,  /* 000005E0    "\/._SB_P" */
-    0x43,0x49,0x30,0x49,0x53,0x41,0x5F,0x50,  /* 000005E8    "CI0ISA_P" */
-    0x49,0x52,0x51,0x01,0x50,0x49,0x52,0x41,  /* 000005F0    "IRQ.PIRA" */
-    0x08,0x50,0x49,0x52,0x42,0x08,0x50,0x49,  /* 000005F8    ".PIRB.PI" */
-    0x52,0x43,0x08,0x50,0x49,0x52,0x44,0x08,  /* 00000600    "RC.PIRD." */
-    0x5B,0x82,0x46,0x0B,0x53,0x59,0x53,0x52,  /* 00000608    "[.F.SYSR" */
-    0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,  /* 00000610    "._HID.A." */
-    0x0C,0x02,0x08,0x5F,0x55,0x49,0x44,0x01,  /* 00000618    "..._UID." */
-    0x08,0x43,0x52,0x53,0x5F,0x11,0x4E,0x08,  /* 00000620    ".CRS_.N." */
-    0x0A,0x8A,0x47,0x01,0x10,0x00,0x10,0x00,  /* 00000628    "..G....." */
-    0x00,0x10,0x47,0x01,0x22,0x00,0x22,0x00,  /* 00000630    "..G."."." */
-    0x00,0x0C,0x47,0x01,0x30,0x00,0x30,0x00,  /* 00000638    "..G.0.0." */
-    0x00,0x10,0x47,0x01,0x44,0x00,0x44,0x00,  /* 00000640    "..G.D.D." */
-    0x00,0x1C,0x47,0x01,0x62,0x00,0x62,0x00,  /* 00000648    "..G.b.b." */
-    0x00,0x02,0x47,0x01,0x65,0x00,0x65,0x00,  /* 00000650    "..G.e.e." */
-    0x00,0x0B,0x47,0x01,0x72,0x00,0x72,0x00,  /* 00000658    "..G.r.r." */
-    0x00,0x0E,0x47,0x01,0x80,0x00,0x80,0x00,  /* 00000660    "..G....." */
-    0x00,0x01,0x47,0x01,0x84,0x00,0x84,0x00,  /* 00000668    "..G....." */
-    0x00,0x03,0x47,0x01,0x88,0x00,0x88,0x00,  /* 00000670    "..G....." */
-    0x00,0x01,0x47,0x01,0x8C,0x00,0x8C,0x00,  /* 00000678    "..G....." */
-    0x00,0x03,0x47,0x01,0x90,0x00,0x90,0x00,  /* 00000680    "..G....." */
-    0x00,0x10,0x47,0x01,0xA2,0x00,0xA2,0x00,  /* 00000688    "..G....." */
-    0x00,0x1C,0x47,0x01,0xE0,0x00,0xE0,0x00,  /* 00000690    "..G....." */
-    0x00,0x10,0x47,0x01,0xA0,0x08,0xA0,0x08,  /* 00000698    "..G....." */
-    0x00,0x04,0x47,0x01,0xC0,0x0C,0xC0,0x0C,  /* 000006A0    "..G....." */
-    0x00,0x10,0x47,0x01,0xD0,0x04,0xD0,0x04,  /* 000006A8    "..G....." */
-    0x00,0x02,0x79,0x00,0x14,0x0B,0x5F,0x43,  /* 000006B0    "..y..._C" */
-    0x52,0x53,0x00,0xA4,0x43,0x52,0x53,0x5F,  /* 000006B8    "RS..CRS_" */
-    0x5B,0x82,0x2B,0x50,0x49,0x43,0x5F,0x08,  /* 000006C0    "[.+PIC_." */
-    0x5F,0x48,0x49,0x44,0x0B,0x41,0xD0,0x08,  /* 000006C8    "_HID.A.." */
-    0x5F,0x43,0x52,0x53,0x11,0x18,0x0A,0x15,  /* 000006D0    "_CRS...." */
-    0x47,0x01,0x20,0x00,0x20,0x00,0x01,0x02,  /* 000006D8    "G. . ..." */
-    0x47,0x01,0xA0,0x00,0xA0,0x00,0x01,0x02,  /* 000006E0    "G......." */
-    0x22,0x04,0x00,0x79,0x00,0x5B,0x82,0x47,  /* 000006E8    ""..y.[.G" */
-    0x05,0x44,0x4D,0x41,0x30,0x08,0x5F,0x48,  /* 000006F0    ".DMA0._H" */
-    0x49,0x44,0x0C,0x41,0xD0,0x02,0x00,0x08,  /* 000006F8    "ID.A...." */
-    0x5F,0x43,0x52,0x53,0x11,0x41,0x04,0x0A,  /* 00000700    "_CRS.A.." */
-    0x3D,0x2A,0x10,0x04,0x47,0x01,0x00,0x00,  /* 00000708    "=*..G..." */
-    0x00,0x00,0x00,0x10,0x47,0x01,0x81,0x00,  /* 00000710    "....G..." */
-    0x81,0x00,0x00,0x03,0x47,0x01,0x87,0x00,  /* 00000718    "....G..." */
-    0x87,0x00,0x00,0x01,0x47,0x01,0x89,0x00,  /* 00000720    "....G..." */
-    0x89,0x00,0x00,0x03,0x47,0x01,0x8F,0x00,  /* 00000728    "....G..." */
-    0x8F,0x00,0x00,0x01,0x47,0x01,0xC0,0x00,  /* 00000730    "....G..." */
-    0xC0,0x00,0x00,0x20,0x47,0x01,0x80,0x04,  /* 00000738    "... G..." */
-    0x80,0x04,0x00,0x10,0x79,0x00,0x5B,0x82,  /* 00000740    "....y.[." */
-    0x25,0x54,0x4D,0x52,0x5F,0x08,0x5F,0x48,  /* 00000748    "%TMR_._H" */
-    0x49,0x44,0x0C,0x41,0xD0,0x01,0x00,0x08,  /* 00000750    "ID.A...." */
-    0x5F,0x43,0x52,0x53,0x11,0x10,0x0A,0x0D,  /* 00000758    "_CRS...." */
-    0x47,0x01,0x40,0x00,0x40,0x00,0x00,0x04,  /* 00000760    "G.@.@..." */
-    0x22,0x01,0x00,0x79,0x00,0x5B,0x82,0x25,  /* 00000768    ""..y.[.%" */
-    0x52,0x54,0x43,0x5F,0x08,0x5F,0x48,0x49,  /* 00000770    "RTC_._HI" */
-    0x44,0x0C,0x41,0xD0,0x0B,0x00,0x08,0x5F,  /* 00000778    "D.A...._" */
-    0x43,0x52,0x53,0x11,0x10,0x0A,0x0D,0x47,  /* 00000780    "CRS....G" */
-    0x01,0x70,0x00,0x70,0x00,0x00,0x02,0x22,  /* 00000788    ".p.p..."" */
-    0x00,0x01,0x79,0x00,0x5B,0x82,0x22,0x53,  /* 00000790    "..y.[."S" */
-    0x50,0x4B,0x52,0x08,0x5F,0x48,0x49,0x44,  /* 00000798    "PKR._HID" */
-    0x0C,0x41,0xD0,0x08,0x00,0x08,0x5F,0x43,  /* 000007A0    ".A...._C" */
-    0x52,0x53,0x11,0x0D,0x0A,0x0A,0x47,0x01,  /* 000007A8    "RS....G." */
-    0x61,0x00,0x61,0x00,0x00,0x01,0x79,0x00,  /* 000007B0    "a.a...y." */
-    0x5B,0x82,0x31,0x50,0x53,0x32,0x4D,0x08,  /* 000007B8    "[.1PS2M." */
-    0x5F,0x48,0x49,0x44,0x0C,0x41,0xD0,0x0F,  /* 000007C0    "_HID.A.." */
-    0x13,0x08,0x5F,0x43,0x49,0x44,0x0C,0x41,  /* 000007C8    ".._CID.A" */
-    0xD0,0x0F,0x13,0x14,0x09,0x5F,0x53,0x54,  /* 000007D0    "....._ST" */
-    0x41,0x00,0xA4,0x0A,0x0F,0x08,0x5F,0x43,  /* 000007D8    "A....._C" */
-    0x52,0x53,0x11,0x08,0x0A,0x05,0x22,0x00,  /* 000007E0    "RS...."." */
-    0x10,0x79,0x00,0x5B,0x82,0x42,0x04,0x50,  /* 000007E8    ".y.[.B.P" */
-    0x53,0x32,0x4B,0x08,0x5F,0x48,0x49,0x44,  /* 000007F0    "S2K._HID" */
-    0x0C,0x41,0xD0,0x03,0x03,0x08,0x5F,0x43,  /* 000007F8    ".A...._C" */
-    0x49,0x44,0x0C,0x41,0xD0,0x03,0x0B,0x14,  /* 00000800    "ID.A...." */
-    0x09,0x5F,0x53,0x54,0x41,0x00,0xA4,0x0A,  /* 00000808    "._STA..." */
-    0x0F,0x08,0x5F,0x43,0x52,0x53,0x11,0x18,  /* 00000810    ".._CRS.." */
-    0x0A,0x15,0x47,0x01,0x60,0x00,0x60,0x00,  /* 00000818    "..G.`.`." */
-    0x00,0x01,0x47,0x01,0x64,0x00,0x64,0x00,  /* 00000820    "..G.d.d." */
-    0x00,0x01,0x22,0x02,0x00,0x79,0x00,0x5B,  /* 00000828    ".."..y.[" */
-    0x82,0x3A,0x46,0x44,0x43,0x30,0x08,0x5F,  /* 00000830    ".:FDC0._" */
-    0x48,0x49,0x44,0x0C,0x41,0xD0,0x07,0x00,  /* 00000838    "HID.A..." */
-    0x14,0x09,0x5F,0x53,0x54,0x41,0x00,0xA4,  /* 00000840    ".._STA.." */
-    0x0A,0x0F,0x08,0x5F,0x43,0x52,0x53,0x11,  /* 00000848    "..._CRS." */
-    0x1B,0x0A,0x18,0x47,0x01,0xF0,0x03,0xF0,  /* 00000850    "...G...." */
-    0x03,0x01,0x06,0x47,0x01,0xF7,0x03,0xF7,  /* 00000858    "...G...." */
-    0x03,0x01,0x01,0x22,0x40,0x00,0x2A,0x04,  /* 00000860    "..."@.*." */
-    0x00,0x79,0x00,0x5B,0x82,0x35,0x55,0x41,  /* 00000868    ".y.[.5UA" */
-    0x52,0x31,0x08,0x5F,0x48,0x49,0x44,0x0C,  /* 00000870    "R1._HID." */
-    0x41,0xD0,0x05,0x01,0x08,0x5F,0x55,0x49,  /* 00000878    "A...._UI" */
-    0x44,0x01,0x14,0x09,0x5F,0x53,0x54,0x41,  /* 00000880    "D..._STA" */
-    0x00,0xA4,0x0A,0x0F,0x08,0x5F,0x43,0x52,  /* 00000888    "....._CR" */
-    0x53,0x11,0x10,0x0A,0x0D,0x47,0x01,0xF8,  /* 00000890    "S....G.." */
-    0x03,0xF8,0x03,0x01,0x08,0x22,0x10,0x00,  /* 00000898    ".....".." */
-    0x79,0x00,0x5B,0x82,0x36,0x4C,0x54,0x50,  /* 000008A0    "y.[.6LTP" */
-    0x31,0x08,0x5F,0x48,0x49,0x44,0x0C,0x41,  /* 000008A8    "1._HID.A" */
-    0xD0,0x04,0x00,0x08,0x5F,0x55,0x49,0x44,  /* 000008B0    "...._UID" */
-    0x0A,0x02,0x14,0x09,0x5F,0x53,0x54,0x41,  /* 000008B8    "...._STA" */
-    0x00,0xA4,0x0A,0x0F,0x08,0x5F,0x43,0x52,  /* 000008C0    "....._CR" */
-    0x53,0x11,0x10,0x0A,0x0D,0x47,0x01,0x78,  /* 000008C8    "S....G.x" */
-    0x03,0x78,0x03,0x08,0x08,0x22,0x80,0x00,  /* 000008D0    ".x...".." */
-    0x79,0x00,
-};
-int DsdtLen=sizeof(AmlCode);
diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/acpi/acpi_facs.c
--- a/tools/firmware/acpi/acpi_facs.c   Tue Oct 31 11:44:47 2006 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,72 +0,0 @@
-/*
- * Copyright (c) 2004, Intel Corporation.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place - Suite 330, Boston, MA 02111-1307 USA.
- *
- */
-#include "acpi2_0.h"
-#include "acpi_facs.h"
-
-//
-// Firmware ACPI Control Structure
-//
-
-ACPI_2_0_FACS Facs = {
-               ACPI_2_0_FACS_SIGNATURE,
-               sizeof (ACPI_2_0_FACS),
-
-               //
-               // Hardware Signature
-               //
-               0x00000000,
-
-               ACPI_FIRMWARE_WAKING_VECTOR,
-               ACPI_GLOBAL_LOCK,
-               ACPI_FIRMWARE_CONTROL_STRUCTURE_FLAGS,
-               ACPI_X_FIRMWARE_WAKING_VECTOR,
-               ACPI_2_0_FACS_VERSION,
-               {
-                               0x00,  // Reserved Fields
-                               0x00,
-                               0x00,
-                               0x00,
-                               0x00,
-                               0x00,
-                               0x00,
-                               0x00,
-                               0x00,
-                               0x00,
-                               0x00,
-                               0x00,
-                               0x00,
-                               0x00,
-                               0x00,
-                               0x00,
-                               0x00,
-                               0x00,
-                               0x00,
-                               0x00,
-                               0x00,
-                               0x00,
-                               0x00,
-                               0x00,
-                               0x00,
-                               0x00,
-                               0x00,
-                               0x00,
-                               0x00,
-                               0x00,
-                               0x00,
-               }
-};
diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/acpi/acpi_facs.h
--- a/tools/firmware/acpi/acpi_facs.h   Tue Oct 31 11:44:47 2006 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,32 +0,0 @@
-/*
- * Copyright (c) 2004, Intel Corporation.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place - Suite 330, Boston, MA 02111-1307 USA.
- *
- */
-#ifndef _FACS_H
-#define _FACS_H
-
-//
-// FACS Definitions
-//
-
-#define ACPI_FIRMWARE_WAKING_VECTOR 0x00000000
-#define ACPI_GLOBAL_LOCK 0x00000000
-
-#define ACPI_FIRMWARE_CONTROL_STRUCTURE_FLAGS 0x00000000
-
-#define ACPI_X_FIRMWARE_WAKING_VECTOR 0x0000000000000000
-
-#endif
diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/acpi/acpi_fadt.c
--- a/tools/firmware/acpi/acpi_fadt.c   Tue Oct 31 11:44:47 2006 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,193 +0,0 @@
-/*
- * Copyright (c) 2004, Intel Corporation.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place - Suite 330, Boston, MA 02111-1307 USA.
- *
- */
-
-#include "acpi2_0.h"
-#include "acpi_fadt.h"
-
-//
-// Fixed ACPI Description Table
-//
-
-ACPI_2_0_FADT Fadt = {
-               {
-                               ACPI_2_0_FADT_SIGNATURE,
-                               sizeof (ACPI_2_0_FADT),
-                               ACPI_2_0_FADT_REVISION,
-                               0x00,// Checksum will be updated later
-                               ACPI_OEM_ID,  // OEM ID
-                               ACPI_OEM_TABLE_ID,  // OEM Table ID
-                               ACPI_OEM_REVISION, // OEM Revision
-                               ACPI_CREATOR_ID,  // Creator ID
-                               ACPI_CREATOR_REVISION,  // Creator Revision 
-               },
-               //
-               // These addresses will be updated later
-               //
-               0x00000000,   // Physical Address (0~4G) of the FACS
-               0x00000000,   // Physical Address (0~4G) of the DSDT
-
-               0x00,  
-               ACPI_PREFERRED_PM_PROFILE,  // Enterprise 
-               ACPI_SCI_INT,               // IRQ 9
-               ACPI_SMI_CMD,               
-               ACPI_ACPI_ENABLE,
-               ACPI_ACPI_DISABLE,
-               ACPI_S4_BIOS_REQ,  // zero. not supported
-               ACPI_PSTATE_CNT,   // not supported
-
-               ACPI_PM1A_EVT_BLK_ADDRESS,  // required
-               ACPI_PM1B_EVT_BLK_ADDRESS,  // not supported 
-               ACPI_PM1A_CNT_BLK_ADDRESS,  // required
-               ACPI_PM1B_CNT_BLK_ADDRESS,  // not supported 
-               ACPI_PM2_CNT_BLK_ADDRESS,   // not supported 
-               ACPI_PM_TMR_BLK_ADDRESS,    // required
-               ACPI_GPE0_BLK_ADDRESS,      // not supported
-               ACPI_GPE1_BLK_ADDRESS,      // not supported 
-               ACPI_PM1_EVT_LEN,           
-               ACPI_PM1_CNT_LEN,
-               ACPI_PM2_CNT_LEN,
-               ACPI_PM_TMR_LEN,
-               ACPI_GPE0_BLK_LEN,
-               ACPI_GPE1_BLK_LEN,
-               ACPI_GPE1_BASE,
-
-               ACPI_CST_CNT,
-               ACPI_P_LVL2_LAT,             // >100, not support C2 state
-               ACPI_P_LVL3_LAT,             // >1000, not support C3 state
-               ACPI_FLUSH_SIZE,             // not support
-               ACPI_FLUSH_STRIDE,           // not support
-               ACPI_DUTY_OFFSET,            // not support 
-               ACPI_DUTY_WIDTH,             // not support
-               ACPI_DAY_ALRM,               // not support
-               ACPI_MON_ALRM,               // not support
-               ACPI_CENTURY,                // not support
-               ACPI_IAPC_BOOT_ARCH,         
-               0x00,          
-               ACPI_FIXED_FEATURE_FLAGS,
-
-               //
-               // Reset Register Block
-               //
-               {               ACPI_RESET_REG_ADDRESS_SPACE_ID,
-                               ACPI_RESET_REG_BIT_WIDTH,
-                               ACPI_RESET_REG_BIT_OFFSET,
-                               0x00,
-                               ACPI_RESET_REG_ADDRESS,
-               },
-
-               ACPI_RESET_VALUE,
-               {
-                               0x00,
-                               0x00,
-                               0x00,
-               },
-               //
-               // These addresses will be updated later
-               //
-               0x0000000000000000,   // X_FIRMWARE_CTRL: 64bit physical 
address of the FACS.
-               0x0000000000000000,   // X_DSDT: 64bit physical address of the 
DSDT.
-
-               //
-               // PM1a Event Register Block
-               //
-               {
-                               ACPI_PM1A_EVT_BLK_ADDRESS_SPACE_ID,
-                               ACPI_PM1A_EVT_BLK_BIT_WIDTH,
-                               ACPI_PM1A_EVT_BLK_BIT_OFFSET,
-                               0x00,
-                               ACPI_PM1A_EVT_BLK_ADDRESS,
-               },
-
-               //
-               // PM1b Event Register Block
-               //
-               {
-                               ACPI_PM1B_EVT_BLK_ADDRESS_SPACE_ID,  // not 
support
-                               ACPI_PM1B_EVT_BLK_BIT_WIDTH,
-                               ACPI_PM1B_EVT_BLK_BIT_OFFSET,
-                               0x00,
-                               ACPI_PM1B_EVT_BLK_ADDRESS,
-               },
-
-               //
-               // PM1a Control Register Block
-               //
-               {
-                               ACPI_PM1A_CNT_BLK_ADDRESS_SPACE_ID,
-                               ACPI_PM1A_CNT_BLK_BIT_WIDTH,
-                               ACPI_PM1A_CNT_BLK_BIT_OFFSET,
-                               0x00,
-                               ACPI_PM1A_CNT_BLK_ADDRESS,
-               },
-
-               //
-               // PM1b Control Register Block
-               //
-               {
-                               ACPI_PM1B_CNT_BLK_ADDRESS_SPACE_ID,
-                               ACPI_PM1B_CNT_BLK_BIT_WIDTH,
-                               ACPI_PM1B_CNT_BLK_BIT_OFFSET,
-                               0x00,
-                               ACPI_PM1B_CNT_BLK_ADDRESS,
-               },
-
-               //
-               // PM2 Control Register Block
-               //
-               {
-                               ACPI_PM2_CNT_BLK_ADDRESS_SPACE_ID,
-                               ACPI_PM2_CNT_BLK_BIT_WIDTH,
-                               ACPI_PM2_CNT_BLK_BIT_OFFSET,
-                               0x00,
-                               ACPI_PM2_CNT_BLK_ADDRESS,
-               },
-
-               //
-               // PM Timer Control Register Block
-               //
-               {
-                               ACPI_PM_TMR_BLK_ADDRESS_SPACE_ID,
-                               ACPI_PM_TMR_BLK_BIT_WIDTH,
-                               ACPI_PM_TMR_BLK_BIT_OFFSET,
-                               0x00,
-                               ACPI_PM_TMR_BLK_ADDRESS,
-               },
-
-               //
-               // General Purpose Event 0 Register Block
-               //
-               {
-                               ACPI_GPE0_BLK_ADDRESS_SPACE_ID,
-                               ACPI_GPE0_BLK_BIT_WIDTH,
-                               ACPI_GPE0_BLK_BIT_OFFSET,
-                               0x00,
-                               ACPI_GPE0_BLK_ADDRESS,
-               },
-
-               //
-               // General Purpose Event 1 Register Block
-               //
-               {
-                               ACPI_GPE1_BLK_ADDRESS_SPACE_ID,
-                               ACPI_GPE1_BLK_BIT_WIDTH,
-                               ACPI_GPE1_BLK_BIT_OFFSET,
-                               0x00,
-                               ACPI_GPE1_BLK_ADDRESS
-               }
-               
-};
diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/acpi/acpi_fadt.h
--- a/tools/firmware/acpi/acpi_fadt.h   Tue Oct 31 11:44:47 2006 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,166 +0,0 @@
-/*
- * Copyright (c) 2004, Intel Corporation.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place - Suite 330, Boston, MA 02111-1307 USA.
- *
- */
-#ifndef _FADT_H_
-#define _FADT_H_
-
-#include <xen/hvm/ioreq.h>
-
-//
-// FADT Definitions, see ACPI 2.0 specification for details.
-//
-
-#define ACPI_OEM_FADT_REVISION  0x00000001 // TBD
-
-#define ACPI_PREFERRED_PM_PROFILE 0x00
-#define ACPI_SCI_INT              0x0009
-#define ACPI_SMI_CMD              0x00000000
-#define ACPI_ACPI_ENABLE    0x00
-#define ACPI_ACPI_DISABLE   0x00
-#define ACPI_S4_BIOS_REQ    0x00
-#define ACPI_PSTATE_CNT     0x00
-#define ACPI_GPE1_BASE      0x00
-#define ACPI_CST_CNT        0x00
-#define ACPI_P_LVL2_LAT     0x0064
-#define ACPI_P_LVL3_LAT     0X03E8
-#define ACPI_FLUSH_SIZE     0x00
-#define ACPI_FLUSH_STRIDE   0x00
-#define ACPI_DUTY_OFFSET    0x01
-#define ACPI_DUTY_WIDTH     0x00
-#define ACPI_DAY_ALRM       0x00
-#define ACPI_MON_ALRM       0x00
-#define ACPI_CENTURY        0x00
-
-//
-// IA-PC Boot Architecture Flags, see ACPI 2.0 table specification and 
Acpi2_0.h
-//
-#define ACPI_IAPC_BOOT_ARCH (ACPI_LEGACY_DEVICES | ACPI_8042)
-
-//
-// Fixed Feature Flags
-// 
-#define ACPI_FIXED_FEATURE_FLAGS (ACPI_PROC_C1 | ACPI_SLP_BUTTON | \
-                                  ACPI_WBINVD | ACPI_PWR_BUTTON | \
-                                  ACPI_FIX_RTC | ACPI_TMR_VAL_EXT)
-
-//
-// PM1A Event Register Block Generic Address Information
-//
-#define ACPI_PM1A_EVT_BLK_ADDRESS_SPACE_ID  ACPI_SYSTEM_IO
-#define ACPI_PM1A_EVT_BLK_BIT_WIDTH         0x20
-#define ACPI_PM1A_EVT_BLK_BIT_OFFSET        0x00
-
-//
-// PM1B Event Register Block Generic Address Information
-//
-#define ACPI_PM1B_EVT_BLK_ADDRESS_SPACE_ID  ACPI_SYSTEM_IO
-#define ACPI_PM1B_EVT_BLK_BIT_WIDTH         0x00
-#define ACPI_PM1B_EVT_BLK_BIT_OFFSET        0x00
-#define ACPI_PM1B_EVT_BLK_ADDRESS           0x0000000000000000
-
-//
-// PM1A Control Register Block Generic Address Information
-//
-#define ACPI_PM1A_CNT_BLK_ADDRESS_SPACE_ID  ACPI_SYSTEM_IO
-#define ACPI_PM1A_CNT_BLK_BIT_WIDTH         0x10
-#define ACPI_PM1A_CNT_BLK_BIT_OFFSET        0x00
-
-//
-// PM1B Control Register Block Generic Address Information
-//
-#define ACPI_PM1B_CNT_BLK_ADDRESS_SPACE_ID  ACPI_SYSTEM_IO
-#define ACPI_PM1B_CNT_BLK_BIT_WIDTH         0x00
-#define ACPI_PM1B_CNT_BLK_BIT_OFFSET        0x00
-#define ACPI_PM1B_CNT_BLK_ADDRESS           0x0000000000000000
-
-//
-// PM2 Control Register Block Generic Address Information
-//
-#define ACPI_PM2_CNT_BLK_ADDRESS_SPACE_ID   ACPI_SYSTEM_IO
-#define ACPI_PM2_CNT_BLK_BIT_WIDTH          0x00
-#define ACPI_PM2_CNT_BLK_BIT_OFFSET         0x00
-#define ACPI_PM2_CNT_BLK_ADDRESS            0x0000000000000000
-
-//
-// Power Management Timer Control Register Block Generic Address 
-// Information
-//
-#define ACPI_PM_TMR_BLK_ADDRESS_SPACE_ID    ACPI_SYSTEM_IO
-#define ACPI_PM_TMR_BLK_BIT_WIDTH           0x20
-#define ACPI_PM_TMR_BLK_BIT_OFFSET          0x00
-
-//
-// General Purpose Event 0 Register Block Generic Address
-// Information
-//
-
-#define ACPI_GPE0_BLK_ADDRESS_SPACE_ID      ACPI_SYSTEM_IO
-#define ACPI_GPE0_BLK_BIT_WIDTH             0x00
-#define ACPI_GPE0_BLK_BIT_OFFSET            0x00
-#define ACPI_GPE0_BLK_ADDRESS               0x00
-
-//
-// General Purpose Event 1 Register Block Generic Address
-// Information
-//
-
-#define ACPI_GPE1_BLK_ADDRESS_SPACE_ID      ACPI_SYSTEM_IO
-#define ACPI_GPE1_BLK_BIT_WIDTH             0x00
-#define ACPI_GPE1_BLK_BIT_OFFSET            0x00
-#define ACPI_GPE1_BLK_ADDRESS               0x00
-
-
-//
-// Reset Register Generic Address Information
-//
-#define ACPI_RESET_REG_ADDRESS_SPACE_ID     ACPI_SYSTEM_IO
-#define ACPI_RESET_REG_BIT_WIDTH            0x08
-#define ACPI_RESET_REG_BIT_OFFSET           0x00
-#define ACPI_RESET_REG_ADDRESS              0x0000000000000CF9
-#define ACPI_RESET_VALUE                    0x06
- 
-//
-// Number of bytes decoded by PM1 event blocks (a and b)
-//
-#define ACPI_PM1_EVT_LEN ((ACPI_PM1A_EVT_BLK_BIT_WIDTH + 
ACPI_PM1B_EVT_BLK_BIT_WIDTH) / 8)
-
-//
-// Number of bytes decoded by PM1 control blocks (a and b)
-//
-#define ACPI_PM1_CNT_LEN ((ACPI_PM1A_CNT_BLK_BIT_WIDTH + 
ACPI_PM1B_CNT_BLK_BIT_WIDTH) / 8)
-
-//
-// Number of bytes decoded by PM2 control block
-//
-#define ACPI_PM2_CNT_LEN (ACPI_PM2_CNT_BLK_BIT_WIDTH / 8)
-
-//
-// Number of bytes decoded by PM timer block
-//
-#define ACPI_PM_TMR_LEN (ACPI_PM_TMR_BLK_BIT_WIDTH / 8)
-
-//
-// Number of bytes decoded by GPE0 block
-//
-#define ACPI_GPE0_BLK_LEN (ACPI_GPE0_BLK_BIT_WIDTH / 8)
-
-//
-// Number of bytes decoded by GPE1 block
-//
-#define ACPI_GPE1_BLK_LEN   0
-
-#endif
diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/acpi/acpi_gen.c
--- a/tools/firmware/acpi/acpi_gen.c    Tue Oct 31 11:44:47 2006 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2004, Intel Corporation.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place - Suite 330, Boston, MA 02111-1307 USA.
- *
- */
-#include "acpi2_0.h"
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-
-#define USAGE  "Usage: acpi_gen filename \n"                           \
-               "       generage acpitable and write to the binary \n"  \
-               "       filename - the binary name\n"
-
-int main(int argc, char **argv)
-{
-       char *filename;
-       char  buf[ACPI_TABLE_SIZE] = { 0 };
-       FILE *f;
-
-       if (argc < 2) {
-               fprintf(stderr,"%s",USAGE);
-               exit(1);
-       }
-
-       filename = argv[1];
-               
-       if ((f = fopen(filename, "w+")) == NULL) {
-               fprintf(stderr,"Can not open %s", filename);
-               exit(1);
-       }
-
-       AcpiBuildTable((uint8_t *)buf);
-
-       if (fwrite(buf, ACPI_TABLE_SIZE, 1, f) < 1) {
-               fprintf(stderr,"Can not write to %s\n", filename);
-               exit(1);
-       }
-
-       return 0;
-}
diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/acpi/acpi_madt.c
--- a/tools/firmware/acpi/acpi_madt.c   Tue Oct 31 11:44:47 2006 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-/*
- * Copyright (c) 2004, Intel Corporation.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place - Suite 330, Boston, MA 02111-1307 USA.
- *
- */
-#include "acpi_madt.h"
-
-//
-// Multiple APIC Description Table
-//
-
-ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE Madt = {
-               {
-                               {
-                                               
ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE_SIGNATURE,
-                                               sizeof 
(ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE),
-                                               ACPI_2_0_MADT_REVISION,
-                                               0x00,  // Checksum
-                                               ACPI_OEM_ID, 
-                                               ACPI_OEM_TABLE_ID,  
-                                               ACPI_OEM_REVISION, 
-                                               ACPI_CREATOR_ID,  
-                                               ACPI_CREATOR_REVISION, 
-                               },
-                               ACPI_LOCAL_APIC_ADDRESS,
-                               ACPI_MULTIPLE_APIC_FLAGS,
-               },
-       
-               //
-               // IO APIC
-               // 
-               {
-                               {
-                                               ACPI_IO_APIC,                   
      
-                                               sizeof 
(ACPI_IO_APIC_STRUCTURE),  
-                                               0x00,                           
          
-                                               0x00,                   
-                                               ACPI_IO_APIC_ADDRESS_1,
-                                               0x0000
-                               }
-               },
-
-               //
-               // LOCAL APIC Entries for up to 32 processors.
-               //
-               {
-                               {
-                                               ACPI_PROCESSOR_LOCAL_APIC,
-                                               sizeof 
(ACPI_LOCAL_APIC_STRUCTURE),
-                                               0x00,
-                                               0x00,
-                                               0x00000001,
-                               }
-
-               }
-};
diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/acpi/acpi_madt.h
--- a/tools/firmware/acpi/acpi_madt.h   Tue Oct 31 11:44:47 2006 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,44 +0,0 @@
-/*
- * Copyright (c) 2004, Intel Corporation.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place - Suite 330, Boston, MA 02111-1307 USA.
- *
- */
-#ifndef _MADT_H_
-#define _MADT_H_
-
-#include "acpi2_0.h"
-
-//
-// MADT Definitions, see ACPI 2.0 specification for details
-//
-
-#define ACPI_LOCAL_APIC_ADDRESS 0xFEE00000
-
-#define ACPI_MULTIPLE_APIC_FLAGS      (ACPI_PCAT_COMPAT)
-
-#define ACPI_IO_APIC_ADDRESS_1   0xFEC00000
-
-//
-// MADT structure
-//
-#pragma pack (1)
-typedef struct {
-       ACPI_2_0_MADT                   Header;
-       ACPI_IO_APIC_STRUCTURE          IoApic[1];
-       ACPI_LOCAL_APIC_STRUCTURE       LocalApic[32];
-} ACPI_MULTIPLE_APIC_DESCRIPTION_TABLE;
-#pragma pack ()
-
-#endif
diff -r 15b5cc51db30 -r 1bf4f15c5141 tools/firmware/acpi/acpi_rsdt.c
--- a/tools/firmware/acpi/acpi_rsdt.c   Tue Oct 31 11:44:47 2006 +0000
+++ /dev/null   Thu Jan 01 00:00:00 1970 +0000
@@ -1,68 +0,0 @@
-/*
- * Copyright (c) 2004, Intel Corporation.
- *
- * This program is free software; you can redistribute it and/or modify it
- * under the terms and conditions of the GNU General Public License,
- * version 2, as published by the Free Software Foundation.
- *
- * This program is distributed in the hope it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
- * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for
- * more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place - Suite 330, Boston, MA 02111-1307 USA.
- *
- */
-#include "acpi2_0.h"
-
-ACPI_2_0_RSDT Rsdt={   
-               {
-                               ACPI_2_0_RSDT_SIGNATURE,
-                               sizeof (ACPI_TABLE_HEADER), // udpated later
-                               ACPI_2_0_RSDT_REVISION,
-                               0x0,                              //Checksum, 
updated later
-                               ACPI_OEM_ID, 
-                               ACPI_OEM_TABLE_ID,
-                               ACPI_OEM_REVISION,
-                               ACPI_CREATOR_ID,
-                               ACPI_CREATOR_REVISION,
-               },
-               {0x0, 0x0}
-};
-
-ACPI_2_0_XSDT Xsdt={
-               {
-                               ACPI_2_0_XSDT_SIGNATURE,
-                               sizeof (ACPI_TABLE_HEADER),  //update later
-                               ACPI_2_0_XSDT_REVISION,
-                               0x0,                              //Checksum, 
update later
-                               ACPI_OEM_ID, 
-                               ACPI_OEM_TABLE_ID,
-                               ACPI_OEM_REVISION,
-                               ACPI_CREATOR_ID,
-                               ACPI_CREATOR_REVISION,
-               },
-               {0x0, 0x0},
-};
-
-
-ACPI_2_0_RSDP Rsdp={
-               ACPI_2_0_RSDP_SIGNATURE,
-               0x00, // Checksum, updated in later
-               ACPI_OEM_ID,  // OEM ID,
-               ACPI_OEM_REVISION, 
-               0x0, // RSDT address, updated later
-               sizeof (ACPI_2_0_RSDP),
-               0x0, // XSDT address, updated later
-               0x0, // Extended Checksum, update later
-               {
-                               0x0, // Reserved
-                               0x0, // Reserved
-                               0x0, // Reserved
-               }
-};
-
-
-

_______________________________________________
Xen-changelog mailing list
Xen-changelog@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-changelog

<Prev in Thread] Current Thread [Next in Thread>
  • [Xen-changelog] [xen-unstable] [HVM] ACPI: Clean up table definitions, move under hvmloader/, Xen patchbot-unstable <=