--- xen-3-3.2.1.orig/debian/rules.defs
+++ xen-3-3.2.1/debian/rules.defs
@@ -0,0 +1,4 @@
+KERNELVERSION := 2.6.25-2
+BUILD_DIR = debian/build
+STAMPS_DIR = debian/stamps
+TEMPLATES_DIR = debian/templates
--- xen-3-3.2.1.orig/debian/pycompat
+++ xen-3-3.2.1/debian/pycompat
@@ -0,0 +1 @@
+2
--- xen-3-3.2.1.orig/debian/bin/gencontrol.py
+++ xen-3-3.2.1/debian/bin/gencontrol.py
@@ -0,0 +1,108 @@
+#!/usr/bin/env python
+
+import os, sys
+sys.path.append(os.path.join(sys.path[0], "../lib/python"))
+
+from debian_xen.debian import VersionXen
+from debian_linux.config import ConfigCoreHierarchy
+from debian_linux.debian import Changelog
+from debian_linux.gencontrol import Gencontrol as Base
+from debian_linux.utils import Templates
+
+class Gencontrol(Base):
+    def __init__(self):
+        super(Gencontrol, self).__init__(ConfigCoreHierarchy(["debian/arch"]), Templates(["debian/templates"]))
+        self.process_changelog()
+
+    def do_main_setup(self, vars, makeflags, extra):
+        makeflags.update({
+            'VERSION': self.version.xen_version,
+            'ABINAME': self.abiname,
+        })
+
+    def do_main_packages(self, packages, extra):
+        packages.extend(self.process_packages(self.templates["control.main"], self.vars))
+
+    def do_arch_setup(self, vars, makeflags, arch, extra):
+        for i in (
+            ('xen-arch', 'XEN_ARCH'),
+        ):
+            if vars.has_key(i[0]):
+                makeflags[i[1]] = vars[i[0]]
+
+    def do_arch_packages(self, packages, makefile, arch, vars, makeflags, extra):
+        utils = self.templates["control.utils"]
+        packages_utils = self.process_packages(utils, vars)
+
+        for package in packages_utils:
+            name = package['Package']
+            if packages.has_key(name):
+                package = packages.get(name)
+                package['Architecture'].append(arch)
+            else:
+                package['Architecture'] = [arch]
+                packages.append(package)
+
+        package_utils_name = packages_utils[0]['Package']
+
+        for i in ('postinst', 'prerm', 'lintian-overrides'):
+            j = self.substitute(self.templates["xen-utils.%s" % i], vars)
+            file("debian/%s.%s" % (package_utils_name, i), 'w').write(j)
+
+        cmds_binary_arch = ["$(MAKE) -f debian/rules.real binary-arch-arch %s" % makeflags]
+        cmds_build = ["$(MAKE) -f debian/rules.real build-arch %s" % makeflags]
+        cmds_setup = ["$(MAKE) -f debian/rules.real setup-arch %s" % makeflags]
+        makefile.add('binary-arch_%s_real' % arch, cmds = cmds_binary_arch)
+        makefile.add('build_%s_real' % arch, cmds = cmds_build)
+        makefile.add('setup_%s_real' % arch, cmds = cmds_setup)
+
+    def do_flavour_setup(self, vars, makeflags, arch, featureset, flavour, extra):
+        for i in (
+            ('config', 'CONFIG'),
+        ):
+            if vars.has_key(i[0]):
+                makeflags[i[1]] = vars[i[0]]
+
+    def do_flavour_packages(self, packages, makefile, arch, featureset, flavour, vars, makeflags, extra):
+        hypervisor = self.templates["control.hypervisor"]
+
+        if not vars.has_key('desc'):
+            vars['desc'] = ''
+
+        packages_own = []
+        packages_own.extend(self.process_packages(hypervisor, vars))
+
+        for package in packages_own:
+            name = package['Package']
+            if packages.has_key(name):
+                package = packages.get(name)
+                package['Architecture'].append(arch)
+            else:
+                package['Architecture'] = [arch]
+                packages.append(package)
+
+        package_name = packages_own[0]['Package']
+
+        for i in ('postinst', 'postrm'):
+            j = self.substitute(self.templates["xen-hypervisor.%s" % i], vars)
+            file("debian/%s.%s" % (package_name, i), 'w').write(j)
+
+        cmds_binary_arch = ["$(MAKE) -f debian/rules.real binary-arch-flavour %s" % makeflags]
+        cmds_build = ["$(MAKE) -f debian/rules.real build-flavour %s" % makeflags]
+        cmds_setup = ["$(MAKE) -f debian/rules.real setup-flavour %s" % makeflags]
+        makefile.add("binary-arch_%s_%s_%s" % (arch, featureset, flavour), cmds = cmds_binary_arch)
+        makefile.add("build_%s_%s_%s" % (arch, featureset, flavour), cmds = cmds_build)
+        makefile.add("setup_%s_%s_%s" % (arch, featureset, flavour), cmds = cmds_setup)
+
+    def process_changelog(self):
+        changelog = Changelog(version = VersionXen)
+        self.version = changelog[0].version
+        self.abiname = '-%s' % self.config['abi',]['abiname']
+        self.vars = {
+            'major': self.version.xen_major,
+            'version': self.version.xen_version,
+            'abiname': self.abiname,
+        }
+
+if __name__ == '__main__':
+    Gencontrol()()
--- xen-3-3.2.1.orig/debian/bin/genorig.py
+++ xen-3-3.2.1/debian/bin/genorig.py
@@ -0,0 +1,75 @@
+#!/usr/bin/env python
+
+import os, os.path, re, shutil, sys
+
+sys.path.append(sys.path[0] + '/../lib/python')
+
+from debian_xen.debian import VersionXen
+from debian_linux.debian import Changelog
+
+class GenOrig(object):
+    log = sys.stdout.write
+
+    def __init__(self, repo, tag, version):
+        self.repo, self.tag, self.version = repo, tag, version
+
+        self.changelog_entry = Changelog(version = VersionXen)[0]
+        self.source = self.changelog_entry.source
+
+    def __call__(self):
+        import tempfile
+        self.dir = tempfile.mkdtemp(prefix = 'genorig', dir = 'debian')
+        try:
+            self.do_update()
+            self.do_version()
+
+            self.orig_dir = "%s-%s" % (self.source, self.version)
+            self.orig_tar = "%s_%s.orig.tar.gz" % (self.source, self.version)
+
+            self.do_archive()
+            self.do_changelog()
+            self.do_tar()
+        finally:
+            shutil.rmtree(self.dir)
+
+    def do_update(self):
+        if self.tag is None:
+            return
+        f = os.popen("cd %s; hg update -r %s" % (self.repo, self.tag))
+        if f.close() is not None:
+            raise RuntimeError
+
+    def do_version(self):
+        if self.version is not None:
+            return
+        raise NotImplementedError
+
+    def do_archive(self):
+        self.log("Create archive.\n")
+        f = os.popen("cd %s; hg archive %s/%s" % (self.repo, os.path.realpath(self.dir), self.orig_dir))
+        if f.close() is not None:
+            raise RuntimeError
+
+    def do_changelog(self):
+        self.log("Exporting changelog.\n")
+        f = os.popen("cd %s; hg log" % (self.repo))
+        f_out = file("%s/%s/Changelog" % (self.dir, self.orig_dir), 'w')
+        shutil.copyfileobj(f, f_out)
+        if f.close() is not None:
+            raise RuntimeError
+        f_out.close()
+
+    def do_tar(self):
+        out = "../orig/%s" % self.orig_tar
+        self.log("Generate tarball %s\n" % out)
+        f = os.popen("tar -C %s -czf %s %s" % (self.dir, out, self.orig_dir))
+        if f.close() is not None:
+            raise RuntimeError
+
+if __name__ == '__main__':
+    from optparse import OptionParser
+    p = OptionParser()
+    p.add_option("-t", "--tag", dest = "tag")
+    p.add_option("-v", "--version", dest = "version")
+    options, args = p.parse_args(sys.argv)
+    GenOrig(args[1], options.tag, options.version)()
--- xen-3-3.2.1.orig/debian/xen-hypervisor-3.2-1-amd64.postinst
+++ xen-3-3.2.1/debian/xen-hypervisor-3.2-1-amd64.postinst
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+set -e
+
+case "$1" in
+    configure)
+        if command -v update-grub > /dev/null && [ -d /boot/grub ]; then
+            update-grub || :
+        fi
+    ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+    ;;
+
+    *)
+	echo "postinst called with unknown argument \`$1'" >&2
+	exit 1
+    ;;
+esac
+
+#DEBHELPER#
+
+exit 0
--- xen-3-3.2.1.orig/debian/templates/xen-utils.prerm.in
+++ xen-3-3.2.1/debian/templates/xen-utils.prerm.in
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+set -e
+
+case "$1" in
+    remove)
+        update-alternatives --remove xen-default /usr/lib/xen-@version@@abiname@
+    ;;
+
+    upgrade|deconfigure|failed-upgrade)
+    ;;
+
+    *)
+        echo "prerm called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+#DEBHELPER#
+
+exit 0
--- xen-3-3.2.1.orig/debian/templates/control.utils.in
+++ xen-3-3.2.1/debian/templates/control.utils.in
@@ -0,0 +1,10 @@
+Package: xen-utils-@version@@abiname@
+Depends: ${shlibs:Depends}, ${python:Depends}, xen-utils-common (>> 3.2.0), iproute, udev (>> 0.060)
+Recommends: bridge-utils, libc6-xen [i386], xen-hypervisor-@version@@abiname@
+Provides: xen-utils
+Suggests: xen-docs-@version@
+XB-Python-Version: ${python:Versions}
+Description: XEN administrative tools
+ The userspace tools to manage a system virtualized through the XEN virtual
+ machine monitor.
+
--- xen-3-3.2.1.orig/debian/templates/xen-hypervisor.postinst.in
+++ xen-3-3.2.1/debian/templates/xen-hypervisor.postinst.in
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+set -e
+
+case "$1" in
+    configure)
+        if command -v update-grub > /dev/null && [ -d /boot/grub ]; then
+            update-grub || :
+        fi
+    ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+    ;;
+
+    *)
+	echo "postinst called with unknown argument \`$1'" >&2
+	exit 1
+    ;;
+esac
+
+#DEBHELPER#
+
+exit 0
--- xen-3-3.2.1.orig/debian/templates/control.source.in
+++ xen-3-3.2.1/debian/templates/control.source.in
@@ -0,0 +1,21 @@
+Source: xen-@major@
+Section: misc
+Priority: extra
+Maintainer: Debian Xen Team <pkg-xen-devel@lists.alioth.debian.org>
+Uploaders: Julien Danjou <acid@debian.org>, Jeremy T. Bouse <jbouse@debian.org>, Guido Trotter <ultrotter@debian.org>, Bastian Blank <waldi@debian.org>
+Build-Depends:
+ debhelper (>= 5.0.37.2), lsb-release, quilt,
+ python-dev (>= 2.3), python-central (>= 0.5),
+ bcc,
+ gcc-multilib [amd64],
+ e2fslibs-dev,
+ libgnutls-dev, pkg-config,
+ libjpeg-dev,
+ libncurses5-dev,
+ libsdl1.2-dev,
+ libvncserver-dev,
+ zlib1g-dev
+Build-Depends-Indep: graphviz, gs-common, texlive-fonts-recommended, texlive-latex-recommended
+Standards-Version: 3.7.2.0
+XS-Python-Version: current
+
--- xen-3-3.2.1.orig/debian/templates/xen-utils.lintian-overrides.in
+++ xen-3-3.2.1/debian/templates/xen-utils.lintian-overrides.in
@@ -0,0 +1,34 @@
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/bin/blktapctrl ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/bin/img2qcow ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/bin/qcow-create ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/bin/qcow2raw ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/bin/qemu-dm ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/bin/readnotes ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/bin/tapdisk ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/bin/xc_restore ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/bin/xc_save ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/bin/xenbaked ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/bin/xenconsole ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/bin/xenconsoled ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/bin/xenctx ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/bin/xenperf ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/bin/xenstored ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/bin/xentop ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/bin/xentrace ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/bin/xentrace_setmask ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/bin/xentrace_setsize ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/lib/fs/ext2fs-lib/fsimage.so ${ORIGIN}/../..
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/lib/fs/fat/fsimage.so ${ORIGIN}/../..
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/lib/fs/iso9660/fsimage.so ${ORIGIN}/../..
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/lib/fs/reiserfs/fsimage.so ${ORIGIN}/../..
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/lib/fs/ufs/fsimage.so ${ORIGIN}/../..
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/lib/libblktap.so ${ORIGIN}
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/lib/libxenctrl.so ${ORIGIN}
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/lib/libxenguest.so ${ORIGIN}
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/lib/python/fsimage.so ${ORIGIN}/..
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/lib/python/xen/lowlevel/acm.so ${ORIGIN}/../../..
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/lib/python/xen/lowlevel/flask.so ${ORIGIN}/../../..
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/lib/python/xen/lowlevel/ptsname.so ${ORIGIN}/../../..
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/lib/python/xen/lowlevel/xc.so ${ORIGIN}/../../..
+binary-or-shlib-defines-rpath ./usr/lib/xen-@version@@abiname@/lib/python/xen/lowlevel/xs.so ${ORIGIN}/../../..
+statically-linked-binary ./usr/lib/xen-@version@@abiname@/boot/hvmloader
--- xen-3-3.2.1.orig/debian/templates/xen-hypervisor.postrm.in
+++ xen-3-3.2.1/debian/templates/xen-hypervisor.postrm.in
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+set -e
+
+case "$1" in
+    remove)
+        if command -v update-grub > /dev/null && [ -d /boot/grub ]; then
+            update-grub || :
+        fi
+    ;;
+
+    purge|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+    ;;
+
+    *)
+        echo "postrm called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+#DEBHELPER#
+
+exit 0
--- xen-3-3.2.1.orig/debian/templates/control.hypervisor.in
+++ xen-3-3.2.1/debian/templates/control.hypervisor.in
@@ -0,0 +1,15 @@
+Package: xen-hypervisor-@version@@abiname@@localversion@
+Provides: xen-hypervisor, xen-hypervisor-@major@, xen-hypervisor-@version@@abiname@, xen-hypervisor@localversion@
+Recommends: xen-utils-@version@@abiname@
+Suggests: xen-docs-@version@
+Description: The Xen Hypervisor on @class@
+ The hypervisor is the "core" for XEN itself. It gets booted by the boot loader
+ and controls cpu and memory, sharing them between your administrative domain
+ (Domain 0) and the virtual guest systems.
+ .
+ @desc@
+ .
+ In order to boot a XEN system along with this package you also need a kernel
+ specifically crafted to work as the Domain 0, mediating hardware access for
+ XEN itself.
+
--- xen-3-3.2.1.orig/debian/templates/control.main.in
+++ xen-3-3.2.1/debian/templates/control.main.in
@@ -0,0 +1,31 @@
+Package: xen-docs-@version@
+Section: doc
+Architecture: all
+Description: Documentation for Xen
+ This package contains all the large documentation files for Xen.  This
+ includes a description interface (both the api, and a nice explanation of
+ how XEN works).
+
+Package: libxenstore3.0
+Section: libs
+Architecture: any
+Depends: ${shlibs:Depends}
+Description: Xenstore communications library for Xen
+ This package contains the public libxenstore.
+
+Package: libxen-dev
+Section: libdevel
+Architecture: any
+Depends: libxenstore3.0 (= ${binary:Version})
+Description: Public headers and libs for Xen
+ This package contains the public headers and static libraries for Xen.
+
+Package: xenstore-utils
+Section: admin
+Architecture: any
+Depends: ${shlibs:Depends}
+Conflicts: xen-utils-common (<= 3.1.0-1)
+Replaces: xen-utils-common (<= 3.1.0-1)
+Description: Xenstore utilities for Xen
+ This package contains the Xenstore utilities.
+
--- xen-3-3.2.1.orig/debian/templates/xen-utils.postinst.in
+++ xen-3-3.2.1/debian/templates/xen-utils.postinst.in
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set -e
+
+case "$1" in
+    configure)
+        update-alternatives --install /usr/lib/xen-default xen-default /usr/lib/xen-@version@@abiname@ 1 || true
+    ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+    ;;
+
+    *)
+	echo "postinst called with unknown argument \`$1'" >&2
+	exit 1
+    ;;
+esac
+
+#DEBHELPER#
+
+exit 0
--- xen-3-3.2.1.orig/debian/lib/python/debian_xen/__init__.py
+++ xen-3-3.2.1/debian/lib/python/debian_xen/__init__.py
@@ -0,0 +1,19 @@
+def _setup():
+    import os.path, sys
+    version = None
+    rules = os.path.join(__path__[0], "../../../rules.defs")
+    f = file(rules)
+    for l in f:
+        l = l.strip().split()
+        if l[0] == 'KERNELVERSION':
+            version = l[-1]
+    f.close()
+    if version is None:
+        raise RuntimeError("Can't find KERNELVERSION setting")
+    global support
+    support = '/usr/src/linux-support-%s' % version
+    if not os.path.exists(support):
+        raise RuntimeError("Can't find %s, please install the linux-support-%s package" % (support, version))
+    sys.path.append('%s/lib/python' % support)
+
+_setup()
--- xen-3-3.2.1.orig/debian/lib/python/debian_xen/debian.py
+++ xen-3-3.2.1/debian/lib/python/debian_xen/debian.py
@@ -0,0 +1,34 @@
+import re
+from debian_linux.debian import Version
+
+class VersionXen(Version):
+    _version_xen_rules = ur"""
+^
+(?P<version>
+    (?P<major>\d+)
+    \.\d+
+)
+\.\d+
+(?:
+    \+hg
+    (?P<hg_rev>
+        \d+
+    )
+)?
+-
+(?:[^-]+)
+$
+"""
+    _version_xen_re = re.compile(_version_xen_rules, re.X)
+
+    def __init__(self, version):
+        super(VersionXen, self).__init__(version)
+        match = self._version_xen_re.match(version)
+        if match is None:
+            raise ValueError("Invalid debian xen version")
+        d = match.groupdict()
+        self.xen_major = d['major']
+        self.xen_version = d['version']
+
+if __name__ == '__main__':
+    gencontrol()()
--- xen-3-3.2.1.orig/debian/control.md5sum
+++ xen-3-3.2.1/debian/control.md5sum
@@ -0,0 +1,14 @@
+be13ec7962f9b42707fff1af663b9766  debian/changelog
+5794c483fe195bd0b01c2642b804ec36  debian/bin/gencontrol.py
+04cbffed36f180cd58f699d955c7bba8  debian/templates/control.hypervisor.in
+c684d3285ee42118924db501cb4137ea  debian/templates/control.main.in
+60a4f9fa9c7b832f0fe3940139ca277b  debian/templates/control.source.in
+0969dd1ba8a791fd1a7820ee77ce1d2c  debian/templates/control.utils.in
+a15fa64ce6deead28d33c1581b14dba7  debian/templates/xen-hypervisor.postinst.in
+22492e0565a4754b5e008ca7cac871da  debian/templates/xen-hypervisor.postrm.in
+0249b3c0e528fd4537233842844ec9ed  debian/templates/xen-utils.lintian-overrides.in
+d62043f2f5fbd710b1f221ea4e5a2930  debian/templates/xen-utils.postinst.in
+f97b08386389a08bfb1f3e66679dd82f  debian/templates/xen-utils.prerm.in
+db346ea343858c69dfdeeb24643e2c10  debian/arch/defines
+c2415de5bdcc464133e1d0285af4e066  debian/arch/amd64/defines
+4acdd9f89b553bebb507434d2953ceae  debian/arch/i386/defines
--- xen-3-3.2.1.orig/debian/xen-hypervisor-3.2-1-i386.postrm
+++ xen-3-3.2.1/debian/xen-hypervisor-3.2-1-i386.postrm
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+set -e
+
+case "$1" in
+    remove)
+        if command -v update-grub > /dev/null && [ -d /boot/grub ]; then
+            update-grub || :
+        fi
+    ;;
+
+    purge|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+    ;;
+
+    *)
+        echo "postrm called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+#DEBHELPER#
+
+exit 0
--- xen-3-3.2.1.orig/debian/xen-utils-3.2-1.postinst
+++ xen-3-3.2.1/debian/xen-utils-3.2-1.postinst
@@ -0,0 +1,21 @@
+#!/bin/sh
+
+set -e
+
+case "$1" in
+    configure)
+        update-alternatives --install /usr/lib/xen-default xen-default /usr/lib/xen-3.2-1 1 || true
+    ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+    ;;
+
+    *)
+	echo "postinst called with unknown argument \`$1'" >&2
+	exit 1
+    ;;
+esac
+
+#DEBHELPER#
+
+exit 0
--- xen-3-3.2.1.orig/debian/libxenstore3.0.install
+++ xen-3-3.2.1/debian/libxenstore3.0.install
@@ -0,0 +1 @@
+usr/lib/libxenstore.so.*
--- xen-3-3.2.1.orig/debian/xen-utils-3.2-1.prerm
+++ xen-3-3.2.1/debian/xen-utils-3.2-1.prerm
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+set -e
+
+case "$1" in
+    remove)
+        update-alternatives --remove xen-default /usr/lib/xen-3.2-1
+    ;;
+
+    upgrade|deconfigure|failed-upgrade)
+    ;;
+
+    *)
+        echo "prerm called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+#DEBHELPER#
+
+exit 0
--- xen-3-3.2.1.orig/debian/copyright
+++ xen-3-3.2.1/debian/copyright
@@ -0,0 +1,251 @@
+Xen was initially debianized by Adam Heath <doogie@brainfood.com>
+
+It was downloaded from http://www.cl.cam.ac.uk/netos/xen
+
+The project is partially hosted on sourceforge.  It's homepage on sf redirects
+to the above url. Part of the development is carried on at http://www.xensource.com
+
+Copyright:
+
+   This package is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; version 2 dated June, 1991.
+
+   This package is distributed in the hope that 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 package; if not, write to the Free Software
+   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
+
+This is the header of Xen 3.0 upstream COPYING file which clarifies a bit how
+the licence is meant to be applied. The file continues with the complete text
+of the GNU General Public Licence version 2, which is not included here as it
+can be found on Debian GNU/Linux systems in `/usr/share/common-licenses/GPL-2'.
+
+<file "COPYING">
+ XEN NOTICE
+ ==========
+
+This license does *not* cover guest operating systems that use
+Xen services via normal hypercalls - this is merely considered normal
+use of Xen, and does *not* fall under the heading of "derived work".
+Also note that the GPL below is copyrighted by the Free Software
+Foundation, but the instance of code that it refers to (the Xen
+virtual machine monitor) is copyrighted by me and others who actually
+wrote it.
+
+Further note that the guest-OS interfacing header files, which
+includes all files within the subdirectory include/public, are
+*not* covered by the GPL but by a much weaker license:
+ include/public/COPYING
+
+Also note that the only valid version of the GPL as far as Xen is
+concerned is _this_ particular version of the license (i.e., *only*
+v2, not v2.2 or v3.x or whatever), unless explicitly otherwise
+stated.
+
+ -- Keir Fraser (on behalf of the Xen team)
+
+=====================================================================
+</file>
+
+As an exception, for the convenience of users who want to port other operating
+systems to Xen, some files are licensed under a BSD-style licence. This licence
+applies to all the files under the xen/include/public directory inside the
+upstream tarball. This is the content of the COPYING file in that directory:
+
+<file "xen/include/public/COPYING">
+XEN NOTICE
+==========
+
+This copyright applies to all files within this subdirectory. All
+other files in the Xen source distribution are covered by version 2 of
+the GNU General Public License.
+
+ -- Keir Fraser (on behalf of the Xen team)
+
+=====================================================================
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to
+deal in the Software without restriction, including without limitation the
+rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
+sell copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+DEALINGS IN THE SOFTWARE.
+</file>
+
+And this, for reference, is the list of the files it applies to:
+
+xen/include/public/acm.h
+xen/include/public/acm_ops.h
+xen/include/public/arch-ia64.h
+xen/include/public/arch-x86_32.h
+xen/include/public/arch-x86_64.h
+xen/include/public/dom0_ops.h
+xen/include/public/event_channel.h
+xen/include/public/grant_table.h
+xen/include/public/hvm/hvm_info_table.h
+xen/include/public/hvm/ioreq.h
+xen/include/public/hvm/vmx_assist.h
+xen/include/public/io/blkif.h
+xen/include/public/io/console.h
+xen/include/public/io/netif.h
+xen/include/public/io/ring.h
+xen/include/public/io/tpmif.h
+xen/include/public/io/xenbus.h
+xen/include/public/io/xs_wire.h
+xen/include/public/memory.h
+xen/include/public/nmi.h
+xen/include/public/physdev.h
+xen/include/public/sched.h
+xen/include/public/sched_ctl.h
+xen/include/public/trace.h
+xen/include/public/vcpu.h
+xen/include/public/version.h
+xen/include/public/xen.h
+
+and all the files under tools/python/logging
+
+=====================================================================
+There are other exceptions:
+=====================================================================
+
+The files under extras/mini-os are under a BSD licence.
+
+The following files are under the LGPL licence version 2.1, which on a Debian
+system resides in /usr/share/common-licenses/LGPL-2.1. Unless explicitely
+specified only version 2.1 of the licence can be used.
+
+tools/examples/block-common.sh
+tools/examples/locking.sh
+tools/examples/logging.sh
+tools/examples/vif-common.sh
+tools/examples/vtpm-hotplug-common.sh
+tools/examples/xen-hotplug-common.sh
+tools/examples/xen-network-common.sh
+tools/examples/xen-script-common.sh
+tools/firmware/rombios/apmbios.S
+tools/firmware/rombios/rombios.c
+ioemu/COPYING.LIB
+ioemu/cpu-all.h
+ioemu/cpu-defs.h
+ioemu/cpu.h
+ioemu/exec-all.h
+ioemu/exec.c
+ioemu/hw/fmopl.c
+ioemu/target-i386-dm/helper2.c
+ioemu/thunk.c
+ioemu/thunk.h
+
+all the files under tools/firmware/vgabios (licence v2.1 or above)
+all the files under tools/python/xen
+all the files under tools/xenstore
+all the files under tools/vnet
+all the files under tools/xenstat
+
+=====================================================================
+tools/vtpm_manager license
+
+Copyright (c) 2005, Intel Corp.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+  * Redistributions in binary form must reproduce the above
+    copyright notice, this list of conditions and the following
+    disclaimer in the documentation and/or other materials provided
+    with the distribution.
+  * Neither the name of Intel Corporation nor the names of its
+    contributors may be used to endorse or promote products derived
+    from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
+FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
+COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
+INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+OF THE POSSIBILITY OF SUCH DAMAGE.
+
+=====================================================================
+Files tools/python/ license
+
+  This software is Copyright (c) Zope Corporation (tm) and
+  Contributors. All rights reserved.
+
+This license has been certified as open source. It has also
+been designated as GPL compatible by the Free Software
+Foundation (FSF).
+
+Redistribution and use in source and binary forms, with or
+without modification, are permitted provided that the
+following conditions are met:
+
+1. Redistributions in source code must retain the above
+   copyright notice, this list of conditions, and the following
+   disclaimer.
+
+2. Redistributions in binary form must reproduce the above
+   copyright notice, this list of conditions, and the following
+   disclaimer in the documentation and/or other materials
+   provided with the distribution.
+
+3. The name Zope Corporation (tm) must not be used to
+   endorse or promote products derived from this software
+   without prior written permission from Zope Corporation.
+
+4. The right to distribute this software or to use it for
+   any purpose does not give you the right to use Servicemarks
+   (sm) or Trademarks (tm) of Zope Corporation. Use of them is
+   covered in a separate agreement (see
+   http://www.zope.com/Marks).
+
+5. If any files are modified, you must cause the modified
+   files to carry prominent notices stating that you changed
+   the files and the date of any change.
+
+Disclaimer
+  
+  THIS SOFTWARE IS PROVIDED BY ZOPE CORPORATION ``AS IS''
+  AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
+  NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
+  AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN
+  NO EVENT SHALL ZOPE CORPORATION OR ITS CONTRIBUTORS BE
+  LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+  LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+  DAMAGE.
+
+This software consists of contributions made by Zope
+Corporation and many individuals on behalf of Zope
+Corporation.  Specific attributions are listed in the
+accompanying credits file.
+
--- xen-3-3.2.1.orig/debian/xen-hypervisor-3.2-1-i386-nonpae.postinst
+++ xen-3-3.2.1/debian/xen-hypervisor-3.2-1-i386-nonpae.postinst
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+set -e
+
+case "$1" in
+    configure)
+        if command -v update-grub > /dev/null && [ -d /boot/grub ]; then
+            update-grub || :
+        fi
+    ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+    ;;
+
+    *)
+	echo "postinst called with unknown argument \`$1'" >&2
+	exit 1
+    ;;
+esac
+
+#DEBHELPER#
+
+exit 0
--- xen-3-3.2.1.orig/debian/xen-hypervisor-3.2-1-amd64.postrm
+++ xen-3-3.2.1/debian/xen-hypervisor-3.2-1-amd64.postrm
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+set -e
+
+case "$1" in
+    remove)
+        if command -v update-grub > /dev/null && [ -d /boot/grub ]; then
+            update-grub || :
+        fi
+    ;;
+
+    purge|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+    ;;
+
+    *)
+        echo "postrm called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+#DEBHELPER#
+
+exit 0
--- xen-3-3.2.1.orig/debian/changelog
+++ xen-3-3.2.1/debian/changelog
@@ -0,0 +1,422 @@
+xen-3 (3.2.1-2~bpo4+1) etch-backports; urgency=low
+
+  * Rebuild for Etch backports.
+  * Add myself to uploaders.
+  * On amd64, build-depend on libc6-dev-i386 instead of gcc-multilib.
+
+ -- Frederik Schüler <fs@debian.org>  Mon,  8 Dec 2008 16:15:48 +0100
+
+xen-3 (3.2.1-2) unstable; urgency=low
+
+  * Use e2fslibs based ext2 support for pygrub. (closes: #476366)
+  * Fix missing checks in pvfb code.
+    See CVE-2008-1952. (closes: #487095)
+  * Add support for loading bzImage files. (closes: #474509)
+  * Enable TLS support in ioemu code.
+  * Drop libcrypto usage because of GPL-incompatibility.
+  * Remove AES code from blktap drivers. Considered broken.
+
+ -- Bastian Blank <waldi@debian.org>  Sat, 28 Jun 2008 11:30:43 +0200
+
+xen-3 (3.2.1-1) unstable; urgency=low
+
+  * New upstream version.
+  * Set rpath relative to ${ORIGIN}.
+  * Add lintian override to xen-utils package.
+
+ -- Bastian Blank <waldi@debian.org>  Thu, 22 May 2008 14:01:47 +0200
+
+xen-3 (3.2.0-5) unstable; urgency=low
+
+  * Provide correct directory to dh_pycentral.
+
+ -- Bastian Blank <waldi@debian.org>  Mon, 14 Apr 2008 21:43:49 +0200
+
+xen-3 (3.2.0-4) unstable; urgency=low
+
+  * Pull in newer xen-utils-common.
+  * Fix missing size checks in the ioemu block driver. (closes: #469654)
+    See: CVE-2008-0928
+
+ -- Bastian Blank <waldi@debian.org>  Fri, 07 Mar 2008 14:21:38 +0100
+
+xen-3 (3.2.0-3) unstable; urgency=low
+
+  * Clean environment for build.
+  * Add packages libxenstore3.0 and xenstore-utils.
+  * Move docs package in docs section to match overwrites.
+  * Make the hypervisor only recommend the utils.
+  * Cleanup installation. (closes: #462989)
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 12 Feb 2008 12:40:56 +0000
+
+xen-3 (3.2.0-2) unstable; urgency=low
+
+  * Fix broken patch. (closes: #462522)
+
+ -- Bastian Blank <waldi@debian.org>  Sat, 26 Jan 2008 17:21:52 +0000
+
+xen-3 (3.2.0-1) unstable; urgency=low
+
+  * New upstream version.
+  * Add package libxen-dev. Including public headers and static libs.
+    (closes: #402249)
+  * Don't longer install xenfb, removed upstream.
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 22 Jan 2008 12:51:49 +0000
+
+xen-3 (3.1.2-2) unstable; urgency=low
+
+  * Add missing rpath definitions.
+  * Fix building of pae version.
+
+ -- Bastian Blank <waldi@debian.org>  Sat, 08 Dec 2007 12:07:42 +0000
+
+xen-3 (3.1.2-1) unstable; urgency=high
+
+  * New upstream release:
+    - Move shared file into /var/run. (closes: #447795)
+      See CVE-2007-3919.
+    - x86: Fix various problems with debug-register handling. (closes: #451626)
+      See CVE-2007-5906.
+
+ -- Bastian Blank <waldi@debian.org>  Sat, 24 Nov 2007 13:24:45 +0000
+
+xen-3 (3.1.1-1) unstable; urgency=low
+
+  * New upstream release:
+    - Don't use exec with untrusted values in pygrub. (closes: #444430)
+      See CVE-2007-4993.
+
+ -- Bastian Blank <waldi@debian.org>  Fri, 19 Oct 2007 16:02:37 +0000
+
+xen-3 (3.1.0-2) unstable; urgency=low
+
+  * Switch to texlive for documentation.
+  * Drop unused transfig.
+  * Drop unused latex features from documentation.
+  * Build depend against gcc-multilib for amd64. (closes: #439662)
+
+ -- Bastian Blank <waldi@debian.org>  Fri, 31 Aug 2007 08:15:50 +0000
+
+xen-3 (3.1.0-1) unstable; urgency=low
+
+  [ Julien Danjou ]
+  * New upstream version.
+
+  [ Ralph Passgang ]
+  * Added graphviz to Build-Indeps
+
+  [ Bastian Blank ]
+  * Upstream removed one part of the version. Do it also.
+  * Merge utils packages.
+  * Install blktap support.
+  * Install pygrub.
+  * Install xenfb tools.
+  * xenconsoled startup is racy, wait a little bit.
+
+ -- Bastian Blank <waldi@debian.org>  Mon, 20 Aug 2007 15:05:08 +0000
+
+xen-3.0 (3.0.4-1-1) unstable; urgency=low
+
+  [ Bastian Blank ]
+  * New upstream version (closes: #394411)
+
+  [ Guido Trotter ]
+  * Actually try to build and release xen 3.0.4
+  * Update build dependencies
+
+ -- Guido Trotter <ultrotter@debian.org>  Wed, 23 May 2007 11:57:29 +0100
+
+xen-3.0 (3.0.3-0-2) unstable; urgency=medium
+
+  [Bastian Blank]
+  * Remove device recreate code.
+  * Remove build dependency on linux-support-X
+
+  [ Guido Trotter ]
+  * Add missing build dependency on zlib1g-dev (closes: #396557)
+  * Add missing build dependencies on libncurses5-dev and x11proto-core-dev
+    (closes: #396561, #396567)
+
+ -- Guido Trotter <ultrotter@debian.org>  Thu,  2 Nov 2006 16:38:02 +0000
+
+xen-3.0 (3.0.3-0-1) unstable; urgency=low
+
+  * New upstream version.
+
+ -- Bastian Blank <waldi@debian.org>  Fri, 20 Oct 2006 11:04:35 +0000
+
+xen-3.0 (3.0.3~rc4+hg11760-1) unstable; urgency=low
+
+  * New upstream snapshot.
+  * Ignore update-grub errors. (closes: #392534)
+
+ -- Bastian Blank <waldi@debian.org>  Sat, 14 Oct 2006 13:09:53 +0000
+
+xen-3.0 (3.0.3~rc1+hg11686-1) unstable; urgency=low
+
+  * New upstream snapshot.
+  * Rename ioemu package to include the complete version.
+  * Fix name of hypervisor. (closes: #391771)
+
+ -- Bastian Blank <waldi@debian.org>  Mon,  9 Oct 2006 12:48:13 +0000
+
+xen-3.0 (3.0.2-3+hg9762-1) unstable; urgency=low
+
+  * New upstream snapshot.
+  * Rename hypervisor and utils packages to include the complete version.
+  * Redo build environment.
+
+ -- Bastian Blank <waldi@debian.org>  Mon,  4 Sep 2006 18:43:12 +0000
+
+xen-3.0 (3.0.2+hg9697-2) unstable; urgency=low
+
+  [ Guido Trotter ]
+  * Update xen-utils' README.Debian (closes: #372524)
+
+  [ Bastian Blank ]
+  * Adopt new python policy. (closes: #380990)
+  * Add patch to make new kernels working on the hypervisor.
+
+ -- Bastian Blank <waldi@debian.org>  Tue, 15 Aug 2006 19:20:08 +0000
+
+xen-3.0 (3.0.2+hg9697-1) unstable; urgency=low
+
+  [ Guido Trotter ]
+  * Update Standards Version
+  * Merge upstream fixes trunk (upstream 3.0.2-3 + a couple of fixes)
+
+  [ Bastian Blank ]
+  * Add xen-ioemu-3.0 package to support HVM guests (closes: #368496)
+
+ -- Guido Trotter <ultrotter@debian.org>  Wed, 31 May 2006 10:50:05 +0200
+
+xen-3.0 (3.0.2+hg9681-1) unstable; urgency=low
+
+  * Update xen-hypervisor-3.0-i386 and xen-hypervisor-3.0-i386-pae
+    descriptions, specifying what the difference between the two packages is
+    (closes: #366019)
+  * Merge upstream fixes trunk
+
+ -- Guido Trotter <ultrotter@debian.org>  Thu, 18 May 2006 15:25:02 +0200
+
+xen-3.0 (3.0.2+hg9656-1) unstable; urgency=low
+
+  * Merge upstream fixes trunk
+    - This includes a fix for CVE-2006-1056
+
+ -- Guido Trotter <ultrotter@debian.org>  Thu, 27 Apr 2006 17:34:03 +0200
+
+xen-3.0 (3.0.2+hg9651-1) unstable; urgency=low
+
+  * Merge upstream fixes trunk
+  * Fix PAE disabled in pae build (Closes: #364875) 
+
+ -- Julien Danjou <acid@debian.org>  Wed, 26 Apr 2006 13:19:39 +0200
+
+xen-3.0 (3.0.2+hg9646-1) unstable; urgency=low
+
+  [ Guido Trotter ]
+  * Merge upstream fixes trunk
+
+  [ Bastian Blank ]
+  * debian/patches/libdir.dpatch: Update to make xm save work
+
+ -- Julien Danjou <acid@debian.org>  Mon, 24 Apr 2006 18:02:07 +0200
+
+xen-3.0 (3.0.2+hg9611-1) unstable; urgency=low
+
+  * Merge upstream bug fixes
+  * Fix bug with xend init.d script
+
+ -- Julien Danjou <acid@debian.org>  Wed, 12 Apr 2006 17:35:35 +0200
+
+xen-3.0 (3.0.2+hg9598-1) unstable; urgency=low
+
+  * New upstream release
+  * Fix copyright file
+
+ -- Julien Danjou <acid@debian.org>  Mon, 10 Apr 2006 17:02:55 +0200
+
+xen-3.0 (3.0.1+hg8762-1) unstable; urgency=low
+
+  * The "preserve our homes" release
+  * Now cooperatively maintained by the Debian Xen Team
+  * New upstream release (closes: #327493, #342249)
+  * Build depend on transfig (closes: #321157)
+  * Use gcc rather than gcc-3.4 to compile (closes: #323698)
+  * Split xen-hypervisor-3.0 and xen-utils-3.0
+  * Build both normal and pae hypervisor packages
+  * Change maintainer and add uploaders field
+  * Add force-reload support for init script xendomains
+  * Remove dependency against bash
+  * Bump standards version to 3.6.2.2
+  * xen-utils-3.0 conflicts and replaces xen
+  * Add dpatch structure to the package
+  * Remove build-dependency on gcc (it's build essential anyway)
+  * Make SrvServer.py not executable
+  * Create NEWS.Debian file with important upgrade notices
+  * Update copyright file
+  * Remove the linux-patch-xen package
+  * Removed useless build-dependencies: libncurses5-dev, wget
+  * Changed xendomains config path to /etc/default
+  * xen-utils-3.0 now provides xen-utils and xen-hypervisor-3.0-i386 &
+    xen-hypervisor-3.0-i386-pae & xen-hypervizor-amd64 now provide
+    xen-hypervisor
+  * Made xen-utils-3.0.postinst more fault-tolerant, so that upgrading
+    xen2 -> xen3 don't fail because of a running xen2 hypervisor
+  * Updated the "Replaces & Conflicts"
+  * Install only and correctly udev files
+  * Compile date is no more in current locale
+  * Add patch which add the debian version and maintainer in the version
+    string and removes the banner.
+  * Don't install unusable cruft in xen-utils
+  * Remove libxen packages (no stable API/ABI)
+
+ -- Julien Danjou <acid@debian.org>  Wed,  5 Apr 2006 16:05:07 +0200
+
+xen (2.0.6-1) unstable; urgency=low
+
+  * Patches applied upstream: non-xen-init-exit.patch, add-build.patch,
+    python-install.patch, disable-html-docs.patch.
+  * New upstream released.  Closes: #311336.
+  * Remove comparison to UML from xen short description.  Closes: #317066.
+  * Make packages conflicts with 1.2 doc debs.  Closes: #304285.
+  * Add iproute to xen depends, as it uses /bin/ip.  Closes: #300488,
+    #317468.
+
+ -- Adam Heath <doogie@brainfood.com>  Wed, 06 Jul 2005 12:35:50 -0500
+
+xen (2.0.5-3) experimental; urgency=low
+
+  * Change priority/section to match the overrides file.
+
+ -- Adam Heath <doogie@brainfood.com>  Fri, 18 Mar 2005 12:43:50 -0600
+
+xen (2.0.5-2) experimental; urgency=low
+
+  * Mike McCallister <mike+debian@metalogue.com>,
+    Tommi Virtanen <tv@debian.org>, Tom Hibbert <tom@nsp.co.nz>:
+    Fix missing '.' in update-rc.d call in xen.postinst.  Closes: #299384
+
+ -- Adam Heath <doogie@brainfood.com>  Fri, 18 Mar 2005 11:39:56 -0600
+
+xen (2.0.5-1) experimental; urgency=low
+
+  * New upstream.
+  * Remove pic-lib.patch, tools-misc-TARGETS.patch, and clean-mttr.patch
+    as they have been applied upstream(in various forms).
+  * xend now starts at priority 20, stops at 21, while xendomains starts
+    at 21, and stops at 20.
+
+ -- Adam Heath <doogie@brainfood.com>  Fri, 11 Mar 2005 14:33:33 -0600
+
+xen (2.0.4-4) experimental; urgency=low
+
+  * Bah, major booboo.  Add /boot to debian/xen.install, so xen.gz will
+    get shipped.  Reported by Clint Adams <schizo@debian.org>.
+
+ -- Adam Heath <doogie@brainfood.com>  Tue, 15 Feb 2005 13:00:57 -0600
+
+xen (2.0.4-3) experimental; urgency=low
+
+  * Fix file overlap(/usr/share/doc/xen/examples/*) between xen and
+    xen-docs.  Reported by Tupshin Harper <tupshin@tupshin.com>.
+
+ -- Adam Heath <doogie@brainfood.com>  Sun, 06 Feb 2005 01:22:45 -0600
+
+xen (2.0.4-2) experimental; urgency=low
+
+  * Fix kernel patch generation.  It was broken when I integrated with
+    debian's kernel source.  I used a symlink, and diff doesn't follow
+    those.
+
+ -- Adam Heath <doogie@brainfood.com>  Sat, 05 Feb 2005 18:16:35 -0600
+
+xen (2.0.4-1) experimental; urgency=low
+
+  * New upstream.
+  * xen.deb can now install on a plain kernel; that is, the init scripts
+    exit successfully if /proc/xen/privcmd doesn't exist.  This allows
+    for dual-boot setups.
+  * Manpages do not yet exist xend, xenperf, xensv, xfrd, nor xm.  xend
+    xfrd are daemons, and take little if any options.  I've not had a need
+    to use xenperf nor xensv yet.  xm has nice built in help(xm help).
+  * Upstream now requires either linux 2.4.29, or 2.6.10.  Since 2.4.29 is
+    not yet in debian, disable the 2.4 patch generation.  Closes: #271245.
+  * Not certain how the kernel-patch-xen was empty.  It's not now, with
+    the repackaging.  Closes: #272299.
+  * Xen no longer produces kernel images, so problems about missing features
+    are no longer valid.  Closes: #253924.
+  * Acknowledge nmu bugs:
+    * No longer build-depend on gcc 3.3, as the default gcc works. Closes:
+      #243048.
+
+ -- Adam Heath <doogie@brainfood.com>  Sat, 05 Feb 2005 18:04:27 -0600
+
+xen (2.0.3-0.1) unstable; urgency=low
+
+  * Changes from Tommi Virtanen:
+    * Added dh-kpatches and libcurl3-dev to Build-Depends.
+    * Add /etc/xen/sv/params.py and /etc/xen/xend/params.py.
+    * Add xmexample1 and xmexample2 to xen/doc/examples.
+
+ -- Adam Heath <doogie@brainfood.com>  Wed, 26 Jan 2005 10:55:07 -0600
+
+xen (2.0.3-0) unstable; urgency=low
+
+  * New upstream.  Closes: #280733.
+  * Repackaged from scratch.
+  * Using unreleased patch management system.  See debian/README.build.
+    * After extracting the .dsc, there are no special steps needed
+    * Those wanting to change the source, use the normal procedures for
+      any package, including using interdiff(or other tool) to send a
+      patch to me or the bts.
+  * No longer try to do anything fancy with regard to the layout of the
+    built kernels.  Now, only patches are distributed.  Please make use of
+    the xen support in kernel-package.
+  * Early preview release to #debian-devel.
+
+ -- Adam Heath <doogie@brainfood.com>  Tue, 25 Jan 2005 13:24:54 -0600
+
+xen (1.2-4.1) unstable; urgency=high
+
+  * NMU
+  * Remove gcc-3.2 from Build-Depends as isn't used during build
+    (Closes: #243048)
+
+ -- Frank Lichtenheld <djpig@debian.org>  Sat, 21 Aug 2004 17:42:28 +0200
+
+xen (1.2-4) unstable; urgency=low
+
+  * Added xen-docs.README.Debian, which explains the kernel image layout,
+    and contains references on the locations differ from what is mentioned
+    by the upstream documentation.  Closes: #230345.
+
+ -- Adam Heath <doogie@brainfood.com>  Fri, 26 Mar 2004 17:36:41 -0600
+
+xen (1.2-3) unstable; urgency=low
+
+  * Add kernel-source-2.4.25 and kernel-patch-debian-2.4.25 to
+    Build-Depends-Indep.
+
+ -- Adam Heath <doogie@brainfood.com>  Tue, 23 Mar 2004 20:14:39 -0600
+
+xen (1.2-2) unstable; urgency=low
+
+  * xen: moved /boot/xen.gz to /usr/lib/kernels/xen-i386/images/vmlinuz
+  * kernel-image, kernel-modules: swapped i386/xeno to xeno/i386 in
+    /usr/lib/kernels.
+  * Add kernel-patch-nfs-swap deb.
+  * Apply additional patches to kernel-image-xen:
+    * nfs-group
+    * nfs-swap
+
+ -- Adam Heath <doogie@brainfood.com>  Thu, 04 Mar 2004 12:47:47 -0600
+
+xen (1.2-1) unstable; urgency=low
+
+  * Initial version.
+
+ -- Adam Heath <doogie@brainfood.com>  Tue, 02 Mar 2004 13:21:52 -0600
--- xen-3-3.2.1.orig/debian/compat
+++ xen-3-3.2.1/debian/compat
@@ -0,0 +1 @@
+4
--- xen-3-3.2.1.orig/debian/control
+++ xen-3-3.2.1/debian/control
@@ -0,0 +1,99 @@
+Source: xen-3
+Section: misc
+Priority: extra
+Maintainer: Debian Xen Team <pkg-xen-devel@lists.alioth.debian.org>
+Uploaders: Julien Danjou <acid@debian.org>, Jeremy T. Bouse <jbouse@debian.org>, Guido Trotter <ultrotter@debian.org>, Bastian Blank <waldi@debian.org>, Frederik Schüler <fs@debian.org>
+Standards-Version: 3.7.2.0
+Build-Depends: debhelper (>= 5.0.37.2), lsb-release, quilt, python-dev (>= 2.3), python-central (>= 0.5), bcc, libc6-dev-i386 [amd64], e2fslibs-dev, libgnutls-dev, pkg-config, libjpeg-dev, libncurses5-dev, libsdl1.2-dev, libvncserver-dev, zlib1g-dev
+Build-Depends-Indep: graphviz, gs-common, texlive-fonts-recommended, texlive-latex-recommended
+XS-Python-Version: current
+
+Package: xen-docs-3.2
+Architecture: all
+Section: doc
+Description: Documentation for Xen
+ This package contains all the large documentation files for Xen.  This
+ includes a description interface (both the api, and a nice explanation of
+ how XEN works).
+
+Package: libxenstore3.0
+Architecture: any
+Section: libs
+Depends: ${shlibs:Depends}
+Description: Xenstore communications library for Xen
+ This package contains the public libxenstore.
+
+Package: libxen-dev
+Architecture: any
+Section: libdevel
+Depends: libxenstore3.0 (= ${binary:Version})
+Description: Public headers and libs for Xen
+ This package contains the public headers and static libraries for Xen.
+
+Package: xenstore-utils
+Architecture: any
+Section: admin
+Depends: ${shlibs:Depends}
+Replaces: xen-utils-common (<= 3.1.0-1)
+Conflicts: xen-utils-common (<= 3.1.0-1)
+Description: Xenstore utilities for Xen
+ This package contains the Xenstore utilities.
+
+Package: xen-utils-3.2-1
+Architecture: amd64 i386
+Provides: xen-utils
+Depends: ${shlibs:Depends}, ${python:Depends}, xen-utils-common (>> 3.2.0), iproute, udev (>> 0.060)
+Recommends: bridge-utils, libc6-xen [i386], xen-hypervisor-3.2-1
+Suggests: xen-docs-3.2
+Description: XEN administrative tools
+ The userspace tools to manage a system virtualized through the XEN virtual
+ machine monitor.
+XB-Python-Version: ${python:Versions}
+
+Package: xen-hypervisor-3.2-1-amd64
+Architecture: amd64
+Provides: xen-hypervisor, xen-hypervisor-3, xen-hypervisor-3.2-1, xen-hypervisor-amd64
+Recommends: xen-utils-3.2-1
+Suggests: xen-docs-3.2
+Description: The Xen Hypervisor on AMD64
+ The hypervisor is the "core" for XEN itself.  It gets booted by the boot
+ loader and controls cpu and memory, sharing them between your
+ administrative domain (Domain 0) and the virtual guest systems.
+ .
+ In order to boot a XEN system along with this package you also need a
+ kernel specifically crafted to work as the Domain 0, mediating hardware
+ access for XEN itself.
+
+Package: xen-hypervisor-3.2-1-i386
+Architecture: i386
+Provides: xen-hypervisor, xen-hypervisor-3, xen-hypervisor-3.2-1, xen-hypervisor-i386
+Recommends: xen-utils-3.2-1
+Suggests: xen-docs-3.2
+Description: The Xen Hypervisor on i386
+ The hypervisor is the "core" for XEN itself.  It gets booted by the boot
+ loader and controls cpu and memory, sharing them between your
+ administrative domain (Domain 0) and the virtual guest systems.
+ .
+ This version of the hypervisor is built with PAE enabled.  If you have a
+ cpu without pae support install the -nonpae version instead.
+ .
+ In order to boot a XEN system along with this package you also need a
+ kernel specifically crafted to work as the Domain 0, mediating hardware
+ access for XEN itself.
+
+Package: xen-hypervisor-3.2-1-i386-nonpae
+Architecture: i386
+Provides: xen-hypervisor, xen-hypervisor-3, xen-hypervisor-3.2-1, xen-hypervisor-i386-nonpae
+Recommends: xen-utils-3.2-1
+Suggests: xen-docs-3.2
+Description: The Xen Hypervisor on i386 without pae
+ The hypervisor is the "core" for XEN itself.  It gets booted by the boot
+ loader and controls cpu and memory, sharing them between your
+ administrative domain (Domain 0) and the virtual guest systems.
+ .
+ This version of the hypervisor is built without PAE.
+ .
+ In order to boot a XEN system along with this package you also need a
+ kernel specifically crafted to work as the Domain 0, mediating hardware
+ access for XEN itself.
+
--- xen-3-3.2.1.orig/debian/xenstore-utils.install
+++ xen-3-3.2.1/debian/xenstore-utils.install
@@ -0,0 +1 @@
+usr/bin/xenstore-*
--- xen-3-3.2.1.orig/debian/rules.real
+++ xen-3-3.2.1/debian/rules.real
@@ -0,0 +1,179 @@
+DEB_HOST_ARCH     := $(shell dpkg-architecture -a$(ARCH) -qDEB_HOST_ARCH)
+DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -a$(ARCH) -qDEB_HOST_GNU_TYPE)
+DEB_BUILD_ARCH    := $(shell dpkg-architecture -a$(ARCH) -qDEB_BUILD_ARCH)
+
+export DH_OPTIONS
+
+setup_env := env -u ABINAME -u ARCH -u FLAVOUR -u VERSION -u MAKEFLAGS
+
+MAKE_CLEAN = $(setup_env) $(MAKE)
+MAKE_SELF = $(MAKE) -f debian/rules.real
+
+include debian/rules.defs
+
+binary-arch-arch: install-lib-dev_$(ARCH)
+binary-arch-arch: install-libxenstore_$(ARCH)
+binary-arch-arch: install-utils_$(ARCH)
+binary-arch-arch: install-xenstore-utils_$(ARCH)
+binary-arch-flavour: install-hypervisor_$(ARCH)_$(FLAVOUR)
+
+binary-indep: install-docs
+
+build-arch: $(STAMPS_DIR)/build-utils_$(ARCH)
+build-flavour: $(STAMPS_DIR)/build-hypervisor_$(ARCH)_$(FLAVOUR)
+
+setup-arch: $(STAMPS_DIR)/setup-utils_$(ARCH)
+setup-flavour: $(STAMPS_DIR)/setup-hypervisor_$(ARCH)_$(FLAVOUR)
+
+srcfiles := $(filter-out debian, $(wildcard * .[^.]*))
+$(STAMPS_DIR)/source: DIR=$(BUILD_DIR)/source
+$(STAMPS_DIR)/source:
+	@rm -rf $(DIR)
+	mkdir $(DIR)
+	cp -a $(srcfiles) $(DIR)
+	cd $(DIR); QUILT_PATCHES=$(CURDIR)/debian/patches quilt --quiltrc /dev/null push -a || test $$? = 2
+	touch $@
+
+$(STAMPS_DIR)/setup-docs: SOURCE_DIR=$(BUILD_DIR)/source
+$(STAMPS_DIR)/setup-docs: DIR=$(BUILD_DIR)/build-docs
+$(STAMPS_DIR)/setup-docs: $(STAMPS_DIR)/source
+	@rm -rf $(DIR)
+	cp -al $(SOURCE_DIR) $(DIR)
+	touch $@
+
+$(STAMPS_DIR)/setup-hypervisor_$(ARCH)_$(FLAVOUR): SOURCE_DIR=$(BUILD_DIR)/source
+$(STAMPS_DIR)/setup-hypervisor_$(ARCH)_$(FLAVOUR): DIR=$(BUILD_DIR)/build-hypervisor_$(ARCH)_$(FLAVOUR)
+$(STAMPS_DIR)/setup-hypervisor_$(ARCH)_$(FLAVOUR): $(STAMPS_DIR)/source
+	@rm -rf $(DIR)
+	cp -al $(SOURCE_DIR) $(DIR)
+	echo "XEN_EXTRAVERSION := $(EXTRAVERSION)$(ABINAME)" > $(DIR)/xen/xen-version
+	touch $@
+
+$(STAMPS_DIR)/setup-utils_$(ARCH): SOURCE_DIR=$(BUILD_DIR)/source
+$(STAMPS_DIR)/setup-utils_$(ARCH): DIR=$(BUILD_DIR)/build-utils_$(ARCH)
+$(STAMPS_DIR)/setup-utils_$(ARCH): $(STAMPS_DIR)/source
+	@rm -rf $(DIR)
+	cp -al $(SOURCE_DIR) $(DIR)
+	touch $@
+
+$(STAMPS_DIR)/build-docs: DIR=$(BUILD_DIR)/build-docs
+$(STAMPS_DIR)/build-docs: $(STAMPS_DIR)/setup-docs
+	$(MAKE_CLEAN) -C $(DIR)/docs
+	touch $@
+
+$(STAMPS_DIR)/build-hypervisor_$(ARCH)_$(FLAVOUR): DIR=$(BUILD_DIR)/build-hypervisor_$(ARCH)_$(FLAVOUR)
+$(STAMPS_DIR)/build-hypervisor_$(ARCH)_$(FLAVOUR): $(STAMPS_DIR)/setup-hypervisor_$(ARCH)_$(FLAVOUR)
+	$(MAKE_CLEAN) -C $(DIR)/xen \
+		$(CONFIG) \
+		XEN_COMPILE_ARCH=$(XEN_ARCH) \
+		XEN_TARGET_ARCH=$(XEN_ARCH)
+	touch $@
+
+$(STAMPS_DIR)/build-utils_$(ARCH) \
+$(STAMPS_DIR)/install-utils_$(ARCH): CONFIG = \
+		XEN_COMPILE_ARCH=$(XEN_ARCH) \
+		XEN_TARGET_ARCH=$(XEN_ARCH) \
+		XEN_VERSION=$(VERSION)$(ABINAME)
+
+$(STAMPS_DIR)/build-utils_$(ARCH): DIR=$(BUILD_DIR)/build-utils_$(ARCH)
+$(STAMPS_DIR)/build-utils_$(ARCH): $(STAMPS_DIR)/setup-utils_$(ARCH)
+	$(MAKE_CLEAN) -C $(DIR)/tools $(CONFIG)
+	touch $@
+
+$(STAMPS_DIR)/install-utils_$(ARCH): DIR = $(BUILD_DIR)/build-utils_$(ARCH)
+$(STAMPS_DIR)/install-utils_$(ARCH): INSTALL_DIR = $(BUILD_DIR)/install-utils_$(ARCH)
+$(STAMPS_DIR)/install-utils_$(ARCH): $(STAMPS_DIR)/build-utils_$(ARCH)
+	@rm -rf $(INSTALL_DIR)
+	$(MAKE_CLEAN) -C $(DIR)/tools install DESTDIR=$(CURDIR)/$(INSTALL_DIR) $(CONFIG)
+	touch $@
+
+install-base:
+	dh_installchangelogs
+	dh_installdocs
+	dh_compress
+	dh_fixperms
+	dh_installdeb
+	dh_gencontrol -- $(GENCONTROL_ARGS)
+	dh_md5sums
+	dh_builddeb
+
+install-docs: DIR=$(BUILD_DIR)/build-docs
+install-docs: PACKAGE_NAME = xen-docs-$(VERSION)
+install-docs: DH_OPTIONS = -p$(PACKAGE_NAME)
+install-docs: $(STAMPS_DIR)/build-docs
+	dh_testdir
+	dh_testroot
+	dh_clean -k
+	$(MAKE_CLEAN) -C $(DIR)/docs install DESTDIR=$(CURDIR)/debian/tmp
+	dh_install --sourcedir=debian/tmp usr/share/doc/xen/pdf/* usr/share/doc/$(PACKAGE_NAME)
+	$(MAKE_SELF) install-base
+
+install-hypervisor_$(ARCH)_$(FLAVOUR): DIR=$(BUILD_DIR)/build-hypervisor_$(ARCH)_$(FLAVOUR)
+install-hypervisor_$(ARCH)_$(FLAVOUR): PACKAGE_NAME = xen-hypervisor-$(VERSION)$(ABINAME)-$(FLAVOUR)
+install-hypervisor_$(ARCH)_$(FLAVOUR): DH_OPTIONS = -p$(PACKAGE_NAME)
+install-hypervisor_$(ARCH)_$(FLAVOUR): $(STAMPS_DIR)/build-hypervisor_$(ARCH)_$(FLAVOUR)
+	dh_testdir
+	dh_testroot
+	dh_clean -k
+	dh_installdirs boot
+	cp $(DIR)/xen/xen.gz debian/$(PACKAGE_NAME)/boot/xen-$(VERSION)$(ABINAME)-$(FLAVOUR).gz
+	$(MAKE_SELF) install-base
+
+install-lib-dev_$(ARCH): DIR = $(BUILD_DIR)/install-utils_$(ARCH)
+install-lib-dev_$(ARCH): PACKAGE_NAME = libxen-dev
+install-lib-dev_$(ARCH): DH_OPTIONS = -p$(PACKAGE_NAME)
+install-lib-dev_$(ARCH): $(STAMPS_DIR)/install-utils_$(ARCH)
+	dh_testdir
+	dh_testroot
+	dh_clean -k
+	dh_install --sourcedir=$(DIR)
+	dh_strip
+	dh_shlibdeps
+	$(MAKE_SELF) install-base
+
+install-libxenstore_$(ARCH): DIR = $(BUILD_DIR)/install-utils_$(ARCH)
+install-libxenstore_$(ARCH): PACKAGE_NAME = libxenstore3.0
+install-libxenstore_$(ARCH): DH_OPTIONS = -p$(PACKAGE_NAME)
+install-libxenstore_$(ARCH): $(STAMPS_DIR)/install-utils_$(ARCH)
+	dh_testdir
+	dh_testroot
+	dh_clean -k
+	dh_install --sourcedir=$(DIR)
+	dh_strip
+	dh_makeshlibs
+	dh_shlibdeps
+	$(MAKE_SELF) install-base
+
+install-utils_$(ARCH): SOURCE_DIR = $(BUILD_DIR)/build-utils_$(ARCH)
+install-utils_$(ARCH): DIR = $(BUILD_DIR)/install-utils_$(ARCH)
+install-utils_$(ARCH): PACKAGE_NAME = xen-utils-$(VERSION)$(ABINAME)
+install-utils_$(ARCH): PACKAGE_DIR = debian/$(PACKAGE_NAME)
+install-utils_$(ARCH): DH_OPTIONS = -p$(PACKAGE_NAME)
+install-utils_$(ARCH): $(STAMPS_DIR)/install-utils_$(ARCH)
+	dh_testdir
+	dh_testroot
+	dh_clean -k
+	install -D -m644 debian/xen-utils.NEWS $(PACKAGE_DIR)/usr/share/doc/$(PACKAGE_NAME)/NEWS
+	install -D -m644 debian/xen-utils.README.Debian $(PACKAGE_DIR)/usr/share/doc/$(PACKAGE_NAME)/README.Debian
+	install -D -m644 debian/xen-utils-$(VERSION)$(ABINAME).lintian-overrides $(PACKAGE_DIR)/usr/share/lintian/overrides/$(PACKAGE_NAME)
+	dh_install --sourcedir=$(DIR) usr/lib/xen-$(VERSION)$(ABINAME)
+	dh_install --sourcedir=$(DIR) usr/share/xen-$(VERSION)$(ABINAME)
+	dh_pycentral usr/lib/xen-$(VERSION)$(ABINAME)
+	dh_strip
+	dh_makeshlibs
+	dh_shlibdeps
+	$(MAKE_SELF) install-base
+
+install-xenstore-utils_$(ARCH): DIR = $(BUILD_DIR)/install-utils_$(ARCH)
+install-xenstore-utils_$(ARCH): PACKAGE_NAME = xenstore-utils
+install-xenstore-utils_$(ARCH): DH_OPTIONS = -p$(PACKAGE_NAME)
+install-xenstore-utils_$(ARCH): $(STAMPS_DIR)/install-utils_$(ARCH)
+	dh_testdir
+	dh_testroot
+	dh_clean -k
+	dh_install --sourcedir=$(DIR)
+	dh_strip
+	dh_shlibdeps
+	$(MAKE_SELF) install-base
+
+# vim: filetype=make
--- xen-3-3.2.1.orig/debian/libxen-dev.install
+++ xen-3-3.2.1/debian/libxen-dev.install
@@ -0,0 +1,12 @@
+usr/lib/{libxenctrl.a,libxenguest.a}
+usr/lib/libxenstore.{a,so}
+usr/include/{xenctrl.h,xenguest.h}
+usr/include/{xs.h,xs_lib.h}
+usr/include/xen
+../../../xen/include/public/*.h usr/include/xen
+../../../xen/include/public/arch-ia64/*.h usr/include/xen/arch-ia64
+../../../xen/include/public/arch-x86/*.h usr/include/xen/arch-x86
+../../../xen/include/public/foreign/*.h usr/include/xen/foreign
+../../../xen/include/public/hvm/*.h usr/include/xen/hvm
+../../../xen/include/public/io/*.h usr/include/xen/io
+../../../xen/include/public/xsm/*.h usr/include/xen/xsm
--- xen-3-3.2.1.orig/debian/arch/amd64/defines
+++ xen-3-3.2.1/debian/arch/amd64/defines
@@ -0,0 +1,9 @@
+[base]
+flavours:
+ amd64
+xen-arch: x86_64
+
+[amd64_base]
+class: AMD64
+longclass: all 64bit single- and multiprocessor AMD and Intel
+
--- xen-3-3.2.1.orig/debian/arch/defines
+++ xen-3-3.2.1/debian/arch/defines
@@ -0,0 +1,7 @@
+[abi]
+abiname: 1
+
+[base]
+arches:
+ amd64
+ i386
--- xen-3-3.2.1.orig/debian/arch/i386/defines
+++ xen-3-3.2.1/debian/arch/i386/defines
@@ -0,0 +1,18 @@
+[base]
+flavours:
+ i386
+ i386-nonpae
+xen-arch: x86_32
+
+[i386_base]
+class: i386
+config: pae=y
+desc:
+ This version of the hypervisor is built with PAE enabled. If you have a cpu
+ without pae support install the -nonpae version instead.
+
+[i386-nonpae_base]
+class: i386 without pae
+desc:
+ This version of the hypervisor is built without PAE.
+
--- xen-3-3.2.1.orig/debian/xen-utils-3.2-1.lintian-overrides
+++ xen-3-3.2.1/debian/xen-utils-3.2-1.lintian-overrides
@@ -0,0 +1,34 @@
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/bin/blktapctrl ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/bin/img2qcow ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/bin/qcow-create ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/bin/qcow2raw ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/bin/qemu-dm ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/bin/readnotes ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/bin/tapdisk ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/bin/xc_restore ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/bin/xc_save ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/bin/xenbaked ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/bin/xenconsole ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/bin/xenconsoled ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/bin/xenctx ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/bin/xenperf ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/bin/xenstored ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/bin/xentop ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/bin/xentrace ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/bin/xentrace_setmask ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/bin/xentrace_setsize ${ORIGIN}/../lib
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/lib/fs/ext2fs-lib/fsimage.so ${ORIGIN}/../..
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/lib/fs/fat/fsimage.so ${ORIGIN}/../..
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/lib/fs/iso9660/fsimage.so ${ORIGIN}/../..
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/lib/fs/reiserfs/fsimage.so ${ORIGIN}/../..
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/lib/fs/ufs/fsimage.so ${ORIGIN}/../..
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/lib/libblktap.so ${ORIGIN}
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/lib/libxenctrl.so ${ORIGIN}
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/lib/libxenguest.so ${ORIGIN}
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/lib/python/fsimage.so ${ORIGIN}/..
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/lib/python/xen/lowlevel/acm.so ${ORIGIN}/../../..
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/lib/python/xen/lowlevel/flask.so ${ORIGIN}/../../..
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/lib/python/xen/lowlevel/ptsname.so ${ORIGIN}/../../..
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/lib/python/xen/lowlevel/xc.so ${ORIGIN}/../../..
+binary-or-shlib-defines-rpath ./usr/lib/xen-3.2-1/lib/python/xen/lowlevel/xs.so ${ORIGIN}/../../..
+statically-linked-binary ./usr/lib/xen-3.2-1/boot/hvmloader
--- xen-3-3.2.1.orig/debian/xen-hypervisor-3.2-1-i386-nonpae.postrm
+++ xen-3-3.2.1/debian/xen-hypervisor-3.2-1-i386-nonpae.postrm
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+set -e
+
+case "$1" in
+    remove)
+        if command -v update-grub > /dev/null && [ -d /boot/grub ]; then
+            update-grub || :
+        fi
+    ;;
+
+    purge|upgrade|failed-upgrade|abort-install|abort-upgrade|disappear)
+    ;;
+
+    *)
+        echo "postrm called with unknown argument \`$1'" >&2
+        exit 1
+    ;;
+esac
+
+#DEBHELPER#
+
+exit 0
--- xen-3-3.2.1.orig/debian/xen-utils.NEWS
+++ xen-3-3.2.1/debian/xen-utils.NEWS
@@ -0,0 +1,25 @@
+xen-3.0 (3.0.1-1) unstable; urgency=low
+
+  If you are upgrading from official xen 2.0.6 packages (or unofficial 2.0.7
+  ones) be careful: manual intervention is needed before you can boot into your
+  new Xen 3.0 system. In particular you *must* upgrade both your Domain 0
+  kernel and your unprivileged domains ones with a xen-flavored version of
+  Linux 2.6.12.  Instructions for how to do so are provided in the
+  README.Debian file, as they are useful for new users of Xen too.
+
+  Also please note that Xen 2.0.6 has a bug and before getting removed doesn't
+  shutdown your domains. This, together with the fact that xen-utils for Xen
+  3.0 is incompatible with the 2.0 hypervisor means that you won't be able to
+  control your domains after upgrading, other than through the network. So
+  please shut them all down before upgrading to this packages.
+
+  If you want to be really sure that nothing will go wrong please reboot into
+  a normal Linux system before upgrading, upgrade from there, build the new
+  kernels, and only then start your new Xen 3.0 system.
+
+  On the good news side: Xen 3.0 is able to automatically baloon down your
+  Domain 0 to the value specified in /etc/xen/xend-config.sxp. For it to be
+  able to do so, just remove your "dom0_mem=" option from the xen kernel line in
+  your grub.conf, and also the "mem=" option from your linux module line.
+
+ -- Guido Trotter <ultrotter@debian.org>  Tue, 21 Feb 2006 09:07:26 +0100
--- xen-3-3.2.1.orig/debian/rules.gen
+++ xen-3-3.2.1/debian/rules.gen
@@ -0,0 +1,87 @@
+.NOTPARALLEL:
+binary-arch: binary-arch_amd64 binary-arch_i386
+binary-arch_amd64: binary-arch_amd64_none binary-arch_amd64_real
+binary-arch_amd64_none: binary-arch_amd64_none_amd64 binary-arch_amd64_none_real
+binary-arch_amd64_none_amd64:: binary-arch_amd64_none_amd64_real
+binary-arch_amd64_none_amd64::
+	$(MAKE) -f debian/rules.real binary-arch-flavour FLAVOUR='amd64' FEATURESET='none' VERSION='3.2' XEN_ARCH='x86_64' ABINAME='-1' ARCH='amd64'
+binary-arch_amd64_none_amd64_real:
+binary-arch_amd64_none_real:
+binary-arch_amd64_real::
+	$(MAKE) -f debian/rules.real binary-arch-arch ABINAME='-1' XEN_ARCH='x86_64' VERSION='3.2' ARCH='amd64'
+binary-arch_i386: binary-arch_i386_none binary-arch_i386_real
+binary-arch_i386_none: binary-arch_i386_none_i386 binary-arch_i386_none_i386-nonpae binary-arch_i386_none_real
+binary-arch_i386_none_i386:: binary-arch_i386_none_i386_real
+binary-arch_i386_none_i386::
+	$(MAKE) -f debian/rules.real binary-arch-flavour FLAVOUR='i386' CONFIG='pae=y' FEATURESET='none' VERSION='3.2' XEN_ARCH='x86_32' ABINAME='-1' ARCH='i386'
+binary-arch_i386_none_i386-nonpae:: binary-arch_i386_none_i386-nonpae_real
+binary-arch_i386_none_i386-nonpae::
+	$(MAKE) -f debian/rules.real binary-arch-flavour FLAVOUR='i386-nonpae' FEATURESET='none' VERSION='3.2' XEN_ARCH='x86_32' ABINAME='-1' ARCH='i386'
+binary-arch_i386_none_i386-nonpae_real:
+binary-arch_i386_none_i386_real:
+binary-arch_i386_none_real:
+binary-arch_i386_real::
+	$(MAKE) -f debian/rules.real binary-arch-arch ABINAME='-1' XEN_ARCH='x86_32' VERSION='3.2' ARCH='i386'
+binary-indep::
+	$(MAKE) -f debian/rules.real binary-indep ABINAME='-1' VERSION='3.2'
+build: build_amd64 build_i386
+build_amd64: build_amd64_none build_amd64_real
+build_amd64_none: build_amd64_none_amd64 build_amd64_none_real
+build_amd64_none_amd64:: build_amd64_none_amd64_real
+build_amd64_none_amd64::
+	$(MAKE) -f debian/rules.real build-flavour FLAVOUR='amd64' FEATURESET='none' VERSION='3.2' XEN_ARCH='x86_64' ABINAME='-1' ARCH='amd64'
+build_amd64_none_amd64_real:
+build_amd64_none_real:
+build_amd64_real::
+	$(MAKE) -f debian/rules.real build-arch ABINAME='-1' XEN_ARCH='x86_64' VERSION='3.2' ARCH='amd64'
+build_i386: build_i386_none build_i386_real
+build_i386_none: build_i386_none_i386 build_i386_none_i386-nonpae build_i386_none_real
+build_i386_none_i386:: build_i386_none_i386_real
+build_i386_none_i386::
+	$(MAKE) -f debian/rules.real build-flavour FLAVOUR='i386' CONFIG='pae=y' FEATURESET='none' VERSION='3.2' XEN_ARCH='x86_32' ABINAME='-1' ARCH='i386'
+build_i386_none_i386-nonpae:: build_i386_none_i386-nonpae_real
+build_i386_none_i386-nonpae::
+	$(MAKE) -f debian/rules.real build-flavour FLAVOUR='i386-nonpae' FEATURESET='none' VERSION='3.2' XEN_ARCH='x86_32' ABINAME='-1' ARCH='i386'
+build_i386_none_i386-nonpae_real:
+build_i386_none_i386_real:
+build_i386_none_real:
+build_i386_real::
+	$(MAKE) -f debian/rules.real build-arch ABINAME='-1' XEN_ARCH='x86_32' VERSION='3.2' ARCH='i386'
+setup: setup_amd64 setup_i386
+setup_amd64: setup_amd64_none setup_amd64_real
+setup_amd64_none: setup_amd64_none_amd64 setup_amd64_none_real
+setup_amd64_none_amd64:: setup_amd64_none_amd64_real
+setup_amd64_none_amd64::
+	$(MAKE) -f debian/rules.real setup-flavour FLAVOUR='amd64' FEATURESET='none' VERSION='3.2' XEN_ARCH='x86_64' ABINAME='-1' ARCH='amd64'
+setup_amd64_none_amd64_real:
+setup_amd64_none_real:
+setup_amd64_real::
+	$(MAKE) -f debian/rules.real setup-arch ABINAME='-1' XEN_ARCH='x86_64' VERSION='3.2' ARCH='amd64'
+setup_i386: setup_i386_none setup_i386_real
+setup_i386_none: setup_i386_none_i386 setup_i386_none_i386-nonpae setup_i386_none_real
+setup_i386_none_i386:: setup_i386_none_i386_real
+setup_i386_none_i386::
+	$(MAKE) -f debian/rules.real setup-flavour FLAVOUR='i386' CONFIG='pae=y' FEATURESET='none' VERSION='3.2' XEN_ARCH='x86_32' ABINAME='-1' ARCH='i386'
+setup_i386_none_i386-nonpae:: setup_i386_none_i386-nonpae_real
+setup_i386_none_i386-nonpae::
+	$(MAKE) -f debian/rules.real setup-flavour FLAVOUR='i386-nonpae' FEATURESET='none' VERSION='3.2' XEN_ARCH='x86_32' ABINAME='-1' ARCH='i386'
+setup_i386_none_i386-nonpae_real:
+setup_i386_none_i386_real:
+setup_i386_none_real:
+setup_i386_real::
+	$(MAKE) -f debian/rules.real setup-arch ABINAME='-1' XEN_ARCH='x86_32' VERSION='3.2' ARCH='i386'
+source: source_amd64 source_i386
+source_amd64: source_amd64_none source_amd64_real
+source_amd64_none: source_amd64_none_amd64 source_amd64_none_real
+source_amd64_none_amd64: source_amd64_none_amd64_real
+source_amd64_none_amd64_real:
+source_amd64_none_real:
+source_amd64_real:
+source_i386: source_i386_none source_i386_real
+source_i386_none: source_i386_none_i386 source_i386_none_i386-nonpae source_i386_none_real
+source_i386_none_i386: source_i386_none_i386_real
+source_i386_none_i386-nonpae: source_i386_none_i386-nonpae_real
+source_i386_none_i386-nonpae_real:
+source_i386_none_i386_real:
+source_i386_none_real:
+source_i386_real:
--- xen-3-3.2.1.orig/debian/xen-hypervisor-3.2-1-i386.postinst
+++ xen-3-3.2.1/debian/xen-hypervisor-3.2-1-i386.postinst
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+set -e
+
+case "$1" in
+    configure)
+        if command -v update-grub > /dev/null && [ -d /boot/grub ]; then
+            update-grub || :
+        fi
+    ;;
+
+    abort-upgrade|abort-remove|abort-deconfigure)
+    ;;
+
+    *)
+	echo "postinst called with unknown argument \`$1'" >&2
+	exit 1
+    ;;
+esac
+
+#DEBHELPER#
+
+exit 0
--- xen-3-3.2.1.orig/debian/patches/tools-misc-xend-race.diff
+++ xen-3-3.2.1/debian/patches/tools-misc-xend-race.diff
@@ -0,0 +1,13 @@
+# Wait a little bit before starting xenconsoled.
+
+--- xen-3.orig/tools/misc/xend
++++ xen-3/tools/misc/xend
+@@ -97,6 +97,8 @@
+         execute('xenstored', args)
+ 
+ def start_consoled():
++    import time
++    time.sleep(2)
+     if os.fork() == 0:
+         execute('xenconsoled')
+ 
--- xen-3-3.2.1.orig/debian/patches/tools-ioemu-config.diff
+++ xen-3-3.2.1/debian/patches/tools-ioemu-config.diff
@@ -0,0 +1,11 @@
+--- xen-3.orig/tools/ioemu/vl.c
++++ xen-3/tools/ioemu/vl.c
+@@ -99,7 +99,7 @@
+ 
+ #include "exec-all.h"
+ 
+-#define DEFAULT_NETWORK_SCRIPT "/etc/xen/qemu-ifup"
++#define DEFAULT_NETWORK_SCRIPT "/etc/xen/scripts/qemu-ifup"
+ #ifdef _BSD
+ #define DEFAULT_BRIDGE "bridge0"
+ #else 
--- xen-3-3.2.1.orig/debian/patches/tools-libfsimage-prefix.diff
+++ xen-3-3.2.1/debian/patches/tools-libfsimage-prefix.diff
@@ -0,0 +1,53 @@
+--- xen-3.orig/tools/libfsimage/Rules.mk
++++ xen-3/tools/libfsimage/Rules.mk
+@@ -8,11 +8,7 @@
+ 
+ PIC_OBJS := $(patsubst %.c,%.opic,$(LIB_SRCS-y))
+ 
+-FSDIR-$(CONFIG_Linux) = $(LIBDIR)/fs/$(FS)
+-FSDIR-$(CONFIG_SunOS)-x86_64 = lib/fs/$(FS)/64
+-FSDIR-$(CONFIG_SunOS)-x86_32 = lib/fs/$(FS)/
+-FSDIR-$(CONFIG_SunOS) = $(FSDIR-$(CONFIG_SunOS)-$(XEN_TARGET_ARCH))
+-FSDIR = $(FSDIR-y)
++FSDIR = $(LIBDIR)/fs/$(FS)
+ 
+ FSLIB = fsimage.so
+ 
+--- xen-3.orig/tools/libfsimage/common/Makefile
++++ xen-3/tools/libfsimage/common/Makefile
+@@ -1,7 +1,7 @@
+ XEN_ROOT = ../../..
+ include $(XEN_ROOT)/tools/Rules.mk
+ 
+-CFLAGS += -Werror -Wp,-MD,.$(@F).d
++CFLAGS += -Werror -Wp,-MD,.$(@F).d -DLIBDIR="\"$(LIBDIR)\""
+ DEPS = .*.d
+ 
+ LDFLAGS-$(CONFIG_SunOS) = -Wl,-M -Wl,mapfile-SunOS
+--- xen-3.orig/tools/libfsimage/common/fsimage_plugin.c
++++ xen-3/tools/libfsimage/common/fsimage_plugin.c
+@@ -131,23 +131,8 @@
+ 	int err;
+ 	int ret = -1;
+ 
+-#ifdef __sun__
+ 	if (fsdir == NULL)
+-		fsdir = "/usr/lib/fs";
+-
+-	if (sizeof(void *) == 8)
+-		isadir = "64/";
+-#elif defined(__ia64__)
+-	if (fsdir == NULL)
+-		fsdir = "/usr/lib/fs";
+-#else
+-	if (fsdir == NULL) {
+-		if (sizeof(void *) == 8)
+-			fsdir = "/usr/lib64/fs";
+-		else
+-			fsdir = "/usr/lib/fs";
+-	}
+-#endif
++		fsdir = "/usr/" LIBDIR "/fs";
+ 
+ 	if ((name_max = pathconf(fsdir, _PC_NAME_MAX)) == -1)
+ 		goto fail;
--- xen-3-3.2.1.orig/debian/patches/config-prefix.diff
+++ xen-3-3.2.1/debian/patches/config-prefix.diff
@@ -0,0 +1,51 @@
+--- xen-3.orig/Config.mk
++++ xen-3/Config.mk
+@@ -31,6 +31,13 @@
+ include $(XEN_ROOT)/config/$(XEN_OS).mk
+ include $(XEN_ROOT)/config/$(XEN_TARGET_ARCH).mk
+ 
++PREFIX = lib/xen-$(XEN_VERSION)
++BINDIR = $(PREFIX)/bin
++LIBDIR = $(PREFIX)/lib
++
++PUBLIC_BINDIR = bin
++PUBLIC_LIBDIR = lib
++
+ ifneq ($(EXTRA_PREFIX),)
+ EXTRA_INCLUDES += $(EXTRA_PREFIX)/include
+ EXTRA_LIB += $(EXTRA_PREFIX)/$(LIBDIR)
+--- xen-3.orig/config/ia64.mk
++++ xen-3/config/ia64.mk
+@@ -4,5 +4,3 @@
+ CONFIG_IOEMU := y
+ CONFIG_XCUTILS := y
+ CONFIG_XENCOMM := y
+-
+-LIBDIR := lib
+--- xen-3.orig/config/powerpc64.mk
++++ xen-3/config/powerpc64.mk
+@@ -4,4 +4,3 @@
+ CONFIG_XENCOMM := y
+ 
+ CFLAGS += -DELFSIZE=64
+-LIBDIR := lib
+--- xen-3.orig/config/x86_32.mk
++++ xen-3/config/x86_32.mk
+@@ -8,7 +8,6 @@
+ CONFIG_IOEMU := y
+ 
+ CFLAGS += -m32 -march=i686
+-LIBDIR := lib
+ 
+ # Use only if calling $(LD) directly.
+ LDFLAGS_DIRECT_OpenBSD = _obsd
+--- xen-3.orig/config/x86_64.mk
++++ xen-3/config/x86_64.mk
+@@ -9,7 +9,6 @@
+ CONFIG_IOEMU := y
+ 
+ CFLAGS += -m64
+-LIBDIR = $(LIB64DIR)
+ 
+ # Use only if calling $(LD) directly.
+ ifeq ($(XEN_OS),OpenBSD)
--- xen-3-3.2.1.orig/debian/patches/disable-features.diff
+++ xen-3-3.2.1/debian/patches/disable-features.diff
@@ -0,0 +1,25 @@
+--- xen-3.orig/tools/misc/Makefile
++++ xen-3/tools/misc/Makefile
+@@ -20,22 +20,15 @@
+ 
+ .PHONY: build
+ build: $(TARGETS)
+-	$(MAKE) -C miniterm
+-	$(MAKE) -C lomount
+ 
+ .PHONY: install
+ install: build
+ 	$(INSTALL_DIR) $(DESTDIR)/usr/$(BINDIR)
+ 	$(INSTALL_PROG) $(INSTALL_TARGETS) $(DESTDIR)/usr/$(BINDIR)
+-	$(MAKE) -C lomount install
+-#       No sense in installing miniterm on the Xen box.
+-#	$(MAKE) -C miniterm install
+ 
+ .PHONY: clean
+ clean:
+ 	$(RM) *.o $(TARGETS) *~
+-	$(MAKE) -C miniterm clean
+-	$(MAKE) -C lomount clean
+ 
+ %.o: %.c $(HDRS) Makefile
+ 	$(CC) -c $(CFLAGS) -o $@ $<
--- xen-3-3.2.1.orig/debian/patches/tools-ioemu-arch.diff
+++ xen-3-3.2.1/debian/patches/tools-ioemu-arch.diff
@@ -0,0 +1,66 @@
+--- xen-3.orig/tools/ioemu/configure
++++ xen-3/tools/ioemu/configure
+@@ -29,46 +29,18 @@
+ make="make"
+ install="install"
+ strip="strip"
+-cpu=`uname -m`
+ target_list=""
+-case "$cpu" in
+-  i386|i486|i586|i686|i86pc|BePC)
++case "$XEN_TARGET_ARCH" in
++  x86_32)
+     cpu="i386"
+   ;;
+-  armv*b)
+-    cpu="armv4b"
+-  ;;
+-  armv*l)
+-    cpu="armv4l"
+-  ;;
+-  alpha)
+-    cpu="alpha"
+-  ;;
+-  "Power Macintosh"|ppc|ppc64)
+-    cpu="powerpc"
+-  ;;
+-  mips)
+-    cpu="mips"
+-  ;;
+-  s390)
+-    cpu="s390"
+-  ;;
+-  sparc|sun4[muv])
+-    cpu="sparc"
+-  ;;
+-  sparc64)
+-    cpu="sparc64"
+-  ;;
+-  ia64)
+-    cpu="ia64"
+-  ;;
+-  m68k)
+-    cpu="m68k"
+-  ;;
+-  x86_64|amd64)
++  x86_64)
+     cpu="x86_64"
+     libdir="lib64"
+   ;;
++  powerpc)
++    cpu="powerpc"
++  ;;
+   *)
+     cpu="unknown"
+   ;;
+--- xen-3.orig/tools/Makefile
++++ xen-3/tools/Makefile
+@@ -68,7 +68,7 @@
+ export IOEMU_DIR ?= ioemu
+ ioemu ioemuinstall:
+ 	[ -f $(IOEMU_DIR)/config-host.mak ] || \
+-	  (cd $(IOEMU_DIR) && sh configure --prefix=/usr)
++	  (cd $(IOEMU_DIR) && XEN_TARGET_ARCH=$(XEN_TARGET_ARCH) sh configure --prefix=/usr)
+ 	$(MAKE) -C $(IOEMU_DIR) $(patsubst ioemu%,%,$@)
+ ioemuclean:
+ 	$(MAKE) -C $(IOEMU_DIR) distclean
--- xen-3-3.2.1.orig/debian/patches/version.patch
+++ xen-3-3.2.1/debian/patches/version.patch
@@ -0,0 +1,161 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## version.dpatch by Bastian Blank <waldi@debian.org>
+##
+## All lines beginning with `## DP:' are a description of the patch.
+## DP: No description.
+
+@DPATCH@
+--- xen-3.orig/xen/Makefile
++++ xen-3/xen/Makefile
+@@ -92,17 +92,16 @@
+ include/xen/compile.h: include/xen/compile.h.in .banner
+ 	@sed -e 's/@@date@@/$(shell LC_ALL=C date)/g' \
+ 	    -e 's/@@time@@/$(shell LC_ALL=C date +%T)/g' \
+-	    -e 's/@@whoami@@/$(USER)/g' \
+-	    -e 's/@@domain@@/$(shell ([ -x /bin/dnsdomainname ] && /bin/dnsdomainname) || ([ -x /bin/domainname ] && /bin/domainname || echo [unknown]))/g' \
+-	    -e 's/@@hostname@@/$(shell hostname)/g' \
+ 	    -e 's!@@compiler@@!$(shell $(CC) $(CFLAGS) -v 2>&1 | grep -i "gcc.*version")!g' \
+ 	    -e 's/@@version@@/$(XEN_VERSION)/g' \
+ 	    -e 's/@@subversion@@/$(XEN_SUBVERSION)/g' \
+ 	    -e 's/@@extraversion@@/$(XEN_EXTRAVERSION)/g' \
+ 	    -e 's!@@changeset@@!$(shell ((hg parents --template "{date|date} {rev}:{node|short}" >/dev/null && hg parents --template "{date|date} {rev}:{node|short}") || echo "unavailable") 2>/dev/null)!g' \
++	    -e 's/@@system_distribution@@/$(shell lsb_release -is)/g' \
++	    -e 's/@@system_maintainer_domain@@/$(shell cd ../../../..; dpkg-parsechangelog | sed -ne 's,^Maintainer: .[^<]*<[^@>]*@\([^>]*\)>,\1,p')/g' \
++	    -e 's/@@system_maintainer_local@@/$(shell cd ../../../..; dpkg-parsechangelog | sed -ne 's,^Maintainer: .[^<]*<\([^@>]*\)@.*>,\1,p')/g' \
++	    -e 's/@@system_version@@/$(shell cd ../../../..; dpkg-parsechangelog | awk '/^Version:/ {print $$2}')/g' \
+ 	    < include/xen/compile.h.in > $@.new
+-	@grep \" .banner >> $@.new
+-	@grep -v \" .banner
+ 	@mv -f $@.new $@
+ 
+ include/asm-$(TARGET_ARCH)/asm-offsets.h: arch/$(TARGET_ARCH)/asm-offsets.s
+--- xen-3.orig/xen/arch/powerpc/boot_of.c
++++ xen-3/xen/arch/powerpc/boot_of.c
+@@ -1225,9 +1225,10 @@
+     of_getprop(bof_chosen, "stdout", &of_out, sizeof (of_out));
+ 
+     of_printf("%s\n", "---------------------------------------------------");
+-    of_printf("OF: Xen/PPC version %d.%d%s (%s@%s) (%s) %s\n",
++    of_printf("OF: Xen/PPC version %d.%d%s (%s %s) (%s@%s) (%s) %s\n",
+               xen_major_version(), xen_minor_version(), xen_extra_version(),
+-              xen_compile_by(), xen_compile_domain(),
++              xen_compile_system_distribution(), xen_compile_system_version(),
++              xen_compile_system_maintainer_local(), xen_compile_system_maintainer_domain(),
+               xen_compiler(), xen_compile_date());
+ 
+     boot_of_fix_maple();
+--- xen-3.orig/xen/common/kernel.c
++++ xen-3/xen/common/kernel.c
+@@ -159,8 +159,8 @@
+     {
+         struct xen_compile_info info;
+         safe_strcpy(info.compiler,       xen_compiler());
+-        safe_strcpy(info.compile_by,     xen_compile_by());
+-        safe_strcpy(info.compile_domain, xen_compile_domain());
++        safe_strcpy(info.compile_by,     xen_compile_system_maintainer_local());
++        safe_strcpy(info.compile_domain, xen_compile_system_maintainer_domain());
+         safe_strcpy(info.compile_date,   xen_compile_date());
+         if ( copy_to_guest(arg, &info, 1) )
+             return -EFAULT;
+--- xen-3.orig/xen/common/version.c
++++ xen-3/xen/common/version.c
+@@ -10,19 +10,24 @@
+     return XEN_COMPILE_TIME;
+ }
+ 
+-const char *xen_compile_by(void)
++const char *xen_compile_system_distribution(void)
+ {
+-    return XEN_COMPILE_BY;
++    return XEN_COMPILE_SYSTEM_DISTRIBUTION;
+ }
+ 
+-const char *xen_compile_domain(void)
++const char *xen_compile_system_maintainer_local(void)
+ {
+-    return XEN_COMPILE_DOMAIN;
++    return XEN_COMPILE_SYSTEM_MAINTAINER_LOCAL;
+ }
+ 
+-const char *xen_compile_host(void)
++const char *xen_compile_system_maintainer_domain(void)
+ {
+-    return XEN_COMPILE_HOST;
++    return XEN_COMPILE_SYSTEM_MAINTAINER_DOMAIN;
++}
++
++const char *xen_compile_system_version(void)
++{
++    return XEN_COMPILE_SYSTEM_VERSION;
+ }
+ 
+ const char *xen_compiler(void)
+@@ -50,7 +55,3 @@
+     return XEN_CHANGESET;
+ }
+ 
+-const char *xen_banner(void)
+-{
+-    return XEN_BANNER;
+-}
+--- xen-3.orig/xen/drivers/char/console.c
++++ xen-3/xen/drivers/char/console.c
+@@ -552,14 +552,11 @@
+     serial_set_rx_handler(sercon_handle, serial_rx);
+ 
+     /* HELLO WORLD --- start-of-day banner text. */
+-    spin_lock(&console_lock);
+-    __putstr(xen_banner());
+-    spin_unlock(&console_lock);
+-    printk("Xen version %d.%d%s (%s@%s) (%s) %s\n",
++    printk("Xen version %d.%d%s (%s %s) (%s@%s) (%s) %s\n",
+            xen_major_version(), xen_minor_version(), xen_extra_version(),
+-           xen_compile_by(), xen_compile_domain(),
++           xen_compile_system_distribution(), xen_compile_system_version(),
++           xen_compile_system_maintainer_local(), xen_compile_system_maintainer_domain(),
+            xen_compiler(), xen_compile_date());
+-    printk("Latest ChangeSet: %s\n", xen_changeset());
+ 
+     if ( opt_sync_console )
+     {
+--- xen-3.orig/xen/include/xen/compile.h.in
++++ xen-3/xen/include/xen/compile.h.in
+@@ -1,8 +1,9 @@
+ #define XEN_COMPILE_DATE	"@@date@@"
+ #define XEN_COMPILE_TIME	"@@time@@"
+-#define XEN_COMPILE_BY		"@@whoami@@"
+-#define XEN_COMPILE_DOMAIN	"@@domain@@"
+-#define XEN_COMPILE_HOST	"@@hostname@@"
++#define XEN_COMPILE_SYSTEM_DISTRIBUTION		"@@system_distribution@@"
++#define XEN_COMPILE_SYSTEM_MAINTAINER_DOMAIN	"@@system_maintainer_domain@@"
++#define XEN_COMPILE_SYSTEM_MAINTAINER_LOCAL	"@@system_maintainer_local@@"
++#define XEN_COMPILE_SYSTEM_VERSION		"@@system_version@@"
+ #define XEN_COMPILER		"@@compiler@@"
+ 
+ #define XEN_VERSION		@@version@@
+@@ -10,4 +11,3 @@
+ #define XEN_EXTRAVERSION	"@@extraversion@@"
+ 
+ #define XEN_CHANGESET		"@@changeset@@"
+-#define XEN_BANNER		\
+--- xen-3.orig/xen/include/xen/version.h
++++ xen-3/xen/include/xen/version.h
+@@ -3,14 +3,14 @@
+ 
+ const char *xen_compile_date(void);
+ const char *xen_compile_time(void);
+-const char *xen_compile_by(void);
+-const char *xen_compile_domain(void);
+-const char *xen_compile_host(void);
++const char *xen_compile_system_distribution(void);
++const char *xen_compile_system_maintainer_domain(void);
++const char *xen_compile_system_maintainer_local(void);
++const char *xen_compile_system_version(void);
+ const char *xen_compiler(void);
+ unsigned int xen_major_version(void);
+ unsigned int xen_minor_version(void);
+ const char *xen_extra_version(void);
+ const char *xen_changeset(void);
+-const char *xen_banner(void);
+ 
+ #endif /* __XEN_VERSION_H__ */
--- xen-3-3.2.1.orig/debian/patches/tools-libxc-loder-bzimage.patch
+++ xen-3-3.2.1/debian/patches/tools-libxc-loder-bzimage.patch
@@ -0,0 +1,209 @@
+# HG changeset patch
+# User Keir Fraser <keir.fraser@citrix.com>
+# Date 1207040973 -3600
+# Node ID db943e8d10514445763123bb56b383e795e9b518
+# Parent  ff32e4cd61af0b14e402124ea1b2c26842c680b8
+x86: Support loading Linux bzImage v2.08 and up.
+
+The latest -mm kernel (2.6.25-rc3-mm1) contains v2.08 of the Linux
+bzImage format which embeds an ELF file in place of the raw payload
+allowing it to be extracted and used by the Xen domain builder.
+
+It is expected that this functionality will be put forward for 2.6.26.
+
+Signed-off-by : Ian Campbell <ijc@hellion.org.uk>
+
+diff -r ff32e4cd61af -r db943e8d1051 tools/libxc/Makefile
+--- a/tools/libxc/Makefile	Tue Apr 01 10:08:03 2008 +0100
++++ b/tools/libxc/Makefile	Tue Apr 01 10:09:33 2008 +0100
+@@ -46,10 +46,11 @@ GUEST_SRCS-y += libelf-dominfo.c libelf-
+ GUEST_SRCS-y += libelf-dominfo.c libelf-relocate.c
+ 
+ # new domain builder
+-GUEST_SRCS-y += xc_dom_core.c xc_dom_boot.c
+-GUEST_SRCS-y += xc_dom_elfloader.c
+-GUEST_SRCS-y += xc_dom_binloader.c
+-GUEST_SRCS-y += xc_dom_compat_linux.c
++GUEST_SRCS-y                 += xc_dom_core.c xc_dom_boot.c
++GUEST_SRCS-y                 += xc_dom_elfloader.c
++GUEST_SRCS-$(CONFIG_X86)     += xc_dom_bzimageloader.c
++GUEST_SRCS-y                 += xc_dom_binloader.c
++GUEST_SRCS-y                 += xc_dom_compat_linux.c
+ 
+ GUEST_SRCS-$(CONFIG_X86)     += xc_dom_x86.c
+ GUEST_SRCS-$(CONFIG_IA64)    += xc_dom_ia64.c
+diff -r ff32e4cd61af -r db943e8d1051 tools/libxc/xc_dom_bzimageloader.c
+--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
++++ b/tools/libxc/xc_dom_bzimageloader.c	Tue Apr 01 10:09:33 2008 +0100
+@@ -0,0 +1,159 @@
++/*
++ * Xen domain builder -- bzImage bits
++ *
++ * Parse and load bzImage kernel images.
++ *
++ * This relies on version 2.08 of the boot protocol, which contains an
++ * ELF file embedded in the bzImage.  The loader extracts this ELF
++ * image and passes it off to the standard ELF loader.
++ *
++ * This code is licenced under the GPL.
++ * written 2006 by Gerd Hoffmann <kraxel@suse.de>.
++ * written 2007 by Jeremy Fitzhardinge <jeremy@xensource.com>
++ * written 2008 by Ian Campbell <ijc@hellion.org.uk>
++ *
++ */
++#include <stdio.h>
++#include <stdlib.h>
++#include <inttypes.h>
++
++#include "xg_private.h"
++#include "xc_dom.h"
++
++struct setup_header {
++	uint8_t		_pad0[0x1f1];		/* skip uninteresting stuff */
++	uint8_t		setup_sects;
++	uint16_t	root_flags;
++	uint32_t	syssize;
++	uint16_t	ram_size;
++	uint16_t	vid_mode;
++	uint16_t	root_dev;
++	uint16_t	boot_flag;
++	uint16_t	jump;
++	uint32_t	header;
++#define HDR_MAGIC		"HdrS"
++#define HDR_MAGIC_SZ	4
++	uint16_t	version;
++#define VERSION(h,l)	(((h)<<8) | (l))
++	uint32_t	realmode_swtch;
++	uint16_t	start_sys;
++	uint16_t	kernel_version;
++	uint8_t		type_of_loader;
++	uint8_t		loadflags;
++	uint16_t	setup_move_size;
++	uint32_t	code32_start;
++	uint32_t	ramdisk_image;
++	uint32_t	ramdisk_size;
++	uint32_t	bootsect_kludge;
++	uint16_t	heap_end_ptr;
++	uint16_t	_pad1;
++	uint32_t	cmd_line_ptr;
++	uint32_t	initrd_addr_max;
++	uint32_t	kernel_alignment;
++	uint8_t		relocatable_kernel;
++	uint8_t		_pad2[3];
++	uint32_t	cmdline_size;
++	uint32_t	hardware_subarch;
++	uint64_t	hardware_subarch_data;
++	uint32_t	payload_offset;
++	uint32_t	payload_length;
++} __attribute__((packed));
++
++extern struct xc_dom_loader elf_loader;
++
++static unsigned int payload_offset(struct setup_header *hdr)
++{
++    unsigned int off;
++
++    off = (hdr->setup_sects + 1) * 512;
++    off += hdr->payload_offset;
++    return off;
++}
++
++static int check_bzimage_kernel(struct xc_dom_image *dom, int verbose)
++{
++    struct setup_header *hdr;
++
++    if ( dom->kernel_blob == NULL )
++    {
++        if ( verbose )
++            xc_dom_panic(XC_INTERNAL_ERROR, "%s: no kernel image loaded\n",
++                         __FUNCTION__);
++        return -EINVAL;
++    }
++    if ( dom->kernel_size < sizeof(struct setup_header) )
++    {
++        if ( verbose )
++            xc_dom_panic(XC_INTERNAL_ERROR, "%s: kernel image too small\n",
++                         __FUNCTION__);
++        return -EINVAL;
++    }
++
++    hdr = dom->kernel_blob;
++
++    if ( memcmp(&hdr->header, HDR_MAGIC, HDR_MAGIC_SZ) != 0 )
++    {
++        if ( verbose )
++            xc_dom_panic(XC_INVALID_KERNEL, "%s: kernel is not a bzImage\n",
++                         __FUNCTION__);
++        return -EINVAL;
++    }
++
++    if ( hdr->version < VERSION(2,8) )
++    {
++        if ( verbose )
++            xc_dom_panic(XC_INVALID_KERNEL, "%s: boot protocol too old (%04x)\n",
++                         __FUNCTION__, hdr->version);
++        return -EINVAL;
++    }
++
++    dom->kernel_blob = dom->kernel_blob + payload_offset(hdr);
++    dom->kernel_size = hdr->payload_length;
++
++    if ( xc_dom_try_gunzip(dom, &dom->kernel_blob, &dom->kernel_size) == -1 )
++    {
++        if ( verbose )
++            xc_dom_panic(XC_INVALID_KERNEL, "%s: unable to decompress kernel\n",
++                         __FUNCTION__);
++        return -EINVAL;
++    }
++
++    return elf_loader.probe(dom);
++}
++
++static int xc_dom_probe_bzimage_kernel(struct xc_dom_image *dom)
++{
++    return check_bzimage_kernel(dom, 0);
++}
++
++static int xc_dom_parse_bzimage_kernel(struct xc_dom_image *dom)
++{
++    return elf_loader.parser(dom);
++}
++
++static int xc_dom_load_bzimage_kernel(struct xc_dom_image *dom)
++{
++    return elf_loader.loader(dom);
++}
++
++static struct xc_dom_loader bzimage_loader = {
++    .name = "Linux bzImage",
++    .probe = xc_dom_probe_bzimage_kernel,
++    .parser = xc_dom_parse_bzimage_kernel,
++    .loader = xc_dom_load_bzimage_kernel,
++};
++
++static void __init register_loader(void)
++{
++    xc_dom_register_loader(&bzimage_loader);
++}
++
++/*
++ * Local variables:
++ * mode: C
++ * c-set-style: "BSD"
++ * c-basic-offset: 4
++ * tab-width: 4
++ * indent-tabs-mode: nil
++ * End:
++ */
+diff -r ff32e4cd61af -r db943e8d1051 tools/libxc/xc_dom_elfloader.c
+--- a/tools/libxc/xc_dom_elfloader.c	Tue Apr 01 10:08:03 2008 +0100
++++ b/tools/libxc/xc_dom_elfloader.c	Tue Apr 01 10:09:33 2008 +0100
+@@ -281,7 +281,7 @@ static int xc_dom_load_elf_kernel(struct
+ 
+ /* ------------------------------------------------------------------------ */
+ 
+-static struct xc_dom_loader elf_loader = {
++struct xc_dom_loader elf_loader = {
+     .name = "ELF-generic",
+     .probe = xc_dom_probe_elf_kernel,
+     .parser = xc_dom_parse_elf_kernel,
--- xen-3-3.2.1.orig/debian/patches/tools-lib-abiname.diff
+++ xen-3-3.2.1/debian/patches/tools-lib-abiname.diff
@@ -0,0 +1,220 @@
+--- xen-3.orig/tools/libxc/Makefile
++++ xen-3/tools/libxc/Makefile
+@@ -1,9 +1,6 @@
+ XEN_ROOT = ../..
+ include $(XEN_ROOT)/tools/Rules.mk
+ 
+-MAJOR    = 3.2
+-MINOR    = 0
+-
+ CTRL_SRCS-y       :=
+ CTRL_SRCS-y       += xc_core.c
+ CTRL_SRCS-$(CONFIG_X86) += xc_core_x86.c
+@@ -80,10 +77,10 @@
+ GUEST_PIC_OBJS := $(patsubst %.c,%.opic,$(GUEST_SRCS-y))
+ 
+ LIB := libxenctrl.a
+-LIB += libxenctrl.so libxenctrl.so.$(MAJOR) libxenctrl.so.$(MAJOR).$(MINOR)
++LIB += libxenctrl.so
+ 
+ LIB += libxenguest.a
+-LIB += libxenguest.so libxenguest.so.$(MAJOR) libxenguest.so.$(MAJOR).$(MINOR)
++LIB += libxenguest.so
+ 
+ .PHONY: all
+ all: build
+@@ -106,16 +103,12 @@
+ 	[ -d $(DESTDIR)/usr/$(LIBDIR) ] || $(INSTALL_DIR) $(DESTDIR)/usr/$(LIBDIR)
+ 	$(INSTALL_DIR) $(DESTDIR)/usr/$(PUBLIC_LIBDIR)
+ 	[ -d $(DESTDIR)/usr/include ] || $(INSTALL_DIR) $(DESTDIR)/usr/include
+-	$(INSTALL_PROG) libxenctrl.so.$(MAJOR).$(MINOR) $(DESTDIR)/usr/$(LIBDIR)
++	$(INSTALL_DATA) libxenctrl.so $(DESTDIR)/usr/$(LIBDIR)
+ 	$(INSTALL_DATA) libxenctrl.a $(DESTDIR)/usr/$(PUBLIC_LIBDIR)
+-	ln -sf libxenctrl.so.$(MAJOR).$(MINOR) $(DESTDIR)/usr/$(LIBDIR)/libxenctrl.so.$(MAJOR)
+-	ln -sf libxenctrl.so.$(MAJOR) $(DESTDIR)/usr/$(LIBDIR)/libxenctrl.so
+ 	$(INSTALL_DATA) xenctrl.h $(DESTDIR)/usr/include
+ 
+-	$(INSTALL_PROG) libxenguest.so.$(MAJOR).$(MINOR) $(DESTDIR)/usr/$(LIBDIR)
++	$(INSTALL_DATA) libxenguest.so $(DESTDIR)/usr/$(LIBDIR)
+ 	$(INSTALL_DATA) libxenguest.a $(DESTDIR)/usr/$(PUBLIC_LIBDIR)
+-	ln -sf libxenguest.so.$(MAJOR).$(MINOR) $(DESTDIR)/usr/$(LIBDIR)/libxenguest.so.$(MAJOR)
+-	ln -sf libxenguest.so.$(MAJOR) $(DESTDIR)/usr/$(LIBDIR)/libxenguest.so
+ 	$(INSTALL_DATA) xenguest.h $(DESTDIR)/usr/include
+ 
+ .PHONY: TAGS
+@@ -144,26 +137,16 @@
+ libxenctrl.a: $(CTRL_LIB_OBJS)
+ 	$(AR) rc $@ $^
+ 
+-libxenctrl.so: libxenctrl.so.$(MAJOR)
+-	ln -sf $< $@
+-libxenctrl.so.$(MAJOR): libxenctrl.so.$(MAJOR).$(MINOR)
+-	ln -sf $< $@
+-
+-libxenctrl.so.$(MAJOR).$(MINOR): $(CTRL_PIC_OBJS)
+-	$(CC) $(CFLAGS) $(LDFLAGS) -Wl,$(SONAME_LDFLAG) -Wl,libxenctrl.so.$(MAJOR) $(SHLIB_CFLAGS) $(call LDFLAGS_RPATH) -o $@ $^ -lpthread
++libxenctrl.so: $(CTRL_PIC_OBJS)
++	$(CC) $(CFLAGS) $(LDFLAGS) $(SHLIB_CFLAGS) $(call LDFLAGS_RPATH) -o $@ $^ -lpthread
+ 
+ # libxenguest
+ 
+ libxenguest.a: $(GUEST_LIB_OBJS)
+ 	$(AR) rc $@ $^
+ 
+-libxenguest.so: libxenguest.so.$(MAJOR)
+-	ln -sf $< $@
+-libxenguest.so.$(MAJOR): libxenguest.so.$(MAJOR).$(MINOR)
+-	ln -sf $< $@
+-
+-libxenguest.so.$(MAJOR).$(MINOR): $(GUEST_PIC_OBJS) libxenctrl.so
+-	$(CC) $(CFLAGS) $(LDFLAGS) -Wl,$(SONAME_LDFLAG) -Wl,libxenguest.so.$(MAJOR) $(SHLIB_CFLAGS) $(call LDFLAGS_RPATH) -o $@ $(GUEST_PIC_OBJS) -lz -lxenctrl -lpthread
++libxenguest.so: $(GUEST_PIC_OBJS) libxenctrl.so
++	$(CC) $(CFLAGS) $(LDFLAGS) $(SHLIB_CFLAGS) $(call LDFLAGS_RPATH) -o $@ $(GUEST_PIC_OBJS) -lz -lxenctrl -lpthread
+ 
+ -include $(DEPS)
+ 
+--- xen-3.orig/tools/blktap/lib/Makefile
++++ xen-3/tools/blktap/lib/Makefile
+@@ -1,9 +1,7 @@
+ XEN_ROOT = ../../..
+ include $(XEN_ROOT)/tools/Rules.mk
+ 
+-MAJOR    = 3.0
+-MINOR    = 0
+-SONAME   = libblktap.so.$(MAJOR)
++SONAME   = libblktap.so
+ 
+ BLKTAP_INSTALL_DIR = /usr/$(BINDIR)
+ 
+@@ -29,35 +27,30 @@
+ OBJS     = $(patsubst %.c,%.o,$(SRCS))
+ IBINS   :=
+ 
+-LIB      = libblktap.a libblktap.so.$(MAJOR).$(MINOR)
++LIB      = libblktap.so
+ 
+ .PHONY: all
+ all: build
+ 
+ .PHONY: build
+-build: libblktap.a
++build: libblktap.so
+ 
+ .PHONY: libblktap
+-libblktap: libblktap.a
++libblktap: libblktap.so
+ 
+ install: all
+ 	$(INSTALL_DIR) $(DESTDIR)/usr/$(LIBDIR)
+ 	$(INSTALL_DIR) $(DESTDIR)/usr/include
+ 	$(INSTALL_DATA) $(LIB) $(DESTDIR)/usr/$(LIBDIR)
+-	ln -sf libblktap.so.$(MAJOR).$(MINOR) $(DESTDIR)/usr/$(LIBDIR)/libblktap.so.$(MAJOR)
+-	ln -sf libblktap.so.$(MAJOR) $(DESTDIR)/usr/$(LIBDIR)/libblktap.so
+ 	$(INSTALL_DATA) blktaplib.h $(DESTDIR)/usr/include
+ 
+ clean:
+ 	rm -rf *.a *.so* *.o *.rpm $(LIB) *~ $(DEPS) xen TAGS
+ 
+-libblktap.a: $(OBJS) 
+-	$(CC) $(CFLAGS) -Wl,$(SONAME_LDFLAG) -Wl,$(SONAME) $(SHLIB_CFLAGS) \
++libblktap.so: $(OBJS) 
++	$(CC) $(CFLAGS) $(SHLIB_CFLAGS) \
+ 	      -L$(XEN_XENSTORE) -l xenstore                                \
+-	      -o libblktap.so.$(MAJOR).$(MINOR) $^ $(LIBS)
+-	ln -sf libblktap.so.$(MAJOR).$(MINOR) libblktap.so.$(MAJOR)
+-	ln -sf libblktap.so.$(MAJOR) libblktap.so
+-	$(AR) rc $@ libblktap.so
++	      -o libblktap.so $^ $(LIBS)
+ 
+ .PHONY: TAGS all build clean install libblktap
+ 
+--- xen-3.orig/tools/libfsimage/common/Makefile
++++ xen-3/tools/libfsimage/common/Makefile
+@@ -1,9 +1,6 @@
+ XEN_ROOT = ../../..
+ include $(XEN_ROOT)/tools/Rules.mk
+ 
+-MAJOR = 1.0
+-MINOR = 0
+-
+ CFLAGS += -Werror -Wp,-MD,.$(@F).d
+ DEPS = .*.d
+ 
+@@ -15,7 +12,7 @@
+ 
+ PIC_OBJS := $(patsubst %.c,%.opic,$(LIB_SRCS-y))
+ 
+-LIB = libfsimage.so libfsimage.so.$(MAJOR) libfsimage.so.$(MAJOR).$(MINOR)
++LIB = libfsimage.so
+ 
+ .PHONY: all
+ all: $(LIB)
+@@ -24,9 +21,7 @@
+ install: all
+ 	[ -d $(DESTDIR)/usr/$(LIBDIR) ] || $(INSTALL_DIR) $(DESTDIR)/usr/$(LIBDIR)
+ 	[ -d $(DESTDIR)/usr/include ] || $(INSTALL_DIR) $(DESTDIR)/usr/include
+-	$(INSTALL_PROG) libfsimage.so.$(MAJOR).$(MINOR) $(DESTDIR)/usr/$(LIBDIR)
+-	ln -sf libfsimage.so.$(MAJOR).$(MINOR) $(DESTDIR)/usr/$(LIBDIR)/libfsimage.so.$(MAJOR)
+-	ln -sf libfsimage.so.$(MAJOR) $(DESTDIR)/usr/$(LIBDIR)/libfsimage.so
++	$(INSTALL_PROG) libfsimage.so $(DESTDIR)/usr/$(LIBDIR)
+ 	$(INSTALL_DATA) fsimage.h $(DESTDIR)/usr/include
+ 	$(INSTALL_DATA) fsimage_plugin.h $(DESTDIR)/usr/include
+ 	$(INSTALL_DATA) fsimage_grub.h $(DESTDIR)/usr/include
+@@ -34,13 +29,8 @@
+ clean distclean:
+ 	rm -f $(PIC_OBJS) $(LIB) $(DEPS)
+ 
+-libfsimage.so: libfsimage.so.$(MAJOR)
+-	ln -sf $< $@
+-libfsimage.so.$(MAJOR): libfsimage.so.$(MAJOR).$(MINOR)
+-	ln -sf $< $@
+-
+-libfsimage.so.$(MAJOR).$(MINOR): $(PIC_OBJS)
+-	$(CC) $(CFLAGS) $(LDFLAGS) -Wl,$(SONAME_LDFLAG) -Wl,libfsimage.so.$(MAJOR) $(SHLIB_CFLAGS) -o $@ $^ -lpthread
++libfsimage.so: $(PIC_OBJS)
++	$(CC) $(CFLAGS) $(LDFLAGS) $(SHLIB_CFLAGS) -o $@ $^ -lpthread
+ 
+ -include $(DEPS)
+ 
+--- xen-3.orig/tools/flask/libflask/Makefile
++++ xen-3/tools/flask/libflask/Makefile
+@@ -21,8 +21,7 @@
+ LIB_OBJS := $(patsubst %.c,%.o,$(SRCS))
+ PIC_OBJS := $(patsubst %.c,%.opic,$(SRCS))
+ 
+-LIB := libflask.a
+-LIB += libflask.so libflask.so.$(MAJOR) libflask.so.$(MAJOR).$(MINOR)
++LIB += libflask.so
+ 
+ .PHONY: all
+ all: build
+@@ -35,10 +34,7 @@
+ install: build
+ 	[ -d $(DESTDIR)/usr/$(LIBDIR) ] || $(INSTALL_DIR) $(DESTDIR)/usr/$(LIBDIR)
+ 	[ -d $(DESTDIR)/usr/include ] || $(INSTALL_DIR) $(DESTDIR)/usr/include
+-	$(INSTALL_PROG) libflask.so.$(MAJOR).$(MINOR) $(DESTDIR)/usr/$(LIBDIR)
+-	$(INSTALL_DATA) libflask.a $(DESTDIR)/usr/$(LIBDIR)
+-	ln -sf libflask.so.$(MAJOR).$(MINOR) $(DESTDIR)/usr/$(LIBDIR)/libflask.so.$(MAJOR)
+-	ln -sf libflask.so.$(MAJOR) $(DESTDIR)/usr/$(LIBDIR)/libflask.so
++	$(INSTALL_PROG) libflask.so $(DESTDIR)/usr/$(LIBDIR)
+ 	$(INSTALL_DATA) include/flask.h $(DESTDIR)/usr/include
+ 
+ .PHONY: TAGS
+@@ -51,15 +47,7 @@
+ 
+ # libflask
+ 
+-libflask.a: $(LIB_OBJS)
+-	$(AR) rc $@ $^
+-
+-libflask.so: libflask.so.$(MAJOR)
+-	ln -sf $< $@
+-libflask.so.$(MAJOR): libflask.so.$(MAJOR).$(MINOR)
+-	ln -sf $< $@
+-
+-libflask.so.$(MAJOR).$(MINOR): $(PIC_OBJS)
+-	$(CC) $(CFLAGS) $(LDFLAGS) -Wl,$(SONAME_LDFLAG) -Wl,libflask.so.$(MAJOR) $(SHLIB_CFLAGS) -o $@ $^
++libflask.so: $(PIC_OBJS)
++	$(CC) $(CFLAGS) $(LDFLAGS) $(SHLIB_CFLAGS) -o $@ $^
+ 
+ -include $(DEPS)
--- xen-3-3.2.1.orig/debian/patches/tools-python-prefix.diff
+++ xen-3-3.2.1/debian/patches/tools-python-prefix.diff
@@ -0,0 +1,50 @@
+--- xen-3.orig/tools/python/xen/util/auxbin.py
++++ xen-3/tools/python/xen/util/auxbin.py
+@@ -16,19 +16,11 @@
+ #============================================================================
+ 
+ 
+-LIB_32 = "/usr/lib"
+-LIB_64 = "/usr/lib64"
+-LIB_BIN_SUFFIX = "xen/bin"
+-
+-## The architectures on which the LIB_64 directory is used.  This
+-# deliberately excludes ia64 and ppc64, and Solaris.
+-LIB_64_ARCHS = [ 'x86_64', 's390x', 'sparc64']
+-
+-
+ import os
+ import os.path
+ import sys
+ 
++_path = sys.path[0]
+ 
+ def execute(exe, args = None):
+     exepath = pathTo(exe)
+@@ -43,20 +35,12 @@
+ 
+ 
+ def path():
+-    return os.path.join(libpath(), LIB_BIN_SUFFIX)
++    return _path
++
++
++def root():
++    return os.path.realpath(os.path.join(path(), '..'))
+ 
+ 
+ def libpath():
+-    machine = os.uname()[4]
+-    if sys.argv[0] != '-c':
+-        prefix = os.path.dirname(os.path.dirname(sys.argv[0]))
+-        path = os.path.join(prefix, os.path.basename(LIB_64))
+-        if machine in LIB_64_ARCHS and os.path.exists(path):
+-            return path
+-        path = os.path.join(prefix, os.path.basename(LIB_32))
+-        if os.path.exists(path):
+-            return path
+-    if machine in LIB_64_ARCHS and os.path.exists(LIB_64):
+-        return LIB_64
+-    else:
+-        return LIB_32
++    return os.path.realpath(os.path.join(path(), '../lib'))
--- xen-3-3.2.1.orig/debian/patches/tools-python-xen-xm-relative-path.diff
+++ xen-3-3.2.1/debian/patches/tools-python-xen-xm-relative-path.diff
@@ -0,0 +1,47 @@
+--- xen-3.orig/tools/python/xen/xm/create.py
++++ xen-3/tools/python/xen/xm/create.py
+@@ -542,6 +542,14 @@
+     else:
+         return s
+ 
++def abspath(file, dir):
++    if file[0] == '/':
++        return file
++
++    import xen.util.auxbin
++    path = xen.util.auxbin.root()
++    return os.path.join(path, dir, file)
++
+ def configure_image(vals):
+     """Create the image config.
+     """
+@@ -549,9 +557,9 @@
+         return None
+     config_image = [ vals.builder ]
+     if vals.kernel:
+-        config_image.append([ 'kernel', os.path.abspath(vals.kernel) ])
++        config_image.append([ 'kernel', abspath(vals.kernel, 'boot') ])
+     if vals.ramdisk:
+-        config_image.append([ 'ramdisk', os.path.abspath(vals.ramdisk) ])
++        config_image.append([ 'ramdisk', abspath(vals.ramdisk, 'boot') ])
+     if vals.cmdline_ip:
+         cmdline_ip = strip('ip=', vals.cmdline_ip)
+         config_image.append(['ip', cmdline_ip])
+@@ -719,7 +727,7 @@
+ def configure_hvm(config_image, vals):
+     """Create the config for HVM devices.
+     """
+-    args = [ 'device_model', 'pae', 'vcpus', 'boot', 'fda', 'fdb', 'timer_mode',
++    args = [ 'pae', 'vcpus', 'boot', 'fda', 'fdb', 'timer_mode',
+              'localtime', 'serial', 'stdvga', 'isa', 'nographic', 'soundhw',
+              'vnc', 'vncdisplay', 'vncunused', 'vncconsole', 'vnclisten',
+              'sdl', 'display', 'xauthority', 'rtc_timeoffset', 'monitor',
+@@ -729,6 +737,8 @@
+     for a in args:
+         if a in vals.__dict__ and vals.__dict__[a] is not None:
+             config_image.append([a, vals.__dict__[a]])
++    if vals.device_model:
++        config_image.append(['device_model', abspath(vals.device_model, 'bin')])
+     if vals.vncpasswd is not None:
+         config_image.append(['vncpasswd', vals.vncpasswd])
+ 
--- xen-3-3.2.1.orig/debian/patches/tools-misc-prefix.diff
+++ xen-3-3.2.1/debian/patches/tools-misc-prefix.diff
@@ -0,0 +1,63 @@
+--- xen-3.orig/tools/misc/xend
++++ xen-3/tools/misc/xend
+@@ -33,15 +33,10 @@
+ import time
+ import commands
+ 
+-xpp = os.path.join(os.path.dirname(sys.argv[0]), 'xen-python-path')
+-if os.path.exists(xpp):
+-    result = commands.getstatusoutput(xpp)
+-    if result[0] != 0:
+-        print >>sys.stderr, result[1]
+-        sys.exit(1)
+-    sys.path.append(result[1])
++sys.path.insert(1, sys.path[0] + '/../lib/python')
+ 
+ from xen.xend.server import SrvDaemon
++from xen.util.auxbin import execute
+ 
+ class CheckError(ValueError):
+     pass
+@@ -95,20 +90,20 @@
+         f.close()
+     except:
+         pass
+-    XENSTORED_TRACE = os.getenv("XENSTORED_TRACE")
+-    cmd = "xenstored --pid-file /var/run/xenstore.pid"
+-    if XENSTORED_TRACE:
+-        cmd += " -T /var/log/xen/xenstored-trace.log"
+-    s,o = commands.getstatusoutput(cmd)
++    args = ["--pid-file", "/var/run/xenstore.pid"]
++    if os.getenv("XENSTORED_TRACE"):
++        args.extend(["-T", "/var/log/xen/xenstored-trace.log"])
++    if os.fork() == 0:
++        execute('xenstored', args)
+ 
+ def start_consoled():
+     if os.fork() == 0:
+-        os.execvp('xenconsoled', ['xenconsoled'])
++        execute('xenconsoled')
+ 
+ def start_blktapctrl():
+     if os.fork() == 0:
+-        os.execvp('blktapctrl', ['blktapctrl'])
+-            
++        execute('blktapctrl')
++
+ def main():
+     try:
+         check_logging()
+--- xen-3.orig/tools/misc/xm
++++ xen-3/tools/misc/xm
+@@ -1,10 +1,7 @@
+ #!/usr/bin/env python
+ #  -*- mode: python; -*-
+ import sys
+-
+-# add fallback path for non-native python path installs if needed
+-sys.path.append('/usr/lib/python')
+-sys.path.append('/usr/lib64/python')
++sys.path.insert(1, sys.path[0] + '/../lib/python')
+ from xen.xm import main
+ 
+ main.main(sys.argv)
--- xen-3-3.2.1.orig/debian/patches/tools-blktap-crypto.patch
+++ xen-3-3.2.1/debian/patches/tools-blktap-crypto.patch
@@ -0,0 +1,1638 @@
+diff -r 58bf50a2c754 tools/blktap/drivers/Makefile
+--- a/tools/blktap/drivers/Makefile	Thu Jun 19 11:15:57 2008 +0100
++++ b/tools/blktap/drivers/Makefile	Fri Jun 20 23:24:04 2008 +0200
+@@ -22,7 +22,7 @@ LIBS      := -L. -L.. -L../lib
+ LIBS      := -L. -L.. -L../lib
+ LIBS      += -L$(XEN_LIBXC)
+ LIBS      += -lblktap -lxenctrl
+-LIBS      += -lcrypto
++LIBS      += -lgcrypt
+ LIBS      += -lz
+ LIBS      += -L$(XEN_XENSTORE) -lxenstore
+ 
+@@ -33,7 +33,6 @@ BLK-OBJS  += block-vmdk.o
+ BLK-OBJS  += block-vmdk.o
+ BLK-OBJS  += block-ram.o
+ BLK-OBJS  += block-qcow.o
+-BLK-OBJS  += aes.o
+ BLK-OBJS  += tapaio.o
+ 
+ all: $(IBIN) qcow-util
+diff -r 58bf50a2c754 tools/blktap/drivers/aes.c
+--- a/tools/blktap/drivers/aes.c	Thu Jun 19 11:15:57 2008 +0100
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,1319 +0,0 @@
+-/**
+- * 
+- * aes.c - integrated in QEMU by Fabrice Bellard from the OpenSSL project.
+- */
+-/*
+- * rijndael-alg-fst.c
+- *
+- * @version 3.0 (December 2000)
+- *
+- * Optimised ANSI C code for the Rijndael cipher (now AES)
+- *
+- * @author Vincent Rijmen <vincent.rijmen@esat.kuleuven.ac.be>
+- * @author Antoon Bosselaers <antoon.bosselaers@esat.kuleuven.ac.be>
+- * @author Paulo Barreto <paulo.barreto@terra.com.br>
+- *
+- * This code is hereby placed in the public domain.
+- *
+- * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ''AS IS'' AND ANY EXPRESS
+- * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+- * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE
+- * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+- * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+- * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
+- * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+- * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+- * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
+- * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+- */
+-//#include "vl.h"
+-#include <inttypes.h>
+-#include <string.h>
+-#include "aes.h"
+-
+-//#define NDEBUG
+-#include <assert.h>
+-
+-typedef uint32_t u32;
+-typedef uint16_t u16;
+-typedef uint8_t u8;
+-
+-#define MAXKC   (256/32)
+-#define MAXKB   (256/8)
+-#define MAXNR   14
+-
+-/* This controls loop-unrolling in aes_core.c */
+-#undef FULL_UNROLL
+-# define GETU32(pt) (((u32)(pt)[0] << 24) ^ ((u32)(pt)[1] << 16) ^ ((u32)(pt)[2] <<  8) ^ ((u32)(pt)[3]))
+-# define PUTU32(ct, st) { (ct)[0] = (u8)((st) >> 24); (ct)[1] = (u8)((st) >> 16); (ct)[2] = (u8)((st) >>  8); (ct)[3] = (u8)(st); }
+-
+-/*
+-Te0[x] = S [x].[02, 01, 01, 03];
+-Te1[x] = S [x].[03, 02, 01, 01];
+-Te2[x] = S [x].[01, 03, 02, 01];
+-Te3[x] = S [x].[01, 01, 03, 02];
+-Te4[x] = S [x].[01, 01, 01, 01];
+-
+-Td0[x] = Si[x].[0e, 09, 0d, 0b];
+-Td1[x] = Si[x].[0b, 0e, 09, 0d];
+-Td2[x] = Si[x].[0d, 0b, 0e, 09];
+-Td3[x] = Si[x].[09, 0d, 0b, 0e];
+-Td4[x] = Si[x].[01, 01, 01, 01];
+-*/
+-
+-static const u32 Te0[256] = {
+-    0xc66363a5U, 0xf87c7c84U, 0xee777799U, 0xf67b7b8dU,
+-    0xfff2f20dU, 0xd66b6bbdU, 0xde6f6fb1U, 0x91c5c554U,
+-    0x60303050U, 0x02010103U, 0xce6767a9U, 0x562b2b7dU,
+-    0xe7fefe19U, 0xb5d7d762U, 0x4dababe6U, 0xec76769aU,
+-    0x8fcaca45U, 0x1f82829dU, 0x89c9c940U, 0xfa7d7d87U,
+-    0xeffafa15U, 0xb25959ebU, 0x8e4747c9U, 0xfbf0f00bU,
+-    0x41adadecU, 0xb3d4d467U, 0x5fa2a2fdU, 0x45afafeaU,
+-    0x239c9cbfU, 0x53a4a4f7U, 0xe4727296U, 0x9bc0c05bU,
+-    0x75b7b7c2U, 0xe1fdfd1cU, 0x3d9393aeU, 0x4c26266aU,
+-    0x6c36365aU, 0x7e3f3f41U, 0xf5f7f702U, 0x83cccc4fU,
+-    0x6834345cU, 0x51a5a5f4U, 0xd1e5e534U, 0xf9f1f108U,
+-    0xe2717193U, 0xabd8d873U, 0x62313153U, 0x2a15153fU,
+-    0x0804040cU, 0x95c7c752U, 0x46232365U, 0x9dc3c35eU,
+-    0x30181828U, 0x379696a1U, 0x0a05050fU, 0x2f9a9ab5U,
+-    0x0e070709U, 0x24121236U, 0x1b80809bU, 0xdfe2e23dU,
+-    0xcdebeb26U, 0x4e272769U, 0x7fb2b2cdU, 0xea75759fU,
+-    0x1209091bU, 0x1d83839eU, 0x582c2c74U, 0x341a1a2eU,
+-    0x361b1b2dU, 0xdc6e6eb2U, 0xb45a5aeeU, 0x5ba0a0fbU,
+-    0xa45252f6U, 0x763b3b4dU, 0xb7d6d661U, 0x7db3b3ceU,
+-    0x5229297bU, 0xdde3e33eU, 0x5e2f2f71U, 0x13848497U,
+-    0xa65353f5U, 0xb9d1d168U, 0x00000000U, 0xc1eded2cU,
+-    0x40202060U, 0xe3fcfc1fU, 0x79b1b1c8U, 0xb65b5bedU,
+-    0xd46a6abeU, 0x8dcbcb46U, 0x67bebed9U, 0x7239394bU,
+-    0x944a4adeU, 0x984c4cd4U, 0xb05858e8U, 0x85cfcf4aU,
+-    0xbbd0d06bU, 0xc5efef2aU, 0x4faaaae5U, 0xedfbfb16U,
+-    0x864343c5U, 0x9a4d4dd7U, 0x66333355U, 0x11858594U,
+-    0x8a4545cfU, 0xe9f9f910U, 0x04020206U, 0xfe7f7f81U,
+-    0xa05050f0U, 0x783c3c44U, 0x259f9fbaU, 0x4ba8a8e3U,
+-    0xa25151f3U, 0x5da3a3feU, 0x804040c0U, 0x058f8f8aU,
+-    0x3f9292adU, 0x219d9dbcU, 0x70383848U, 0xf1f5f504U,
+-    0x63bcbcdfU, 0x77b6b6c1U, 0xafdada75U, 0x42212163U,
+-    0x20101030U, 0xe5ffff1aU, 0xfdf3f30eU, 0xbfd2d26dU,
+-    0x81cdcd4cU, 0x180c0c14U, 0x26131335U, 0xc3ecec2fU,
+-    0xbe5f5fe1U, 0x359797a2U, 0x884444ccU, 0x2e171739U,
+-    0x93c4c457U, 0x55a7a7f2U, 0xfc7e7e82U, 0x7a3d3d47U,
+-    0xc86464acU, 0xba5d5de7U, 0x3219192bU, 0xe6737395U,
+-    0xc06060a0U, 0x19818198U, 0x9e4f4fd1U, 0xa3dcdc7fU,
+-    0x44222266U, 0x542a2a7eU, 0x3b9090abU, 0x0b888883U,
+-    0x8c4646caU, 0xc7eeee29U, 0x6bb8b8d3U, 0x2814143cU,
+-    0xa7dede79U, 0xbc5e5ee2U, 0x160b0b1dU, 0xaddbdb76U,
+-    0xdbe0e03bU, 0x64323256U, 0x743a3a4eU, 0x140a0a1eU,
+-    0x924949dbU, 0x0c06060aU, 0x4824246cU, 0xb85c5ce4U,
+-    0x9fc2c25dU, 0xbdd3d36eU, 0x43acacefU, 0xc46262a6U,
+-    0x399191a8U, 0x319595a4U, 0xd3e4e437U, 0xf279798bU,
+-    0xd5e7e732U, 0x8bc8c843U, 0x6e373759U, 0xda6d6db7U,
+-    0x018d8d8cU, 0xb1d5d564U, 0x9c4e4ed2U, 0x49a9a9e0U,
+-    0xd86c6cb4U, 0xac5656faU, 0xf3f4f407U, 0xcfeaea25U,
+-    0xca6565afU, 0xf47a7a8eU, 0x47aeaee9U, 0x10080818U,
+-    0x6fbabad5U, 0xf0787888U, 0x4a25256fU, 0x5c2e2e72U,
+-    0x381c1c24U, 0x57a6a6f1U, 0x73b4b4c7U, 0x97c6c651U,
+-    0xcbe8e823U, 0xa1dddd7cU, 0xe874749cU, 0x3e1f1f21U,
+-    0x964b4bddU, 0x61bdbddcU, 0x0d8b8b86U, 0x0f8a8a85U,
+-    0xe0707090U, 0x7c3e3e42U, 0x71b5b5c4U, 0xcc6666aaU,
+-    0x904848d8U, 0x06030305U, 0xf7f6f601U, 0x1c0e0e12U,
+-    0xc26161a3U, 0x6a35355fU, 0xae5757f9U, 0x69b9b9d0U,
+-    0x17868691U, 0x99c1c158U, 0x3a1d1d27U, 0x279e9eb9U,
+-    0xd9e1e138U, 0xebf8f813U, 0x2b9898b3U, 0x22111133U,
+-    0xd26969bbU, 0xa9d9d970U, 0x078e8e89U, 0x339494a7U,
+-    0x2d9b9bb6U, 0x3c1e1e22U, 0x15878792U, 0xc9e9e920U,
+-    0x87cece49U, 0xaa5555ffU, 0x50282878U, 0xa5dfdf7aU,
+-    0x038c8c8fU, 0x59a1a1f8U, 0x09898980U, 0x1a0d0d17U,
+-    0x65bfbfdaU, 0xd7e6e631U, 0x844242c6U, 0xd06868b8U,
+-    0x824141c3U, 0x299999b0U, 0x5a2d2d77U, 0x1e0f0f11U,
+-    0x7bb0b0cbU, 0xa85454fcU, 0x6dbbbbd6U, 0x2c16163aU,
+-};
+-static const u32 Te1[256] = {
+-    0xa5c66363U, 0x84f87c7cU, 0x99ee7777U, 0x8df67b7bU,
+-    0x0dfff2f2U, 0xbdd66b6bU, 0xb1de6f6fU, 0x5491c5c5U,
+-    0x50603030U, 0x03020101U, 0xa9ce6767U, 0x7d562b2bU,
+-    0x19e7fefeU, 0x62b5d7d7U, 0xe64dababU, 0x9aec7676U,
+-    0x458fcacaU, 0x9d1f8282U, 0x4089c9c9U, 0x87fa7d7dU,
+-    0x15effafaU, 0xebb25959U, 0xc98e4747U, 0x0bfbf0f0U,
+-    0xec41adadU, 0x67b3d4d4U, 0xfd5fa2a2U, 0xea45afafU,
+-    0xbf239c9cU, 0xf753a4a4U, 0x96e47272U, 0x5b9bc0c0U,
+-    0xc275b7b7U, 0x1ce1fdfdU, 0xae3d9393U, 0x6a4c2626U,
+-    0x5a6c3636U, 0x417e3f3fU, 0x02f5f7f7U, 0x4f83ccccU,
+-    0x5c683434U, 0xf451a5a5U, 0x34d1e5e5U, 0x08f9f1f1U,
+-    0x93e27171U, 0x73abd8d8U, 0x53623131U, 0x3f2a1515U,
+-    0x0c080404U, 0x5295c7c7U, 0x65462323U, 0x5e9dc3c3U,
+-    0x28301818U, 0xa1379696U, 0x0f0a0505U, 0xb52f9a9aU,
+-    0x090e0707U, 0x36241212U, 0x9b1b8080U, 0x3ddfe2e2U,
+-    0x26cdebebU, 0x694e2727U, 0xcd7fb2b2U, 0x9fea7575U,
+-    0x1b120909U, 0x9e1d8383U, 0x74582c2cU, 0x2e341a1aU,
+-    0x2d361b1bU, 0xb2dc6e6eU, 0xeeb45a5aU, 0xfb5ba0a0U,
+-    0xf6a45252U, 0x4d763b3bU, 0x61b7d6d6U, 0xce7db3b3U,
+-    0x7b522929U, 0x3edde3e3U, 0x715e2f2fU, 0x97138484U,
+-    0xf5a65353U, 0x68b9d1d1U, 0x00000000U, 0x2cc1ededU,
+-    0x60402020U, 0x1fe3fcfcU, 0xc879b1b1U, 0xedb65b5bU,
+-    0xbed46a6aU, 0x468dcbcbU, 0xd967bebeU, 0x4b723939U,
+-    0xde944a4aU, 0xd4984c4cU, 0xe8b05858U, 0x4a85cfcfU,
+-    0x6bbbd0d0U, 0x2ac5efefU, 0xe54faaaaU, 0x16edfbfbU,
+-    0xc5864343U, 0xd79a4d4dU, 0x55663333U, 0x94118585U,
+-    0xcf8a4545U, 0x10e9f9f9U, 0x06040202U, 0x81fe7f7fU,
+-    0xf0a05050U, 0x44783c3cU, 0xba259f9fU, 0xe34ba8a8U,
+-    0xf3a25151U, 0xfe5da3a3U, 0xc0804040U, 0x8a058f8fU,
+-    0xad3f9292U, 0xbc219d9dU, 0x48703838U, 0x04f1f5f5U,
+-    0xdf63bcbcU, 0xc177b6b6U, 0x75afdadaU, 0x63422121U,
+-    0x30201010U, 0x1ae5ffffU, 0x0efdf3f3U, 0x6dbfd2d2U,
+-    0x4c81cdcdU, 0x14180c0cU, 0x35261313U, 0x2fc3ececU,
+-    0xe1be5f5fU, 0xa2359797U, 0xcc884444U, 0x392e1717U,
+-    0x5793c4c4U, 0xf255a7a7U, 0x82fc7e7eU, 0x477a3d3dU,
+-    0xacc86464U, 0xe7ba5d5dU, 0x2b321919U, 0x95e67373U,
+-    0xa0c06060U, 0x98198181U, 0xd19e4f4fU, 0x7fa3dcdcU,
+-    0x66442222U, 0x7e542a2aU, 0xab3b9090U, 0x830b8888U,
+-    0xca8c4646U, 0x29c7eeeeU, 0xd36bb8b8U, 0x3c281414U,
+-    0x79a7dedeU, 0xe2bc5e5eU, 0x1d160b0bU, 0x76addbdbU,
+-    0x3bdbe0e0U, 0x56643232U, 0x4e743a3aU, 0x1e140a0aU,
+-    0xdb924949U, 0x0a0c0606U, 0x6c482424U, 0xe4b85c5cU,
+-    0x5d9fc2c2U, 0x6ebdd3d3U, 0xef43acacU, 0xa6c46262U,
+-    0xa8399191U, 0xa4319595U, 0x37d3e4e4U, 0x8bf27979U,
+-    0x32d5e7e7U, 0x438bc8c8U, 0x596e3737U, 0xb7da6d6dU,
+-    0x8c018d8dU, 0x64b1d5d5U, 0xd29c4e4eU, 0xe049a9a9U,
+-    0xb4d86c6cU, 0xfaac5656U, 0x07f3f4f4U, 0x25cfeaeaU,
+-    0xafca6565U, 0x8ef47a7aU, 0xe947aeaeU, 0x18100808U,
+-    0xd56fbabaU, 0x88f07878U, 0x6f4a2525U, 0x725c2e2eU,
+-    0x24381c1cU, 0xf157a6a6U, 0xc773b4b4U, 0x5197c6c6U,
+-    0x23cbe8e8U, 0x7ca1ddddU, 0x9ce87474U, 0x213e1f1fU,
+-    0xdd964b4bU, 0xdc61bdbdU, 0x860d8b8bU, 0x850f8a8aU,
+-    0x90e07070U, 0x427c3e3eU, 0xc471b5b5U, 0xaacc6666U,
+-    0xd8904848U, 0x05060303U, 0x01f7f6f6U, 0x121c0e0eU,
+-    0xa3c26161U, 0x5f6a3535U, 0xf9ae5757U, 0xd069b9b9U,
+-    0x91178686U, 0x5899c1c1U, 0x273a1d1dU, 0xb9279e9eU,
+-    0x38d9e1e1U, 0x13ebf8f8U, 0xb32b9898U, 0x33221111U,
+-    0xbbd26969U, 0x70a9d9d9U, 0x89078e8eU, 0xa7339494U,
+-    0xb62d9b9bU, 0x223c1e1eU, 0x92158787U, 0x20c9e9e9U,
+-    0x4987ceceU, 0xffaa5555U, 0x78502828U, 0x7aa5dfdfU,
+-    0x8f038c8cU, 0xf859a1a1U, 0x80098989U, 0x171a0d0dU,
+-    0xda65bfbfU, 0x31d7e6e6U, 0xc6844242U, 0xb8d06868U,
+-    0xc3824141U, 0xb0299999U, 0x775a2d2dU, 0x111e0f0fU,
+-    0xcb7bb0b0U, 0xfca85454U, 0xd66dbbbbU, 0x3a2c1616U,
+-};
+-static const u32 Te2[256] = {
+-    0x63a5c663U, 0x7c84f87cU, 0x7799ee77U, 0x7b8df67bU,
+-    0xf20dfff2U, 0x6bbdd66bU, 0x6fb1de6fU, 0xc55491c5U,
+-    0x30506030U, 0x01030201U, 0x67a9ce67U, 0x2b7d562bU,
+-    0xfe19e7feU, 0xd762b5d7U, 0xabe64dabU, 0x769aec76U,
+-    0xca458fcaU, 0x829d1f82U, 0xc94089c9U, 0x7d87fa7dU,
+-    0xfa15effaU, 0x59ebb259U, 0x47c98e47U, 0xf00bfbf0U,
+-    0xadec41adU, 0xd467b3d4U, 0xa2fd5fa2U, 0xafea45afU,
+-    0x9cbf239cU, 0xa4f753a4U, 0x7296e472U, 0xc05b9bc0U,
+-    0xb7c275b7U, 0xfd1ce1fdU, 0x93ae3d93U, 0x266a4c26U,
+-    0x365a6c36U, 0x3f417e3fU, 0xf702f5f7U, 0xcc4f83ccU,
+-    0x345c6834U, 0xa5f451a5U, 0xe534d1e5U, 0xf108f9f1U,
+-    0x7193e271U, 0xd873abd8U, 0x31536231U, 0x153f2a15U,
+-    0x040c0804U, 0xc75295c7U, 0x23654623U, 0xc35e9dc3U,
+-    0x18283018U, 0x96a13796U, 0x050f0a05U, 0x9ab52f9aU,
+-    0x07090e07U, 0x12362412U, 0x809b1b80U, 0xe23ddfe2U,
+-    0xeb26cdebU, 0x27694e27U, 0xb2cd7fb2U, 0x759fea75U,
+-    0x091b1209U, 0x839e1d83U, 0x2c74582cU, 0x1a2e341aU,
+-    0x1b2d361bU, 0x6eb2dc6eU, 0x5aeeb45aU, 0xa0fb5ba0U,
+-    0x52f6a452U, 0x3b4d763bU, 0xd661b7d6U, 0xb3ce7db3U,
+-    0x297b5229U, 0xe33edde3U, 0x2f715e2fU, 0x84971384U,
+-    0x53f5a653U, 0xd168b9d1U, 0x00000000U, 0xed2cc1edU,
+-    0x20604020U, 0xfc1fe3fcU, 0xb1c879b1U, 0x5bedb65bU,
+-    0x6abed46aU, 0xcb468dcbU, 0xbed967beU, 0x394b7239U,
+-    0x4ade944aU, 0x4cd4984cU, 0x58e8b058U, 0xcf4a85cfU,
+-    0xd06bbbd0U, 0xef2ac5efU, 0xaae54faaU, 0xfb16edfbU,
+-    0x43c58643U, 0x4dd79a4dU, 0x33556633U, 0x85941185U,
+-    0x45cf8a45U, 0xf910e9f9U, 0x02060402U, 0x7f81fe7fU,
+-    0x50f0a050U, 0x3c44783cU, 0x9fba259fU, 0xa8e34ba8U,
+-    0x51f3a251U, 0xa3fe5da3U, 0x40c08040U, 0x8f8a058fU,
+-    0x92ad3f92U, 0x9dbc219dU, 0x38487038U, 0xf504f1f5U,
+-    0xbcdf63bcU, 0xb6c177b6U, 0xda75afdaU, 0x21634221U,
+-    0x10302010U, 0xff1ae5ffU, 0xf30efdf3U, 0xd26dbfd2U,
+-    0xcd4c81cdU, 0x0c14180cU, 0x13352613U, 0xec2fc3ecU,
+-    0x5fe1be5fU, 0x97a23597U, 0x44cc8844U, 0x17392e17U,
+-    0xc45793c4U, 0xa7f255a7U, 0x7e82fc7eU, 0x3d477a3dU,
+-    0x64acc864U, 0x5de7ba5dU, 0x192b3219U, 0x7395e673U,
+-    0x60a0c060U, 0x81981981U, 0x4fd19e4fU, 0xdc7fa3dcU,
+-    0x22664422U, 0x2a7e542aU, 0x90ab3b90U, 0x88830b88U,
+-    0x46ca8c46U, 0xee29c7eeU, 0xb8d36bb8U, 0x143c2814U,
+-    0xde79a7deU, 0x5ee2bc5eU, 0x0b1d160bU, 0xdb76addbU,
+-    0xe03bdbe0U, 0x32566432U, 0x3a4e743aU, 0x0a1e140aU,
+-    0x49db9249U, 0x060a0c06U, 0x246c4824U, 0x5ce4b85cU,
+-    0xc25d9fc2U, 0xd36ebdd3U, 0xacef43acU, 0x62a6c462U,
+-    0x91a83991U, 0x95a43195U, 0xe437d3e4U, 0x798bf279U,
+-    0xe732d5e7U, 0xc8438bc8U, 0x37596e37U, 0x6db7da6dU,
+-    0x8d8c018dU, 0xd564b1d5U, 0x4ed29c4eU, 0xa9e049a9U,
+-    0x6cb4d86cU, 0x56faac56U, 0xf407f3f4U, 0xea25cfeaU,
+-    0x65afca65U, 0x7a8ef47aU, 0xaee947aeU, 0x08181008U,
+-    0xbad56fbaU, 0x7888f078U, 0x256f4a25U, 0x2e725c2eU,
+-    0x1c24381cU, 0xa6f157a6U, 0xb4c773b4U, 0xc65197c6U,
+-    0xe823cbe8U, 0xdd7ca1ddU, 0x749ce874U, 0x1f213e1fU,
+-    0x4bdd964bU, 0xbddc61bdU, 0x8b860d8bU, 0x8a850f8aU,
+-    0x7090e070U, 0x3e427c3eU, 0xb5c471b5U, 0x66aacc66U,
+-    0x48d89048U, 0x03050603U, 0xf601f7f6U, 0x0e121c0eU,
+-    0x61a3c261U, 0x355f6a35U, 0x57f9ae57U, 0xb9d069b9U,
+-    0x86911786U, 0xc15899c1U, 0x1d273a1dU, 0x9eb9279eU,
+-    0xe138d9e1U, 0xf813ebf8U, 0x98b32b98U, 0x11332211U,
+-    0x69bbd269U, 0xd970a9d9U, 0x8e89078eU, 0x94a73394U,
+-    0x9bb62d9bU, 0x1e223c1eU, 0x87921587U, 0xe920c9e9U,
+-    0xce4987ceU, 0x55ffaa55U, 0x28785028U, 0xdf7aa5dfU,
+-    0x8c8f038cU, 0xa1f859a1U, 0x89800989U, 0x0d171a0dU,
+-    0xbfda65bfU, 0xe631d7e6U, 0x42c68442U, 0x68b8d068U,
+-    0x41c38241U, 0x99b02999U, 0x2d775a2dU, 0x0f111e0fU,
+-    0xb0cb7bb0U, 0x54fca854U, 0xbbd66dbbU, 0x163a2c16U,
+-};
+-static const u32 Te3[256] = {
+-
+-    0x6363a5c6U, 0x7c7c84f8U, 0x777799eeU, 0x7b7b8df6U,
+-    0xf2f20dffU, 0x6b6bbdd6U, 0x6f6fb1deU, 0xc5c55491U,
+-    0x30305060U, 0x01010302U, 0x6767a9ceU, 0x2b2b7d56U,
+-    0xfefe19e7U, 0xd7d762b5U, 0xababe64dU, 0x76769aecU,
+-    0xcaca458fU, 0x82829d1fU, 0xc9c94089U, 0x7d7d87faU,
+-    0xfafa15efU, 0x5959ebb2U, 0x4747c98eU, 0xf0f00bfbU,
+-    0xadadec41U, 0xd4d467b3U, 0xa2a2fd5fU, 0xafafea45U,
+-    0x9c9cbf23U, 0xa4a4f753U, 0x727296e4U, 0xc0c05b9bU,
+-    0xb7b7c275U, 0xfdfd1ce1U, 0x9393ae3dU, 0x26266a4cU,
+-    0x36365a6cU, 0x3f3f417eU, 0xf7f702f5U, 0xcccc4f83U,
+-    0x34345c68U, 0xa5a5f451U, 0xe5e534d1U, 0xf1f108f9U,
+-    0x717193e2U, 0xd8d873abU, 0x31315362U, 0x15153f2aU,
+-    0x04040c08U, 0xc7c75295U, 0x23236546U, 0xc3c35e9dU,
+-    0x18182830U, 0x9696a137U, 0x05050f0aU, 0x9a9ab52fU,
+-    0x0707090eU, 0x12123624U, 0x80809b1bU, 0xe2e23ddfU,
+-    0xebeb26cdU, 0x2727694eU, 0xb2b2cd7fU, 0x75759feaU,
+-    0x09091b12U, 0x83839e1dU, 0x2c2c7458U, 0x1a1a2e34U,
+-    0x1b1b2d36U, 0x6e6eb2dcU, 0x5a5aeeb4U, 0xa0a0fb5bU,
+-    0x5252f6a4U, 0x3b3b4d76U, 0xd6d661b7U, 0xb3b3ce7dU,
+-    0x29297b52U, 0xe3e33eddU, 0x2f2f715eU, 0x84849713U,
+-    0x5353f5a6U, 0xd1d168b9U, 0x00000000U, 0xeded2cc1U,
+-    0x20206040U, 0xfcfc1fe3U, 0xb1b1c879U, 0x5b5bedb6U,
+-    0x6a6abed4U, 0xcbcb468dU, 0xbebed967U, 0x39394b72U,
+-    0x4a4ade94U, 0x4c4cd498U, 0x5858e8b0U, 0xcfcf4a85U,
+-    0xd0d06bbbU, 0xefef2ac5U, 0xaaaae54fU, 0xfbfb16edU,
+-    0x4343c586U, 0x4d4dd79aU, 0x33335566U, 0x85859411U,
+-    0x4545cf8aU, 0xf9f910e9U, 0x02020604U, 0x7f7f81feU,
+-    0x5050f0a0U, 0x3c3c4478U, 0x9f9fba25U, 0xa8a8e34bU,
+-    0x5151f3a2U, 0xa3a3fe5dU, 0x4040c080U, 0x8f8f8a05U,
+-    0x9292ad3fU, 0x9d9dbc21U, 0x38384870U, 0xf5f504f1U,
+-    0xbcbcdf63U, 0xb6b6c177U, 0xdada75afU, 0x21216342U,
+-    0x10103020U, 0xffff1ae5U, 0xf3f30efdU, 0xd2d26dbfU,
+-    0xcdcd4c81U, 0x0c0c1418U, 0x13133526U, 0xecec2fc3U,
+-    0x5f5fe1beU, 0x9797a235U, 0x4444cc88U, 0x1717392eU,
+-    0xc4c45793U, 0xa7a7f255U, 0x7e7e82fcU, 0x3d3d477aU,
+-    0x6464acc8U, 0x5d5de7baU, 0x19192b32U, 0x737395e6U,
+-    0x6060a0c0U, 0x81819819U, 0x4f4fd19eU, 0xdcdc7fa3U,
+-    0x22226644U, 0x2a2a7e54U, 0x9090ab3bU, 0x8888830bU,
+-    0x4646ca8cU, 0xeeee29c7U, 0xb8b8d36bU, 0x14143c28U,
+-    0xdede79a7U, 0x5e5ee2bcU, 0x0b0b1d16U, 0xdbdb76adU,
+-    0xe0e03bdbU, 0x32325664U, 0x3a3a4e74U, 0x0a0a1e14U,
+-    0x4949db92U, 0x06060a0cU, 0x24246c48U, 0x5c5ce4b8U,
+-    0xc2c25d9fU, 0xd3d36ebdU, 0xacacef43U, 0x6262a6c4U,
+-    0x9191a839U, 0x9595a431U, 0xe4e437d3U, 0x79798bf2U,
+-    0xe7e732d5U, 0xc8c8438bU, 0x3737596eU, 0x6d6db7daU,
+-    0x8d8d8c01U, 0xd5d564b1U, 0x4e4ed29cU, 0xa9a9e049U,
+-    0x6c6cb4d8U, 0x5656faacU, 0xf4f407f3U, 0xeaea25cfU,
+-    0x6565afcaU, 0x7a7a8ef4U, 0xaeaee947U, 0x08081810U,
+-    0xbabad56fU, 0x787888f0U, 0x25256f4aU, 0x2e2e725cU,
+-    0x1c1c2438U, 0xa6a6f157U, 0xb4b4c773U, 0xc6c65197U,
+-    0xe8e823cbU, 0xdddd7ca1U, 0x74749ce8U, 0x1f1f213eU,
+-    0x4b4bdd96U, 0xbdbddc61U, 0x8b8b860dU, 0x8a8a850fU,
+-    0x707090e0U, 0x3e3e427cU, 0xb5b5c471U, 0x6666aaccU,
+-    0x4848d890U, 0x03030506U, 0xf6f601f7U, 0x0e0e121cU,
+-    0x6161a3c2U, 0x35355f6aU, 0x5757f9aeU, 0xb9b9d069U,
+-    0x86869117U, 0xc1c15899U, 0x1d1d273aU, 0x9e9eb927U,
+-    0xe1e138d9U, 0xf8f813ebU, 0x9898b32bU, 0x11113322U,
+-    0x6969bbd2U, 0xd9d970a9U, 0x8e8e8907U, 0x9494a733U,
+-    0x9b9bb62dU, 0x1e1e223cU, 0x87879215U, 0xe9e920c9U,
+-    0xcece4987U, 0x5555ffaaU, 0x28287850U, 0xdfdf7aa5U,
+-    0x8c8c8f03U, 0xa1a1f859U, 0x89898009U, 0x0d0d171aU,
+-    0xbfbfda65U, 0xe6e631d7U, 0x4242c684U, 0x6868b8d0U,
+-    0x4141c382U, 0x9999b029U, 0x2d2d775aU, 0x0f0f111eU,
+-    0xb0b0cb7bU, 0x5454fca8U, 0xbbbbd66dU, 0x16163a2cU,
+-};
+-static const u32 Te4[256] = {
+-    0x63636363U, 0x7c7c7c7cU, 0x77777777U, 0x7b7b7b7bU,
+-    0xf2f2f2f2U, 0x6b6b6b6bU, 0x6f6f6f6fU, 0xc5c5c5c5U,
+-    0x30303030U, 0x01010101U, 0x67676767U, 0x2b2b2b2bU,
+-    0xfefefefeU, 0xd7d7d7d7U, 0xababababU, 0x76767676U,
+-    0xcacacacaU, 0x82828282U, 0xc9c9c9c9U, 0x7d7d7d7dU,
+-    0xfafafafaU, 0x59595959U, 0x47474747U, 0xf0f0f0f0U,
+-    0xadadadadU, 0xd4d4d4d4U, 0xa2a2a2a2U, 0xafafafafU,
+-    0x9c9c9c9cU, 0xa4a4a4a4U, 0x72727272U, 0xc0c0c0c0U,
+-    0xb7b7b7b7U, 0xfdfdfdfdU, 0x93939393U, 0x26262626U,
+-    0x36363636U, 0x3f3f3f3fU, 0xf7f7f7f7U, 0xccccccccU,
+-    0x34343434U, 0xa5a5a5a5U, 0xe5e5e5e5U, 0xf1f1f1f1U,
+-    0x71717171U, 0xd8d8d8d8U, 0x31313131U, 0x15151515U,
+-    0x04040404U, 0xc7c7c7c7U, 0x23232323U, 0xc3c3c3c3U,
+-    0x18181818U, 0x96969696U, 0x05050505U, 0x9a9a9a9aU,
+-    0x07070707U, 0x12121212U, 0x80808080U, 0xe2e2e2e2U,
+-    0xebebebebU, 0x27272727U, 0xb2b2b2b2U, 0x75757575U,
+-    0x09090909U, 0x83838383U, 0x2c2c2c2cU, 0x1a1a1a1aU,
+-    0x1b1b1b1bU, 0x6e6e6e6eU, 0x5a5a5a5aU, 0xa0a0a0a0U,
+-    0x52525252U, 0x3b3b3b3bU, 0xd6d6d6d6U, 0xb3b3b3b3U,
+-    0x29292929U, 0xe3e3e3e3U, 0x2f2f2f2fU, 0x84848484U,
+-    0x53535353U, 0xd1d1d1d1U, 0x00000000U, 0xededededU,
+-    0x20202020U, 0xfcfcfcfcU, 0xb1b1b1b1U, 0x5b5b5b5bU,
+-    0x6a6a6a6aU, 0xcbcbcbcbU, 0xbebebebeU, 0x39393939U,
+-    0x4a4a4a4aU, 0x4c4c4c4cU, 0x58585858U, 0xcfcfcfcfU,
+-    0xd0d0d0d0U, 0xefefefefU, 0xaaaaaaaaU, 0xfbfbfbfbU,
+-    0x43434343U, 0x4d4d4d4dU, 0x33333333U, 0x85858585U,
+-    0x45454545U, 0xf9f9f9f9U, 0x02020202U, 0x7f7f7f7fU,
+-    0x50505050U, 0x3c3c3c3cU, 0x9f9f9f9fU, 0xa8a8a8a8U,
+-    0x51515151U, 0xa3a3a3a3U, 0x40404040U, 0x8f8f8f8fU,
+-    0x92929292U, 0x9d9d9d9dU, 0x38383838U, 0xf5f5f5f5U,
+-    0xbcbcbcbcU, 0xb6b6b6b6U, 0xdadadadaU, 0x21212121U,
+-    0x10101010U, 0xffffffffU, 0xf3f3f3f3U, 0xd2d2d2d2U,
+-    0xcdcdcdcdU, 0x0c0c0c0cU, 0x13131313U, 0xececececU,
+-    0x5f5f5f5fU, 0x97979797U, 0x44444444U, 0x17171717U,
+-    0xc4c4c4c4U, 0xa7a7a7a7U, 0x7e7e7e7eU, 0x3d3d3d3dU,
+-    0x64646464U, 0x5d5d5d5dU, 0x19191919U, 0x73737373U,
+-    0x60606060U, 0x81818181U, 0x4f4f4f4fU, 0xdcdcdcdcU,
+-    0x22222222U, 0x2a2a2a2aU, 0x90909090U, 0x88888888U,
+-    0x46464646U, 0xeeeeeeeeU, 0xb8b8b8b8U, 0x14141414U,
+-    0xdedededeU, 0x5e5e5e5eU, 0x0b0b0b0bU, 0xdbdbdbdbU,
+-    0xe0e0e0e0U, 0x32323232U, 0x3a3a3a3aU, 0x0a0a0a0aU,
+-    0x49494949U, 0x06060606U, 0x24242424U, 0x5c5c5c5cU,
+-    0xc2c2c2c2U, 0xd3d3d3d3U, 0xacacacacU, 0x62626262U,
+-    0x91919191U, 0x95959595U, 0xe4e4e4e4U, 0x79797979U,
+-    0xe7e7e7e7U, 0xc8c8c8c8U, 0x37373737U, 0x6d6d6d6dU,
+-    0x8d8d8d8dU, 0xd5d5d5d5U, 0x4e4e4e4eU, 0xa9a9a9a9U,
+-    0x6c6c6c6cU, 0x56565656U, 0xf4f4f4f4U, 0xeaeaeaeaU,
+-    0x65656565U, 0x7a7a7a7aU, 0xaeaeaeaeU, 0x08080808U,
+-    0xbabababaU, 0x78787878U, 0x25252525U, 0x2e2e2e2eU,
+-    0x1c1c1c1cU, 0xa6a6a6a6U, 0xb4b4b4b4U, 0xc6c6c6c6U,
+-    0xe8e8e8e8U, 0xddddddddU, 0x74747474U, 0x1f1f1f1fU,
+-    0x4b4b4b4bU, 0xbdbdbdbdU, 0x8b8b8b8bU, 0x8a8a8a8aU,
+-    0x70707070U, 0x3e3e3e3eU, 0xb5b5b5b5U, 0x66666666U,
+-    0x48484848U, 0x03030303U, 0xf6f6f6f6U, 0x0e0e0e0eU,
+-    0x61616161U, 0x35353535U, 0x57575757U, 0xb9b9b9b9U,
+-    0x86868686U, 0xc1c1c1c1U, 0x1d1d1d1dU, 0x9e9e9e9eU,
+-    0xe1e1e1e1U, 0xf8f8f8f8U, 0x98989898U, 0x11111111U,
+-    0x69696969U, 0xd9d9d9d9U, 0x8e8e8e8eU, 0x94949494U,
+-    0x9b9b9b9bU, 0x1e1e1e1eU, 0x87878787U, 0xe9e9e9e9U,
+-    0xcecececeU, 0x55555555U, 0x28282828U, 0xdfdfdfdfU,
+-    0x8c8c8c8cU, 0xa1a1a1a1U, 0x89898989U, 0x0d0d0d0dU,
+-    0xbfbfbfbfU, 0xe6e6e6e6U, 0x42424242U, 0x68686868U,
+-    0x41414141U, 0x99999999U, 0x2d2d2d2dU, 0x0f0f0f0fU,
+-    0xb0b0b0b0U, 0x54545454U, 0xbbbbbbbbU, 0x16161616U,
+-};
+-static const u32 Td0[256] = {
+-    0x51f4a750U, 0x7e416553U, 0x1a17a4c3U, 0x3a275e96U,
+-    0x3bab6bcbU, 0x1f9d45f1U, 0xacfa58abU, 0x4be30393U,
+-    0x2030fa55U, 0xad766df6U, 0x88cc7691U, 0xf5024c25U,
+-    0x4fe5d7fcU, 0xc52acbd7U, 0x26354480U, 0xb562a38fU,
+-    0xdeb15a49U, 0x25ba1b67U, 0x45ea0e98U, 0x5dfec0e1U,
+-    0xc32f7502U, 0x814cf012U, 0x8d4697a3U, 0x6bd3f9c6U,
+-    0x038f5fe7U, 0x15929c95U, 0xbf6d7aebU, 0x955259daU,
+-    0xd4be832dU, 0x587421d3U, 0x49e06929U, 0x8ec9c844U,
+-    0x75c2896aU, 0xf48e7978U, 0x99583e6bU, 0x27b971ddU,
+-    0xbee14fb6U, 0xf088ad17U, 0xc920ac66U, 0x7dce3ab4U,
+-    0x63df4a18U, 0xe51a3182U, 0x97513360U, 0x62537f45U,
+-    0xb16477e0U, 0xbb6bae84U, 0xfe81a01cU, 0xf9082b94U,
+-    0x70486858U, 0x8f45fd19U, 0x94de6c87U, 0x527bf8b7U,
+-    0xab73d323U, 0x724b02e2U, 0xe31f8f57U, 0x6655ab2aU,
+-    0xb2eb2807U, 0x2fb5c203U, 0x86c57b9aU, 0xd33708a5U,
+-    0x302887f2U, 0x23bfa5b2U, 0x02036abaU, 0xed16825cU,
+-    0x8acf1c2bU, 0xa779b492U, 0xf307f2f0U, 0x4e69e2a1U,
+-    0x65daf4cdU, 0x0605bed5U, 0xd134621fU, 0xc4a6fe8aU,
+-    0x342e539dU, 0xa2f355a0U, 0x058ae132U, 0xa4f6eb75U,
+-    0x0b83ec39U, 0x4060efaaU, 0x5e719f06U, 0xbd6e1051U,
+-    0x3e218af9U, 0x96dd063dU, 0xdd3e05aeU, 0x4de6bd46U,
+-    0x91548db5U, 0x71c45d05U, 0x0406d46fU, 0x605015ffU,
+-    0x1998fb24U, 0xd6bde997U, 0x894043ccU, 0x67d99e77U,
+-    0xb0e842bdU, 0x07898b88U, 0xe7195b38U, 0x79c8eedbU,
+-    0xa17c0a47U, 0x7c420fe9U, 0xf8841ec9U, 0x00000000U,
+-    0x09808683U, 0x322bed48U, 0x1e1170acU, 0x6c5a724eU,
+-    0xfd0efffbU, 0x0f853856U, 0x3daed51eU, 0x362d3927U,
+-    0x0a0fd964U, 0x685ca621U, 0x9b5b54d1U, 0x24362e3aU,
+-    0x0c0a67b1U, 0x9357e70fU, 0xb4ee96d2U, 0x1b9b919eU,
+-    0x80c0c54fU, 0x61dc20a2U, 0x5a774b69U, 0x1c121a16U,
+-    0xe293ba0aU, 0xc0a02ae5U, 0x3c22e043U, 0x121b171dU,
+-    0x0e090d0bU, 0xf28bc7adU, 0x2db6a8b9U, 0x141ea9c8U,
+-    0x57f11985U, 0xaf75074cU, 0xee99ddbbU, 0xa37f60fdU,
+-    0xf701269fU, 0x5c72f5bcU, 0x44663bc5U, 0x5bfb7e34U,
+-    0x8b432976U, 0xcb23c6dcU, 0xb6edfc68U, 0xb8e4f163U,
+-    0xd731dccaU, 0x42638510U, 0x13972240U, 0x84c61120U,
+-    0x854a247dU, 0xd2bb3df8U, 0xaef93211U, 0xc729a16dU,
+-    0x1d9e2f4bU, 0xdcb230f3U, 0x0d8652ecU, 0x77c1e3d0U,
+-    0x2bb3166cU, 0xa970b999U, 0x119448faU, 0x47e96422U,
+-    0xa8fc8cc4U, 0xa0f03f1aU, 0x567d2cd8U, 0x223390efU,
+-    0x87494ec7U, 0xd938d1c1U, 0x8ccaa2feU, 0x98d40b36U,
+-    0xa6f581cfU, 0xa57ade28U, 0xdab78e26U, 0x3fadbfa4U,
+-    0x2c3a9de4U, 0x5078920dU, 0x6a5fcc9bU, 0x547e4662U,
+-    0xf68d13c2U, 0x90d8b8e8U, 0x2e39f75eU, 0x82c3aff5U,
+-    0x9f5d80beU, 0x69d0937cU, 0x6fd52da9U, 0xcf2512b3U,
+-    0xc8ac993bU, 0x10187da7U, 0xe89c636eU, 0xdb3bbb7bU,
+-    0xcd267809U, 0x6e5918f4U, 0xec9ab701U, 0x834f9aa8U,
+-    0xe6956e65U, 0xaaffe67eU, 0x21bccf08U, 0xef15e8e6U,
+-    0xbae79bd9U, 0x4a6f36ceU, 0xea9f09d4U, 0x29b07cd6U,
+-    0x31a4b2afU, 0x2a3f2331U, 0xc6a59430U, 0x35a266c0U,
+-    0x744ebc37U, 0xfc82caa6U, 0xe090d0b0U, 0x33a7d815U,
+-    0xf104984aU, 0x41ecdaf7U, 0x7fcd500eU, 0x1791f62fU,
+-    0x764dd68dU, 0x43efb04dU, 0xccaa4d54U, 0xe49604dfU,
+-    0x9ed1b5e3U, 0x4c6a881bU, 0xc12c1fb8U, 0x4665517fU,
+-    0x9d5eea04U, 0x018c355dU, 0xfa877473U, 0xfb0b412eU,
+-    0xb3671d5aU, 0x92dbd252U, 0xe9105633U, 0x6dd64713U,
+-    0x9ad7618cU, 0x37a10c7aU, 0x59f8148eU, 0xeb133c89U,
+-    0xcea927eeU, 0xb761c935U, 0xe11ce5edU, 0x7a47b13cU,
+-    0x9cd2df59U, 0x55f2733fU, 0x1814ce79U, 0x73c737bfU,
+-    0x53f7cdeaU, 0x5ffdaa5bU, 0xdf3d6f14U, 0x7844db86U,
+-    0xcaaff381U, 0xb968c43eU, 0x3824342cU, 0xc2a3405fU,
+-    0x161dc372U, 0xbce2250cU, 0x283c498bU, 0xff0d9541U,
+-    0x39a80171U, 0x080cb3deU, 0xd8b4e49cU, 0x6456c190U,
+-    0x7bcb8461U, 0xd532b670U, 0x486c5c74U, 0xd0b85742U,
+-};
+-static const u32 Td1[256] = {
+-    0x5051f4a7U, 0x537e4165U, 0xc31a17a4U, 0x963a275eU,
+-    0xcb3bab6bU, 0xf11f9d45U, 0xabacfa58U, 0x934be303U,
+-    0x552030faU, 0xf6ad766dU, 0x9188cc76U, 0x25f5024cU,
+-    0xfc4fe5d7U, 0xd7c52acbU, 0x80263544U, 0x8fb562a3U,
+-    0x49deb15aU, 0x6725ba1bU, 0x9845ea0eU, 0xe15dfec0U,
+-    0x02c32f75U, 0x12814cf0U, 0xa38d4697U, 0xc66bd3f9U,
+-    0xe7038f5fU, 0x9515929cU, 0xebbf6d7aU, 0xda955259U,
+-    0x2dd4be83U, 0xd3587421U, 0x2949e069U, 0x448ec9c8U,
+-    0x6a75c289U, 0x78f48e79U, 0x6b99583eU, 0xdd27b971U,
+-    0xb6bee14fU, 0x17f088adU, 0x66c920acU, 0xb47dce3aU,
+-    0x1863df4aU, 0x82e51a31U, 0x60975133U, 0x4562537fU,
+-    0xe0b16477U, 0x84bb6baeU, 0x1cfe81a0U, 0x94f9082bU,
+-    0x58704868U, 0x198f45fdU, 0x8794de6cU, 0xb7527bf8U,
+-    0x23ab73d3U, 0xe2724b02U, 0x57e31f8fU, 0x2a6655abU,
+-    0x07b2eb28U, 0x032fb5c2U, 0x9a86c57bU, 0xa5d33708U,
+-    0xf2302887U, 0xb223bfa5U, 0xba02036aU, 0x5ced1682U,
+-    0x2b8acf1cU, 0x92a779b4U, 0xf0f307f2U, 0xa14e69e2U,
+-    0xcd65daf4U, 0xd50605beU, 0x1fd13462U, 0x8ac4a6feU,
+-    0x9d342e53U, 0xa0a2f355U, 0x32058ae1U, 0x75a4f6ebU,
+-    0x390b83ecU, 0xaa4060efU, 0x065e719fU, 0x51bd6e10U,
+-    0xf93e218aU, 0x3d96dd06U, 0xaedd3e05U, 0x464de6bdU,
+-    0xb591548dU, 0x0571c45dU, 0x6f0406d4U, 0xff605015U,
+-    0x241998fbU, 0x97d6bde9U, 0xcc894043U, 0x7767d99eU,
+-    0xbdb0e842U, 0x8807898bU, 0x38e7195bU, 0xdb79c8eeU,
+-    0x47a17c0aU, 0xe97c420fU, 0xc9f8841eU, 0x00000000U,
+-    0x83098086U, 0x48322bedU, 0xac1e1170U, 0x4e6c5a72U,
+-    0xfbfd0effU, 0x560f8538U, 0x1e3daed5U, 0x27362d39U,
+-    0x640a0fd9U, 0x21685ca6U, 0xd19b5b54U, 0x3a24362eU,
+-    0xb10c0a67U, 0x0f9357e7U, 0xd2b4ee96U, 0x9e1b9b91U,
+-    0x4f80c0c5U, 0xa261dc20U, 0x695a774bU, 0x161c121aU,
+-    0x0ae293baU, 0xe5c0a02aU, 0x433c22e0U, 0x1d121b17U,
+-    0x0b0e090dU, 0xadf28bc7U, 0xb92db6a8U, 0xc8141ea9U,
+-    0x8557f119U, 0x4caf7507U, 0xbbee99ddU, 0xfda37f60U,
+-    0x9ff70126U, 0xbc5c72f5U, 0xc544663bU, 0x345bfb7eU,
+-    0x768b4329U, 0xdccb23c6U, 0x68b6edfcU, 0x63b8e4f1U,
+-    0xcad731dcU, 0x10426385U, 0x40139722U, 0x2084c611U,
+-    0x7d854a24U, 0xf8d2bb3dU, 0x11aef932U, 0x6dc729a1U,
+-    0x4b1d9e2fU, 0xf3dcb230U, 0xec0d8652U, 0xd077c1e3U,
+-    0x6c2bb316U, 0x99a970b9U, 0xfa119448U, 0x2247e964U,
+-    0xc4a8fc8cU, 0x1aa0f03fU, 0xd8567d2cU, 0xef223390U,
+-    0xc787494eU, 0xc1d938d1U, 0xfe8ccaa2U, 0x3698d40bU,
+-    0xcfa6f581U, 0x28a57adeU, 0x26dab78eU, 0xa43fadbfU,
+-    0xe42c3a9dU, 0x0d507892U, 0x9b6a5fccU, 0x62547e46U,
+-    0xc2f68d13U, 0xe890d8b8U, 0x5e2e39f7U, 0xf582c3afU,
+-    0xbe9f5d80U, 0x7c69d093U, 0xa96fd52dU, 0xb3cf2512U,
+-    0x3bc8ac99U, 0xa710187dU, 0x6ee89c63U, 0x7bdb3bbbU,
+-    0x09cd2678U, 0xf46e5918U, 0x01ec9ab7U, 0xa8834f9aU,
+-    0x65e6956eU, 0x7eaaffe6U, 0x0821bccfU, 0xe6ef15e8U,
+-    0xd9bae79bU, 0xce4a6f36U, 0xd4ea9f09U, 0xd629b07cU,
+-    0xaf31a4b2U, 0x312a3f23U, 0x30c6a594U, 0xc035a266U,
+-    0x37744ebcU, 0xa6fc82caU, 0xb0e090d0U, 0x1533a7d8U,
+-    0x4af10498U, 0xf741ecdaU, 0x0e7fcd50U, 0x2f1791f6U,
+-    0x8d764dd6U, 0x4d43efb0U, 0x54ccaa4dU, 0xdfe49604U,
+-    0xe39ed1b5U, 0x1b4c6a88U, 0xb8c12c1fU, 0x7f466551U,
+-    0x049d5eeaU, 0x5d018c35U, 0x73fa8774U, 0x2efb0b41U,
+-    0x5ab3671dU, 0x5292dbd2U, 0x33e91056U, 0x136dd647U,
+-    0x8c9ad761U, 0x7a37a10cU, 0x8e59f814U, 0x89eb133cU,
+-    0xeecea927U, 0x35b761c9U, 0xede11ce5U, 0x3c7a47b1U,
+-    0x599cd2dfU, 0x3f55f273U, 0x791814ceU, 0xbf73c737U,
+-    0xea53f7cdU, 0x5b5ffdaaU, 0x14df3d6fU, 0x867844dbU,
+-    0x81caaff3U, 0x3eb968c4U, 0x2c382434U, 0x5fc2a340U,
+-    0x72161dc3U, 0x0cbce225U, 0x8b283c49U, 0x41ff0d95U,
+-    0x7139a801U, 0xde080cb3U, 0x9cd8b4e4U, 0x906456c1U,
+-    0x617bcb84U, 0x70d532b6U, 0x74486c5cU, 0x42d0b857U,
+-};
+-static const u32 Td2[256] = {
+-    0xa75051f4U, 0x65537e41U, 0xa4c31a17U, 0x5e963a27U,
+-    0x6bcb3babU, 0x45f11f9dU, 0x58abacfaU, 0x03934be3U,
+-    0xfa552030U, 0x6df6ad76U, 0x769188ccU, 0x4c25f502U,
+-    0xd7fc4fe5U, 0xcbd7c52aU, 0x44802635U, 0xa38fb562U,
+-    0x5a49deb1U, 0x1b6725baU, 0x0e9845eaU, 0xc0e15dfeU,
+-    0x7502c32fU, 0xf012814cU, 0x97a38d46U, 0xf9c66bd3U,
+-    0x5fe7038fU, 0x9c951592U, 0x7aebbf6dU, 0x59da9552U,
+-    0x832dd4beU, 0x21d35874U, 0x692949e0U, 0xc8448ec9U,
+-    0x896a75c2U, 0x7978f48eU, 0x3e6b9958U, 0x71dd27b9U,
+-    0x4fb6bee1U, 0xad17f088U, 0xac66c920U, 0x3ab47dceU,
+-    0x4a1863dfU, 0x3182e51aU, 0x33609751U, 0x7f456253U,
+-    0x77e0b164U, 0xae84bb6bU, 0xa01cfe81U, 0x2b94f908U,
+-    0x68587048U, 0xfd198f45U, 0x6c8794deU, 0xf8b7527bU,
+-    0xd323ab73U, 0x02e2724bU, 0x8f57e31fU, 0xab2a6655U,
+-    0x2807b2ebU, 0xc2032fb5U, 0x7b9a86c5U, 0x08a5d337U,
+-    0x87f23028U, 0xa5b223bfU, 0x6aba0203U, 0x825ced16U,
+-    0x1c2b8acfU, 0xb492a779U, 0xf2f0f307U, 0xe2a14e69U,
+-    0xf4cd65daU, 0xbed50605U, 0x621fd134U, 0xfe8ac4a6U,
+-    0x539d342eU, 0x55a0a2f3U, 0xe132058aU, 0xeb75a4f6U,
+-    0xec390b83U, 0xefaa4060U, 0x9f065e71U, 0x1051bd6eU,
+-
+-    0x8af93e21U, 0x063d96ddU, 0x05aedd3eU, 0xbd464de6U,
+-    0x8db59154U, 0x5d0571c4U, 0xd46f0406U, 0x15ff6050U,
+-    0xfb241998U, 0xe997d6bdU, 0x43cc8940U, 0x9e7767d9U,
+-    0x42bdb0e8U, 0x8b880789U, 0x5b38e719U, 0xeedb79c8U,
+-    0x0a47a17cU, 0x0fe97c42U, 0x1ec9f884U, 0x00000000U,
+-    0x86830980U, 0xed48322bU, 0x70ac1e11U, 0x724e6c5aU,
+-    0xfffbfd0eU, 0x38560f85U, 0xd51e3daeU, 0x3927362dU,
+-    0xd9640a0fU, 0xa621685cU, 0x54d19b5bU, 0x2e3a2436U,
+-    0x67b10c0aU, 0xe70f9357U, 0x96d2b4eeU, 0x919e1b9bU,
+-    0xc54f80c0U, 0x20a261dcU, 0x4b695a77U, 0x1a161c12U,
+-    0xba0ae293U, 0x2ae5c0a0U, 0xe0433c22U, 0x171d121bU,
+-    0x0d0b0e09U, 0xc7adf28bU, 0xa8b92db6U, 0xa9c8141eU,
+-    0x198557f1U, 0x074caf75U, 0xddbbee99U, 0x60fda37fU,
+-    0x269ff701U, 0xf5bc5c72U, 0x3bc54466U, 0x7e345bfbU,
+-    0x29768b43U, 0xc6dccb23U, 0xfc68b6edU, 0xf163b8e4U,
+-    0xdccad731U, 0x85104263U, 0x22401397U, 0x112084c6U,
+-    0x247d854aU, 0x3df8d2bbU, 0x3211aef9U, 0xa16dc729U,
+-    0x2f4b1d9eU, 0x30f3dcb2U, 0x52ec0d86U, 0xe3d077c1U,
+-    0x166c2bb3U, 0xb999a970U, 0x48fa1194U, 0x642247e9U,
+-    0x8cc4a8fcU, 0x3f1aa0f0U, 0x2cd8567dU, 0x90ef2233U,
+-    0x4ec78749U, 0xd1c1d938U, 0xa2fe8ccaU, 0x0b3698d4U,
+-    0x81cfa6f5U, 0xde28a57aU, 0x8e26dab7U, 0xbfa43fadU,
+-    0x9de42c3aU, 0x920d5078U, 0xcc9b6a5fU, 0x4662547eU,
+-    0x13c2f68dU, 0xb8e890d8U, 0xf75e2e39U, 0xaff582c3U,
+-    0x80be9f5dU, 0x937c69d0U, 0x2da96fd5U, 0x12b3cf25U,
+-    0x993bc8acU, 0x7da71018U, 0x636ee89cU, 0xbb7bdb3bU,
+-    0x7809cd26U, 0x18f46e59U, 0xb701ec9aU, 0x9aa8834fU,
+-    0x6e65e695U, 0xe67eaaffU, 0xcf0821bcU, 0xe8e6ef15U,
+-    0x9bd9bae7U, 0x36ce4a6fU, 0x09d4ea9fU, 0x7cd629b0U,
+-    0xb2af31a4U, 0x23312a3fU, 0x9430c6a5U, 0x66c035a2U,
+-    0xbc37744eU, 0xcaa6fc82U, 0xd0b0e090U, 0xd81533a7U,
+-    0x984af104U, 0xdaf741ecU, 0x500e7fcdU, 0xf62f1791U,
+-    0xd68d764dU, 0xb04d43efU, 0x4d54ccaaU, 0x04dfe496U,
+-    0xb5e39ed1U, 0x881b4c6aU, 0x1fb8c12cU, 0x517f4665U,
+-    0xea049d5eU, 0x355d018cU, 0x7473fa87U, 0x412efb0bU,
+-    0x1d5ab367U, 0xd25292dbU, 0x5633e910U, 0x47136dd6U,
+-    0x618c9ad7U, 0x0c7a37a1U, 0x148e59f8U, 0x3c89eb13U,
+-    0x27eecea9U, 0xc935b761U, 0xe5ede11cU, 0xb13c7a47U,
+-    0xdf599cd2U, 0x733f55f2U, 0xce791814U, 0x37bf73c7U,
+-    0xcdea53f7U, 0xaa5b5ffdU, 0x6f14df3dU, 0xdb867844U,
+-    0xf381caafU, 0xc43eb968U, 0x342c3824U, 0x405fc2a3U,
+-    0xc372161dU, 0x250cbce2U, 0x498b283cU, 0x9541ff0dU,
+-    0x017139a8U, 0xb3de080cU, 0xe49cd8b4U, 0xc1906456U,
+-    0x84617bcbU, 0xb670d532U, 0x5c74486cU, 0x5742d0b8U,
+-};
+-static const u32 Td3[256] = {
+-    0xf4a75051U, 0x4165537eU, 0x17a4c31aU, 0x275e963aU,
+-    0xab6bcb3bU, 0x9d45f11fU, 0xfa58abacU, 0xe303934bU,
+-    0x30fa5520U, 0x766df6adU, 0xcc769188U, 0x024c25f5U,
+-    0xe5d7fc4fU, 0x2acbd7c5U, 0x35448026U, 0x62a38fb5U,
+-    0xb15a49deU, 0xba1b6725U, 0xea0e9845U, 0xfec0e15dU,
+-    0x2f7502c3U, 0x4cf01281U, 0x4697a38dU, 0xd3f9c66bU,
+-    0x8f5fe703U, 0x929c9515U, 0x6d7aebbfU, 0x5259da95U,
+-    0xbe832dd4U, 0x7421d358U, 0xe0692949U, 0xc9c8448eU,
+-    0xc2896a75U, 0x8e7978f4U, 0x583e6b99U, 0xb971dd27U,
+-    0xe14fb6beU, 0x88ad17f0U, 0x20ac66c9U, 0xce3ab47dU,
+-    0xdf4a1863U, 0x1a3182e5U, 0x51336097U, 0x537f4562U,
+-    0x6477e0b1U, 0x6bae84bbU, 0x81a01cfeU, 0x082b94f9U,
+-    0x48685870U, 0x45fd198fU, 0xde6c8794U, 0x7bf8b752U,
+-    0x73d323abU, 0x4b02e272U, 0x1f8f57e3U, 0x55ab2a66U,
+-    0xeb2807b2U, 0xb5c2032fU, 0xc57b9a86U, 0x3708a5d3U,
+-    0x2887f230U, 0xbfa5b223U, 0x036aba02U, 0x16825cedU,
+-    0xcf1c2b8aU, 0x79b492a7U, 0x07f2f0f3U, 0x69e2a14eU,
+-    0xdaf4cd65U, 0x05bed506U, 0x34621fd1U, 0xa6fe8ac4U,
+-    0x2e539d34U, 0xf355a0a2U, 0x8ae13205U, 0xf6eb75a4U,
+-    0x83ec390bU, 0x60efaa40U, 0x719f065eU, 0x6e1051bdU,
+-    0x218af93eU, 0xdd063d96U, 0x3e05aeddU, 0xe6bd464dU,
+-    0x548db591U, 0xc45d0571U, 0x06d46f04U, 0x5015ff60U,
+-    0x98fb2419U, 0xbde997d6U, 0x4043cc89U, 0xd99e7767U,
+-    0xe842bdb0U, 0x898b8807U, 0x195b38e7U, 0xc8eedb79U,
+-    0x7c0a47a1U, 0x420fe97cU, 0x841ec9f8U, 0x00000000U,
+-    0x80868309U, 0x2bed4832U, 0x1170ac1eU, 0x5a724e6cU,
+-    0x0efffbfdU, 0x8538560fU, 0xaed51e3dU, 0x2d392736U,
+-    0x0fd9640aU, 0x5ca62168U, 0x5b54d19bU, 0x362e3a24U,
+-    0x0a67b10cU, 0x57e70f93U, 0xee96d2b4U, 0x9b919e1bU,
+-    0xc0c54f80U, 0xdc20a261U, 0x774b695aU, 0x121a161cU,
+-    0x93ba0ae2U, 0xa02ae5c0U, 0x22e0433cU, 0x1b171d12U,
+-    0x090d0b0eU, 0x8bc7adf2U, 0xb6a8b92dU, 0x1ea9c814U,
+-    0xf1198557U, 0x75074cafU, 0x99ddbbeeU, 0x7f60fda3U,
+-    0x01269ff7U, 0x72f5bc5cU, 0x663bc544U, 0xfb7e345bU,
+-    0x4329768bU, 0x23c6dccbU, 0xedfc68b6U, 0xe4f163b8U,
+-    0x31dccad7U, 0x63851042U, 0x97224013U, 0xc6112084U,
+-    0x4a247d85U, 0xbb3df8d2U, 0xf93211aeU, 0x29a16dc7U,
+-    0x9e2f4b1dU, 0xb230f3dcU, 0x8652ec0dU, 0xc1e3d077U,
+-    0xb3166c2bU, 0x70b999a9U, 0x9448fa11U, 0xe9642247U,
+-    0xfc8cc4a8U, 0xf03f1aa0U, 0x7d2cd856U, 0x3390ef22U,
+-    0x494ec787U, 0x38d1c1d9U, 0xcaa2fe8cU, 0xd40b3698U,
+-    0xf581cfa6U, 0x7ade28a5U, 0xb78e26daU, 0xadbfa43fU,
+-    0x3a9de42cU, 0x78920d50U, 0x5fcc9b6aU, 0x7e466254U,
+-    0x8d13c2f6U, 0xd8b8e890U, 0x39f75e2eU, 0xc3aff582U,
+-    0x5d80be9fU, 0xd0937c69U, 0xd52da96fU, 0x2512b3cfU,
+-    0xac993bc8U, 0x187da710U, 0x9c636ee8U, 0x3bbb7bdbU,
+-    0x267809cdU, 0x5918f46eU, 0x9ab701ecU, 0x4f9aa883U,
+-    0x956e65e6U, 0xffe67eaaU, 0xbccf0821U, 0x15e8e6efU,
+-    0xe79bd9baU, 0x6f36ce4aU, 0x9f09d4eaU, 0xb07cd629U,
+-    0xa4b2af31U, 0x3f23312aU, 0xa59430c6U, 0xa266c035U,
+-    0x4ebc3774U, 0x82caa6fcU, 0x90d0b0e0U, 0xa7d81533U,
+-    0x04984af1U, 0xecdaf741U, 0xcd500e7fU, 0x91f62f17U,
+-    0x4dd68d76U, 0xefb04d43U, 0xaa4d54ccU, 0x9604dfe4U,
+-    0xd1b5e39eU, 0x6a881b4cU, 0x2c1fb8c1U, 0x65517f46U,
+-    0x5eea049dU, 0x8c355d01U, 0x877473faU, 0x0b412efbU,
+-    0x671d5ab3U, 0xdbd25292U, 0x105633e9U, 0xd647136dU,
+-    0xd7618c9aU, 0xa10c7a37U, 0xf8148e59U, 0x133c89ebU,
+-    0xa927eeceU, 0x61c935b7U, 0x1ce5ede1U, 0x47b13c7aU,
+-    0xd2df599cU, 0xf2733f55U, 0x14ce7918U, 0xc737bf73U,
+-    0xf7cdea53U, 0xfdaa5b5fU, 0x3d6f14dfU, 0x44db8678U,
+-    0xaff381caU, 0x68c43eb9U, 0x24342c38U, 0xa3405fc2U,
+-    0x1dc37216U, 0xe2250cbcU, 0x3c498b28U, 0x0d9541ffU,
+-    0xa8017139U, 0x0cb3de08U, 0xb4e49cd8U, 0x56c19064U,
+-    0xcb84617bU, 0x32b670d5U, 0x6c5c7448U, 0xb85742d0U,
+-};
+-static const u32 Td4[256] = {
+-    0x52525252U, 0x09090909U, 0x6a6a6a6aU, 0xd5d5d5d5U,
+-    0x30303030U, 0x36363636U, 0xa5a5a5a5U, 0x38383838U,
+-    0xbfbfbfbfU, 0x40404040U, 0xa3a3a3a3U, 0x9e9e9e9eU,
+-    0x81818181U, 0xf3f3f3f3U, 0xd7d7d7d7U, 0xfbfbfbfbU,
+-    0x7c7c7c7cU, 0xe3e3e3e3U, 0x39393939U, 0x82828282U,
+-    0x9b9b9b9bU, 0x2f2f2f2fU, 0xffffffffU, 0x87878787U,
+-    0x34343434U, 0x8e8e8e8eU, 0x43434343U, 0x44444444U,
+-    0xc4c4c4c4U, 0xdedededeU, 0xe9e9e9e9U, 0xcbcbcbcbU,
+-    0x54545454U, 0x7b7b7b7bU, 0x94949494U, 0x32323232U,
+-    0xa6a6a6a6U, 0xc2c2c2c2U, 0x23232323U, 0x3d3d3d3dU,
+-    0xeeeeeeeeU, 0x4c4c4c4cU, 0x95959595U, 0x0b0b0b0bU,
+-    0x42424242U, 0xfafafafaU, 0xc3c3c3c3U, 0x4e4e4e4eU,
+-    0x08080808U, 0x2e2e2e2eU, 0xa1a1a1a1U, 0x66666666U,
+-    0x28282828U, 0xd9d9d9d9U, 0x24242424U, 0xb2b2b2b2U,
+-    0x76767676U, 0x5b5b5b5bU, 0xa2a2a2a2U, 0x49494949U,
+-    0x6d6d6d6dU, 0x8b8b8b8bU, 0xd1d1d1d1U, 0x25252525U,
+-    0x72727272U, 0xf8f8f8f8U, 0xf6f6f6f6U, 0x64646464U,
+-    0x86868686U, 0x68686868U, 0x98989898U, 0x16161616U,
+-    0xd4d4d4d4U, 0xa4a4a4a4U, 0x5c5c5c5cU, 0xccccccccU,
+-    0x5d5d5d5dU, 0x65656565U, 0xb6b6b6b6U, 0x92929292U,
+-    0x6c6c6c6cU, 0x70707070U, 0x48484848U, 0x50505050U,
+-    0xfdfdfdfdU, 0xededededU, 0xb9b9b9b9U, 0xdadadadaU,
+-    0x5e5e5e5eU, 0x15151515U, 0x46464646U, 0x57575757U,
+-    0xa7a7a7a7U, 0x8d8d8d8dU, 0x9d9d9d9dU, 0x84848484U,
+-    0x90909090U, 0xd8d8d8d8U, 0xababababU, 0x00000000U,
+-    0x8c8c8c8cU, 0xbcbcbcbcU, 0xd3d3d3d3U, 0x0a0a0a0aU,
+-    0xf7f7f7f7U, 0xe4e4e4e4U, 0x58585858U, 0x05050505U,
+-    0xb8b8b8b8U, 0xb3b3b3b3U, 0x45454545U, 0x06060606U,
+-    0xd0d0d0d0U, 0x2c2c2c2cU, 0x1e1e1e1eU, 0x8f8f8f8fU,
+-    0xcacacacaU, 0x3f3f3f3fU, 0x0f0f0f0fU, 0x02020202U,
+-    0xc1c1c1c1U, 0xafafafafU, 0xbdbdbdbdU, 0x03030303U,
+-    0x01010101U, 0x13131313U, 0x8a8a8a8aU, 0x6b6b6b6bU,
+-    0x3a3a3a3aU, 0x91919191U, 0x11111111U, 0x41414141U,
+-    0x4f4f4f4fU, 0x67676767U, 0xdcdcdcdcU, 0xeaeaeaeaU,
+-    0x97979797U, 0xf2f2f2f2U, 0xcfcfcfcfU, 0xcecececeU,
+-    0xf0f0f0f0U, 0xb4b4b4b4U, 0xe6e6e6e6U, 0x73737373U,
+-    0x96969696U, 0xacacacacU, 0x74747474U, 0x22222222U,
+-    0xe7e7e7e7U, 0xadadadadU, 0x35353535U, 0x85858585U,
+-    0xe2e2e2e2U, 0xf9f9f9f9U, 0x37373737U, 0xe8e8e8e8U,
+-    0x1c1c1c1cU, 0x75757575U, 0xdfdfdfdfU, 0x6e6e6e6eU,
+-    0x47474747U, 0xf1f1f1f1U, 0x1a1a1a1aU, 0x71717171U,
+-    0x1d1d1d1dU, 0x29292929U, 0xc5c5c5c5U, 0x89898989U,
+-    0x6f6f6f6fU, 0xb7b7b7b7U, 0x62626262U, 0x0e0e0e0eU,
+-    0xaaaaaaaaU, 0x18181818U, 0xbebebebeU, 0x1b1b1b1bU,
+-    0xfcfcfcfcU, 0x56565656U, 0x3e3e3e3eU, 0x4b4b4b4bU,
+-    0xc6c6c6c6U, 0xd2d2d2d2U, 0x79797979U, 0x20202020U,
+-    0x9a9a9a9aU, 0xdbdbdbdbU, 0xc0c0c0c0U, 0xfefefefeU,
+-    0x78787878U, 0xcdcdcdcdU, 0x5a5a5a5aU, 0xf4f4f4f4U,
+-    0x1f1f1f1fU, 0xddddddddU, 0xa8a8a8a8U, 0x33333333U,
+-    0x88888888U, 0x07070707U, 0xc7c7c7c7U, 0x31313131U,
+-    0xb1b1b1b1U, 0x12121212U, 0x10101010U, 0x59595959U,
+-    0x27272727U, 0x80808080U, 0xececececU, 0x5f5f5f5fU,
+-    0x60606060U, 0x51515151U, 0x7f7f7f7fU, 0xa9a9a9a9U,
+-    0x19191919U, 0xb5b5b5b5U, 0x4a4a4a4aU, 0x0d0d0d0dU,
+-    0x2d2d2d2dU, 0xe5e5e5e5U, 0x7a7a7a7aU, 0x9f9f9f9fU,
+-    0x93939393U, 0xc9c9c9c9U, 0x9c9c9c9cU, 0xefefefefU,
+-    0xa0a0a0a0U, 0xe0e0e0e0U, 0x3b3b3b3bU, 0x4d4d4d4dU,
+-    0xaeaeaeaeU, 0x2a2a2a2aU, 0xf5f5f5f5U, 0xb0b0b0b0U,
+-    0xc8c8c8c8U, 0xebebebebU, 0xbbbbbbbbU, 0x3c3c3c3cU,
+-    0x83838383U, 0x53535353U, 0x99999999U, 0x61616161U,
+-    0x17171717U, 0x2b2b2b2bU, 0x04040404U, 0x7e7e7e7eU,
+-    0xbabababaU, 0x77777777U, 0xd6d6d6d6U, 0x26262626U,
+-    0xe1e1e1e1U, 0x69696969U, 0x14141414U, 0x63636363U,
+-    0x55555555U, 0x21212121U, 0x0c0c0c0cU, 0x7d7d7d7dU,
+-};
+-static const u32 rcon[] = {
+-	0x01000000, 0x02000000, 0x04000000, 0x08000000,
+-	0x10000000, 0x20000000, 0x40000000, 0x80000000,
+-	0x1B000000, 0x36000000, /* for 128-bit blocks, Rijndael never uses more than 10 rcon values */
+-};
+-
+-/**
+- * Expand the cipher key into the encryption key schedule.
+- */
+-int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
+-			AES_KEY *key) {
+-
+-	u32 *rk;
+-   	int i = 0;
+-	u32 temp;
+-
+-	if (!userKey || !key)
+-		return -1;
+-	if (bits != 128 && bits != 192 && bits != 256)
+-		return -2;
+-
+-	rk = key->rd_key;
+-
+-	if (bits==128)
+-		key->rounds = 10;
+-	else if (bits==192)
+-		key->rounds = 12;
+-	else
+-		key->rounds = 14;
+-
+-	rk[0] = GETU32(userKey     );
+-	rk[1] = GETU32(userKey +  4);
+-	rk[2] = GETU32(userKey +  8);
+-	rk[3] = GETU32(userKey + 12);
+-	if (bits == 128) {
+-		while (1) {
+-			temp  = rk[3];
+-			rk[4] = rk[0] ^
+-				(Te4[(temp >> 16) & 0xff] & 0xff000000) ^
+-				(Te4[(temp >>  8) & 0xff] & 0x00ff0000) ^
+-				(Te4[(temp      ) & 0xff] & 0x0000ff00) ^
+-				(Te4[(temp >> 24)       ] & 0x000000ff) ^
+-				rcon[i];
+-			rk[5] = rk[1] ^ rk[4];
+-			rk[6] = rk[2] ^ rk[5];
+-			rk[7] = rk[3] ^ rk[6];
+-			if (++i == 10) {
+-				return 0;
+-			}
+-			rk += 4;
+-		}
+-	}
+-	rk[4] = GETU32(userKey + 16);
+-	rk[5] = GETU32(userKey + 20);
+-	if (bits == 192) {
+-		while (1) {
+-			temp = rk[ 5];
+-			rk[ 6] = rk[ 0] ^
+-				(Te4[(temp >> 16) & 0xff] & 0xff000000) ^
+-				(Te4[(temp >>  8) & 0xff] & 0x00ff0000) ^
+-				(Te4[(temp      ) & 0xff] & 0x0000ff00) ^
+-				(Te4[(temp >> 24)       ] & 0x000000ff) ^
+-				rcon[i];
+-			rk[ 7] = rk[ 1] ^ rk[ 6];
+-			rk[ 8] = rk[ 2] ^ rk[ 7];
+-			rk[ 9] = rk[ 3] ^ rk[ 8];
+-			if (++i == 8) {
+-				return 0;
+-			}
+-			rk[10] = rk[ 4] ^ rk[ 9];
+-			rk[11] = rk[ 5] ^ rk[10];
+-			rk += 6;
+-		}
+-	}
+-	rk[6] = GETU32(userKey + 24);
+-	rk[7] = GETU32(userKey + 28);
+-	if (bits == 256) {
+-		while (1) {
+-			temp = rk[ 7];
+-			rk[ 8] = rk[ 0] ^
+-				(Te4[(temp >> 16) & 0xff] & 0xff000000) ^
+-				(Te4[(temp >>  8) & 0xff] & 0x00ff0000) ^
+-				(Te4[(temp      ) & 0xff] & 0x0000ff00) ^
+-				(Te4[(temp >> 24)       ] & 0x000000ff) ^
+-				rcon[i];
+-			rk[ 9] = rk[ 1] ^ rk[ 8];
+-			rk[10] = rk[ 2] ^ rk[ 9];
+-			rk[11] = rk[ 3] ^ rk[10];
+-			if (++i == 7) {
+-				return 0;
+-			}
+-			temp = rk[11];
+-			rk[12] = rk[ 4] ^
+-				(Te4[(temp >> 24)       ] & 0xff000000) ^
+-				(Te4[(temp >> 16) & 0xff] & 0x00ff0000) ^
+-				(Te4[(temp >>  8) & 0xff] & 0x0000ff00) ^
+-				(Te4[(temp      ) & 0xff] & 0x000000ff);
+-			rk[13] = rk[ 5] ^ rk[12];
+-			rk[14] = rk[ 6] ^ rk[13];
+-			rk[15] = rk[ 7] ^ rk[14];
+-
+-			rk += 8;
+-        	}
+-	}
+-	return 0;
+-}
+-
+-/**
+- * Expand the cipher key into the decryption key schedule.
+- */
+-int AES_set_decrypt_key(const unsigned char *userKey, const int bits,
+-			 AES_KEY *key) {
+-
+-        u32 *rk;
+-	int i, j, status;
+-	u32 temp;
+-
+-	/* first, start with an encryption schedule */
+-	status = AES_set_encrypt_key(userKey, bits, key);
+-	if (status < 0)
+-		return status;
+-
+-	rk = key->rd_key;
+-
+-	/* invert the order of the round keys: */
+-	for (i = 0, j = 4*(key->rounds); i < j; i += 4, j -= 4) {
+-		temp = rk[i    ]; rk[i    ] = rk[j    ]; rk[j    ] = temp;
+-		temp = rk[i + 1]; rk[i + 1] = rk[j + 1]; rk[j + 1] = temp;
+-		temp = rk[i + 2]; rk[i + 2] = rk[j + 2]; rk[j + 2] = temp;
+-		temp = rk[i + 3]; rk[i + 3] = rk[j + 3]; rk[j + 3] = temp;
+-	}
+-	/* apply the inverse MixColumn transform to all round keys but the first and the last: */
+-	for (i = 1; i < (key->rounds); i++) {
+-		rk += 4;
+-		rk[0] =
+-			Td0[Te4[(rk[0] >> 24)       ] & 0xff] ^
+-			Td1[Te4[(rk[0] >> 16) & 0xff] & 0xff] ^
+-			Td2[Te4[(rk[0] >>  8) & 0xff] & 0xff] ^
+-			Td3[Te4[(rk[0]      ) & 0xff] & 0xff];
+-		rk[1] =
+-			Td0[Te4[(rk[1] >> 24)       ] & 0xff] ^
+-			Td1[Te4[(rk[1] >> 16) & 0xff] & 0xff] ^
+-			Td2[Te4[(rk[1] >>  8) & 0xff] & 0xff] ^
+-			Td3[Te4[(rk[1]      ) & 0xff] & 0xff];
+-		rk[2] =
+-			Td0[Te4[(rk[2] >> 24)       ] & 0xff] ^
+-			Td1[Te4[(rk[2] >> 16) & 0xff] & 0xff] ^
+-			Td2[Te4[(rk[2] >>  8) & 0xff] & 0xff] ^
+-			Td3[Te4[(rk[2]      ) & 0xff] & 0xff];
+-		rk[3] =
+-			Td0[Te4[(rk[3] >> 24)       ] & 0xff] ^
+-			Td1[Te4[(rk[3] >> 16) & 0xff] & 0xff] ^
+-			Td2[Te4[(rk[3] >>  8) & 0xff] & 0xff] ^
+-			Td3[Te4[(rk[3]      ) & 0xff] & 0xff];
+-	}
+-	return 0;
+-}
+-
+-#ifndef AES_ASM
+-/*
+- * Encrypt a single block
+- * in and out can overlap
+- */
+-void AES_encrypt(const unsigned char *in, unsigned char *out,
+-		 const AES_KEY *key) {
+-
+-	const u32 *rk;
+-	u32 s0, s1, s2, s3, t0, t1, t2, t3;
+-#ifndef FULL_UNROLL
+-	int r;
+-#endif /* ?FULL_UNROLL */
+-
+-	assert(in && out && key);
+-	rk = key->rd_key;
+-
+-	/*
+-	 * map byte array block to cipher state
+-	 * and add initial round key:
+-	 */
+-	s0 = GETU32(in     ) ^ rk[0];
+-	s1 = GETU32(in +  4) ^ rk[1];
+-	s2 = GETU32(in +  8) ^ rk[2];
+-	s3 = GETU32(in + 12) ^ rk[3];
+-#ifdef FULL_UNROLL
+-	/* round 1: */
+-   	t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[ 4];
+-   	t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[ 5];
+-   	t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[ 6];
+-   	t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[ 7];
+-   	/* round 2: */
+-   	s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[ 8];
+-   	s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[ 9];
+-   	s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[10];
+-   	s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[11];
+-	/* round 3: */
+-   	t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[12];
+-   	t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[13];
+-   	t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[14];
+-   	t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[15];
+-   	/* round 4: */
+-   	s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[16];
+-   	s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[17];
+-   	s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[18];
+-   	s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[19];
+-	/* round 5: */
+-   	t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[20];
+-   	t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[21];
+-   	t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[22];
+-   	t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[23];
+-   	/* round 6: */
+-   	s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[24];
+-   	s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[25];
+-   	s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[26];
+-   	s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[27];
+-	/* round 7: */
+-   	t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[28];
+-   	t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[29];
+-   	t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[30];
+-   	t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[31];
+-   	/* round 8: */
+-   	s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[32];
+-   	s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[33];
+-   	s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[34];
+-   	s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[35];
+-	/* round 9: */
+-   	t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[36];
+-   	t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[37];
+-   	t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[38];
+-   	t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[39];
+-    if (key->rounds > 10) {
+-        /* round 10: */
+-        s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[40];
+-        s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[41];
+-        s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[42];
+-        s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[43];
+-        /* round 11: */
+-        t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[44];
+-        t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[45];
+-        t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[46];
+-        t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[47];
+-        if (key->rounds > 12) {
+-            /* round 12: */
+-            s0 = Te0[t0 >> 24] ^ Te1[(t1 >> 16) & 0xff] ^ Te2[(t2 >>  8) & 0xff] ^ Te3[t3 & 0xff] ^ rk[48];
+-            s1 = Te0[t1 >> 24] ^ Te1[(t2 >> 16) & 0xff] ^ Te2[(t3 >>  8) & 0xff] ^ Te3[t0 & 0xff] ^ rk[49];
+-            s2 = Te0[t2 >> 24] ^ Te1[(t3 >> 16) & 0xff] ^ Te2[(t0 >>  8) & 0xff] ^ Te3[t1 & 0xff] ^ rk[50];
+-            s3 = Te0[t3 >> 24] ^ Te1[(t0 >> 16) & 0xff] ^ Te2[(t1 >>  8) & 0xff] ^ Te3[t2 & 0xff] ^ rk[51];
+-            /* round 13: */
+-            t0 = Te0[s0 >> 24] ^ Te1[(s1 >> 16) & 0xff] ^ Te2[(s2 >>  8) & 0xff] ^ Te3[s3 & 0xff] ^ rk[52];
+-            t1 = Te0[s1 >> 24] ^ Te1[(s2 >> 16) & 0xff] ^ Te2[(s3 >>  8) & 0xff] ^ Te3[s0 & 0xff] ^ rk[53];
+-            t2 = Te0[s2 >> 24] ^ Te1[(s3 >> 16) & 0xff] ^ Te2[(s0 >>  8) & 0xff] ^ Te3[s1 & 0xff] ^ rk[54];
+-            t3 = Te0[s3 >> 24] ^ Te1[(s0 >> 16) & 0xff] ^ Te2[(s1 >>  8) & 0xff] ^ Te3[s2 & 0xff] ^ rk[55];
+-        }
+-    }
+-    rk += key->rounds << 2;
+-#else  /* !FULL_UNROLL */
+-    /*
+-     * Nr - 1 full rounds:
+-     */
+-    r = key->rounds >> 1;
+-    for (;;) {
+-        t0 =
+-            Te0[(s0 >> 24)       ] ^
+-            Te1[(s1 >> 16) & 0xff] ^
+-            Te2[(s2 >>  8) & 0xff] ^
+-            Te3[(s3      ) & 0xff] ^
+-            rk[4];
+-        t1 =
+-            Te0[(s1 >> 24)       ] ^
+-            Te1[(s2 >> 16) & 0xff] ^
+-            Te2[(s3 >>  8) & 0xff] ^
+-            Te3[(s0      ) & 0xff] ^
+-            rk[5];
+-        t2 =
+-            Te0[(s2 >> 24)       ] ^
+-            Te1[(s3 >> 16) & 0xff] ^
+-            Te2[(s0 >>  8) & 0xff] ^
+-            Te3[(s1      ) & 0xff] ^
+-            rk[6];
+-        t3 =
+-            Te0[(s3 >> 24)       ] ^
+-            Te1[(s0 >> 16) & 0xff] ^
+-            Te2[(s1 >>  8) & 0xff] ^
+-            Te3[(s2      ) & 0xff] ^
+-            rk[7];
+-
+-        rk += 8;
+-        if (--r == 0) {
+-            break;
+-        }
+-
+-        s0 =
+-            Te0[(t0 >> 24)       ] ^
+-            Te1[(t1 >> 16) & 0xff] ^
+-            Te2[(t2 >>  8) & 0xff] ^
+-            Te3[(t3      ) & 0xff] ^
+-            rk[0];
+-        s1 =
+-            Te0[(t1 >> 24)       ] ^
+-            Te1[(t2 >> 16) & 0xff] ^
+-            Te2[(t3 >>  8) & 0xff] ^
+-            Te3[(t0      ) & 0xff] ^
+-            rk[1];
+-        s2 =
+-            Te0[(t2 >> 24)       ] ^
+-            Te1[(t3 >> 16) & 0xff] ^
+-            Te2[(t0 >>  8) & 0xff] ^
+-            Te3[(t1      ) & 0xff] ^
+-            rk[2];
+-        s3 =
+-            Te0[(t3 >> 24)       ] ^
+-            Te1[(t0 >> 16) & 0xff] ^
+-            Te2[(t1 >>  8) & 0xff] ^
+-            Te3[(t2      ) & 0xff] ^
+-            rk[3];
+-    }
+-#endif /* ?FULL_UNROLL */
+-    /*
+-	 * apply last round and
+-	 * map cipher state to byte array block:
+-	 */
+-	s0 =
+-		(Te4[(t0 >> 24)       ] & 0xff000000) ^
+-		(Te4[(t1 >> 16) & 0xff] & 0x00ff0000) ^
+-		(Te4[(t2 >>  8) & 0xff] & 0x0000ff00) ^
+-		(Te4[(t3      ) & 0xff] & 0x000000ff) ^
+-		rk[0];
+-	PUTU32(out     , s0);
+-	s1 =
+-		(Te4[(t1 >> 24)       ] & 0xff000000) ^
+-		(Te4[(t2 >> 16) & 0xff] & 0x00ff0000) ^
+-		(Te4[(t3 >>  8) & 0xff] & 0x0000ff00) ^
+-		(Te4[(t0      ) & 0xff] & 0x000000ff) ^
+-		rk[1];
+-	PUTU32(out +  4, s1);
+-	s2 =
+-		(Te4[(t2 >> 24)       ] & 0xff000000) ^
+-		(Te4[(t3 >> 16) & 0xff] & 0x00ff0000) ^
+-		(Te4[(t0 >>  8) & 0xff] & 0x0000ff00) ^
+-		(Te4[(t1      ) & 0xff] & 0x000000ff) ^
+-		rk[2];
+-	PUTU32(out +  8, s2);
+-	s3 =
+-		(Te4[(t3 >> 24)       ] & 0xff000000) ^
+-		(Te4[(t0 >> 16) & 0xff] & 0x00ff0000) ^
+-		(Te4[(t1 >>  8) & 0xff] & 0x0000ff00) ^
+-		(Te4[(t2      ) & 0xff] & 0x000000ff) ^
+-		rk[3];
+-	PUTU32(out + 12, s3);
+-}
+-
+-/*
+- * Decrypt a single block
+- * in and out can overlap
+- */
+-void AES_decrypt(const unsigned char *in, unsigned char *out,
+-		 const AES_KEY *key) {
+-
+-	const u32 *rk;
+-	u32 s0, s1, s2, s3, t0, t1, t2, t3;
+-#ifndef FULL_UNROLL
+-	int r;
+-#endif /* ?FULL_UNROLL */
+-
+-	assert(in && out && key);
+-	rk = key->rd_key;
+-
+-	/*
+-	 * map byte array block to cipher state
+-	 * and add initial round key:
+-	 */
+-    s0 = GETU32(in     ) ^ rk[0];
+-    s1 = GETU32(in +  4) ^ rk[1];
+-    s2 = GETU32(in +  8) ^ rk[2];
+-    s3 = GETU32(in + 12) ^ rk[3];
+-#ifdef FULL_UNROLL
+-    /* round 1: */
+-    t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[ 4];
+-    t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[ 5];
+-    t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[ 6];
+-    t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[ 7];
+-    /* round 2: */
+-    s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[ 8];
+-    s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[ 9];
+-    s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[10];
+-    s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[11];
+-    /* round 3: */
+-    t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[12];
+-    t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[13];
+-    t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[14];
+-    t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[15];
+-    /* round 4: */
+-    s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[16];
+-    s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[17];
+-    s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[18];
+-    s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[19];
+-    /* round 5: */
+-    t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[20];
+-    t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[21];
+-    t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[22];
+-    t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[23];
+-    /* round 6: */
+-    s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[24];
+-    s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[25];
+-    s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[26];
+-    s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[27];
+-    /* round 7: */
+-    t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[28];
+-    t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[29];
+-    t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[30];
+-    t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[31];
+-    /* round 8: */
+-    s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[32];
+-    s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[33];
+-    s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[34];
+-    s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[35];
+-    /* round 9: */
+-    t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[36];
+-    t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[37];
+-    t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[38];
+-    t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[39];
+-    if (key->rounds > 10) {
+-        /* round 10: */
+-        s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[40];
+-        s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[41];
+-        s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[42];
+-        s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[43];
+-        /* round 11: */
+-        t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[44];
+-        t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[45];
+-        t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[46];
+-        t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[47];
+-        if (key->rounds > 12) {
+-            /* round 12: */
+-            s0 = Td0[t0 >> 24] ^ Td1[(t3 >> 16) & 0xff] ^ Td2[(t2 >>  8) & 0xff] ^ Td3[t1 & 0xff] ^ rk[48];
+-            s1 = Td0[t1 >> 24] ^ Td1[(t0 >> 16) & 0xff] ^ Td2[(t3 >>  8) & 0xff] ^ Td3[t2 & 0xff] ^ rk[49];
+-            s2 = Td0[t2 >> 24] ^ Td1[(t1 >> 16) & 0xff] ^ Td2[(t0 >>  8) & 0xff] ^ Td3[t3 & 0xff] ^ rk[50];
+-            s3 = Td0[t3 >> 24] ^ Td1[(t2 >> 16) & 0xff] ^ Td2[(t1 >>  8) & 0xff] ^ Td3[t0 & 0xff] ^ rk[51];
+-            /* round 13: */
+-            t0 = Td0[s0 >> 24] ^ Td1[(s3 >> 16) & 0xff] ^ Td2[(s2 >>  8) & 0xff] ^ Td3[s1 & 0xff] ^ rk[52];
+-            t1 = Td0[s1 >> 24] ^ Td1[(s0 >> 16) & 0xff] ^ Td2[(s3 >>  8) & 0xff] ^ Td3[s2 & 0xff] ^ rk[53];
+-            t2 = Td0[s2 >> 24] ^ Td1[(s1 >> 16) & 0xff] ^ Td2[(s0 >>  8) & 0xff] ^ Td3[s3 & 0xff] ^ rk[54];
+-            t3 = Td0[s3 >> 24] ^ Td1[(s2 >> 16) & 0xff] ^ Td2[(s1 >>  8) & 0xff] ^ Td3[s0 & 0xff] ^ rk[55];
+-        }
+-    }
+-	rk += key->rounds << 2;
+-#else  /* !FULL_UNROLL */
+-    /*
+-     * Nr - 1 full rounds:
+-     */
+-    r = key->rounds >> 1;
+-    for (;;) {
+-        t0 =
+-            Td0[(s0 >> 24)       ] ^
+-            Td1[(s3 >> 16) & 0xff] ^
+-            Td2[(s2 >>  8) & 0xff] ^
+-            Td3[(s1      ) & 0xff] ^
+-            rk[4];
+-        t1 =
+-            Td0[(s1 >> 24)       ] ^
+-            Td1[(s0 >> 16) & 0xff] ^
+-            Td2[(s3 >>  8) & 0xff] ^
+-            Td3[(s2      ) & 0xff] ^
+-            rk[5];
+-        t2 =
+-            Td0[(s2 >> 24)       ] ^
+-            Td1[(s1 >> 16) & 0xff] ^
+-            Td2[(s0 >>  8) & 0xff] ^
+-            Td3[(s3      ) & 0xff] ^
+-            rk[6];
+-        t3 =
+-            Td0[(s3 >> 24)       ] ^
+-            Td1[(s2 >> 16) & 0xff] ^
+-            Td2[(s1 >>  8) & 0xff] ^
+-            Td3[(s0      ) & 0xff] ^
+-            rk[7];
+-
+-        rk += 8;
+-        if (--r == 0) {
+-            break;
+-        }
+-
+-        s0 =
+-            Td0[(t0 >> 24)       ] ^
+-            Td1[(t3 >> 16) & 0xff] ^
+-            Td2[(t2 >>  8) & 0xff] ^
+-            Td3[(t1      ) & 0xff] ^
+-            rk[0];
+-        s1 =
+-            Td0[(t1 >> 24)       ] ^
+-            Td1[(t0 >> 16) & 0xff] ^
+-            Td2[(t3 >>  8) & 0xff] ^
+-            Td3[(t2      ) & 0xff] ^
+-            rk[1];
+-        s2 =
+-            Td0[(t2 >> 24)       ] ^
+-            Td1[(t1 >> 16) & 0xff] ^
+-            Td2[(t0 >>  8) & 0xff] ^
+-            Td3[(t3      ) & 0xff] ^
+-            rk[2];
+-        s3 =
+-            Td0[(t3 >> 24)       ] ^
+-            Td1[(t2 >> 16) & 0xff] ^
+-            Td2[(t1 >>  8) & 0xff] ^
+-            Td3[(t0      ) & 0xff] ^
+-            rk[3];
+-    }
+-#endif /* ?FULL_UNROLL */
+-    /*
+-	 * apply last round and
+-	 * map cipher state to byte array block:
+-	 */
+-   	s0 =
+-   		(Td4[(t0 >> 24)       ] & 0xff000000) ^
+-   		(Td4[(t3 >> 16) & 0xff] & 0x00ff0000) ^
+-   		(Td4[(t2 >>  8) & 0xff] & 0x0000ff00) ^
+-   		(Td4[(t1      ) & 0xff] & 0x000000ff) ^
+-   		rk[0];
+-	PUTU32(out     , s0);
+-   	s1 =
+-   		(Td4[(t1 >> 24)       ] & 0xff000000) ^
+-   		(Td4[(t0 >> 16) & 0xff] & 0x00ff0000) ^
+-   		(Td4[(t3 >>  8) & 0xff] & 0x0000ff00) ^
+-   		(Td4[(t2      ) & 0xff] & 0x000000ff) ^
+-   		rk[1];
+-	PUTU32(out +  4, s1);
+-   	s2 =
+-   		(Td4[(t2 >> 24)       ] & 0xff000000) ^
+-   		(Td4[(t1 >> 16) & 0xff] & 0x00ff0000) ^
+-   		(Td4[(t0 >>  8) & 0xff] & 0x0000ff00) ^
+-   		(Td4[(t3      ) & 0xff] & 0x000000ff) ^
+-   		rk[2];
+-	PUTU32(out +  8, s2);
+-   	s3 =
+-   		(Td4[(t3 >> 24)       ] & 0xff000000) ^
+-   		(Td4[(t2 >> 16) & 0xff] & 0x00ff0000) ^
+-   		(Td4[(t1 >>  8) & 0xff] & 0x0000ff00) ^
+-   		(Td4[(t0      ) & 0xff] & 0x000000ff) ^
+-   		rk[3];
+-	PUTU32(out + 12, s3);
+-}
+-
+-#endif /* AES_ASM */
+-
+-void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
+-		     const unsigned long length, const AES_KEY *key,
+-		     unsigned char *ivec, const int enc) 
+-{
+-
+-	unsigned long n;
+-	unsigned long len = length;
+-	unsigned char tmp[AES_BLOCK_SIZE];
+-
+-	assert(in && out && key && ivec);
+-
+-	if (enc) {
+-		while (len >= AES_BLOCK_SIZE) {
+-			for(n=0; n < AES_BLOCK_SIZE; ++n)
+-				tmp[n] = in[n] ^ ivec[n];
+-			AES_encrypt(tmp, out, key);
+-			memcpy(ivec, out, AES_BLOCK_SIZE);
+-			len -= AES_BLOCK_SIZE;
+-			in += AES_BLOCK_SIZE;
+-			out += AES_BLOCK_SIZE;
+-		}
+-		if (len) {
+-			for(n=0; n < len; ++n)
+-				tmp[n] = in[n] ^ ivec[n];
+-			for(n=len; n < AES_BLOCK_SIZE; ++n)
+-				tmp[n] = ivec[n];
+-			AES_encrypt(tmp, tmp, key);
+-			memcpy(out, tmp, AES_BLOCK_SIZE);
+-			memcpy(ivec, tmp, AES_BLOCK_SIZE);
+-		}			
+-	} else {
+-		while (len >= AES_BLOCK_SIZE) {
+-			memcpy(tmp, in, AES_BLOCK_SIZE);
+-			AES_decrypt(in, out, key);
+-			for(n=0; n < AES_BLOCK_SIZE; ++n)
+-				out[n] ^= ivec[n];
+-			memcpy(ivec, tmp, AES_BLOCK_SIZE);
+-			len -= AES_BLOCK_SIZE;
+-			in += AES_BLOCK_SIZE;
+-			out += AES_BLOCK_SIZE;
+-		}
+-		if (len) {
+-			memcpy(tmp, in, AES_BLOCK_SIZE);
+-			AES_decrypt(tmp, tmp, key);
+-			for(n=0; n < len; ++n)
+-				out[n] = tmp[n] ^ ivec[n];
+-			memcpy(ivec, tmp, AES_BLOCK_SIZE);
+-		}			
+-	}
+-}
+diff -r 58bf50a2c754 tools/blktap/drivers/aes.h
+--- a/tools/blktap/drivers/aes.h	Thu Jun 19 11:15:57 2008 +0100
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,26 +0,0 @@
+-#ifndef QEMU_AES_H
+-#define QEMU_AES_H
+-
+-#define AES_MAXNR 14
+-#define AES_BLOCK_SIZE 16
+-
+-struct aes_key_st {
+-    uint32_t rd_key[4 *(AES_MAXNR + 1)];
+-    int rounds;
+-};
+-typedef struct aes_key_st AES_KEY;
+-
+-int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
+-	AES_KEY *key);
+-int AES_set_decrypt_key(const unsigned char *userKey, const int bits,
+-	AES_KEY *key);
+-
+-void AES_encrypt(const unsigned char *in, unsigned char *out,
+-	const AES_KEY *key);
+-void AES_decrypt(const unsigned char *in, unsigned char *out,
+-	const AES_KEY *key);
+-void AES_cbc_encrypt(const unsigned char *in, unsigned char *out,
+-		     const unsigned long length, const AES_KEY *key,
+-		     unsigned char *ivec, const int enc);
+-
+-#endif
+diff -r 58bf50a2c754 tools/blktap/drivers/block-qcow.c
+--- a/tools/blktap/drivers/block-qcow.c	Thu Jun 19 11:15:57 2008 +0100
++++ b/tools/blktap/drivers/block-qcow.c	Fri Jun 20 23:24:04 2008 +0200
+@@ -34,9 +34,8 @@
+ #include <zlib.h>
+ #include <inttypes.h>
+ #include <libaio.h>
+-#include <openssl/md5.h>
++#include <gcrypt.h>
+ #include "bswap.h"
+-#include "aes.h"
+ #include "tapdisk.h"
+ #include "tapaio.h"
+ 
+@@ -113,7 +112,6 @@ struct tdqcow_state {
+ 	char *name;                    /*Record of the filename*/
+ 	uint32_t backing_file_size;
+ 	uint64_t backing_file_offset;
+-	int encrypted;                 /*File contents are encrypted or plain*/
+ 	int cluster_bits;              /*Determines length of cluster as 
+ 					*indicated by file hdr*/
+ 	int cluster_size;              /*Length of cluster*/
+@@ -139,9 +137,6 @@ struct tdqcow_state {
+ 	uint64_t cluster_cache_offset; /**/
+ 	uint32_t crypt_method;         /*current crypt method, 0 if no 
+ 					*key yet */
+-	uint32_t crypt_method_header;  /**/
+-	AES_KEY aes_encrypt_key;       /*AES key*/
+-	AES_KEY aes_decrypt_key;       /*AES key*/
+         /* libaio state */
+         tap_aio_context_t   aio_ctx;
+         int                 max_aio_reqs;
+@@ -241,21 +236,11 @@ static int init_aio_state(struct disk_dr
+ 
+ static uint32_t gen_cksum(char *ptr, int len)
+ {
+-	unsigned char *md;
+-	uint32_t ret;
++	uint32_t md[4];
+ 
+-	md = malloc(MD5_DIGEST_LENGTH);
++	gcry_md_hash_buffer(GCRY_MD_MD5, md, ptr, len);
+ 
+-	if(!md) return 0;
+-
+-	if (MD5((unsigned char *)ptr, len, md) != md) {
+-		free(md);
+-		return 0;
+-	}
+-
+-	memcpy(&ret, md, sizeof(uint32_t));
+-	free(md);
+-	return ret;
++	return md[0];
+ }
+ 
+ static int get_filesize(char *filename, uint64_t *size, struct stat *st)
+@@ -291,47 +276,6 @@ static int get_filesize(char *filename, 
+ 		}
+ 		close(fd);
+ 	} else *size = (st->st_size >> SECTOR_SHIFT);	
+-	return 0;
+-}
+-
+-static int qcow_set_key(struct tdqcow_state *s, const char *key)
+-{
+-	uint8_t keybuf[16];
+-	int len, i;
+-	
+-	memset(keybuf, 0, 16);
+-	len = strlen(key);
+-	if (len > 16)
+-		len = 16;
+-	/* XXX: we could compress the chars to 7 bits to increase
+-	   entropy */
+-	for (i = 0; i < len; i++) {
+-		keybuf[i] = key[i];
+-	}
+-	s->crypt_method = s->crypt_method_header;
+-	
+-	if (AES_set_encrypt_key(keybuf, 128, &s->aes_encrypt_key) != 0)
+-		return -1;
+-	if (AES_set_decrypt_key(keybuf, 128, &s->aes_decrypt_key) != 0)
+-		return -1;
+-#if 0
+-	/* test */
+-	{
+-		uint8_t in[16];
+-		uint8_t out[16];
+-		uint8_t tmp[16];
+-		for (i=0; i<16; i++)
+-			in[i] = i;
+-		AES_encrypt(in, tmp, &s->aes_encrypt_key);
+-		AES_decrypt(tmp, out, &s->aes_decrypt_key);
+-		for (i = 0; i < 16; i++)
+-			DPRINTF(" %02x", tmp[i]);
+-		DPRINTF("\n");
+-		for (i = 0; i < 16; i++)
+-			DPRINTF(" %02x", out[i]);
+-		DPRINTF("\n");
+-	}
+-#endif
+ 	return 0;
+ }
+ 
+@@ -406,33 +350,6 @@ static void aio_unlock(struct tdqcow_sta
+ 
+ 	--s->sector_lock[sector];
+ 	return;
+-}
+-
+-/* 
+- * The crypt function is compatible with the linux cryptoloop
+- * algorithm for < 4 GB images. NOTE: out_buf == in_buf is
+- * supported .
+- */
+-static void encrypt_sectors(struct tdqcow_state *s, int64_t sector_num,
+-                            uint8_t *out_buf, const uint8_t *in_buf,
+-                            int nb_sectors, int enc,
+-                            const AES_KEY *key)
+-{
+-	union {
+-		uint64_t ll[2];
+-		uint8_t b[16];
+-	} ivec;
+-	int i;
+-	
+-	for (i = 0; i < nb_sectors; i++) {
+-		ivec.ll[0] = cpu_to_le64(sector_num);
+-		ivec.ll[1] = 0;
+-		AES_cbc_encrypt(in_buf, out_buf, 512, key, 
+-				ivec.b, enc);
+-		sector_num++;
+-		in_buf += 512;
+-		out_buf += 512;
+-	}
+ }
+ 
+ static int qtruncate(int fd, off_t length, int sparse)
+@@ -694,30 +611,6 @@ found:
+ 					return 0;
+ 				}
+ 				s->fd_end = (cluster_offset + s->cluster_size);
+-				/* if encrypted, we must initialize the cluster
+-				   content which won't be written */
+-				if (s->crypt_method && 
+-				    (n_end - n_start) < s->cluster_sectors) {
+-					uint64_t start_sect;
+-					start_sect = (offset & 
+-						      ~(s->cluster_size - 1)) 
+-							      >> 9;
+-					memset(s->cluster_data + 512, 
+-					       0xaa, 512);
+-					for (i = 0; i < s->cluster_sectors;i++)
+-					{
+-						if (i < n_start || i >= n_end) 
+-						{
+-							encrypt_sectors(s, start_sect + i, 
+-									s->cluster_data, 
+-									s->cluster_data + 512, 1, 1,
+-									&s->aes_encrypt_key);
+-							lseek(s->fd, cluster_offset + i * 512, SEEK_SET);
+-							if (write(s->fd, s->cluster_data, 512) != 512)
+-								return -1;
+-						}
+-					}
+-				}
+ 			} else {
+ 				cluster_offset |= QCOW_OFLAG_COMPRESSED | 
+ 					(uint64_t)compressed_size 
+@@ -890,11 +783,8 @@ int tdqcow_open (struct disk_driver *dd,
+ 		goto fail;
+ 	if (header->size <= 1 || header->cluster_bits < 9)
+ 		goto fail;
+-	if (header->crypt_method > QCOW_CRYPT_AES)
++	if (header->crypt_method > QCOW_CRYPT_NONE)
+ 		goto fail;
+-	s->crypt_method_header = header->crypt_method;
+-	if (s->crypt_method_header)
+-		s->encrypted = 1;
+ 	s->cluster_bits = header->cluster_bits;
+ 	s->cluster_size = 1 << s->cluster_bits;
+ 	s->cluster_sectors = 1 << (s->cluster_bits - 9);
+@@ -1105,19 +995,9 @@ int tdqcow_queue_write(struct disk_drive
+ 			return cb(dd, -EIO, sector, nb_sectors, id, private);
+ 		}
+ 
+-		if (s->crypt_method) {
+-			encrypt_sectors(s, sector, s->cluster_data, 
+-					(unsigned char *)buf, n, 1,
+-					&s->aes_encrypt_key);
+-			async_write(s, n * 512, 
+-				    (cluster_offset + index_in_cluster*512),
+-				    (char *)s->cluster_data, cb, id, sector, 
+-				    private);
+-		} else {
+-			async_write(s, n * 512, 
+-				    (cluster_offset + index_in_cluster*512),
+-				    buf, cb, id, sector, private);
+-		}
++		async_write(s, n * 512, 
++			    (cluster_offset + index_in_cluster*512),
++			    buf, cb, id, sector, private);
+ 		
+ 		nb_sectors -= n;
+ 		sector += n;
+@@ -1191,13 +1071,6 @@ repeat:
+                 pio = &prv->pending_aio[(long)io->data];
+ 
+ 		aio_unlock(prv, pio->sector);
+-
+-		if (prv->crypt_method)
+-			encrypt_sectors(prv, pio->sector, 
+-					(unsigned char *)pio->buf, 
+-					(unsigned char *)pio->buf, 
+-					pio->nb_sectors, 0, 
+-					&prv->aes_decrypt_key);
+ 
+ 		rsp += pio->cb(dd, ep->res == io->u.c.nbytes ? 0 : 1, 
+ 			       pio->sector, pio->nb_sectors,
+diff -r 58bf50a2c754 tools/check/check_crypto_lib
+--- a/tools/check/check_crypto_lib	Thu Jun 19 11:15:57 2008 +0100
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,23 +0,0 @@
+-#!/bin/sh
+-# CHECK-BUILD CHECK-INSTALL
+-
+-RC=0
+-
+-case $(uname -s) in
+-FreeBSD|NetBSD|OpenBSD)
+-	exit 0
+-	;;
+-*)
+-	;;
+-esac
+-
+-PATH=/sbin:$PATH
+-set -e
+-ldconfig -p 2>&1 | grep -q libcrypto.so || RC=1
+-
+-if test ${RC} -ne 0; then
+-        echo
+-        echo " *** Check for crypto library FAILED"
+-fi
+-
+-exit ${RC}
+diff -r 58bf50a2c754 tools/check/check_openssl_devel
+--- a/tools/check/check_openssl_devel	Thu Jun 19 11:15:57 2008 +0100
++++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
+@@ -1,14 +0,0 @@
+-#!/bin/sh
+-# CHECK-BUILD
+-
+-RC=0
+-
+-set -e
+-test -r /usr/include/openssl/md5.h || RC=1 
+-
+-if test ${RC} -ne 0; then
+-	echo
+-	echo " *** Check for openssl headers FAILED"
+-fi
+-
+-exit ${RC}
--- xen-3-3.2.1.orig/debian/patches/series
+++ xen-3-3.2.1/debian/patches/series
@@ -0,0 +1,18 @@
+CVE-2008-1952.patch
+tools-libxc-loder-bzimage.patch
+config-prefix.diff
+tools-rpath.diff
+tools-prefix.diff
+tools-misc-prefix.diff
+tools-python-prefix.diff
+version.patch
+tools-lib-abiname.diff
+tools-python-xen-xm-relative-path.diff
+tools-ioemu-arch.diff
+tools-ioemu-config.diff
+tools-pygrub-prefix.diff
+tools-libfsimage-prefix.diff
+disable-features.diff
+tools-misc-xend-race.diff
+doc-remove-unused.diff
+tools-blktap-crypto.patch
--- xen-3-3.2.1.orig/debian/patches/tools-prefix.diff
+++ xen-3-3.2.1/debian/patches/tools-prefix.diff
@@ -0,0 +1,252 @@
+--- xen-3.orig/tools/blktap/drivers/Makefile
++++ xen-3/tools/blktap/drivers/Makefile
+@@ -5,7 +5,7 @@
+ 
+ IBIN         = blktapctrl tapdisk
+ QCOW_UTIL    = img2qcow qcow2raw qcow-create
+-INST_DIR     = /usr/sbin
++INST_DIR     = /usr/$(BINDIR)
+ LIBAIO_DIR   = ../../libaio/src
+ 
+ CFLAGS   += -Werror
+@@ -52,6 +52,7 @@
+ 	$(CC) $(CFLAGS) -o $* $(BLK-OBJS) $*.c $(AIOLIBS) $(LIBS)
+ 
+ install: all
++	$(INSTALL_DIR) $(DESTDIR)$(INST_DIR)
+ 	$(INSTALL_PROG) $(IBIN) $(QCOW_UTIL) $(VHD_UTIL) $(DESTDIR)$(INST_DIR)
+ 
+ clean:
+--- xen-3.orig/tools/console/Makefile
++++ xen-3/tools/console/Makefile
+@@ -2,8 +2,7 @@
+ XEN_ROOT=../..
+ include $(XEN_ROOT)/tools/Rules.mk
+ 
+-DAEMON_INSTALL_DIR = /usr/sbin
+-CLIENT_INSTALL_DIR = /usr/$(LIBDIR)/xen/bin
++DIR = /usr/$(BINDIR)
+ 
+ CFLAGS  += -Werror
+ 
+@@ -31,7 +30,5 @@
+ 
+ .PHONY: install
+ install: $(BIN)
+-	$(INSTALL_DIR) $(DESTDIR)/$(DAEMON_INSTALL_DIR)
+-	$(INSTALL_PROG) xenconsoled $(DESTDIR)/$(DAEMON_INSTALL_DIR)
+-	$(INSTALL_DIR) $(DESTDIR)/$(CLIENT_INSTALL_DIR)
+-	$(INSTALL_PROG) xenconsole $(DESTDIR)/$(CLIENT_INSTALL_DIR)
++	$(INSTALL_DIR) $(DESTDIR)/$(DIR)
++	$(INSTALL_PROG) xenconsole xenconsoled $(DESTDIR)/$(DIR)
+--- xen-3.orig/tools/misc/Makefile
++++ xen-3/tools/misc/Makefile
+@@ -13,8 +13,7 @@
+ TARGETS-$(CONFIG_X86) += xen-detect
+ TARGETS := $(TARGETS-y)
+ 
+-INSTALL_BIN  = $(TARGETS) xencons
+-INSTALL_SBIN = netfix xm xen-bugtool xen-python-path xend xenperf xsview
++INSTALL_TARGETS = $(TARGETS) xencons netfix xm xen-bugtool xen-python-path xend xsview
+ 
+ .PHONY: all
+ all: build
+@@ -26,10 +25,8 @@
+ 
+ .PHONY: install
+ install: build
+-	[ -d $(DESTDIR)/usr/bin ] || $(INSTALL_DIR) $(DESTDIR)/usr/bin
+-	[ -d $(DESTDIR)/usr/sbin ] || $(INSTALL_DIR) $(DESTDIR)/usr/sbin
+-	$(INSTALL_PROG) $(INSTALL_BIN) $(DESTDIR)/usr/bin
+-	$(INSTALL_PROG) $(INSTALL_SBIN) $(DESTDIR)/usr/sbin
++	$(INSTALL_DIR) $(DESTDIR)/usr/$(BINDIR)
++	$(INSTALL_PROG) $(INSTALL_TARGETS) $(DESTDIR)/usr/$(BINDIR)
+ 	$(MAKE) -C lomount install
+ #       No sense in installing miniterm on the Xen box.
+ #	$(MAKE) -C miniterm install
+--- xen-3.orig/tools/misc/lomount/Makefile
++++ xen-3/tools/misc/lomount/Makefile
+@@ -16,7 +16,7 @@
+ 
+ .PHONY: install
+ install: build
+-	$(INSTALL_PROG) $(BIN) $(SCRIPTS) $(DESTDIR)/usr/bin
++	$(INSTALL_PROG) $(BIN) $(SCRIPTS) $(DESTDIR)/usr/$(BINDIR)
+ 
+ .PHONY: clean
+ clean:
+--- xen-3.orig/tools/python/Makefile
++++ xen-3/tools/python/Makefile
+@@ -77,7 +77,7 @@
+ ifndef XEN_PYTHON_NATIVE_INSTALL
+ install: LIBPATH=$(shell PYTHONPATH=xen/util python -c "import auxbin; print auxbin.libpath()")
+ install: install-messages install-dtd
+-	CC="$(CC)" CFLAGS="$(CFLAGS)" python setup.py install --home="$(DESTDIR)/usr" --prefix="" --force --install-lib="$(DESTDIR)$(LIBPATH)/python"
++	CC="$(CC)" CFLAGS="$(CFLAGS)" python setup.py install --home="$(DESTDIR)/usr/$(LIBDIR)" --install-lib=$(DESTDIR)/usr/$(LIBDIR)/python --force
+ else
+ install: install-messages install-dtd
+ 	CC="$(CC)" CFLAGS="$(CFLAGS)" python setup.py install --root="$(DESTDIR)" --force
+--- xen-3.orig/tools/xcutils/Makefile
++++ xen-3/tools/xcutils/Makefile
+@@ -11,7 +11,7 @@
+ XEN_ROOT	= ../..
+ include $(XEN_ROOT)/tools/Rules.mk
+ 
+-PROGRAMS_INSTALL_DIR = /usr/$(LIBDIR)/xen/bin
++PROGRAMS_INSTALL_DIR = /usr/$(BINDIR)
+ 
+ INCLUDES += -I $(XEN_LIBXC) -I $(XEN_XENSTORE)
+ 
+--- xen-3.orig/tools/xenmon/Makefile
++++ xen-3/tools/xenmon/Makefile
+@@ -13,8 +13,6 @@
+ XEN_ROOT=../..
+ include $(XEN_ROOT)/tools/Rules.mk
+ 
+-sbindir=/usr/sbin
+-
+ CFLAGS  += -Werror
+ CFLAGS  += -I $(XEN_XC)
+ CFLAGS  += -I $(XEN_LIBXC)
+@@ -32,10 +30,8 @@
+ 
+ .PHONY: install
+ install: build
+-	[ -d $(DESTDIR)$(sbindir) ] || $(INSTALL_DIR) $(DESTDIR)$(sbindir)
+-	$(INSTALL_PROG) xenbaked $(DESTDIR)$(sbindir)/xenbaked
+-	$(INSTALL_PROG) xentrace_setmask  $(DESTDIR)$(sbindir)/xentrace_setmask
+-	$(INSTALL_PROG) xenmon.py  $(DESTDIR)$(sbindir)/xenmon.py
++	$(INSTALL_DIR) $(DESTDIR)/usr/$(BINDIR)
++	$(INSTALL_PROG) xenbaked xenmon.py xentrace_setmask $(DESTDIR)/usr/$(BINDIR)
+ 
+ .PHONY: clean
+ clean:
+--- xen-3.orig/tools/xenstat/xentop/Makefile
++++ xen-3/tools/xenstat/xentop/Makefile
+@@ -21,7 +21,6 @@
+ prefix=/usr
+ mandir=$(prefix)/share/man
+ man1dir=$(mandir)/man1
+-sbindir=$(prefix)/sbin
+ 
+ CFLAGS += -DGCC_PRINTF -Wall -Werror -I$(XEN_LIBXENSTAT)
+ LDFLAGS += -L$(XEN_LIBXENSTAT)
+@@ -34,7 +33,7 @@
+ 
+ .PHONY: install
+ install: xentop xentop.1
+-	$(INSTALL_PROG) xentop $(DESTDIR)$(sbindir)/xentop
++	$(INSTALL_PROG) -D xentop $(DESTDIR)/usr/$(BINDIR)/xentop
+ 	$(INSTALL_DIR) $(DESTDIR)$(man1dir)
+ 	$(INSTALL_DATA) xentop.1 $(DESTDIR)$(man1dir)/xentop.1
+ 
+--- xen-3.orig/tools/xenstore/Makefile
++++ xen-3/tools/xenstore/Makefile
+@@ -81,18 +81,16 @@
+ install: all
+ 	$(INSTALL_DIR) $(DESTDIR)/var/run/xenstored
+ 	$(INSTALL_DIR) $(DESTDIR)/var/lib/xenstored
+-	$(INSTALL_DIR) $(DESTDIR)/usr/bin
+-	$(INSTALL_DIR) $(DESTDIR)/usr/sbin
++	$(INSTALL_DIR) $(DESTDIR)/usr/$(BINDIR)
++	$(INSTALL_DIR) $(DESTDIR)/usr/$(PUBLIC_BINDIR)
+ 	$(INSTALL_DIR) $(DESTDIR)/usr/include
+-	$(INSTALL_PROG) xenstored $(DESTDIR)/usr/sbin
+-	$(INSTALL_PROG) $(CLIENTS) $(DESTDIR)/usr/bin
+-	$(INSTALL_PROG) xenstore-control $(DESTDIR)/usr/bin
+-	$(INSTALL_PROG) xenstore-ls $(DESTDIR)/usr/bin
+-	$(INSTALL_DIR) $(DESTDIR)/usr/$(LIBDIR)
+-	$(INSTALL_PROG) libxenstore.so.$(MAJOR).$(MINOR) $(DESTDIR)/usr/$(LIBDIR)
+-	ln -sf libxenstore.so.$(MAJOR).$(MINOR) $(DESTDIR)/usr/$(LIBDIR)/libxenstore.so.$(MAJOR)
+-	ln -sf libxenstore.so.$(MAJOR) $(DESTDIR)/usr/$(LIBDIR)/libxenstore.so
+-	$(INSTALL_DATA) libxenstore.a $(DESTDIR)/usr/$(LIBDIR)
++	$(INSTALL_PROG) xenstore-control xenstored $(DESTDIR)/usr/$(BINDIR)
++	$(INSTALL_PROG) xenstore-ls $(CLIENTS) $(DESTDIR)/usr/$(PUBLIC_BINDIR)
++	$(INSTALL_DIR) $(DESTDIR)/usr/$(PUBLIC_LIBDIR)
++	$(INSTALL_PROG) libxenstore.so.$(MAJOR).$(MINOR) $(DESTDIR)/usr/$(PUBLIC_LIBDIR)
++	ln -sf libxenstore.so.$(MAJOR).$(MINOR) $(DESTDIR)/usr/$(PUBLIC_LIBDIR)/libxenstore.so.$(MAJOR)
++	ln -sf libxenstore.so.$(MAJOR) $(DESTDIR)/usr/$(PUBLIC_LIBDIR)/libxenstore.so
++	$(INSTALL_DATA) libxenstore.a $(DESTDIR)/usr/$(PUBLIC_LIBDIR)
+ 	$(INSTALL_DATA) xs.h $(DESTDIR)/usr/include
+ 	$(INSTALL_DATA) xs_lib.h $(DESTDIR)/usr/include
+ 
+--- xen-3.orig/tools/xentrace/Makefile
++++ xen-3/tools/xentrace/Makefile
+@@ -36,15 +36,11 @@
+ 
+ .PHONY: install
+ install: build
+-	[ -d $(DESTDIR)/usr/bin ] || $(INSTALL_DIR) $(DESTDIR)/usr/bin
+-	[ -z "$(LIBBIN)" ] || [ -d $(DESTDIR)/usr/$(LIBDIR)/xen/bin ] || \
+-		$(INSTALL_DIR) $(DESTDIR)/usr/$(LIBDIR)/xen/bin
+-	[ -d $(DESTDIR)/usr/share/man/man1 ] || \
+-		$(INSTALL_DIR) $(DESTDIR)/usr/share/man/man1
+-	[ -d $(DESTDIR)/usr/share/man/man8 ] || \
+-		$(INSTALL_DIR) $(DESTDIR)/usr/share/man/man8
+-	$(INSTALL_PROG) $(BIN) $(SCRIPTS) $(DESTDIR)/usr/bin
+-	[ -z "$(LIBBIN)" ] || $(INSTALL_PROG) $(LIBBIN) $(DESTDIR)/usr/$(LIBDIR)/xen/bin
++	$(INSTALL_DIR) $(DESTDIR)/usr/$(BINDIR)
++	$(INSTALL_DIR) $(DESTDIR)/usr/share/man/man1
++	$(INSTALL_DIR) $(DESTDIR)/usr/share/man/man8
++	$(INSTALL_PROG) $(BIN) $(SCRIPTS) $(DESTDIR)/usr/$(BINDIR)
++	[ -z "$(LIBBIN)" ] || $(INSTALL_PROG) $(LIBBIN) $(DESTDIR)/usr/$(BINDIR)
+ 	$(INSTALL_DATA) $(MAN1) $(DESTDIR)/usr/share/man/man1
+ 	$(INSTALL_DATA) $(MAN8) $(DESTDIR)/usr/share/man/man8
+ 
+--- xen-3.orig/tools/ioemu/configure
++++ xen-3/tools/ioemu/configure
+@@ -594,9 +594,9 @@
+     prefix="/usr/local"
+ fi
+ mandir="$prefix/share/man"
+-datadir="$prefix/share/xen/qemu"
++datadir="$prefix/share/xen-$XEN_VERSION/qemu"
+ docdir="$prefix/share/doc/qemu"
+-bindir="$prefix/$libdir/xen/bin"
++bindir="$prefix/lib/xen-$XEN_VERSION/bin"
+ configdir="/etc/xen"
+ fi
+ 
+--- xen-3.orig/tools/firmware/Makefile
++++ xen-3/tools/firmware/Makefile
+@@ -4,7 +4,7 @@
+ # hvmloader is a 32-bit protected mode binary.
+ # It belongs in /usr/lib, not /usr/lib64.
+ TARGET      := hvmloader/hvmloader
+-INST_DIR := $(DESTDIR)/usr/lib/xen/boot
++INST_DIR := $(DESTDIR)/usr/$(PREFIX)/boot
+ 
+ SUBDIRS :=
+ SUBDIRS += rombios rombios/32bit
+--- xen-3.orig/tools/blktap/lib/Makefile
++++ xen-3/tools/blktap/lib/Makefile
+@@ -5,7 +5,7 @@
+ MINOR    = 0
+ SONAME   = libblktap.so.$(MAJOR)
+ 
+-BLKTAP_INSTALL_DIR = /usr/sbin
++BLKTAP_INSTALL_DIR = /usr/$(BINDIR)
+ 
+ INCLUDES += -I. -I.. -I $(XEN_LIBXC) -I $(XEN_XENSTORE)
+ 
+--- xen-3.orig/tools/libxc/Makefile
++++ xen-3/tools/libxc/Makefile
+@@ -104,15 +104,16 @@
+ .PHONY: install
+ install: build
+ 	[ -d $(DESTDIR)/usr/$(LIBDIR) ] || $(INSTALL_DIR) $(DESTDIR)/usr/$(LIBDIR)
++	$(INSTALL_DIR) $(DESTDIR)/usr/$(PUBLIC_LIBDIR)
+ 	[ -d $(DESTDIR)/usr/include ] || $(INSTALL_DIR) $(DESTDIR)/usr/include
+ 	$(INSTALL_PROG) libxenctrl.so.$(MAJOR).$(MINOR) $(DESTDIR)/usr/$(LIBDIR)
+-	$(INSTALL_DATA) libxenctrl.a $(DESTDIR)/usr/$(LIBDIR)
++	$(INSTALL_DATA) libxenctrl.a $(DESTDIR)/usr/$(PUBLIC_LIBDIR)
+ 	ln -sf libxenctrl.so.$(MAJOR).$(MINOR) $(DESTDIR)/usr/$(LIBDIR)/libxenctrl.so.$(MAJOR)
+ 	ln -sf libxenctrl.so.$(MAJOR) $(DESTDIR)/usr/$(LIBDIR)/libxenctrl.so
+ 	$(INSTALL_DATA) xenctrl.h $(DESTDIR)/usr/include
+ 
+ 	$(INSTALL_PROG) libxenguest.so.$(MAJOR).$(MINOR) $(DESTDIR)/usr/$(LIBDIR)
+-	$(INSTALL_DATA) libxenguest.a $(DESTDIR)/usr/$(LIBDIR)
++	$(INSTALL_DATA) libxenguest.a $(DESTDIR)/usr/$(PUBLIC_LIBDIR)
+ 	ln -sf libxenguest.so.$(MAJOR).$(MINOR) $(DESTDIR)/usr/$(LIBDIR)/libxenguest.so.$(MAJOR)
+ 	ln -sf libxenguest.so.$(MAJOR) $(DESTDIR)/usr/$(LIBDIR)/libxenguest.so
+ 	$(INSTALL_DATA) xenguest.h $(DESTDIR)/usr/include
--- xen-3-3.2.1.orig/debian/patches/doc-remove-unused.diff
+++ xen-3-3.2.1/debian/patches/doc-remove-unused.diff
@@ -0,0 +1,12 @@
+--- xen-3.orig/docs/src/interface.tex
++++ xen-3/docs/src/interface.tex
+@@ -1,6 +1,6 @@
+-\documentclass[11pt,twoside,final,openright]{report}
+-\usepackage{a4,graphicx,html,setspace,times}
+-\usepackage{comment,parskip}
++\documentclass[11pt,twoside,final,openright,a4paper]{report}
++\usepackage{graphicx,html,setspace,times}
++\usepackage{parskip}
+ \setstretch{1.15}
+ 
+ % LIBRARY FUNCTIONS
--- xen-3-3.2.1.orig/debian/patches/tools-rpath.diff
+++ xen-3-3.2.1/debian/patches/tools-rpath.diff
@@ -0,0 +1,239 @@
+--- xen-3.orig/tools/Rules.mk
++++ xen-3/tools/Rules.mk
+@@ -5,6 +5,8 @@
+ 
+ include $(XEN_ROOT)/Config.mk
+ 
++LDFLAGS_RPATH = -Wl,-rpath,'$${ORIGIN}$(if $(1),/$(1))'
++
+ XEN_XC             = $(XEN_ROOT)/tools/python/xen/lowlevel/xc
+ XEN_LIBXC          = $(XEN_ROOT)/tools/libxc
+ XEN_XENSTORE       = $(XEN_ROOT)/tools/xenstore
+--- xen-3.orig/tools/python/setup.py
++++ xen-3/tools/python/setup.py
+@@ -5,6 +5,7 @@
+ XEN_ROOT = "../.."
+ 
+ extra_compile_args  = [ "-fno-strict-aliasing", "-Werror" ]
++extra_link_args = [ "-Wl,-rpath,${ORIGIN}/../../.." ]
+ 
+ include_dirs = [ XEN_ROOT + "/tools/libxc",
+                  XEN_ROOT + "/tools/xenstore",
+@@ -18,6 +19,7 @@
+ 
+ xc = Extension("xc",
+                extra_compile_args = extra_compile_args,
++               extra_link_args    = extra_link_args,
+                include_dirs       = include_dirs + [ "xen/lowlevel/xc" ],
+                library_dirs       = library_dirs,
+                libraries          = libraries,
+@@ -25,6 +27,7 @@
+ 
+ xs = Extension("xs",
+                extra_compile_args = extra_compile_args,
++               extra_link_args    = extra_link_args,
+                include_dirs       = include_dirs + [ "xen/lowlevel/xs" ],
+                library_dirs       = library_dirs,
+                libraries          = libraries,
+@@ -32,6 +35,7 @@
+ 
+ scf = Extension("scf",
+                extra_compile_args = extra_compile_args,
++               extra_link_args    = extra_link_args,
+                include_dirs       = include_dirs + [ "xen/lowlevel/scf" ],
+                library_dirs       = library_dirs,
+                libraries          = libraries,
+@@ -39,6 +43,7 @@
+              
+ acm = Extension("acm",
+                extra_compile_args = extra_compile_args,
++               extra_link_args    = extra_link_args,
+                include_dirs       = include_dirs + [ "xen/lowlevel/acm" ],
+                library_dirs       = library_dirs,
+                libraries          = libraries,
+@@ -46,6 +51,7 @@
+ 
+ flask = Extension("flask",
+                extra_compile_args = extra_compile_args,
++               extra_link_args    = extra_link_args,
+                include_dirs       = include_dirs + [ "xen/lowlevel/flask" ] + 
+                                         [ "../flask/libflask/include" ],
+                library_dirs       = library_dirs + [ "../flask/libflask" ],
+@@ -54,6 +60,7 @@
+ 
+ ptsname = Extension("ptsname",
+                extra_compile_args = extra_compile_args,
++               extra_link_args    = extra_link_args,
+                include_dirs       = include_dirs + [ "ptsname" ],
+                library_dirs       = library_dirs,
+                libraries          = libraries,
+--- xen-3.orig/tools/ioemu/Makefile.target
++++ xen-3/tools/ioemu/Makefile.target
+@@ -506,6 +506,8 @@
+ VL_LDFLAGS+=-Wl,-T,$(SRC_PATH)/sparc64.ld
+ endif
+ 
++VL_LDFLAGS+=$(call LDFLAGS_RPATH,../lib)
++
+ ifdef CONFIG_WIN32
+ SDL_LIBS := $(filter-out -mwindows, $(SDL_LIBS)) -mconsole
+ endif
+--- xen-3.orig/tools/libxc/Makefile
++++ xen-3/tools/libxc/Makefile
+@@ -149,7 +149,7 @@
+ 	ln -sf $< $@
+ 
+ libxenctrl.so.$(MAJOR).$(MINOR): $(CTRL_PIC_OBJS)
+-	$(CC) $(CFLAGS) $(LDFLAGS) -Wl,$(SONAME_LDFLAG) -Wl,libxenctrl.so.$(MAJOR) $(SHLIB_CFLAGS) -o $@ $^ -lpthread
++	$(CC) $(CFLAGS) $(LDFLAGS) -Wl,$(SONAME_LDFLAG) -Wl,libxenctrl.so.$(MAJOR) $(SHLIB_CFLAGS) $(call LDFLAGS_RPATH) -o $@ $^ -lpthread
+ 
+ # libxenguest
+ 
+@@ -162,7 +162,7 @@
+ 	ln -sf $< $@
+ 
+ libxenguest.so.$(MAJOR).$(MINOR): $(GUEST_PIC_OBJS) libxenctrl.so
+-	$(CC) $(CFLAGS) $(LDFLAGS) -Wl,$(SONAME_LDFLAG) -Wl,libxenguest.so.$(MAJOR) $(SHLIB_CFLAGS) -o $@ $(GUEST_PIC_OBJS) -lz -lxenctrl -lpthread
++	$(CC) $(CFLAGS) $(LDFLAGS) -Wl,$(SONAME_LDFLAG) -Wl,libxenguest.so.$(MAJOR) $(SHLIB_CFLAGS) $(call LDFLAGS_RPATH) -o $@ $(GUEST_PIC_OBJS) -lz -lxenctrl -lpthread
+ 
+ -include $(DEPS)
+ 
+--- xen-3.orig/tools/xcutils/Makefile
++++ xen-3/tools/xcutils/Makefile
+@@ -24,7 +24,7 @@
+ 
+ PROGRAMS = xc_restore xc_save readnotes
+ 
+-LDLIBS   = -L$(XEN_LIBXC) -L$(XEN_XENSTORE) -lxenguest -lxenctrl -lxenstore
++LDLIBS   = -L$(XEN_LIBXC) -L$(XEN_XENSTORE) -lxenguest -lxenctrl -lxenstore $(call LDFLAGS_RPATH,../lib)
+ 
+ .PHONY: all
+ all: build
+--- xen-3.orig/tools/xenstat/xentop/Makefile
++++ xen-3/tools/xenstat/xentop/Makefile
+@@ -25,6 +25,7 @@
+ 
+ CFLAGS += -DGCC_PRINTF -Wall -Werror -I$(XEN_LIBXENSTAT)
+ LDFLAGS += -L$(XEN_LIBXENSTAT)
++LDFLAGS += $(call LDFLAGS_RPATH,../lib)
+ LDLIBS += -lxenstat $(CURSES_LIBS) $(SOCKET_LIBS)
+ CFLAGS += -DHOST_$(XEN_OS)
+ 
+--- xen-3.orig/tools/misc/Makefile
++++ xen-3/tools/misc/Makefile
+@@ -44,4 +44,4 @@
+ 	$(CC) -c $(CFLAGS) -o $@ $<
+ 
+ xenperf: %: %.o Makefile
+-	$(CC) $(CFLAGS) -o $@ $< -L$(XEN_LIBXC) -lxenctrl
++	$(CC) $(CFLAGS) -o $@ $< -L$(XEN_LIBXC) -lxenctrl $(call LDFLAGS_RPATH,../lib)
+--- xen-3.orig/tools/xentrace/Makefile
++++ xen-3/tools/xentrace/Makefile
+@@ -5,6 +5,7 @@
+ 
+ CFLAGS  += -I $(XEN_XC)
+ CFLAGS  += -I $(XEN_LIBXC)
++LDFLAGS += $(call LDFLAGS_RPATH,../lib)
+ 
+ HDRS     = $(wildcard *.h)
+ OBJS     = $(patsubst %.c,%.o,$(wildcard *.c))
+@@ -52,6 +53,6 @@
+ 	$(RM) *.a *.so *.o *.rpm $(BIN) $(LIBBIN)
+ 
+ %: %.c $(HDRS) Makefile
+-	$(CC) $(CFLAGS) -o $@ $< -L$(XEN_LIBXC) -lxenctrl
++	$(CC) $(CFLAGS) -o $@ $< $(call LDFLAGS_RPATH,../lib) -L$(XEN_LIBXC) -lxenctrl
+ xentrace_%: %.c $(HDRS) Makefile
+-	$(CC) $(CFLAGS) -o $@ $< -L$(XEN_LIBXC) -lxenctrl
++	$(CC) $(CFLAGS) -o $@ $< $(call LDFLAGS_RPATH,../lib) -L$(XEN_LIBXC) -lxenctrl
+--- xen-3.orig/tools/console/Makefile
++++ xen-3/tools/console/Makefile
+@@ -9,6 +9,7 @@
+ 
+ CFLAGS  += -I $(XEN_LIBXC)
+ CFLAGS  += -I $(XEN_XENSTORE)
++LDFLAGS += $(call LDFLAGS_RPATH,../lib)
+ 
+ BIN      = xenconsoled xenconsole
+ 
+@@ -21,11 +22,11 @@
+ 	$(RM) client/*.o daemon/*.o
+ 
+ xenconsoled: $(patsubst %.c,%.o,$(wildcard daemon/*.c))
+-	$(CC) $(CFLAGS) $^ -o $@ -L$(XEN_LIBXC) -L$(XEN_XENSTORE) \
++	$(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS) -L$(XEN_LIBXC) -L$(XEN_XENSTORE) \
+               $(UTIL_LIBS) $(SOCKET_LIBS) -lxenctrl -lxenstore
+ 
+ xenconsole: $(patsubst %.c,%.o,$(wildcard client/*.c))
+-	$(CC) $(CFLAGS) $^ -o $@ -L$(XEN_LIBXC) -L$(XEN_XENSTORE) \
++	$(CC) $(CFLAGS) $^ -o $@ $(LDFLAGS) -L$(XEN_LIBXC) -L$(XEN_XENSTORE) \
+ 	      $(UTIL_LIBS) $(SOCKET_LIBS) -lxenctrl -lxenstore
+ 
+ .PHONY: install
+--- xen-3.orig/tools/xenmon/Makefile
++++ xen-3/tools/xenmon/Makefile
+@@ -19,6 +19,7 @@
+ CFLAGS  += -I $(XEN_XC)
+ CFLAGS  += -I $(XEN_LIBXC)
+ LDFLAGS += -L $(XEN_LIBXC)
++LDFLAGS += $(call LDFLAGS_RPATH,../lib)
+ 
+ BIN = xentrace_setmask xenbaked
+ SCRIPTS = xenmon.py
+--- xen-3.orig/tools/libfsimage/Rules.mk
++++ xen-3/tools/libfsimage/Rules.mk
+@@ -4,6 +4,7 @@
+ 
+ CFLAGS += -I$(XEN_ROOT)/tools/libfsimage/common/ -Werror -Wp,-MD,.$(@F).d
+ LDFLAGS += -L../common/
++LDFLAGS += $(call LDFLAGS_RPATH,../..)
+ 
+ PIC_OBJS := $(patsubst %.c,%.opic,$(LIB_SRCS-y))
+ 
+--- xen-3.orig/tools/pygrub/setup.py
++++ xen-3/tools/pygrub/setup.py
+@@ -4,11 +4,13 @@
+ import sys
+ 
+ extra_compile_args  = [ "-fno-strict-aliasing", "-Werror" ]
++extra_link_args = [ "-Wl,-rpath,${ORIGIN}/.." ]
+ 
+ XEN_ROOT = "../.."
+ 
+ fsimage = Extension("fsimage",
+     extra_compile_args = extra_compile_args,
++    extra_link_args = extra_link_args,
+     include_dirs = [ XEN_ROOT + "/tools/libfsimage/common/" ],
+     library_dirs = [ XEN_ROOT + "/tools/libfsimage/common/" ],
+     libraries = ["fsimage"],
+--- xen-3.orig/tools/blktap/lib/Makefile
++++ xen-3/tools/blktap/lib/Makefile
+@@ -10,6 +10,7 @@
+ INCLUDES += -I. -I.. -I $(XEN_LIBXC) -I $(XEN_XENSTORE)
+ 
+ LIBS     := -lz
++LIBS     += $(call LDFLAGS_RPATH)
+ 
+ SRCS     :=
+ SRCS     += xenbus.c blkif.c xs_api.c
+--- xen-3.orig/tools/blktap/drivers/Makefile
++++ xen-3/tools/blktap/drivers/Makefile
+@@ -25,6 +25,7 @@
+ LIBS      += -lcrypto
+ LIBS      += -lz
+ LIBS      += -L$(XEN_XENSTORE) -lxenstore
++LIBS      += $(call LDFLAGS_RPATH,../lib)
+ 
+ AIOLIBS   := $(LIBAIO_DIR)/libaio.a
+ 
+--- xen-3.orig/tools/xenstore/Makefile
++++ xen-3/tools/xenstore/Makefile
+@@ -33,7 +33,7 @@
+ all: libxenstore.so libxenstore.a xenstored $(CLIENTS) xs_tdb_dump xenstore-control xenstore-ls
+ 
+ xenstored: $(XENSTORED_OBJS)
+-	$(CC) $(CFLAGS) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) -lxenctrl $(SOCKET_LIBS) -o $@
++	$(CC) $(CFLAGS) $(LDFLAGS) $^ $(LOADLIBES) $(LDLIBS) $(call LDFLAGS_RPATH,../lib) -lxenctrl $(SOCKET_LIBS) -o $@
+ 
+ $(CLIENTS): xenstore-%: xenstore_%.o libxenstore.so
+ 	$(CC) $(CFLAGS) $(LDFLAGS) $< $(LOADLIBES) $(LDLIBS) -L. -lxenstore $(SOCKET_LIBS) -o $@
--- xen-3-3.2.1.orig/debian/patches/tools-pygrub-prefix.diff
+++ xen-3-3.2.1/debian/patches/tools-pygrub-prefix.diff
@@ -0,0 +1,29 @@
+--- xen-3.orig/tools/pygrub/Makefile
++++ xen-3/tools/pygrub/Makefile
+@@ -6,13 +6,12 @@
+ all: build
+ .PHONY: build
+ build:
+-	CC="$(CC)" CFLAGS="$(CFLAGS)" python setup.py build
++	CC="$(CC)" CFLAGS="$(CFLAGS)" LIBDIR=$(LIBDIR) python setup.py build
+ 
+ .PHONY: install
+ ifndef XEN_PYTHON_NATIVE_INSTALL
+-install: LIBPATH=$(shell PYTHONPATH=../python/xen/util python -c "import auxbin; print auxbin.libpath()")
+ install: all
+-	CC="$(CC)" CFLAGS="$(CFLAGS)" python setup.py install --home="$(DESTDIR)/usr" --prefix="" --install-lib="$(DESTDIR)$(LIBPATH)/python"
++	CC="$(CC)" CFLAGS="$(CFLAGS)" LIBDIR=$(LIBDIR) python setup.py install --home="$(DESTDIR)/usr/$(LIBDIR)" --prefix="" --install-lib="$(DESTDIR)/usr/$(LIBDIR)/python" --install-scripts=$(DESTDIR)/usr/$(BINDIR)
+ 	$(INSTALL_DIR) $(DESTDIR)/var/run/xend/boot
+ else
+ install: all
+--- xen-3.orig/tools/pygrub/src/pygrub
++++ xen-3/tools/pygrub/src/pygrub
+@@ -21,7 +21,7 @@
+ import curses, _curses, curses.wrapper, curses.textpad, curses.ascii
+ import getopt
+ 
+-sys.path = [ '/usr/lib/python' ] + sys.path
++sys.path.insert(1, sys.path[0] + '/../lib/python')
+ 
+ import fsimage
+ import grub.GrubConf
--- xen-3-3.2.1.orig/debian/patches/CVE-2008-1952.patch
+++ xen-3-3.2.1/debian/patches/CVE-2008-1952.patch
@@ -0,0 +1,117 @@
+# HG changeset patch
+# User Keir Fraser <keir.fraser@citrix.com>
+# Date 1210689273 -3600
+# Node ID f70475e8396dc4bc0304d5ff697f18e2b35926f4
+# Parent  01f12d39071efa0b5e0d28c06584a42f19c49437
+ioemu: Fix PVFB backend to validate frontend's frame buffer
+description
+
+A buggy or malicious frontend can describe its shared framebuffer to
+the backend in a way that makes the backend map an arbitrary amount of
+guest memory, malloc an arbitrarily large internal buffer, copy
+arbitrary memory to that buffer, even beyond its end.  A domU running
+a malicious frontend can abuse the former two for denial of service
+attacks against dom0.  It can abuse the third to write arbitrary
+backend memory.  It can abuse all three to terminate or crash the
+backend.  Arbitrary code execution looks quite feasible.
+
+From: Markus Armbruster <armbru@redhat.com>
+Signed-off-by: Keir Fraser <keir.fraser@citrix.com>
+xen-unstable changeset:   17630:53195719f7621110dab7a97a2bca292b73baa715
+xen-unstable date:        Tue May 13 15:08:17 2008 +0100
+
+diff -r 01f12d39071e -r f70475e8396d tools/ioemu/hw/xenfb.c
+--- a/tools/ioemu/hw/xenfb.c	Tue May 13 15:23:51 2008 +0100
++++ b/tools/ioemu/hw/xenfb.c	Tue May 13 15:34:33 2008 +0100
+@@ -22,8 +22,6 @@
+ #ifndef BTN_LEFT
+ #define BTN_LEFT 0x110 /* from <linux/input.h> */
+ #endif
+-
+-// FIXME defend against malicious frontend?
+ 
+ struct xenfb;
+ 
+@@ -476,6 +474,50 @@ void xenfb_shutdown(struct xenfb *xenfb)
+ 	free(xenfb);
+ }
+ 
++static int xenfb_configure_fb(struct xenfb *xenfb,
++			      int width, int height, int depth,
++			      size_t fb_len, int row_stride)
++{
++	size_t mfn_sz = sizeof(*((struct xenfb_page *)0)->pd);
++	size_t pd_len = sizeof(((struct xenfb_page *)0)->pd) / mfn_sz;
++	size_t fb_pages = pd_len * XC_PAGE_SIZE / mfn_sz;
++	size_t fb_len_max = fb_pages * XC_PAGE_SIZE;
++	int max_width, max_height;
++
++	if (depth != 8 && depth != 16 && depth != 24 && depth != 32) {
++		fprintf(stderr,
++			"FB: can't handle frontend fb depth %d\n",
++			depth);
++		return -1;
++	}
++	if (row_stride < 0 || row_stride > fb_len) {
++		fprintf(stderr,
++			"FB: invalid frontend stride %d\n", row_stride);
++		return -1;
++	}
++	max_width = row_stride / (depth / 8);
++	if (width < 0 || width > max_width) {
++		fprintf(stderr,
++			"FB: invalid frontend width %d limited to %d\n",
++			width, max_width);
++		width = max_width;
++	}
++	max_height = fb_len / row_stride;
++	if (height < 0 || height > max_height) {
++		fprintf(stderr,
++			"FB: invalid frontend height %d limited to %d\n",
++			height, max_height);
++		height = max_height;
++	}
++	xenfb->fb_len = fb_len;
++	xenfb->row_stride = row_stride;
++	xenfb->depth = depth;
++	xenfb->width = width;
++	xenfb->height = height;
++	fprintf(stderr, "Framebuffer %dx%dx%d stride %d\n",
++		width, height, depth, row_stride);
++	return 0;
++}
+ 
+ static void xenfb_on_fb_event(struct xenfb *xenfb)
+ {
+@@ -506,7 +548,6 @@ static void xenfb_on_fb_event(struct xen
+ 			    || h != event->update.height) {
+ 				fprintf(stderr, "%s bogus update clipped\n",
+ 					xenfb->fb.nodename);
+-				break;
+ 			}
+ 			xenfb_guest_copy(xenfb, x, y, w, h);
+ 			break;
+@@ -686,14 +727,15 @@ static int xenfb_read_frontend_fb_config
+                 xenfb->protocol[0] = '\0';
+         xenfb_xs_printf(xenfb->xsh, xenfb->fb.nodename, "request-update", "1");
+ 
+-        /* TODO check for permitted ranges */
+-        fb_page = xenfb->fb.page;
+-        xenfb->depth = fb_page->depth;
+-        xenfb->width = fb_page->width;
+-        xenfb->height = fb_page->height;
+-        /* TODO check for consistency with the above */
+-        xenfb->fb_len = fb_page->mem_length;
+-        xenfb->row_stride = fb_page->line_length;
++	fb_page = xenfb->fb.page;
++	if (xenfb_configure_fb(xenfb,
++			       fb_page->width, fb_page->height, fb_page->depth,
++			       fb_page->mem_length, fb_page->line_length)
++	    < 0) {
++		errno = EINVAL;
++		return -1;
++	}
++
+         fprintf(stderr, "Framebuffer depth %d width %d height %d line %d\n",
+                 fb_page->depth, fb_page->width, fb_page->height, fb_page->line_length);
+         if (xenfb_map_fb(xenfb, xenfb->fb.otherend_id) < 0)
--- xen-3-3.2.1.orig/debian/xen-utils.README.Debian
+++ xen-3-3.2.1/debian/xen-utils.README.Debian
@@ -0,0 +1,97 @@
+Xen for Debian
+--------------
+
+* About /lib/tls:
+
+   Since Xen guest machines have to work in non-contiguous areas of memory,
+   they cannot support a segmented glibc efficiently.  If your glibc is
+   segmented Xen will have to emulate the support, with a high performance
+   penalty. Luckily the Debian GLibc Team has agreed to provide a non-segmented
+   version to be used with xen, which is available in the libc6-xen package,
+   recommended by this one. Should this package be not available for you (eg.
+   because you are using xen on Debian 3.1 - sarge) you can work around the
+   segmentation issue by just executing this command:
+
+   mv /lib/tls /lib/tls.disabled
+
+   Unfortunately we cannot do this ourselves when you install Xen or at any
+   other time, without breaking the Debian Policy and thus provoke the Wrath of
+   the Gods. We know that this solution is not optimal, especially because
+   every time you upgrade the glibc package /lib/tls will be restored, and
+   you'll have to
+
+   rm -rf /lib/tls.disabled
+   mv /lib/tls /lib/tls.disabled
+
+   again. This of course is not necessary if you use the provided libc6-xen
+   package, which of course is the recommended course of action whenever
+   possible.  Anyway please remember to always keep your system tls disabled.
+
+* About the kernel:
+   
+   Debian provides a xen enabled kernel in the linux-image-xen-* packages,
+   available both in unstable/testing and, for sarge, in bpo. You can use the
+   same kernel for both your domain 0 and your unprivileged domains.
+
+   Should you want to roll your own kernel this is the way you do it. First
+   download from http://alioth.debian.org/projects/pkg-xen/ the kernel patch
+   for your version of xen.  Then download the relevant kernel from kernel.org,
+   apply the patch, configure and build your kernel in the standard way (with
+   kernel package). If you do it this way you can even build a different
+   lightweight kernel for your unprivileged domains, which is the standard xen
+   way to do things.
+   
+   After you've done so you can add a section similar to this one to your
+   /boot/grub/menu.lst file in order to boot your xen system. (Only grub is
+   supported on Xen systems, if you're a LILO fan we're sorry, there's no way
+   you can use Xen without switching, and probably there will never be)
+
+   title           Debian Xen+GNU/Linux
+   root            (hd0,0)
+   kernel          /boot/xen.gz
+   module          /boot/xen-linux-2.6.12.6xeno003 root=/dev/sda1 ro console=tty0
+   boot
+   
+   Of course you have this example supplying your own kernel path and root
+   device in the module line in order to have a working Xen system after a
+   reboot.
+
+* About networking:
+   
+   By default Xen modifies your networking configuration, creating a bridge.
+   To avoid breaking a machine's connection to the network the debian package
+   doesn't touch the network configuration unless requested. On the other hand
+   xen needs to connect the guest domains somewhere, in order for them to have
+   networking, and expects that the xen bridge exists. You should hand-tune
+   your networking configuration by editing /etc/xen/xend-config.sxp and
+   possibly /etc/network/interfaces to decide how to connect your domains to
+   the network.
+
+* About loop devices:
+
+   If you plan hosting virtual domains with file backed block devices (ie. the
+   ones xen-tools creates by default) be careful about two issues:
+
+   1. Maximum number of loop devices
+      By default the loop driver supports a maximum of 8 loop devices. Of
+      course since every xen domain uses at least two (one for the data and one
+      for the swap) this number is absolutely insufficient. You should increase
+      it by adding a file named local-loop in /etc/modprobe.d containing the
+      string "options loop max_loop=128", if the loop driver is compiled as a
+      module, or by appending the string max_loop=128 to your kernel parameters
+      if the driver is in-kernel. Of course you can increase or decrease the
+      number 128 as you see fit.
+
+   2. Driver loading (only if loop is compiled as a module)
+      Normally the loop driver gets loaded when the first loop device is
+      accessed. When using udev, though, the loop devices get created only
+      after the driver gets loaded. This means that xen will fail if the loop
+      driver is not already loaded when it tries to start a file-backed virtual
+      domain.  To fix this just add "loop" in your /etc/modules file, thus
+      forcing it to be loaded at boot time.
+   
+
+Kindly yours,
+
+Guido Trotter, for the Debian Xen Team.
+(with a litte help from Ralph Passgang)
--- xen-3-3.2.1.orig/debian/rules
+++ xen-3-3.2.1/debian/rules
@@ -0,0 +1,88 @@
+#!/usr/bin/make -f
+
+# Uncomment this to turn on verbose mode.
+#export DH_VERBOSE=1
+
+DEB_HOST_ARCH  := $(shell dpkg-architecture -qDEB_HOST_ARCH)
+DEB_BUILD_ARCH := $(shell dpkg-architecture -qDEB_BUILD_ARCH)
+
+SOURCE := $(shell dpkg-parsechangelog | sed -ne 's,^Source: *\(.*\)$$,\1,p')
+VERSION_DEBIAN := $(shell dpkg-parsechangelog | sed -ne 's,^Version: *\(.*\)$$,\1,p')
+VERSION := $(shell echo "$(VERSION_DEBIAN)" | sed -e 's,-[^-]*$$,,')
+
+include debian/rules.defs
+
+setup: $(STAMPS_DIR)/setup-base
+$(STAMPS_DIR)/setup-base: debian/control $(BUILD_DIR) $(STAMPS_DIR)
+	dh_testdir
+	$(MAKE) -f debian/rules.gen setup_$(DEB_HOST_ARCH)
+	touch $@
+
+build: debian/control $(STAMPS_DIR)/build-base
+$(STAMPS_DIR)/build-base: $(STAMPS_DIR)/setup-base
+	dh_testdir
+	$(MAKE) -f debian/rules.gen build_$(DEB_HOST_ARCH)
+	touch $@
+
+$(BUILD_DIR) $(STAMPS_DIR):
+	@[ -d $@ ] || mkdir $@
+
+maintainerclean:
+	rm -f debian/control* debian/rules.gen debian/xen-hypervisor-* debian/xen-utils-*
+	rm -rf $(filter-out .svn debian, $(wildcard * .[^.]*))
+
+clean: debian/control
+	dh_testdir
+	rm -rf $(BUILD_DIR) $(STAMPS_DIR) debian/lib/python/debian_xen/*.pyc
+	dh_clean
+
+binary-indep:
+	dh_testdir
+	$(MAKE) -f debian/rules.gen binary-indep
+
+binary-arch:
+	dh_testdir
+	$(MAKE) -f debian/rules.gen binary-arch_$(DEB_HOST_ARCH)
+
+binary:	binary-indep binary-arch
+
+DIR_ORIG = ../orig/$(SOURCE)-$(VERSION)
+TAR_ORIG_NAME = $(SOURCE)_$(VERSION).orig.tar.gz
+TAR_ORIG = $(firstword $(wildcard ../$(TAR_ORIG_NAME)) $(wildcard ../orig/$(TAR_ORIG_NAME)))
+
+orig: $(DIR_ORIG)
+	rsync --delete --exclude debian --exclude .svk --exclude .svn --link-dest=$(DIR_ORIG)/ -a $(DIR_ORIG)/ .
+
+$(DIR_ORIG):
+ifeq ($(TAR_ORIG),)
+	$(error Cannot find orig tarball $(TAR_ORIG_NAME))
+else
+	mkdir -p ../orig
+	tar -C ../orig -xzf $(TAR_ORIG)
+endif
+
+CONTROL_FILES += debian/changelog debian/bin/gencontrol.py $(wildcard debian/templates/*.in) 
+CONTROL_FILES += $(wildcard debian/arch/defines) $(wildcard debian/arch/*/defines)
+GENCONTROL = $(__MODULES_DIR)gencontrol.py
+debian/control debian/rules.gen: $(CONTROL_FILES)
+	if [ -f debian/control ] && [ -f debian/control.md5sum ] && [ -f debian/rules.gen ]; then \
+		if md5sum $^ | diff - debian/control.md5sum > /dev/null; then true; else \
+			$(MAKE) -f debian/rules debian/control-real; \
+		fi \
+	else \
+		$(MAKE) -f debian/rules debian/control-real; \
+	fi
+
+
+debian/control-real: $(CONTROL_FILES)
+	debian/bin/gencontrol.py
+	md5sum $^ > debian/control.md5sum
+	@echo
+	@echo This target is made to fail intentionally, to make sure
+	@echo that it is NEVER run during the automated build. Please
+	@echo ignore the following error, the debian/control file has
+	@echo been generated SUCCESSFULLY.
+	@echo
+	exit 1
+
+.PHONY: clean build binary-indep binary-arch binary
