[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Xen-changelog] [xen-unstable] [HVM] ACPI: Clean up table definitions, move under hvmloader/



# 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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.