]> xenbits.xensource.com Git - xen.git/commitdiff
tools: drop ia64 support
authorIan Campbell <ian.campbell@citrix.com>
Wed, 12 Sep 2012 16:55:27 +0000 (17:55 +0100)
committerIan Campbell <ian.campbell@citrix.com>
Wed, 12 Sep 2012 16:55:27 +0000 (17:55 +0100)
Removed support from libxc and mini-os.

This also took me under xen/include/public via various symlinks.

Dropped tools/debugger/xenitp entirely, it was described upon commit
as:
"Xenitp is a low-level debugger for ia64" and doesn't appear to be
linked into the build anywhere.

 99 files changed, 14 insertions(+), 32361 deletions(-)

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
Acked-by: Keir Fraser <keir@xen.org>
Committed-by: Ian Campbell <ian.campbell@citrix.com>
103 files changed:
extras/mini-os/Config.mk
extras/mini-os/arch/ia64/Makefile [deleted file]
extras/mini-os/arch/ia64/__divdi3.S [deleted file]
extras/mini-os/arch/ia64/__udivdi3.S [deleted file]
extras/mini-os/arch/ia64/__udivsi3.S [deleted file]
extras/mini-os/arch/ia64/__umoddi3.S [deleted file]
extras/mini-os/arch/ia64/arch.mk [deleted file]
extras/mini-os/arch/ia64/common.c [deleted file]
extras/mini-os/arch/ia64/debug.c [deleted file]
extras/mini-os/arch/ia64/efi.c [deleted file]
extras/mini-os/arch/ia64/fw.S [deleted file]
extras/mini-os/arch/ia64/gen_off.c [deleted file]
extras/mini-os/arch/ia64/ia64.S [deleted file]
extras/mini-os/arch/ia64/ivt.S [deleted file]
extras/mini-os/arch/ia64/minios-ia64.lds [deleted file]
extras/mini-os/arch/ia64/mm.c [deleted file]
extras/mini-os/arch/ia64/sal.c [deleted file]
extras/mini-os/arch/ia64/sched.c [deleted file]
extras/mini-os/arch/ia64/time.c [deleted file]
extras/mini-os/arch/ia64/xencomm.c [deleted file]
extras/mini-os/gnttab.c
extras/mini-os/include/hypervisor.h
extras/mini-os/include/ia64/arch_limits.h [deleted file]
extras/mini-os/include/ia64/arch_mm.h [deleted file]
extras/mini-os/include/ia64/arch_sched.h [deleted file]
extras/mini-os/include/ia64/arch_spinlock.h [deleted file]
extras/mini-os/include/ia64/asm.h [deleted file]
extras/mini-os/include/ia64/atomic.h [deleted file]
extras/mini-os/include/ia64/efi.h [deleted file]
extras/mini-os/include/ia64/hypercall-ia64.h [deleted file]
extras/mini-os/include/ia64/ia64_cpu.h [deleted file]
extras/mini-os/include/ia64/ia64_fpu.h [deleted file]
extras/mini-os/include/ia64/os.h [deleted file]
extras/mini-os/include/ia64/page.h [deleted file]
extras/mini-os/include/ia64/pal.h [deleted file]
extras/mini-os/include/ia64/privop.h [deleted file]
extras/mini-os/include/ia64/sal.h [deleted file]
extras/mini-os/include/ia64/traps.h [deleted file]
extras/mini-os/include/mm.h
extras/mini-os/include/posix/limits.h
extras/mini-os/include/sched.h
extras/mini-os/include/types.h
extras/mini-os/lib/math.c
extras/mini-os/mm.c
tools/debugger/xenitp/Makefile [deleted file]
tools/debugger/xenitp/README [deleted file]
tools/debugger/xenitp/cpu-ia64-opc.c [deleted file]
tools/debugger/xenitp/dis-asm.h [deleted file]
tools/debugger/xenitp/ia64-asmtab.c [deleted file]
tools/debugger/xenitp/ia64-asmtab.h [deleted file]
tools/debugger/xenitp/ia64-dis.c [deleted file]
tools/debugger/xenitp/ia64-gen.c [deleted file]
tools/debugger/xenitp/ia64-opc-a.c [deleted file]
tools/debugger/xenitp/ia64-opc-b.c [deleted file]
tools/debugger/xenitp/ia64-opc-d.c [deleted file]
tools/debugger/xenitp/ia64-opc-f.c [deleted file]
tools/debugger/xenitp/ia64-opc-i.c [deleted file]
tools/debugger/xenitp/ia64-opc-m.c [deleted file]
tools/debugger/xenitp/ia64-opc-x.c [deleted file]
tools/debugger/xenitp/ia64-opc.c [deleted file]
tools/debugger/xenitp/ia64-opc.h [deleted file]
tools/debugger/xenitp/ia64.h [deleted file]
tools/debugger/xenitp/xenitp.c [deleted file]
tools/include/Makefile
tools/include/xen-foreign/Makefile
tools/include/xen-foreign/mkheader.py
tools/include/xen-foreign/reference.size
tools/libxc/Makefile
tools/libxc/ia64/Makefile [deleted file]
tools/libxc/ia64/ac_ia64_tools.h [deleted file]
tools/libxc/ia64/dom_fw_acpi.c [deleted file]
tools/libxc/ia64/sal.h [deleted file]
tools/libxc/ia64/xc_dom_ia64_util.c [deleted file]
tools/libxc/ia64/xc_dom_ia64_util.h [deleted file]
tools/libxc/ia64/xc_ia64.h [deleted file]
tools/libxc/ia64/xc_ia64_dom_fwloader.c [deleted file]
tools/libxc/ia64/xc_ia64_hvm_build.c [deleted file]
tools/libxc/ia64/xc_ia64_linux_restore.c [deleted file]
tools/libxc/ia64/xc_ia64_linux_save.c [deleted file]
tools/libxc/ia64/xc_ia64_save_restore.h [deleted file]
tools/libxc/ia64/xc_ia64_stubs.c [deleted file]
tools/libxc/xc_core.c
tools/libxc/xc_core.h
tools/libxc/xc_core_ia64.c [deleted file]
tools/libxc/xc_core_ia64.h [deleted file]
tools/libxc/xc_dom_boot.c
tools/libxc/xc_dom_elfloader.c
tools/libxc/xc_dom_ia64.c [deleted file]
tools/libxc/xc_minios.c
tools/libxc/xenctrl.h
xen/include/public/arch-ia64.h [deleted file]
xen/include/public/arch-ia64/debug_op.h [deleted file]
xen/include/public/arch-ia64/hvm/memmap.h [deleted file]
xen/include/public/arch-ia64/hvm/save.h [deleted file]
xen/include/public/arch-ia64/sioemu.h [deleted file]
xen/include/public/callback.h
xen/include/public/domctl.h
xen/include/public/hvm/ioreq.h
xen/include/public/hvm/params.h
xen/include/public/hvm/save.h
xen/include/public/io/protocols.h
xen/include/public/kexec.h
xen/include/public/xen.h

index 806d4ff8fd955ae3ae7530de2fe15ae5360107d3..d61877bb450c91bb0e9b60e924ebc2fd59421c8e 100644 (file)
@@ -9,7 +9,7 @@ export XEN_INTERFACE_VERSION
 
 # Try to find out the architecture family TARGET_ARCH_FAM.
 # First check whether x86_... is contained (for x86_32, x86_32y, x86_64).
-# If not x86 then use $(XEN_TARGET_ARCH) -> for ia64, ...
+# If not x86 then use $(XEN_TARGET_ARCH)
 ifeq ($(findstring x86_,$(XEN_TARGET_ARCH)),x86_)
 TARGET_ARCH_FAM = x86
 else
diff --git a/extras/mini-os/arch/ia64/Makefile b/extras/mini-os/arch/ia64/Makefile
deleted file mode 100644 (file)
index ca3120e..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-#
-# Special makefile for ia64.
-#
-
-XEN_ROOT = $(CURDIR)/../../../..
-include $(XEN_ROOT)/Config.mk
-
-include ../../Config.mk
-
-include arch.mk
-include ../../minios.mk
-
-ARCH_SRCS := sal.c
-ARCH_SRCS += efi.c
-ARCH_SRCS += time.c
-ARCH_SRCS += ivt.S
-ARCH_SRCS += fw.S
-ARCH_SRCS += common.c
-ARCH_SRCS += time.c
-ARCH_SRCS += mm.c
-ARCH_SRCS += debug.c
-ARCH_SRCS += sched.c
-ARCH_SRCS += xencomm.c
-ARCH_SRCS += __umoddi3.S
-ARCH_SRCS += __udivdi3.S
-ARCH_SRCS += __divdi3.S
-
-ARCH_OBJS := sal.o
-ARCH_OBJS += efi.o
-ARCH_OBJS += time.o
-ARCH_OBJS += ivt.o
-ARCH_OBJS += fw.o
-ARCH_OBJS += common.o
-ARCH_OBJS += time.o
-ARCH_OBJS += mm.o
-ARCH_OBJS += debug.o
-ARCH_OBJS += sched.o
-ARCH_OBJS += xencomm.o
-ARCH_OBJS += __umoddi3.o
-ARCH_OBJS += __udivdi3.o
-ARCH_OBJS += __udivsi3.o
-ARCH_OBJS += __divdi3.o
-ARCH_OBJS := $(addprefix $(OBJ_DIR)/,$(ARCH_OBJS))
-
-GEN_OFF_SRC := gen_off.c
-GEN_OFF_ASM := gen_off.s
-GEN_OFF_H   := $(MINI-OS_ROOT)/include/$(ARCH_INC)/offsets.h
-
-all: $(OBJ_DIR)/$(ARCH_LIB)
-
-$(GEN_OFF_ASM): $(GEN_OFF_SRC)
-       $(CC) -S -o $@ $(CPPFLAGS) $<
-
-$(GEN_OFF_H): $(GEN_OFF_ASM)
-       sed -ne "/^->/ {s/->/#define /; p}" < $< > $@
-
-$(OBJ_DIR)/$(ARCH_LIB): $(GEN_OFF_H) $(ARCH_OBJS) $(OBJ_DIR)/$(HEAD_ARCH_OBJ)
-       $(AR) rv $(ARCH_LIB) $(ARCH_OBJS)
-
-clean:
-       rm -f $(OBJ_DIR)/$(ARCH_LIB) $(ARCH_OBJS) $(OBJ_DIR)/$(HEAD_ARCH_OBJ)
-       rm -f $(GEN_OFF_ASM)
-       rm -f $(GEN_OFF_H)
diff --git a/extras/mini-os/arch/ia64/__divdi3.S b/extras/mini-os/arch/ia64/__divdi3.S
deleted file mode 100644 (file)
index 514163c..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-.file "__divdi3.s"
-
-// $FreeBSD: src/sys/libkern/ia64/__divdi3.S,v 1.1 2000/10/04 17:53:03 dfr Exp $
-//  
-// Copyright (c) 2000, Intel Corporation
-// All rights reserved.
-//
-// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache, 
-// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab, 
-// Intel Corporation.
-//
-// WARRANTY DISCLAIMER
-//
-// 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 INTEL 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.
-//
-// Intel Corporation is the author of this code, and requests that all
-// problem reports or change requests be submitted to it directly at
-// http://developer.intel.com/opensource.
-//
-
-.section .text
-.proc __divdi3#
-.align 32
-.global __divdi3#
-.align 32
-
-// 64-bit signed integer divide
-
-__divdi3:
-
-{ .mii
-  alloc r31=ar.pfs,2,0,0,0
-  nop.i 0
-  nop.i 0;;
-} { .mmi
-
-  // 64-BIT SIGNED INTEGER DIVIDE BEGINS HERE
-
-  setf.sig f8=r32
-  setf.sig f9=r33
-  nop.i 0;;
-} { .mfb
-  nop.m 0
-  fcvt.xf f6=f8
-  nop.b 0
-} { .mfb
-  nop.m 0
-  fcvt.xf f7=f9
-  nop.b 0;;
-} { .mfi
-  nop.m 0
-  // Step (1)
-  // y0 = 1 / b in f8
-  frcpa.s1 f8,p6=f6,f7
-  nop.i 0;;
-} { .mfi
-  nop.m 0
-  // Step (2)
-  // e0 = 1 - b * y0 in f9
-  (p6) fnma.s1 f9=f7,f8,f1
-  nop.i 0
-} { .mfi
-  nop.m 0
-  // Step (3)
-  // q0 = a * y0 in f10
-  (p6) fma.s1 f10=f6,f8,f0
-  nop.i 0;;
-} { .mfi
-  nop.m 0
-  // Step (4)
-  // e1 = e0 * e0 in f11
-  (p6) fma.s1 f11=f9,f9,f0
-  nop.i 0
-} { .mfi
-  nop.m 0
-  // Step (5)
-  // q1 = q0 + e0 * q0 in f10
-  (p6) fma.s1 f10=f9,f10,f10
-  nop.i 0;;
-} { .mfi
-  nop.m 0
-  // Step (6)
-  // y1 = y0 + e0 * y0 in f8
-  (p6) fma.s1 f8=f9,f8,f8
-  nop.i 0;;
-} { .mfi
-  nop.m 0
-  // Step (7)
-  // q2 = q1 + e1 * q1 in f9
-  (p6) fma.s1 f9=f11,f10,f10
-  nop.i 0;;
-} { .mfi
-  nop.m 0
-  // Step (8)
-  // y2 = y1 + e1 * y1 in f8
-  (p6) fma.s1 f8=f11,f8,f8
-  nop.i 0;;
-} { .mfi
-  nop.m 0
-  // Step (9)
-  // r2 = a - b * q2 in f10
-  (p6) fnma.s1 f10=f7,f9,f6
-  nop.i 0;;
-} { .mfi
-  nop.m 0
-  // Step (10)
-  // q3 = q2 + r2 * y2 in f8
-  (p6) fma.s1 f8=f10,f8,f9
-  nop.i 0;;
-} { .mfb
-  nop.m 0
-  // Step (11)
-  // q = trunc (q3)
-  fcvt.fx.trunc.s1 f8=f8
-  nop.b 0;;
-} { .mmi
-  // quotient will be in r8 (if b != 0)
-  getf.sig r8=f8
-  nop.m 0
-  nop.i 0;;
-}
-
-  // 64-BIT SIGNED INTEGER DIVIDE ENDS HERE
-
-{ .mmb
-  nop.m 0
-  nop.m 0
-  br.ret.sptk b0;;
-}
-
-.endp __divdi3
diff --git a/extras/mini-os/arch/ia64/__udivdi3.S b/extras/mini-os/arch/ia64/__udivdi3.S
deleted file mode 100644 (file)
index 6a1c367..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-.file "__udivdi3.s"
-
-// $FreeBSD: src/sys/libkern/ia64/__udivdi3.S,v 1.1 2000/10/04 17:53:03 dfr Exp $
-//  
-// Copyright (c) 2000, Intel Corporation
-// All rights reserved.
-//
-// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache, 
-// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab, 
-// Intel Corporation.
-//
-// WARRANTY DISCLAIMER
-//
-// 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 INTEL 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.
-//
-// Intel Corporation is the author of this code, and requests that all
-// problem reports or change requests be submitted to it directly at
-// http://developer.intel.com/opensource.
-//
-
-.section .text
-.proc __udivdi3#
-.align 32
-.global __udivdi3#
-.align 32
-
-// 64-bit unsigned integer divide
-
-__udivdi3:
-
-{ .mii
-  alloc r31=ar.pfs,2,0,0,0
-  nop.i 0
-  nop.i 0;;
-}
-
-{ .mmi
-
-  // 64-BIT UNSIGNED INTEGER DIVIDE BEGINS HERE
-
-  setf.sig f8=r32
-  setf.sig f9=r33
-  nop.i 0;;
-} { .mfb
-  nop.m 0
-  fma.s1 f6=f8,f1,f0
-  nop.b 0
-} { .mfb
-  nop.m 0
-  fma.s1 f7=f9,f1,f0
-  nop.b 0;;
-} { .mfi
-  nop.m 0
-  // Step (1)
-  // y0 = 1 / b in f8
-  frcpa.s1 f8,p6=f6,f7
-  nop.i 0;;
-} { .mfi
-  nop.m 0
-  // Step (2)
-  // e0 = 1 - b * y0 in f9
-  (p6) fnma.s1 f9=f7,f8,f1
-  nop.i 0
-} { .mfi
-  nop.m 0
-  // Step (3)
-  // q0 = a * y0 in f10
-  (p6) fma.s1 f10=f6,f8,f0
-  nop.i 0;;
-} { .mfi
-  nop.m 0
-  // Step (4)
-  // e1 = e0 * e0 in f11
-  (p6) fma.s1 f11=f9,f9,f0
-  nop.i 0
-} { .mfi
-  nop.m 0
-  // Step (5)
-  // q1 = q0 + e0 * q0 in f10
-  (p6) fma.s1 f10=f9,f10,f10
-  nop.i 0;;
-} { .mfi
-  nop.m 0
-  // Step (6)
-  // y1 = y0 + e0 * y0 in f8
-  (p6) fma.s1 f8=f9,f8,f8
-  nop.i 0;;
-} { .mfi
-  nop.m 0
-  // Step (7)
-  // q2 = q1 + e1 * q1 in f9
-  (p6) fma.s1 f9=f11,f10,f10
-  nop.i 0;;
-} { .mfi
-  nop.m 0
-  // Step (8)
-  // y2 = y1 + e1 * y1 in f8
-  (p6) fma.s1 f8=f11,f8,f8
-  nop.i 0;;
-} { .mfi
-  nop.m 0
-  // Step (9)
-  // r2 = a - b * q2 in f10
-  (p6) fnma.s1 f10=f7,f9,f6
-  nop.i 0;;
-} { .mfi
-  nop.m 0
-  // Step (10)
-  // q3 = q2 + r2 * y2 in f8
-  (p6) fma.s1 f8=f10,f8,f9
-  nop.i 0;;
-} { .mfb
-  nop.m 0
-  // (11) q = trunc(q3)
-  fcvt.fxu.trunc.s1 f8=f8
-  nop.b 0;;
-} { .mmi
-  // quotient will be in r8 (if b != 0)
-  getf.sig r8=f8
-  nop.m 0
-  nop.i 0;;
-}
-
-  // 64-BIT UNSIGNED INTEGER DIVIDE ENDS HERE
-
-{ .mmb
-  nop.m 0
-  nop.m 0
-  br.ret.sptk b0;;
-}
-
-.endp __udivdi3
diff --git a/extras/mini-os/arch/ia64/__udivsi3.S b/extras/mini-os/arch/ia64/__udivsi3.S
deleted file mode 100644 (file)
index 34ff936..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-.file "__udivsi3.s"
-
-// $FreeBSD: src/sys/libkern/ia64/__udivsi3.S,v 1.1.8.1 2005/01/31 23:26:21 imp Exp $
-
-//-
-// Copyright (c) 2000, Intel Corporation
-// All rights reserved.
-//
-// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache, 
-// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab, 
-// Intel Corporation.
-//
-// WARRANTY DISCLAIMER
-//
-// 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 INTEL 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.
-//
-// Intel Corporation is the author of this code, and requests that all
-// problem reports or change requests be submitted to it directly at
-// http://developer.intel.com/opensource.
-//
-
-.section .text
-
-// 32-bit unsigned integer divide
-
-.proc __udivsi3#
-.align 32
-.global __udivsi3#
-.align 32
-
-__udivsi3:
-
-{ .mii
-  alloc r31=ar.pfs,2,0,0,0
-  nop.i 0
-  nop.i 0;;
-} { .mii
-  nop.m 0
-
-  // 32-BIT UNSIGNED INTEGER DIVIDE BEGINS HERE
-
-  // general register used:
-  //    r32 - 32-bit unsigned integer dividend
-  //    r33 - 32-bit unsigned integer divisor
-  //    r8 - 32-bit unsigned integer result
-  //    r2 - scratch register
-  // floating-point registers used: f6, f7, f8, f9
-  // predicate registers used: p6
-
-  zxt4 r32=r32
-  zxt4 r33=r33;;
-} { .mmb
-  setf.sig f6=r32
-  setf.sig f7=r33
-  nop.b 0;;
-} { .mfi
-  nop.m 0
-  fcvt.xf f6=f6
-  nop.i 0
-} { .mfi
-  nop.m 0
-  fcvt.xf f7=f7
-  mov r2 = 0x0ffdd;;
-} { .mfi
-  setf.exp f9 = r2
-  // (1) y0
-  frcpa.s1 f8,p6=f6,f7
-  nop.i 0;;
-} { .mfi
-  nop.m 0
-  // (2) q0 = a * y0
-  (p6) fma.s1 f6=f6,f8,f0
-  nop.i 0
-} { .mfi
-  nop.m 0
-  // (3) e0 = 1 - b * y0
-  (p6) fnma.s1 f7=f7,f8,f1
-  nop.i 0;;
-} { .mfi
-  nop.m 0
-  // (4) q1 = q0 + e0 * q0
-  (p6) fma.s1 f6=f7,f6,f6
-  nop.i 0
-} { .mfi
-  nop.m 0
-  // (5) e1 = e0 * e0 + 2^-34
-  (p6) fma.s1 f7=f7,f7,f9
-  nop.i 0;;
-} { .mfi
-  nop.m 0
-  // (6) q2 = q1 + e1 * q1
-  (p6) fma.s1 f8=f7,f6,f6
-  nop.i 0;;
-} { .mfi
-  nop.m 0
-  // (7) q = trunc(q2)
-  fcvt.fxu.trunc.s1 f8=f8
-  nop.i 0;;
-} { .mmi
-  // quotient will be in the least significant 32 bits of r8 (if b != 0)
-  getf.sig r8=f8
-  nop.m 0
-  nop.i 0;;
-}
-
-  // 32-BIT UNSIGNED INTEGER DIVIDE ENDS HERE
-
-{ .mmb
-  nop.m 0
-  nop.m 0
-  br.ret.sptk b0;;
-}
-
-.endp __udivsi3
diff --git a/extras/mini-os/arch/ia64/__umoddi3.S b/extras/mini-os/arch/ia64/__umoddi3.S
deleted file mode 100644 (file)
index 790317f..0000000
+++ /dev/null
@@ -1,154 +0,0 @@
-.file "__umoddi3.s"
-
-// $FreeBSD: src/sys/libkern/ia64/__umoddi3.S,v 1.3 2003/02/11 20:15:11 schweikh Exp $
-//  
-// Copyright (c) 2000, Intel Corporation
-// All rights reserved.
-//
-// Contributed 2/15/2000 by Marius Cornea, John Harrison, Cristina Iordache, 
-// Ted Kubaska, Bob Norin, and Shane Story of the Computational Software Lab, 
-// Intel Corporation.
-//
-// WARRANTY DISCLAIMER
-//
-// 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 INTEL 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.
-//
-// Intel Corporation is the author of this code, and requests that all
-// problem reports or change requests be submitted to it directly at
-// http://developer.intel.com/opensource.
-//
-
-.section .text
-
-  // 64-bit unsigned integer remainder
-
-.proc __umoddi3#
-.align 32
-.global __umoddi3#
-.align 32
-
-__umoddi3:
-
-{ .mii
-  alloc r31=ar.pfs,3,0,0,0
-  nop.i 0
-  nop.i 0
-} { .mmb
-
-  // 64-BIT UNSIGNED INTEGER REMAINDER BEGINS HERE
-
-  // general register used:
-  //    r32 - 64-bit unsigned integer dividend, called a below
-  //    r33 - 64-bit unsigned integer divisor, called b below
-  //    r8 - 64-bit unsigned integer result
-  // floating-point registers used: f6, f7, f8, f9, f10, f11, f12
-  // predicate registers used: p6
-
-  setf.sig f12=r32  // holds a in integer form
-  setf.sig f7=r33
-  nop.b 0;;
-} { .mfi
-  // get 2s complement of b
-  sub r33=r0,r33
-  fcvt.xuf.s1 f6=f12
-  nop.i 0
-} { .mfi
-  nop.m 0
-  fcvt.xuf.s1 f7=f7
-  nop.i 0;;
-} { .mfi
-  nop.m 0
-  // Step (1)
-  // y0 = 1 / b in f8
-  frcpa.s1 f8,p6=f6,f7
-  nop.i 0;;
-} { .mfi
-  nop.m 0
-  // Step (2)
-  // q0 = a * y0 in f10
-  (p6) fma.s1 f10=f6,f8,f0
-  nop.i 0
-} { .mfi
-  nop.m 0
-  // Step (3)
-  // e0 = 1 - b * y0 in f9
-  (p6) fnma.s1 f9=f7,f8,f1
-  nop.i 0;;
-} { .mfi
-  nop.m 0
-  // Step (4)
-  // q1 = q0 + e0 * q0 in f10
-  (p6) fma.s1 f10=f9,f10,f10
-  nop.i 0
-} { .mfi
-  nop.m 0
-  // Step (5)
-  // e1 = e0 * e0 in f11
-  (p6) fma.s1 f11=f9,f9,f0
-  nop.i 0;;
-} { .mfi
-  nop.m 0
-  // Step (6)
-  // y1 = y0 + e0 * y0 in f8
-  (p6) fma.s1 f8=f9,f8,f8
-  nop.i 0;;
-} { .mfi
-  nop.m 0
-  // Step (7)
-  // q2 = q1 + e1 * q1 in f9
-  (p6) fma.s1 f9=f11,f10,f10
-  nop.i 0;;
-} { .mfi
-  nop.m 0
-  // Step (8)
-  // y2 = y1 + e1 * y1 in f8
-  (p6) fma.s1 f8=f11,f8,f8
-  nop.i 0;;
-} { .mfi
-  nop.m 0
-  // Step (9)
-  // r2 = a - b * q2 in f10
-  (p6) fnma.s1 f10=f7,f9,f6
-  nop.i 0;;
-} { .mfi
-  // f7=-b
-  setf.sig f7=r33
-  // Step (10)
-  // q3 = q2 + r2 * y2 in f8
-  (p6) fma.s1 f8=f10,f8,f9
-  nop.i 0;;
-} { .mfi
-  nop.m 0
-  // (11) q = trunc(q3)
-  fcvt.fxu.trunc.s1 f8=f8
-  nop.i 0;;
-}  { .mfi
-  nop.m 0
-  // (12) r = a + (-b) * q
-  xma.l f8=f8,f7,f12
-  nop.i 0;;
-}  { .mib
-  getf.sig r8=f8
-  nop.i 0
-  nop.b 0
-}
-
-  // 64-BIT UNSIGNED INTEGER REMAINDER ENDS HERE
-
-{ .mib
-  nop.m 0
-  nop.i 0
-  br.ret.sptk b0;;
-}
-
-.endp __umoddi3
diff --git a/extras/mini-os/arch/ia64/arch.mk b/extras/mini-os/arch/ia64/arch.mk
deleted file mode 100644 (file)
index e6a17d3..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-
-ARCH_CFLAGS := -mfixed-range=f2-f5,f12-f15,f32-f127 -mconstant-gp
-ARCH_CFLAGS += -O2
-ARCH_ASFLAGS := -x assembler-with-cpp
-ARCH_ASFLAGS += -mfixed-range=f2-f5,f12-f15,f32-f127 -fomit-frame-pointer
-ARCH_ASFLAGS += -fno-builtin -fno-common -fno-strict-aliasing -mconstant-gp
-
-ARCH_LDFLAGS = -warn-common
-
diff --git a/extras/mini-os/arch/ia64/common.c b/extras/mini-os/arch/ia64/common.c
deleted file mode 100644 (file)
index 14958cd..0000000
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * Done by Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com>
- *
- ****************************************************************************
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
- *
- ****************************************************************************
- *
- * Parts are taken from FreeBSD.
- *
- */
-
-
-#include <mini-os/os.h>
-#include <mini-os/types.h>
-#include <mini-os/lib.h>
-#include <mini-os/page.h>
-#include <xen/xen.h>
-#include <mini-os/privop.h>
-#include <xen/callback.h>
-#include <mini-os/ia64_cpu.h>
-#include <mini-os/hypervisor.h>
-#include <mini-os/events.h>
-#include <mini-os/console.h>
-#include <mini-os/time.h>
-#include <mini-os/xmalloc.h>
-
-
-/* For more console boot messages. */
-int bootverbose;
-
-/*
- * This structure contains start-of-day info, such as pagetable base pointer,
- * address of the shared_info structure, and things like that.
- */
-union start_info_union start_info_union;
-
-shared_info_t *HYPERVISOR_shared_info = (shared_info_t *)XSI_BASE;
-
-struct machine_fw machineFwG;
-
-/* This pointer is initialized in ia64.S with the address of the boot param
- * area passed by the bootloader. */
-struct xen_ia64_boot_param* ia64_boot_paramP;
-
-struct xen_ia64_boot_param ia64BootParamG;
-char boot_cmd_line[COMMAND_LINE_SIZE+1];
-
-
-void
-ia64_write_itr_i(ia64_pte_t* pteP, uint32_t reg, uint64_t vAddr,
-                 uint64_t ps, uint64_t pk)
-{
-       /* The virtual address. */
-       __asm __volatile("mov   cr.ifa=%0" :: "r"(vAddr));
-       /* The page size */
-       __asm __volatile("mov   cr.itir=%0;;" :: "r"((ps << IA64_ITIR_PS)|(pk << IA64_ITIR_KEY)));
-       /* Put pte into instruction translation register. */ 
-       __asm __volatile("itr.i itr[%0]=%1" :: "r"(reg), "r"(*(uint64_t*)pteP));
-       /* Serialization */
-       __asm __volatile("srlz.i");
-}
-
-void
-map_pal_code(void)
-{
-       ia64_pte_t pte;
-
-       xen_set_virtual_psr_ic(0);
-       memset(&pte, 0, sizeof(pte));           /* Prepare the pte */
-       pte.pte_p = 1;                          /* present bit */
-       pte.pte_ma = PTE_MA_WB;                 /* memory attribute */
-       pte.pte_a = 1;                          /* accessed bit */
-       pte.pte_d = 1;                          /* dirty bit */
-       pte.pte_pl = PTE_PL_KERN;               /* privilege level */
-       pte.pte_ar = PTE_AR_RWX;                /* access rights */
-       pte.pte_ppn = ((uint64_t) __pa(machineFwG.ia64_pal_base)) >> 14;
-       pte.pte_ed = 0;                         /* exception deferral */
-
-       /*
-        * Must purge here because a itc/dtc with the same address
-        * may be in the tlb!
-        */
-       ia64_ptc_l(machineFwG.ia64_pal_base, PTE_PS_16K);
-       ia64_write_itr_i(&pte, IA64_TR_PAL,
-                        (uint64_t)machineFwG.ia64_pal_base,
-                        PTE_PS_16K, IA64_KEY_REG7);
-       xen_set_virtual_psr_ic(1);
-}
-
-/* In ivt.S */
-extern char hypervisor_callback;
-
-static void
-registerCallback(void)
-{
-       struct callback_register event =
-       {
-               .type = CALLBACKTYPE_event,
-               .address = (unsigned long)&hypervisor_callback,
-       };
-       HYPERVISOR_callback_op(CALLBACKOP_register, &event);
-}
-
-static void
-init_start_info(start_info_t* xen_start_info)
-{
-       /* Make a copy of the start_info structure */
-       start_info.nr_pages = xen_start_info->nr_pages;
-       start_info.shared_info = xen_start_info->shared_info;
-       start_info.flags = xen_start_info->flags;
-       start_info.store_mfn = xen_start_info->store_mfn;
-       start_info.store_evtchn = xen_start_info->store_evtchn;
-       start_info.console.domU.mfn = xen_start_info->console.domU.mfn;
-       start_info.console.domU.evtchn =
-                               xen_start_info->console.domU.evtchn;
-       start_info.pt_base = xen_start_info->pt_base;
-       start_info.nr_pt_frames = xen_start_info->nr_pt_frames;
-       start_info.mfn_list = xen_start_info->mfn_list;
-       start_info.mod_start = xen_start_info->mod_start;
-       start_info.mod_len = xen_start_info->mod_len;
-}
-
-static void
-init_boot_params(void)
-{
-       ia64BootParamG.command_line = ia64_boot_paramP->command_line;
-       ia64BootParamG.efi_systab = ia64_boot_paramP->efi_systab;
-       ia64BootParamG.efi_memmap = ia64_boot_paramP->efi_memmap;
-       ia64BootParamG.efi_memmap_size = ia64_boot_paramP->efi_memmap_size;
-       ia64BootParamG.efi_memdesc_size = ia64_boot_paramP->efi_memdesc_size;
-       ia64BootParamG.efi_memdesc_version =
-                               ia64_boot_paramP->efi_memdesc_version;
-       ia64BootParamG.console_info.num_cols =
-                               ia64_boot_paramP->console_info.num_cols;
-       ia64BootParamG.console_info.num_rows =
-                               ia64_boot_paramP->console_info.num_rows;
-       ia64BootParamG.console_info.orig_x =
-                               ia64_boot_paramP->console_info.orig_x;
-       ia64BootParamG.console_info.orig_y =
-                               ia64_boot_paramP->console_info.orig_y;
-       ia64BootParamG.fpswa = ia64_boot_paramP->fpswa;
-       ia64BootParamG.initrd_start = ia64_boot_paramP->initrd_start;
-       ia64BootParamG.initrd_size = ia64_boot_paramP->initrd_size;
-       ia64BootParamG.domain_start = ia64_boot_paramP->domain_start;
-       ia64BootParamG.domain_size = ia64_boot_paramP->domain_size;
-
-       /*
-        * Copy and parse the boot command line.
-        * Currently only a check of bootverbose is done.
-        */
-       memset(boot_cmd_line, 0, sizeof(boot_cmd_line));
-       strncpy(boot_cmd_line,
-               (char*)__va(ia64BootParamG.command_line), COMMAND_LINE_SIZE);
-       boot_cmd_line[COMMAND_LINE_SIZE - 1] = '\0';
-
-       /* Look for bootverbose. */
-       if (strstr(boot_cmd_line, "bootverbose"))
-               bootverbose = 1;
-}
-
-static void
-set_opt_feature(void)
-{
-       struct xen_ia64_opt_feature optf;
-
-       optf.cmd = XEN_IA64_OPTF_IDENT_MAP_REG7;
-       optf.on = XEN_IA64_OPTF_ON;
-       optf.pgprot = ((1 << PTE_OFF_P) | (1 << PTE_OFF_A) | (1 << PTE_OFF_D) |
-                      (PTE_MA_WB << PTE_OFF_MA) |
-                      (PTE_PL_KERN << PTE_OFF_PL) |
-                      (PTE_AR_RW << PTE_OFF_AR));
-       optf.key = IA64_KEY_REG7;
-       HYPERVISOR_opt_feature(&optf);
-}
-
-void
-arch_init(start_info_t *si)
-{
-       efi_time_t tm;
-       static int initialized;
-
-       if (initialized)
-               return;
-
-       init_start_info(si);
-
-       init_boot_params();
-
-       init_efi();
-
-       map_pal_code();
-
-       ia64_sal_init(machineFwG.ia64_sal_tableP);
-
-       if (efi_get_time(&tm)) {
-               printk("EFI-SystemTime: %d.%d.%d   %d:%d:%d",
-                      tm.Day, tm.Month, tm.Year,
-                      tm.Hour, tm.Minute, tm.Second);
-
-               if (tm.TimeZone == EFI_UNSPECIFIED_TIMEZONE)
-                       printk("   Timezone not specified!\n");
-               else
-                       printk("   TimeZone: %d Daylight: 0x%x\n",
-                              tm.TimeZone, tm.Daylight);
-       } else 
-               printk("efi_get_time() failed\n");
-
-       registerCallback();
-
-       set_opt_feature();
-
-       initialized = 1;
-}
-
-void
-arch_fini(void)
-{
-       /* TODO */
-}
-
-void
-arch_print_info(void)
-{
-       int major, minor;
-
-       minor = HYPERVISOR_xen_version(XENVER_version, 0);
-       major = minor >> 16;
-       minor &= ~0xffffffff;
-       printk("Running on Xen version: %d.%d\n", major, minor);
-#if 0
-       printk("machine addr of shared_info_t  : 0x%lx\n",
-              start_info.shared_info);
-       printk("machine page number of shared page: 0x%lx\n",
-              start_info.store_mfn);
-       printk("evtchn for store communication : %d\n",
-              start_info.store_evtchn);
-       printk("MACHINE address of console page: 0x%lx\n",
-              start_info.console.domU.mfn);
-       printk("evtchn for console messages    : %d\n",
-              start_info.console.domU.evtchn);
-#endif
-       if(strlen(boot_cmd_line) > 0)
-               printk("xen_guest_cmdline              : %s\n", boot_cmd_line);
-}
-
diff --git a/extras/mini-os/arch/ia64/debug.c b/extras/mini-os/arch/ia64/debug.c
deleted file mode 100644 (file)
index f0e5777..0000000
+++ /dev/null
@@ -1,168 +0,0 @@
-/* 
- ****************************************************************************
- * Done by Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com
- *
- * Description:        ia64 specific part of the mini-os
- *             Prints debug information on a crash of mini-os
- *
- * Parts are taken from FreeBSD.
- *
- ****************************************************************************
- * 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.
- */
-
-#include <mini-os/os.h>
-
-static const char *ia64_vector_names[] = {
-       "VHPT Translation",                     /* 0 */
-       "Instruction TLB",                      /* 1 */
-       "Data TLB",                             /* 2 */
-       "Alternate Instruction TLB",            /* 3 */
-       "Alternate Data TLB",                   /* 4 */
-       "Data Nested TLB",                      /* 5 */
-       "Instruction Key Miss",                 /* 6 */
-       "Data Key Miss",                        /* 7 */
-       "Dirty-Bit",                            /* 8 */
-       "Instruction Access-Bit",               /* 9 */
-       "Data Access-Bit",                      /* 10 */
-       "Break Instruction",                    /* 11 */
-       "External Interrupt",                   /* 12 */
-       "Reserved 13",                          /* 13 */
-       "Reserved 14",                          /* 14 */
-       "Reserved 15",                          /* 15 */
-       "Reserved 16",                          /* 16 */
-       "Reserved 17",                          /* 17 */
-       "Reserved 18",                          /* 18 */
-       "Reserved 19",                          /* 19 */
-       "Page Not Present",                     /* 20 */
-       "Key Permission",                       /* 21 */
-       "Instruction Access Rights",            /* 22 */
-       "Data Access Rights",                   /* 23 */
-       "General Exception",                    /* 24 */
-       "Disabled FP-Register",                 /* 25 */
-       "NaT Consumption",                      /* 26 */
-       "Speculation",                          /* 27 */
-       "Reserved 28",                          /* 28 */
-       "Debug",                                /* 29 */
-       "Unaligned Reference",                  /* 30 */
-       "Unsupported Data Reference",           /* 31 */
-       "Floating-point Fault",                 /* 32 */
-       "Floating-point Trap",                  /* 33 */
-       "Lower-Privilege Transfer Trap",        /* 34 */
-       "Taken Branch Trap",                    /* 35 */
-       "Single Step Trap",                     /* 36 */
-       "Reserved 37",                          /* 37 */
-       "Reserved 38",                          /* 38 */
-       "Reserved 39",                          /* 39 */
-       "Reserved 40",                          /* 40 */
-       "Reserved 41",                          /* 41 */
-       "Reserved 42",                          /* 42 */
-       "Reserved 43",                          /* 43 */
-       "Reserved 44",                          /* 44 */
-       "IA-32 Exception",                      /* 45 */
-       "IA-32 Intercept",                      /* 46 */
-       "IA-32 Interrupt",                      /* 47 */
-       "Reserved 48",                          /* 48 */
-       "Reserved 49",                          /* 49 */
-       "Reserved 50",                          /* 50 */
-       "Reserved 51",                          /* 51 */
-       "Reserved 52",                          /* 52 */
-       "Reserved 53",                          /* 53 */
-       "Reserved 54",                          /* 54 */
-       "Reserved 55",                          /* 55 */
-       "Reserved 56",                          /* 56 */
-       "Reserved 57",                          /* 57 */
-       "Reserved 58",                          /* 58 */
-       "Reserved 59",                          /* 59 */
-       "Reserved 60",                          /* 60 */
-       "Reserved 61",                          /* 61 */
-       "Reserved 62",                          /* 62 */
-       "Reserved 63",                          /* 63 */
-       "Reserved 64",                          /* 64 */
-       "Reserved 65",                          /* 65 */
-       "Reserved 66",                          /* 66 */
-       "Reserved 67",                          /* 67 */
-};
-
-typedef struct
-{
-       uint64_t sof    :7;     /* 0-6 size of frame */
-       uint64_t sol    :7;     /* 7-13 size of locals (in + loc) */
-       uint64_t sor    :4;
-       uint64_t rrb_gr :7;
-       uint64_t rrb_fr :7;
-       uint64_t rrb_pr :6;
-       uint64_t res    :25;    /* reserved */
-       uint64_t v      :1;     /* The v bit */
-} ifs_t;
-
-void
-do_trap_error(trap_frame_t* tf)
-{
-       ifs_t curIfs;
-
-       printk("TRAP in mini-os:\n");
-       printk("  trap: %d (%s)\n", tf->trap_num,
-              ia64_vector_names[tf->trap_num]);
-       printk("  iip : 0x%.16lx  ifa: 0x%.16lx\n", tf->iip, tf->ifa);
-       printk("  ipsr: 0x%.16lx  ifs: 0x%.16lx\n", tf->ipsr, tf->ifs);
-       printk("  isr : 0x%.16lx\n", tf->isr);
-       printk("  gp  : 0x%.16lx  sp : 0x%.16lx\n", tf->gp, tf->sp);
-       printk("  rp  : 0x%.16lx  tp : 0x%.16lx\n", tf->b0, tf->tp);
-       printk("  b6  : 0x%.16lx  b7 : 0x%.16lx\n", tf->b6, tf->b7);
-       printk("  r8  : 0x%.16lx\n", tf->r8);
-       printk("  bsp : 0x%.16lx  rsc: 0x%.16lx\n", tf->bsp, tf->rsc);
-       printk("  r14 : 0x%.16lx  r15: 0x%.16lx\n", tf->r14, tf->r15);
-       printk("  r16 : 0x%.16lx  r17: 0x%.16lx\n", tf->r16, tf->r17);
-       printk("  r18 : 0x%.16lx  r19: 0x%.16lx\n", tf->r18, tf->r19);
-       printk("  r20 : 0x%.16lx  r21: 0x%.16lx\n", tf->r20, tf->r21);
-       printk("  r22 : 0x%.16lx  r23: 0x%.16lx\n", tf->r22, tf->r23);
-       printk("  r24 : 0x%.16lx  r25: 0x%.16lx\n", tf->r24, tf->r25);
-       printk("  r26 : 0x%.16lx  r27: 0x%.16lx\n", tf->r26, tf->r27);
-       printk("  r28 : 0x%.16lx  r29: 0x%.16lx\n", tf->r28, tf->r29);
-       printk("  r30 : 0x%.16lx  r31: 0x%.16lx\n", tf->r30, tf->r31);
-
-       __asm __volatile("flushrs;;");
-       curIfs = *((ifs_t*)((void*)(&tf->ifs)));
-       if (!curIfs.v)
-               printk(" ifs.v = 0");
-       else {
-               uint64_t* regP;
-               uint32_t  i;
-
-               printk("  cfm.sof: %d  cfm.sol: %d\n", curIfs.sof, curIfs.sol);
-               regP = (uint64_t *)(tf->bsp + tf->ndirty);
-               for (i = curIfs.sof; i != 0; ) {
-                       if (i <= (((uint64_t)regP & 0x000001f8) >> 3)) {
-                               regP -= i;
-                               i = 0;
-                               break;
-                       }
-                       i -= ((uint64_t)regP & 0x000001f8) >> 3;
-                       regP = (uint64_t *)((uint64_t)regP & ~0x000001ff) - 1;
-               }
-               for (i = 0; i < curIfs.sof; i++) {
-                       if (((uint64_t)regP & 0x000001f8) == 0x000001f8)
-                               regP++;
-                       printk("  r%d: 0x%lx\n",  i+32, *regP);
-                       regP++;
-               }
-       }
-       HYPERVISOR_shutdown(SHUTDOWN_poweroff);
-}
diff --git a/extras/mini-os/arch/ia64/efi.c b/extras/mini-os/arch/ia64/efi.c
deleted file mode 100644 (file)
index 009375e..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-/*
- * Done by Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com>
- * The code is partly taken from FreeBSD.
- *
- ***************************************************************************
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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 <mini-os/os.h>
-#include <mini-os/efi.h>
-#include <mini-os/page.h>
-#include <mini-os/lib.h>
-#include <mini-os/console.h>
-
-
-/* The implementation is in fw.S. */
-extern uint64_t
-ia64_call_efi_func(uint64_t funcP,uint64_t a,uint64_t b,uint64_t c,uint64_t d);
-
-int
-efi_get_time(efi_time_t* tmP)
-{
-       memset(tmP, 0, sizeof(efi_time_t));
-       if (ia64_call_efi_func((uint64_t)machineFwG.efi.getTimeF,
-                              (uint64_t)tmP,
-                              (uint64_t)NULL, 0, 0) != EFI_SUCCESS) {
-               printk("efi.getTime() failed\n");
-               return 0;
-       }
-       return 1;
-}
-
-/*
- * The function compares two efi_guid_t and returns 0 on equality, otherwise 1.
- */
-static int
-efi_guid_cmp(efi_guid_t* a_le, efi_guid_t* b)
-{
-       return memcmp(a_le, b, sizeof(efi_guid_t));
-}
-
-void
-init_efi(void)
-{
-       efi_system_table_t* efiSysTableP;
-       int mdcnt, i, numConvMem;
-       efi_memory_descriptor_t *memdP, *mdP;
-       efi_status_t status;
-       char fwVendor[100] = "unknown";
-       efi_char16_t* fwP;
-       efi_runtime_services_t* rsP;
-
-       efi_configuration_table_t* confP = (efi_configuration_table_t*)0;
-       efi_guid_t sal = SAL_SYSTEM_TABLE_GUID;
-       efi_guid_t acpi = ACPI_TABLE_GUID;
-       efi_guid_t acpi20 = ACPI_20_TABLE_GUID;
-       
-       memset(&machineFwG, 0, sizeof(machineFwG));
-       /* Read the efi_system_table.  */
-       efiSysTableP = (efi_system_table_t*)__va(ia64BootParamG.efi_systab);
-       machineFwG.efi.efiSysTableP = efiSysTableP;
-       PRINT_BV("EfiSystemTable at: %p\n", efiSysTableP);
-       fwP = (uint16_t*) __va(efiSysTableP->FirmwareVendor);
-       if (fwP) {
-               for (i = 0; i < (int)sizeof(fwVendor) - 1 && *fwP; ++i)
-                       fwVendor[i] = *fwP++;
-               fwVendor[i] = '\0';
-       }
-       PRINT_BV("  EFI-FirmwareVendor        : %s\n", fwVendor);
-       PRINT_BV("  EFI-FirmwareRevision      : %d\n",
-                efiSysTableP->FirmwareRevision);
-       PRINT_BV("  EFI-SystemTable-Revision  : %d.%d\n",
-                efiSysTableP->Hdr.Revision >> 16,
-                efiSysTableP->Hdr.Revision & 0xffff);
-       rsP = (efi_runtime_services_t*)
-               __va(efiSysTableP->RuntimeServices);
-       mdcnt = ia64BootParamG.efi_memmap_size /
-               ia64BootParamG.efi_memdesc_size;
-       memdP = (efi_memory_descriptor_t*) __va(ia64BootParamG.efi_memmap);
-
-       PRINT_BV("EFI-Memorydescriptors: %d\n", mdcnt);
-
-       for (i = numConvMem = 0, mdP = memdP; i < mdcnt; i++,
-            mdP = NextMemoryDescriptor(mdP, ia64BootParamG.efi_memdesc_size)) {
-               /* Relocate runtime memory segments for firmware. */
-               PRINT_BV("  %d. Type: %x  Attributes: 0x%lx\n",
-                        i, mdP->Type, mdP->Attribute);
-               PRINT_BV("     PhysStart: 0x%lx  NumPages: 0x%lx\n",
-                        mdP->PhysicalStart, mdP->NumberOfPages);
-               switch (mdP->Type) {
-                       case EfiRuntimeServicesData:
-                               PRINT_BV("     -> EfiRuntimeServicesData\n");
-                               break;
-                       case EfiACPIReclaimMemory:
-                               PRINT_BV("     -> EfiACPIReclaimMemory\n");
-                               break;
-                       case EfiACPIMemoryNVS:
-                               PRINT_BV("     -> EfiACPIMemoryNVS\n");
-                               break;
-                       case EfiConventionalMemory:
-                               PRINT_BV("     -> EfiConventionalMemory\n");
-                               PRINT_BV("        start: 0x%lx end: 0x%lx\n",
-                                       mdP->PhysicalStart,
-                                       mdP->PhysicalStart +
-                                       mdP->NumberOfPages * EFI_PAGE_SIZE);
-                               if (numConvMem) {
-                                       printk("     Currently only one efi "
-                                               "memory chunk supported !!!\n");
-                                       break;
-                               }
-                               machineFwG.mach_mem_start = mdP->PhysicalStart;
-                               machineFwG.mach_mem_size =
-                                       mdP->NumberOfPages * EFI_PAGE_SIZE;
-                               numConvMem++;
-                               break;
-                       case EfiMemoryMappedIOPortSpace:
-                               PRINT_BV("     -> EfiMemMappedIOPortSpace\n");
-                               break;
-                       case EfiPalCode:
-                                       machineFwG.ia64_pal_base =
-                                       __va(mdP->PhysicalStart);
-                               PRINT_BV("     -> EfiPalCode\n"
-                                        "        start : %p\n",
-                                        machineFwG.ia64_pal_base);
-                               break;
-               }
-               /* I have to setup the VirtualStart address of every
-                * RUNTIME-area in preparing the later call of
-                * SetVirtualAddressMap() therewidth the efi stuff uses
-                * virtual addressing and the efi runtime functions
-                * may be called directly.
-                */
-               if (mdP->Attribute & EFI_MEMORY_RUNTIME) {
-                       if (mdP->Attribute & EFI_MEMORY_WB)
-                               mdP->VirtualStart = __va(mdP->PhysicalStart);
-                       else {
-                               if (mdP->Attribute & EFI_MEMORY_UC)
-                                       printk("efi_init: RuntimeMemory with "
-                                               "UC attribute !!!!!!\n");
-                                       /*
-                                       mdP->VirtualStart =
-                                       IA64_PHYS_TO_RR6(mdP->PhysicalStart);
-                                       */
-                       }
-               }
-       }
-       /* Now switch efi runtime stuff to virtual addressing. */
-       status = ia64_call_efi_physical(
-                       (void*)__va((uint64_t)rsP->SetVirtualAddressMap),
-                       ia64BootParamG.efi_memmap_size,
-                       ia64BootParamG.efi_memdesc_size,
-                       ia64BootParamG.efi_memdesc_version,
-                       ia64BootParamG.efi_memmap);
-       status = EFI_SUCCESS;
-       if (status != EFI_SUCCESS) {
-               printk("warning: unable to switch EFI into virtual "
-                      "(status=%lu)\n", status);
-               return;
-       }
-       /* Getting efi function pointer for getEfiTime. */
-       machineFwG.efi.getTimeF =
-               (efi_get_time_t)__va((uint64_t)rsP->GetTime);
-       /* Getting efi function pointer for resetSystem. */
-       machineFwG.efi.resetSystemF =
-               (efi_reset_system_t)__va((uint64_t)rsP->ResetSystem);
-
-       /* Scanning the Configuration table of the EfiSystemTable. */
-       PRINT_BV("NumberOfConfigTableEntries: %ld\n",
-                efiSysTableP->NumberOfTableEntries);
-
-       confP = (efi_configuration_table_t*)
-                       __va(efiSysTableP->ConfigurationTable);
-       for (i = 0; i < efiSysTableP->NumberOfTableEntries; i++) {
-               if (!efi_guid_cmp(&confP[i].VendorGuid, &sal)) {
-                       machineFwG.ia64_sal_tableP = (sal_system_table_t*)
-                               __va((uint64_t) confP[i].VendorTable);
-                       PRINT_BV("  Found SalSystemTable at: 0x%lx\n",
-                                (uint64_t) machineFwG.ia64_sal_tableP);
-                       continue;
-               }
-               if (!efi_guid_cmp(&confP[i].VendorGuid, &acpi)) {
-                       machineFwG.ia64_efi_acpi_table =
-                               __va((uint64_t) confP[i].VendorTable);
-                       PRINT_BV("  Found AcpiTable at:      0x%lx\n",
-                                (uint64_t) machineFwG.ia64_efi_acpi_table);
-                       continue;
-               }
-               if (!efi_guid_cmp(&confP[i].VendorGuid, &acpi20)) {
-                       machineFwG.ia64_efi_acpi20_table =
-                               __va((uint64_t) confP[i].VendorTable);
-                       PRINT_BV("  Found Acpi20Table at:    0x%lx\n",
-                                (uint64_t) machineFwG.ia64_efi_acpi20_table);
-                       continue;
-               }
-       }
-}
diff --git a/extras/mini-os/arch/ia64/fw.S b/extras/mini-os/arch/ia64/fw.S
deleted file mode 100644 (file)
index 2ed4dc3..0000000
+++ /dev/null
@@ -1,499 +0,0 @@
-/*
- * Done by Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com>
- * Parts taken from FreeBSD.
- *
- ***************************************************************************
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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 <mini-os/asm.h>
-#include <mini-os/page.h>
-#include <mini-os/ia64_cpu.h>
-#include <mini-os/ia64_fpu.h>
-#include <mini-os/offsets.h>
-#include <mini-os/xen/xen.h>
-
-
-/*
- * ia64_change_mode:   change mode to/from physical mode
- *
- * Arguments:
- *     r14     psr for desired mode
- *
- * Modifies:
- *     r15-r20 scratch
- *     ar.bsp  translated to new mode
- *     sp      translated to new mode
- *     iip     translated to new mode
- */
-ENTRY(ia64_change_mode)
-       rsm     psr.i | psr.ic
-       mov     r19=ar.rsc              // save rsc while we change mode
-       tbit.nz p8,p9=r14,17            // Uses psr.dt-physical or virtual ?
-                       // p8 == true: switch to virtual
-                       // p9 == true: switch to physical
-       ;;
-       mov     ar.rsc=IA64_RSE_LAZY    // turn off RSE
-       mov     r16=rp
-       ;;
-       flushrs                         // clean the rse
-       srlz.i
-       ;;
-1:     mov     r15=ip
-       mov     r17=ar.bsp
-       mov     r18=ar.rnat
-       ;;
-       add     r15=2f-1b,r15           // address to rfi to
-               /* !!! must be the same like in  minios-ia64.lds */
-(p8)   movl    r20=(KERNEL_START - (1<<KERNEL_PHYS_START_SHIFT))
-       ;;
-                       // (p8): switch to virtual
-                       // (p9): switch to physical
-
-               // from virtual to physical
-(p9)   tpa     r15=r15                 // ip
-(p9)   tpa     r16=r16                 // rp
-(p9)   tpa     r17=r17                 // ar.bsp
-(p9)   tpa     sp=sp                   // sp
-       ;;              /* Needed only for assembler violate ... warnings. */
-               // from physical to virtual
-(p8)   add     r15=r20,r15             // ip
-(p8)   add     r16=r20,r16             // rp
-(p8)   add     r17=r20,r17             // ar.bsp
-(p8)   add     sp=r20,sp               // sp
-       ;;
-       mov     ar.bspstore=r17
-       mov     rp=r16
-       ;;
-       mov     ar.rnat=r18
-       mov     cr.iip=r15
-       mov     cr.ipsr=r14             // psr for new mode
-       mov     cr.ifs=r0
-       ;;
-       rfi
-       ;;
-2:     mov     ar.rsc=r19              // restore ar.rsc
-       ;;
-       br.ret.sptk.few rp              // now in new mode
-END(ia64_change_mode)
-
-/*
- * ia64_physical_mode:  change mode to physical mode
- *
- * Return:
- *  ret0  psr to restore
- *
- * Modifies:
- *  r15-r18 scratch
- *  ar.bsp  tranlated to physical mode
- *  psr.i cleared
- */
-ENTRY(ia64_physical_mode)
-       mov     r14=psr
-       movl    r15=(IA64_PSR_I|IA64_PSR_IT|IA64_PSR_DT|        \
-                       IA64_PSR_RT|IA64_PSR_DFL|IA64_PSR_DFH)
-       ;;
-       mov     ret0=r14
-       movl    r16=IA64_PSR_BN
-       ;;
-       andcm   r14=r14,r15     // clear various xT bits
-       ;;
-       or      r14=r14,r16     // make sure BN=1
-       or      ret0=ret0,r16   // make sure BN=1
-       ;;
-       br.cond.sptk.many ia64_change_mode
-END(ia64_physical_mode)
-
-/*
- * ia64_call_efi_physical:     call an EFI procedure in physical mode
- *
- * Arguments:
- *     in0             Address of EFI procedure descriptor
- *     in1-in5         Arguments to EFI procedure
- *
- * Return:
- *     ret0-ret3       return values from EFI
- *
- */
-ENTRY(ia64_call_efi_physical)
-       .prologue
-       .regstk 6,4,5,0
-       .save   ar.pfs,loc0
-       alloc   loc0=ar.pfs,6,4,5,0
-       ;;
-       .save   rp,loc1
-       mov     loc1=rp
-       ;;
-       .body
-       br.call.sptk.many rp=ia64_physical_mode
-       ;;
-
-       mov     loc2=r8                 // psr to restore mode
-       mov     loc3=gp                 // save kernel gp
-       ld8     r14=[in0],8             // function address
-       ;;
-       ld8     gp=[in0]                // function gp value
-       mov     out0=in1
-       mov     out1=in2
-       mov     out2=in3
-       mov     out3=in4
-       mov     out4=in5
-       mov     b6=r14
-       ;;
-       br.call.sptk.many rp=b6         // call EFI procedure
-       mov     gp=loc3                 // restore kernel gp
-       mov     r14=loc2                // psr to restore mode
-       ;;
-       br.call.sptk.many rp=ia64_change_mode
-       ;;
-       mov     rp=loc1
-       mov     ar.pfs=loc0
-       ;;
-       br.ret.sptk.many rp
-END(ia64_call_efi_physical)
-       
-
-/*
- * struct ia64_pal_result ia64_call_pal_static(uint64_t proc,
- *     uint64_t arg1, uint64_t arg2, uint64_t arg3)
- */
-ENTRY(ia64_call_pal_static)
-       
-       .regstk 4,5,0,0
-palret =       loc0
-entry  =       loc1
-rpsave =       loc2
-pfssave =      loc3
-psrsave        =       loc4
-
-       alloc   pfssave=ar.pfs,4,5,0,0
-       ;; 
-       mov     rpsave=rp
-
-       movl    entry=@gprel(ia64_pal_entry)
-1:     mov     palret=ip               // for return address
-       ;;
-       add     entry=entry,gp
-       mov     psrsave=psr
-       mov     r28=in0                 // procedure number
-       ;;
-       ld8     entry=[entry]           // read entry point
-       mov     r29=in1                 // copy arguments
-       mov     r30=in2
-       mov     r31=in3
-       ;;
-       mov     b6=entry
-       add     palret=2f-1b,palret     // calculate return address
-       ;;
-       mov     b0=palret
-       rsm     psr.i                   // disable interrupts
-       ;;
-       br.cond.sptk b6                 // call into firmware
-       ;;
-       ssm     psr.i                   // enable interrupts
-       ;;
-2:     mov     psr.l=psrsave
-       mov     rp=rpsave
-       mov     ar.pfs=pfssave
-       ;;
-       srlz.d
-       br.ret.sptk rp
-
-END(ia64_call_pal_static)
-
-/*
- * Call a efi function.
- * in0: func descriptor
- * in1: param1
- * ...
- * in5: param5
- */
-ENTRY(ia64_call_efi_func)
-       alloc   loc0=ar.pfs,6,3,5,0
-
-       mov     loc1=gp
-       mov     loc2=rp
-
-       mov     out0=in1
-       mov     out1=in2
-       mov     out2=in3
-       mov     out3=in4
-       mov     out4=in5
-
-       ld8     r14=[in0],8             // get function address
-       ;;
-       ld8     gp=[in0]                // function gp value
-       ;;
-       mov     b6=r14
-       br.call.sptk.many rp=b6         // call EFI procedure
-       
-       mov     ar.pfs=loc0
-       mov     gp=loc1
-       mov     rp=loc2
-       br.ret.sptk rp
-
-END(ia64_call_efi_func)
-
-
-/* Restore the context from the thread context.
- */
-ENTRY(restore_context)
-{      .mmi
-       invala
-       mov     ar.rsc=IA64_RSE_LAZY
-       add     r29=SW_SP,in0
-}
-       add     r30=SW_RP,in0
-       add     r31=SW_PR,in0
-       ;;
-       ld8     r12=[r29],SW_LC-SW_SP           // load sp
-       ld8     r16=[r30],SW_BSP-SW_RP          // load rp
-       ;;
-       ld8     r17=[r31],SW_RNAT-SW_PR         // load pr
-       ld8     r18=[r30],SW_PFS-SW_BSP         // load bsp
-       mov     rp=r16
-       ;;
-       ld8     r16=[r31],SW_R4-SW_RNAT         // load rnat
-       mov     pr=r17,-1                       // set pr
-       mov     ar.bspstore=r18
-       ;;
-       ld8     r18=[r30],SW_UNATA-SW_PFS       // load pfs
-       ld8     r17=[r29],SW_UNATB-SW_LC        // load lc
-       mov     ar.rnat=r16
-       ;;
-       ld8     r16=[r30],SW_R5-SW_UNATA        // load unat_a
-       mov     ar.pfs=r18
-       mov     ar.lc=r17
-       ;;
-       ld8.fill r4=[r31],SW_R6-SW_R4           // load r4
-       mov     ar.unat=r16
-       ;;
-       ld8.fill r5=[r30],SW_R7-SW_R5           // load r5
-       ld8     r16=[r29],SW_B3-SW_UNATB        // load unat_b
-       mov     ar.rsc=IA64_RSE_EAGER
-       ;;
-       ld8.fill r6=[r31],SW_B1-SW_R6           // load r6
-       ld8.fill r7=[r30],SW_B2-SW_R7           // load r7
-       ;;
-       ld8     r17=[r31],SW_B4-SW_B1           // load b1
-       ld8     r18=[r30],SW_B5-SW_B2           // load b2
-       mov     ar.unat=r16                     // unat_b
-       ;;
-       ld8     r16=[r29],SW_F2-SW_B3           // load b3
-       mov     b1=r17
-       mov     b2=r18
-       ;;
-       ld8     r17=[r31],SW_F3-SW_B4           // load b4
-       ld8     r18=[r30],SW_F4-SW_B5           // load b5
-       mov     b3=r16
-       ;;
-       ldf.fill f2=[r29]                       // load f2
-       mov     b4=r17
-       mov     b5=r18
-       ;;
-       ldf.fill f3=[r31],SW_F5-SW_F3           // load f3
-       ldf.fill f4=[r30],SW_F4-SW_F2           // load f4
-       ;;
-       ldf.fill f5=[r31],SW_F5-SW_F3           // load f5
-       ldf.fill f16=[r30],SW_F4-SW_F2          // load f16
-       ;;
-       ldf.fill f17=[r31],SW_F5-SW_F3          // load f17
-       ldf.fill f18=[r30],SW_F4-SW_F2          // load f18
-       ;;
-       ldf.fill f19=[r31],SW_F5-SW_F3          // load f19
-       ldf.fill f20=[r30],SW_F4-SW_F2          // load f20
-       ;;
-       ldf.fill f21=[r31],SW_F5-SW_F3          // load f21
-       ldf.fill f22=[r30],SW_F4-SW_F2          // load f22
-       ;;
-       ldf.fill f23=[r31],SW_F5-SW_F3          // load f23
-       ldf.fill f24=[r30],SW_F4-SW_F2          // load f24
-       ;;
-       ldf.fill f25=[r31],SW_F5-SW_F3          // load f25
-       ldf.fill f26=[r30],SW_F4-SW_F2          // load f26
-       ;;
-       ldf.fill f27=[r31],SW_F5-SW_F3          // load f27
-       ldf.fill f28=[r30],SW_F4-SW_F2          // load f28
-       ;;
-       ldf.fill f29=[r31],SW_F5-SW_F3          // load f29
-       ldf.fill f30=[r30],SW_F4-SW_F2          // load f30
-       ;;
-       ldf.fill f31=[r30],SW_F4-SW_F2          // load f31
-       add             r8=1,r0
-       br.ret.sptk     rp
-       ;;
-END(restore_context)
-
-/*
- * void switch_context(struct thread* old, struct thread* new)
- */
-ENTRY(switch_context)
-
-       mov     ar.rsc=IA64_RSE_LAZY
-       mov     r16=ar.unat
-       add     r31=SW_UNATB,in0
-       add     r30=SW_SP,in0
-       ;;
-{      .mmi
-       flushrs
-       st8     [r30]=sp,SW_RP-SW_SP            // sp
-       mov     r17=rp
-       ;;
-}
-       st8     [r31]=r16,SW_PR-SW_UNATB        // unat (before)
-       st8     [r30]=r17,SW_BSP-SW_RP          // rp
-       mov     r16=pr
-       ;;
-       st8     [r31]=r16,SW_PFS-SW_PR          // pr
-       mov     r17=ar.bsp
-       mov     r16=ar.pfs
-       ;;
-       st8     [r31]=r16,SW_RNAT-SW_PFS        // save pfs
-       st8     [r30]=r17,SW_R4-SW_BSP          // save bsp
-       mov     r16=ar.rnat
-       ;;
-       st8     [r31]=r16,SW_R5-SW_RNAT         // save rnat
-       mov     ar.rsc=IA64_RSE_EAGER
-       ;;
-{      .mmi
-       .mem.offset     8,0
-       st8.spill       [r30]=r4,SW_R6-SW_R4    // r4
-       .mem.offset     16,0
-       st8.spill       [r31]=r5,SW_R7-SW_R5    // r5
-       mov             r16=b1
-       ;;
-}
-{      .mmi
-       .mem.offset     8,0
-       st8.spill       [r30]=r4,SW_B1-SW_R6    // r6
-       .mem.offset     16,0
-       st8.spill       [r31]=r5,SW_B2-SW_R7    // r7
-       mov             r17=b2
-       ;;
-}
-       st8     [r30]=r16,SW_UNATA-SW_B1        // b1
-       st8     [r31]=r17,SW_B3-SW_B2           // b2
-       mov     r18=ar.unat
-       mov     r19=b3
-       mov     r20=b4
-       mov     r21=b5
-       ;;
-       st8     [r30]=r18,SW_B4-SW_UNATA        // unat (after)
-       st8     [r31]=r19,SW_B5-SW_B3           // b3
-       ;;
-       st8     [r30]=r20,SW_LC-SW_B4           // b4
-       st8     [r31]=r21,SW_F2-SW_B5           // b5
-       mov     r17=ar.lc
-       ;;
-       st8             [r30]=r17,SW_F3-SW_LC   // ar.lc
-       stf.spill       [r31]=f2,SW_F4-SW_F2
-       ;;
-       stf.spill       [r30]=f3,SW_F5-SW_F3
-       stf.spill       [r31]=f4,SW_F4-SW_F2
-       ;;
-       stf.spill       [r30]=f5,SW_F5-SW_F3
-       stf.spill       [r31]=f16,SW_F4-SW_F2
-       ;;
-       stf.spill       [r30]=f17,SW_F5-SW_F3
-       stf.spill       [r31]=f18,SW_F4-SW_F2
-       ;;
-       stf.spill       [r30]=f19,SW_F5-SW_F3
-       stf.spill       [r31]=f20,SW_F4-SW_F2
-       ;;
-       stf.spill       [r30]=f21,SW_F5-SW_F3
-       stf.spill       [r31]=f22,SW_F4-SW_F2
-       ;;
-       stf.spill       [r30]=f23,SW_F5-SW_F3
-       stf.spill       [r31]=f24,SW_F4-SW_F2
-       ;;
-       stf.spill       [r30]=f25,SW_F5-SW_F3
-       stf.spill       [r31]=f26,SW_F4-SW_F2
-       ;;
-       stf.spill       [r30]=f27,SW_F5-SW_F3
-       stf.spill       [r31]=f28,SW_F4-SW_F2
-       ;;
-       stf.spill       [r30]=f29,SW_F4-SW_F2
-       stf.spill       [r31]=f30
-       ;;
-       stf.spill       [r30]=f31
-       add             r8=0,r0
-       mf
-//     br.ret.sptk     rp
-
-{      .mfb
-       mov             r32=r33
-       nop             0
-       br.sptk         restore_context
-       ;;
-}
-
-END(switch_context)
-
-/*
- * The function is used to start a new thread.
- */
-ENTRY(thread_starter)
-
-       .prologue
-       .save   ar.pfs,loc0
-       alloc   loc0=ar.pfs,0,1,1,0
-       ;;
-       .body
-       ;;
-       mov     b7=r4                   // the function pointer
-       mov     out0=r6                 // the argument
-       ;;
-       br.call.sptk.many rp=b7         // Call the thread function
-       ;;
-       br.call.sptk.many rp=exit_thread        // call exit_thread
-       ;;
-END(thread_starter)
-
-ENTRY(__hypercall)
-       mov r2=r37
-       break 0x1000
-       br.ret.sptk.many b0
-       ;;
-END(__hypercall)
-
-/*
- * Stub for suspend.
- * Just force the stacked registers to be written in memory.
- */
-ENTRY(xencomm_arch_hypercall_suspend)
-       ;;
-       alloc   r20=ar.pfs,0,0,6,0
-       mov     r2=__HYPERVISOR_sched_op
-       ;;
-       /* We don't want to deal with RSE.  */
-       flushrs
-       mov     r33=r32
-       mov     r32=2           // SCHEDOP_shutdown
-       ;;
-       break   0x1000
-       ;;
-       br.ret.sptk.many b0
-END(xencomm_arch_hypercall_suspend)
-
diff --git a/extras/mini-os/arch/ia64/gen_off.c b/extras/mini-os/arch/ia64/gen_off.c
deleted file mode 100644 (file)
index f547f23..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright (c) 2007 Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com>
- *
- ******************************************************************************
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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 <mini-os/types.h>
-#include <mini-os/sched.h>
-#include <xen/xen.h>
-#include <xen/arch-ia64.h>
-
-#define DEFINE(sym, val)                                       \
-  asm volatile("\n->" sym " %0 /* " #val " */": : "i" (val))
-#define DEFINE_STR2(sym, pfx, val)                             \
-  asm volatile("\n->" sym " " pfx "%0" : : "i"(val));
-
-#define SZ(st,e) sizeof(((st *)0)->e)
-#define OFF(st,e,d,o)                          \
-  DEFINE(#d, offsetof(st, e) + o);             \
-  DEFINE(#d "_sz", SZ(st,e ));                 \
-  DEFINE_STR2(#d "_ld", "ld", SZ(st, e));      \
-  DEFINE_STR2(#d "_st", "st", SZ(st, e));                      
-
-#define TFOFF(e,d) OFF(trap_frame_t, e, d, 0)
-#define SIZE(st,d) DEFINE(#d, sizeof(st))
-
-#define SWOFF(e,d) OFF(struct thread, e, d, 0)
-
-/* shared_info_t from xen/xen.h */
-#define SI_OFF(e, d) OFF(shared_info_t, e, d,0)
-/* mapped_regs_t from xen/arch-ia64.h */
-#define MR_OFF(e, d) OFF(mapped_regs_t, e, d, XMAPPEDREGS_OFS)
-
-int
-main(int argc, char ** argv)
-{
-       TFOFF(cfm, TF_CFM);
-       TFOFF(pfs, TF_PFS);
-       TFOFF(bsp, TF_BSP);
-       TFOFF(rnat, TF_RNAT);
-       TFOFF(csd, TF_CSD);
-       TFOFF(ccv, TF_CCV);
-       TFOFF(unat, TF_UNAT);
-       TFOFF(fpsr, TF_FPSR);
-       TFOFF(pr, TF_PR);       
-
-       TFOFF(sp, TF_SP);
-       TFOFF(gp, TF_GP);
-       TFOFF(tp, TF_TP);
-
-       TFOFF(r2, TF_GREG2);
-       TFOFF(r3, TF_GREG3);
-       TFOFF(r16, TF_GREG16);
-       TFOFF(r17, TF_GREG17);
-
-       TFOFF(b0, TF_BREG0);
-       TFOFF(b6, TF_BREG6);
-       TFOFF(b7, TF_BREG7);
-
-       TFOFF(f6, TF_FREG6);
-       TFOFF(f7, TF_FREG7);
-
-       TFOFF(rsc, TF_RSC);
-       TFOFF(ndirty, TF_NDIRTY);
-       TFOFF(ssd, TF_SSD);
-       TFOFF(iip, TF_IIP);
-       TFOFF(ipsr, TF_IPSR);
-       TFOFF(ifs, TF_IFS);
-       TFOFF(trap_num, TF_TRAP_NUM);
-
-       TFOFF(ifa, TF_IFA);
-       TFOFF(isr, TF_ISR);
-       TFOFF(iim, TF_IIM);
-
-       SIZE(trap_frame_t, TF_SIZE);
-
-       SIZE(struct thread, SW_SIZE);
-       SWOFF(regs.unat_b, SW_UNATB);
-       SWOFF(regs.sp, SW_SP);
-       SWOFF(regs.rp, SW_RP);
-       SWOFF(regs.pr, SW_PR);
-       SWOFF(regs.pfs, SW_PFS);
-       SWOFF(regs.bsp, SW_BSP);
-       SWOFF(regs.rnat, SW_RNAT);
-       SWOFF(regs.lc, SW_LC);
-       //SWOFF(regs.fpsr, SW_FPSR);
-       //SWOFF(regs.psr, SW_PSR);
-       //SWOFF(regs.gp, SW_GP);
-       SWOFF(regs.unat_a, SW_UNATA);
-        SWOFF(regs.r4, SW_R4);
-        SWOFF(regs.r5, SW_R5);
-        SWOFF(regs.r6, SW_R6);
-        SWOFF(regs.r7, SW_R7);
-        SWOFF(regs.b1, SW_B1);
-        SWOFF(regs.b2, SW_B2);
-        SWOFF(regs.b3, SW_B3);
-        SWOFF(regs.b4, SW_B4);
-        SWOFF(regs.b5, SW_B5);
-        SWOFF(regs.f2, SW_F2);
-        SWOFF(regs.f3, SW_F3);
-        SWOFF(regs.f4, SW_F4);
-        SWOFF(regs.f5, SW_F5);
-
-       SI_OFF(arch.start_info_pfn, START_INFO_PFN);
-       MR_OFF(interrupt_mask_addr, XSI_PSR_I_ADDR_OFS);
-       MR_OFF(interrupt_collection_enabled, XSI_PSR_IC_OFS);
-       MR_OFF(ipsr, XSI_IPSR_OFS);
-       MR_OFF(iip, XSI_IIP_OFS);
-       MR_OFF(ifs, XSI_IFS_OFS);
-       MR_OFF(ifa, XSI_IFA_OFS);
-       MR_OFF(iim, XSI_IIM_OFS);
-       MR_OFF(iim, XSI_IIM_OFS);
-       MR_OFF(iipa, XSI_IIPA_OFS);
-       MR_OFF(isr, XSI_ISR_OFS);
-       MR_OFF(banknum, XSI_BANKNUM_OFS);
-       MR_OFF(bank1_regs[0], XSI_BANK1_R16_OFS);
-       MR_OFF(precover_ifs, XSI_PRECOVER_IFS_OFS);
-
-       return 0;
-}
diff --git a/extras/mini-os/arch/ia64/ia64.S b/extras/mini-os/arch/ia64/ia64.S
deleted file mode 100644 (file)
index 8fde089..0000000
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * Copyright (c) 2007 Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com>
- *
- *****************************************************************************
- * 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.
- */
-
-
-
-#include <mini-os/asm.h>
-#include <mini-os/page.h>
-#include <mini-os/ia64_cpu.h>
-#include <mini-os/ia64_fpu.h>
-#include <mini-os/privop.h>
-#include <mini-os/offsets.h>
-
-
-
-       /*
-        * Allocate kernel stack area.
-        * This is used for stack pointer (goes down from kstack+PAGE_SIZE) and
-        * RSE (goes up from kstack).
-        */
-       .section .data.start,"aw"
-       .global kstack
-       .align  PAGE_SIZE
-kstack:        .space KSTACK_PAGES * PAGE_SIZE
-
-       .text
-
-       /*
-        * Start the kernel.
-        * r28 points to the address of the boot parameter area, given
-        * from the bootloader.
-        * Execution reaches here in physical mode.
-        */
-ENTRY(_start)
-       .prologue
-       .save rp, r0            // terminate unwind chain with a NULL rp
-       .body
-
-       alloc   loc0=ar.pfs,0,1,1,0
-
-       rsm psr.i | psr.ic
-       ;;
-       srlz.i
-       ;;
-
-       /*
-        * Initialize mini-os region registers:
-        * Currently only region registers 5 and 7 are used for addressing.
-        * rr[5] : virtual kernel address space
-        * rr[7] : directly mapped physically addresses.
-        */
-       movl    r2=0<<IA64_RR_IDX_POS
-       movl    r3=1<<IA64_RR_IDX_POS
-       ;;
-       mov     rr[r2]=r0
-       mov     rr[r3]=r0
-       ;;
-       movl    r2=2<<IA64_RR_IDX_POS
-       movl    r3=3<<IA64_RR_IDX_POS
-       ;;
-       mov     rr[r2]=r0
-       mov     rr[r3]=r0
-       ;;
-       movl    r2=4<<IA64_RR_IDX_POS
-       movl    r3=6<<IA64_RR_IDX_POS
-       ;;
-       mov     rr[r2]=r0
-       mov     rr[r3]=r0
-       ;;
-       // Wired memory for kernel data and text.
-       movl    r2=IA64_RR_VAL(KERNEL_TR_PAGE_SIZE,0)
-       movl    r3=5<<IA64_RR_IDX_POS           // region 5
-       ;;
-       mov     rr[r3]=r2
-       ;;
-       /*
-        * Region 7 addresses are only for directly mapped physically
-        * addresses.
-        */
-       movl    r2=IA64_RR_VAL(PTE_PS_16K,0)
-       movl    r3=7<<IA64_RR_IDX_POS           // region 7
-       ;;
-       mov     rr[r3]=r2
-       ;;
-       /*
-        * Setup protection keys for region 5 and 7.
-        */
-       mov     r2=(IA64_KEY_REG5 << IA64_PKR_KEY) | IA64_PKR_VALID
-       mov     r3=(IA64_KEY_REG7 << IA64_PKR_KEY) | IA64_PKR_VALID
-       mov     r14=0x1
-       ;;
-       mov     pkr[r0]=r2      /* Region 5 */
-       mov     pkr[r14]=r3     /* Region 7 */
-       ;;
-       /*
-        * Now pin mappings into the TLB for kernel text and data
-        */
-       mov     r18=(KERNEL_TR_PAGE_SIZE<<IA64_ITIR_PS)| \
-                       (IA64_KEY_REG5<<IA64_ITIR_KEY)
-       movl    r17=KERNEL_START
-       ;;
-       mov     cr.itir=r18
-       mov     cr.ifa=r17
-       mov     r16=IA64_TR_KERNEL
-       mov     r3=ip
-       movl    r18=PTE_KERNEL_ATTR
-       ;;
-       dep     r2=0,r3,0,KERNEL_TR_PAGE_SIZE
-       ;;
-       or      r18=r2,r18
-       ;;
-       srlz.i
-       ;;
-       itr.i   itr[r16]=r18
-       ;;
-       itr.d   dtr[r16]=r18
-       ;;
-       srlz.i
-
-       /*  Switch into virtual mode */
-       movl    r16=STARTUP_PSR
-       ;;
-       mov     cr.ipsr=r16
-       movl    r17=1f
-       ;;
-       mov     cr.iip=r17
-       mov     cr.ifs=r0
-       ;;
-       rfi
-       ;;
-1:     /* now we are in virtual mode */
-
-       movl    r3=ia64_trap_table
-       ;;
-       mov     cr.iva=r3
-       ;;
-
-       movl    r2=IA64_FPSR_DEFAULT
-       movl    r3=IA64_DCR_DEFAULT
-       ;;
-       srlz.i
-       movl    gp=__gp
-
-       mov     ar.fpsr=r2
-       mov     cr.dcr=r3
-       ;;
-       movl    r2=kstack
-       movl    r5=KSTACK_PAGES * PAGE_SIZE - 16
-       mov     ar.rsc=0        // place RSE in enforced lazy mode
-       ;;
-       loadrs                  // clear the dirty partition
-       ;;
-       mov     ar.bspstore=r2  // establish the new RSE stack
-       add     sp=r2,r5
-       ;;
-       mov     ar.rsc=IA64_RSE_EAGER   // place RSE in eager mode
-
-       ;;
-       movl    r2=ia64_boot_paramP
-       mov     r3=7            // make address virtual region 7.
-       ;;
-       dep     r28=r3,r28,61,3
-       ;;
-                               // save the address of the boot param area
-                               // passed by the bootloader
-       st8     [r2]=r28
-       ;;
-
-       /* Set xsi base. I use here XSI_BASE. */
-#define FW_HYPERCALL_SET_SHARED_INFO_VA                 0x600
-       mov r2=FW_HYPERCALL_SET_SHARED_INFO_VA
-       movl r28=XSI_BASE
-       ;;
-       break 0x1000
-       ;;
-       /*
-        * I set up here the pointer to the global start_info structure.
-        * This structure will be initialized in arch_init().
-        */
-       movl    out0=start_info_union
-               // Prepare out0 - the pointer to start_info_t.
-       movl    r14=XSI_BASE
-       ;;
-       add     r15=START_INFO_PFN,r14  // add offset to XSI_BASE
-       ;;
-       START_INFO_PFN_ld       r14=[r15]       // load the start_info_pfn
-       add     r16=7, r0
-       ;;
-       shl     r15=r14,PAGE_SHIFT_XEN_16K      // pfn << PAGE_SHIFT_XEN_16K
-       shl     r16=r16,IA64_RR_IDX_POS         // (7<<IA64_RR_IDX_POS)
-       ;;
-       or      out0=r16, r15                   // make a region 7 address
-       ;;
-       ssm     psr.i | psr.ic
-       ;;
-       srlz.i
-       ;;
-       br.call.sptk.many rp=start_kernel
-       ;;
-       add     r2=3,r0
-       ;;
-       ld8     r3=[r2]
-       ;;
-
-self:  hint @pause
-       br.sptk.many self               // endless loop
-END(_start)
-
-
-ENTRY(do_nop)
-       nop     0x01
-       add     r15=1,r15
-       br.ret.sptk.many rp
-END(do_nop)
diff --git a/extras/mini-os/arch/ia64/ivt.S b/extras/mini-os/arch/ia64/ivt.S
deleted file mode 100644 (file)
index 863a498..0000000
+++ /dev/null
@@ -1,774 +0,0 @@
-/*
- * Copyright (c) 2007 Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com>
- * Description: ia64 specific trap handling.
- *
- ****************************************************************************
- * 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.
- *
- */
-
-
-#include <mini-os/asm.h>
-#include <mini-os/page.h>
-#include <mini-os/ia64_cpu.h>
-#include <mini-os/privop.h>
-#include <mini-os/offsets.h>
-
-
-/* General register usage in interrupt handling:
- *     r16, r17, ... are used for input parameters of sub-routines
- *     r29:    used to access memory which may raise nested TLB fault
- *     r30:    b0 save register
- *     r31:    predicates save register
- *     p30,p31:        used for TLB stuff: (0,1)=data, (1,0)=instruction
- */
-
-
-#define FILL_FP_PAIR(f1, f2, b1, b2)   \
-       ldf.fill        f1=[b1],32      ;\
-       ldf.fill        f2=[b2],32      ;\
-       ;;
-
-#define SPILL_FP_PAIR(f1, f2, b1, b2)  \
-       stf.spill       [b1]=f1,32      ;\
-       stf.spill       [b2]=f2,32      ;\
-       ;;
-
-#define FILL_REG_PAIR(r1, r2, b1, b2)  \
-       ld8.fill        r1=[b1],16      ;\
-       ld8.fill        r2=[b2],16      ;\
-       ;;
-
-#define SPILL_REG_PAIR(r1, r2, b1, b2) \
-       .mem.offset 0,0                 ;\
-       st8.spill       [b1]=r1,16      ;\
-       .mem.offset 8,0                 ;\
-       st8.spill       [b2]=r2,16      ;\
-       ;;
-
-
-/**
- *     The function does a store of the current processor context
- *     to the given exception frame address.
- *     These are some special and the scratch registers for calling
- *     C-functions later.
- *     The bspstore will be the same. A clean RSE is made with the
- *     cover instruction.
- *     
- *     The return is done through a jump to the next bundle after ip (r16).
- *
- *     Used register: r16, r18, r19, r20, r21, r22 of bank 0
- *
- *     @param: r16 ip of the bundle with the jump.
- *     @param: r18 pointer to the trap frame.
- *     @param: r23 trap number/err val
- *
- */
-
-ENTRY(save_tf_rse_switch)
-       movl    r21=XSI_IPSR            // XEN !!
-       movl    r22=XSI_IIP             // XEN !!
-       ;;
-       ld8     r21=[r21]               // XEN.ipsr
-       ld8     r22=[r22];;             // XEN.iip
-       add     r19=TF_IPSR,r18
-       add     r20=TF_IIP,r18
-       ;;
-       st8     [r19]=r21               // store cr.ipsr
-       st8     [r20]=r22               // store cr.iip
-       ;;
-       //// r16 return jump pointer, r18 - trap frame base, 
-       add     r19=TF_UNAT,r18
-       mov     r20=ar.unat
-       ;;
-       st8     [r19]=r20               // store scratch unat
-       ;;
-
-       add     r19=TF_GP,r18
-       add     r20=TF_SP,r18
-       ;;
-       st8     [r19]=gp,TF_TP-TF_GP    // store gp
-       st8     [r20]=sp,TF_PR-TF_SP    // store sp
-       mov     r21=pr
-       ;;
-       st8     [r19]=r13               // store tp
-       st8     [r20]=r21               // store pr
-       ;;
-       add     r19=TF_GREG2,r18        // Now first general regs.
-       add     r20=TF_GREG3,r18
-       ;;
-       SPILL_REG_PAIR( r2, r3,r19,r20)
-       SPILL_REG_PAIR( r8, r9,r19,r20)
-       SPILL_REG_PAIR(r10,r11,r19,r20)
-       SPILL_REG_PAIR(r14,r15,r19,r20)
-       ;;
-       mov     r14=r18         // move trap frame base for bsw
-       mov     r15=r16         // save return address
-       ;;
-       //bsw.1         // switch to bank 1 for saving these registers.
-       movl r30=XSI_BANKNUM            // Switch to bank 1.
-       mov r31=1;;
-       st4 [r30]=r31
-       ;;
-       /*
-        * On XEN the hypervisor has stored the bank 1 registers
-        * r16-r31. I must reload these registers here to get
-        * access.
-        */
-       movl r30=XSI_BANK1_R16;
-       movl r31=XSI_BANK1_R16+8;; 
-       ld8 r16=[r30],16; ld8 r17=[r31],16;;
-       ld8 r18=[r30],16; ld8 r19=[r31],16;;
-       ld8 r20=[r30],16; ld8 r21=[r31],16;;
-       ld8 r22=[r30],16; ld8 r23=[r31],16;;
-       ld8 r24=[r30],16; ld8 r25=[r31],16;;
-       ld8 r26=[r30],16; ld8 r27=[r31],16;;
-       ld8 r28=[r30],16; ld8 r29=[r31],16;;
-       ld8 r30=[r30]; ld8 r31=[r31];;
-       add     r2=TF_GREG16,r14
-       add     r3=TF_GREG17,r14
-       ;;
-       SPILL_REG_PAIR(r16,r17,r2,r3)
-       SPILL_REG_PAIR(r18,r19,r2,r3)
-       SPILL_REG_PAIR(r20,r21,r2,r3)
-       SPILL_REG_PAIR(r22,r23,r2,r3)
-       SPILL_REG_PAIR(r24,r25,r2,r3)
-       SPILL_REG_PAIR(r26,r27,r2,r3)
-       SPILL_REG_PAIR(r28,r29,r2,r3)
-       SPILL_REG_PAIR(r30,r31,r2,r3)
-       ;;
-       //bsw.0                         // back to interrupt bank 0
-       movl r2=XSI_BANKNUM;;
-       st4 [r2]=r0
-       ;;
-       mov     r18=r14                 // restore context pointer
-       mov     r16=r15                 // restore return address
-       ;;
-       //// r16 return jump pointer, r18 - trap frame base, 
-       add     r19=TF_CCV,r18
-       add     r20=TF_CSD,r18
-       mov     r21=ar.ccv
-       mov     r22=ar.csd
-       ;;
-       st8     [r19]=r21               // ar.ccv
-       st8     [r20]=r22               // ar.csd
-       ;;
-       add     r19=TF_SSD,r18
-       mov     r21=ar.ssd
-       ;;
-       st8     [r19]=r21               // ar.ssd
-       ;;
-       add     r19=TF_FREG6,r18
-       add     r20=TF_FREG7,r18
-       ;;
-       SPILL_FP_PAIR(f6, f7, r19, r20)
-       SPILL_FP_PAIR(f8, f9, r19, r20)
-       SPILL_FP_PAIR(f10, f11, r19, r20)
-
-       add     r19=TF_BREG0,r18        // b0, b6, b7
-       add     r20=TF_BREG6,r18
-       mov     r21=b0
-       mov     r22=b6
-       ;;
-       st8     [r19]=r21,TF_BREG7-TF_BREG0     // store b0
-       st8     [r20]=r22,16            // store b6
-       ;;
-       mov     r21=b7
-       ;;
-       st8     [r19]=r21               // store b7
-
-       //// r16 return jump pointer, r18 - trap frame base, 
-
-               // Read and save RSC, PFS
-       add     r19=TF_PFS,r18
-       add     r20=TF_RSC,r18
-       mov     r21=ar.pfs
-       mov     r22=ar.rsc
-       ;;
-{      .mmb
-       st8     [r19]=r21               // store ar.pfs
-       st8     [r20]=r22               // store ar.rsc
-               // Issue cover instruction
-       cover           // must be the last instruction in bundle
-       //XEN_HYPER_COVER
-       ;;
-}
-               // Read and save IFS
-       add     r19=TF_IFS,r18
-       add     r20=TF_CFM,r18
-               /* xen special handling for possibly lazy cover */
-       movl    r8=XSI_PRECOVER_IFS;
-       ;;
-       ld8     r21=[r8]
-       ;;
-       st8     [r19]=r21               // store cr.ifs
-       dep.z   r22=r21,0,38            // copy ifm part from ifs.ifm
-       ;;
-       st8     [r20]=r22               // store cfm
-               // RSE in enforced lazy mode
-       mov     ar.rsc=IA64_RSE_LAZY
-       ;;
-               // Read and save BSPSTORE and RNAT
-       add     r19=TF_BSP,r18
-       add     r20=TF_RNAT,r18
-       mov     r21=ar.bspstore
-       mov     r22=ar.rnat
-       ;;
-       st8     [r19]=r21                       // store ar.bspstore
-       st8     [r20]=r22                       // store ar.rnat
-       ;;
-               // Write new BSPSTORE
-       //mov   r21=ar.bsp
-       //;;
-       mov     r22=r21                 // new bspstore equal to old
-       ;;
-       mov     ar.bspstore=r22         // the new bspstore
-       ;;
-               // Read and save the new BSP for calculating number of dirty regs.
-       mov     r21=ar.bsp
-       ;;
-       sub     r21=r21,r22             // r21 -> ndirty
-       add     r19=TF_NDIRTY-TF_BSP,r19        // TF_NDIRTY pos in r19
-       ;;
-       st8     [r19]=r21               // store ndirty
-       ;;
-       mov     ar.rsc=IA64_RSE_EAGER   // RSE on again
-       ;;
-       add     r19=TF_FPSR,r18
-       ;;
-       mov     r21=ar.fpsr
-       ;;
-       st8     [r19]=r21               // ar.fpsr
-       ;;
-       //// r16 return jump pointer, r18 - trap frame base, 
-               // Load the gp with our module __gp
-       movl    gp=__gp
-       ;;
-       add     r16=16,r16      // for jump to next bundle
-       ;;
-       mov     b7=r16
-       ;;
-
-{      .mfb
-       srlz.d
-       nop     0
-       br.sptk b7
-       ;;
-}
-
-END(save_tf_rse_switch)
-
-
-/**
- *     The function reloads the processor context stored in
- *     save_tf_rse_switch().
- *     
- *     On calling the function the bank 0 must be activ.
- *     The return is done through a rfi.
- *     Used register: b7, r16, r18, r19, r20, r21, r22 of bank 0
- *
- *     @param: r18 pointer to the exception frame
- *
- */
-ENTRY(restore_tf_rse_switch) 
-       add     r19=TF_IPSR,r18
-       add     r20=TF_IIP,r18
-       ;;
-       ld8     r21=[r19]               // load cr.ipsr
-       ld8     r22=[r20]               // load cr.iip
-       movl    r16=XSI_IPSR            // XEN !!
-       ;;
-       st8     [r16]=r21,XSI_IIP_OFS-XSI_IPSR_OFS      // XEN.ipsr
-       mov     r2=r21                  // save for fp stuff below
-       ;;
-       st8     [r16]=r22               // XEN.iip
-       ;;
-       //// r18 - trap frame base 
-               // Allocate a zero sized frame
-       alloc   r30=ar.pfs,0,0,0,0      // discard current frame
-       ;;
-               // calc number of dirty regs and put this into rsc.loardrs
-       add     r19=TF_NDIRTY,r18
-       ;;
-       ld8     r22=[r19]               // ndirty
-       ;;
-       shl     r21=r22,16              // value for ar.rsc
-       ;;
-       mov     ar.rsc=r21              // setup for loadrs
-       ;;
-               // Issue a loadrs instruction
-{      .mmi
-       loadrs          // must be the first instruction
-       ;;
-       nop 0x0
-       nop 0x0
-}
-               // Restore BSPSTORE from interrupted context
-       add     r19=TF_BSP,r18
-       add     r20=TF_RNAT,r18
-       ;;      
-       ld8     r21=[r19]               // load ar.bspstore
-       ld8     r22=[r20]               // load ar.rnat
-       ;;
-       mov     ar.bspstore=r21         // set ar.bspstore
-       ;;
-               // Restore RNAT
-       mov     ar.rnat=r22             // set ar.rnat
-       ;;
-               // Restore PFS and IFS
-       add     r19=TF_PFS,r18
-       add     r20=TF_IFS,r18
-       movl    r16=XSI_IFS             // XEN !!
-       ;;
-       ld8     r21=[r19]               // load ar.pfs
-       ld8     r22=[r20]               // load cr.ifs
-       ;;
-       add     r19=TF_RSC,r18
-       mov     ar.pfs=r21
-       st8     [r16]=r22               // XEN.ifs
-       ;;
-               // Restore RSC
-       ld8     r21=[r19]               // load ar.rsc
-       ;;
-       mov     ar.rsc=r21              // set ar.rsc
-       //// r18 - trap frame base
-       add     r19=TF_GP,r18
-       add     r20=TF_SP,r18
-       ;;
-       ld8     gp=[r19],TF_TP-TF_GP    // load gp
-       ld8     sp=[r20],TF_PR-TF_SP    // load sp
-       ;;
-       ld8     r13=[r19]               // load tp
-       ld8     r21=[r20]               // load pr
-       ;;
-       mov     pr=r21,-1               // set pr
-       ;;
-       add     r19=TF_BREG0,r18
-       add     r20=TF_BREG6,r18
-       ;;
-       ld8     r21=[r19],TF_BREG7-TF_BREG0     // load b0
-       ld8     r22=[r20],16            // load b6
-       ;;
-       mov     b0=r21
-       mov     b6=r22
-       ;;
-       ld8     r21=[r19]               // load b7
-       ld8     r22=[r20],16            // load b3
-       ;;
-       mov     b7=r21
-       //// r18 - trap frame base
-       mov     r14=r18                 // Save the context pointer
-       ;;
-       // bsw.1
-       movl r30=XSI_BANKNUM            // Switch to bank 1.
-       mov r31=1;;
-       st4 [r30]=r31
-       ;;
-       add     r2=TF_GREG16,r14
-       add     r3=TF_GREG17,r14
-       ;;
-       FILL_REG_PAIR(r16,r17,r2,r3)
-       FILL_REG_PAIR(r18,r19,r2,r3)
-       FILL_REG_PAIR(r20,r21,r2,r3)
-       FILL_REG_PAIR(r22,r23,r2,r3)
-       FILL_REG_PAIR(r24,r25,r2,r3)
-       FILL_REG_PAIR(r26,r27,r2,r3)
-       FILL_REG_PAIR(r28,r29,r2,r3)
-       FILL_REG_PAIR(r30,r31,r2,r3)
-
-       /*
-        * On XEN I have to store the bank 1 register into the
-        * global XSI_... area.
-        */
-               // r16-r31 all now hold bank1 values
-       movl r2=XSI_BANK1_R16
-       movl r3=XSI_BANK1_R16+8
-       ;;
-       .mem.offset 0,0; st8.spill [r2]=r16,16
-       .mem.offset 8,0; st8.spill [r3]=r17,16
-       ;;
-       .mem.offset 0,0; st8.spill [r2]=r18,16
-       .mem.offset 8,0; st8.spill [r3]=r19,16
-       ;;
-       .mem.offset 0,0; st8.spill [r2]=r20,16
-       .mem.offset 8,0; st8.spill [r3]=r21,16
-       ;;
-       .mem.offset 0,0; st8.spill [r2]=r22,16
-       .mem.offset 8,0; st8.spill [r3]=r23,16
-       ;;
-       .mem.offset 0,0; st8.spill [r2]=r24,16
-       .mem.offset 8,0; st8.spill [r3]=r25,16
-       ;;
-       .mem.offset 0,0; st8.spill [r2]=r26,16
-       .mem.offset 8,0; st8.spill [r3]=r27,16
-       ;;
-       .mem.offset 0,0; st8.spill [r2]=r28,16
-       .mem.offset 8,0; st8.spill [r3]=r29,16
-       ;;
-       .mem.offset 0,0; st8.spill [r2]=r30,16
-       .mem.offset 8,0; st8.spill [r3]=r31,16
-       ;;
-       // bsw.0
-       movl r2=XSI_BANKNUM;;
-       st4 [r2]=r0;
-
-       mov     r18=r14                 // Move back the context pointer
-       ;;
-       add     r19=TF_GREG2,r18
-       add     r20=TF_GREG3,r18
-       ;;
-       FILL_REG_PAIR( r2, r3,r19,r20)
-       FILL_REG_PAIR( r8, r9,r19,r20)
-       FILL_REG_PAIR(r10,r11,r19,r20)
-       FILL_REG_PAIR(r14,r15,r19,r20)
-
-       //// r18 - trap frame base, 
-
-       add     r19=TF_CCV,r18
-       add     r20=TF_CSD,r18
-       ;;
-       ld8     r21=[r19]               // ar.ccv
-       ld8     r22=[r20]               // ar.csd
-       ;;
-       mov     ar.ccv=r21
-       mov     ar.csd=r22
-       add     r19=TF_SSD,r18
-       ;;
-       ld8     r21=[r19]               // ar.ssd
-       ;;
-       mov     ar.ssd=r21
-       add     r19=TF_FREG6,r18
-       add     r20=TF_FREG7,r18
-       ;;
-       FILL_FP_PAIR(f6, f7, r19, r20)
-       FILL_FP_PAIR(f8, f9, r19, r20)
-       FILL_FP_PAIR(f10, f11, r19, r20)
-       add     r19=TF_FPSR,r18
-       ;;
-       ld8     r21=[r19]               // ar.fpsr
-       ;;
-       mov     ar.fpsr=r21
-       add     r19=TF_UNAT,r18
-       ;;
-       ld8     r21=[r19]
-       ;;
-       mov     ar.unat=r21
-       ;;
-       srlz.i
-       ;;
-       //rfi
-       XEN_HYPER_RFI;
-       ;;
-END(restore_tf_rse_switch)
-
-
-ENTRY(save_special_regs)
-       alloc   loc0=ar.pfs,1,7,0,0
-       movl    loc1=XSI_IFA            // XEN !!
-       movl    loc2=XSI_ISR            // XEN !!
-       ;;
-       ld8     loc3=[loc1],XSI_IIM_OFS-XSI_IFA_OFS     // load XEN.ifa
-       ld8     loc4=[loc2],XSI_IIPA_OFS-XSI_ISR_OFS    // load XEN.isr
-       add     loc5=TF_IFA,in0
-       add     loc6=TF_ISR,in0
-       ;;
-       st8     [loc5]=loc3,TF_IIM-TF_IFA       // store cr.ifa
-       st8     [loc6]=loc4                     // store cr.isr
-       ;;
-       ld8     loc3=[loc1]                     // load XEN.iim
-       ;;
-       st8     [loc5]=loc3                     // store cr.iim
-       ;;
-       mov     ar.pfs=loc0
-       ;;
-       br.ret.sptk.few rp
-END(save_special_regs)
-
-
-ENTRY(hypervisor_callback)
-       /*
-        * Use the thread stack here for storing the trap frame.
-        * It's not wired mapped, so nested data tlb faults may occur!
-        */
-       add     r18=-TF_SIZE,sp
-       ;;
-{      .mib
-       nop     0x02
-       mov     r16=ip          // for jump back from save_tf_rse_switch
-       br.sptk save_tf_rse_switch
-       ;;
-}
-       add     sp=-16,r18              // the new stack
-       alloc   r15=ar.pfs,0,0,1,0      // 1 out for do_hypervisor_callback
-       ;;
-       mov     out0=r18                // the trap frame
-       movl    r22=XSI_PSR_IC
-       mov     r23=1;;
-       st8     [r22]=r23               // ssm psr.ic
-       ;;
-       br.call.sptk.few rp = do_hypervisor_callback
-
-       movl    r22=XSI_PSR_IC
-       ;;
-       st4     [r22]=r0                // rsm psr.ic
-       add     r18=16,sp               // load EF-pointer again
-       ;;
-                       // must have r18-efp, calls rfi at the end.
-       br.sptk restore_tf_rse_switch
-       ;;
-END(hypervisor_callback)
-
-       /*
-        * In: r30 - trap number
-        */
-ENTRY(trap_error)
-               // Calculate the stack address for storing.
-       add     r18=-TF_SIZE,sp
-       ;;
-       add     r20=TF_TRAP_NUM,r18
-       ;;
-       st2     [r20]=r30       // save trap number
-       ;;
-
-{      .mib
-       nop     0x02
-       mov     r16=ip          // for jumping back from save_tf_rse_switch
-               // Used register: r16, r18, r19, r20, r21, r22 of bank 0
-       br.sptk save_tf_rse_switch
-       ;;
-}
-
-       alloc   r15=ar.pfs,0,0,1,0      // 1 out for do_trap_error
-       ;;
-       mov     out0=r18                // the trap frame
-       add     sp=-16,r18              // C-call abi
-       ;;
-       movl r30=XSI_BANKNUM            // bsw.1
-       mov r31=1;;
-       st4 [r30]=r31;;
-
-               /* Save extra interrupt registers to the trap frame. */
-       br.call.sptk.few rp = save_special_regs
-       ;;
-
-       movl    r22=XSI_PSR_IC
-       movl    r23=XSI_PSR_I_ADDR
-       ;;
-       ld8     r23=[r23]
-       mov     r25=1
-       ;;
-       st4     [r22]=r25               // ssm psr.ic
-       st1     [r23]=r0                // ssm psr.i
-       ;;
-
-       br.call.sptk.few rp = do_trap_error
-       ;;
-               // --> currently not reached!!!
-       movl r23=XSI_PSR_I_ADDR
-       movl r22=XSI_PSR_IC
-       ;;
-       ld8 r23=[r23]
-       mov r25=1
-       ;;
-       st1 [r23]=r25
-       st4 [r22]=r0            // note: clears both vpsr.i and vpsr.ic!
-       ;;
-       bsw.0
-       ;;
-       add     r18=16,sp               // load EF-pointer again
-       ;;
-       mov     sp=r18
-                       // must have r18-efp, calls rfi at the end.
-       br.sptk restore_tf_rse_switch
-       ;;
-END(trap_error)
-
-
-/*
- * The trap handler stuff.
- */
-
-#define TRAP_ERR(num)                  \
-       mov     r30 = num;              \
-       ;;              ;               \
-       br.sptk trap_error              \
-       ;;
-
-#define        IVT_ENTRY(name, offset)                 \
-       .org    ia64_trap_table + offset;       \
-       .global hivt_##name;                    \
-       .proc   hivt_##name;                    \
-       .prologue;                              \
-       .body;                                  \
-hivt_##name:
-
-#define        IVT_END(name)                           \
-       .endp   hivt_##name;                    \
-       .align  0x100
-
-#define IVT_ERR(name, num, offset)             \
-       IVT_ENTRY(name, offset);                \
-       TRAP_ERR(num);                          \
-       IVT_END(name)
-/*
- * The IA64 Interrupt Vector Table (IVT) contains 20 slots with 64
- * bundles per vector and 48 slots with 16 bundles per vector.
- */
-
-       .section .text.hivt,"ax"
-       .align  32768
-       .global ia64_trap_table
-       .size   ia64_trap_table, 32768
-ia64_trap_table:
-
-IVT_ERR(VHPT_Translation, 0, 0x0)
-IVT_ERR(Instruction_TLB, 1, 0x0400)
-IVT_ERR(Data_TLB, 2, 0x0800)
-IVT_ERR(Alternate_Instruction_TLB, 3, 0x0c00)
-
-
-IVT_ENTRY(Alternate_Data_TLB, 0x1000)
-       mov     r30=4                   // trap number
-adt_common:
-       mov     r16=cr.ifa              // where did it happen
-       mov     r31=pr                  // save predicates
-       ;;
-       extr.u  r17=r16,IA64_RR_IDX_POS,3       // get region number
-       ;;
-       cmp.eq  p14,p15=7,r17
-       ;;
-//(p14)        br.sptk adt_regf_addr           // Check for region 7 - phys addresses
-//     ;;
-//     br.sptk trap_error
-//             // No return
-//
-//adt_regf_addr:
-//     extr.u  r17=r16,60,4            // get region number
-//     ;;
-//     cmp.eq  p14,p15=0xf,r17
-//     ;;
-(p14)  br.sptk adt_reg7_addr           // Check for region 7 - phys addresses
-       ;;
-       br.sptk trap_error
-
-adt_reg7_addr:
-       /*
-        * region 7 addresses are only directly mapped physically
-        * addresses. Currently I don't do a check.
-        */
-       movl    r20=~((7 << IA64_RR_IDX_POS) | 0xfff)
-       movl    r18=((PTE_PS_16K<<IA64_ITIR_PS)|(IA64_KEY_REG7<<IA64_ITIR_KEY))
-       ;;
-       movl    r19=    ((1<<PTE_OFF_P) | (PTE_MA_WB<<PTE_OFF_MA) | \
-                        (1<<PTE_OFF_A) | (1<<PTE_OFF_D) | \
-                        (PTE_PL_KERN<<PTE_OFF_PL) | (PTE_AR_RW<<PTE_OFF_AR))
-                       // clear the region bits and 0-11
-                       // extract the pfn from the ifa
-       mov     cr.itir=r18
-       and     r20=r20, r16
-       ;;
-       or      r20=r20,r19             // put pfn into pte
-       ;;
-       mov     pr=r31,-1               // restore predicates
-       itc.d   r20
-       ;;
-       XEN_HYPER_RFI;
-       ;;
-
-IVT_END(Alternate_Data_TLB)
-
-/*
- * Handling of nested data tlb is needed, because in hypervisor_callback()
- * the stack is used to store the register trap frame. This stack is allocated
- * dynamically (as identity mapped address) and therewidth no tr mapped page!
- */
-IVT_ENTRY(Data_Nested_TLB, 0x1400)
-
-       mov     r30=5                   // trap number
-       add     r28=-TF_SIZE,sp         // r28 is never used in trap handling
-       ;;
-       mov     cr.ifa=r28
-       ;;
-       br.sptk adt_common
-IVT_END(Data_Nested_TLB)
-
-
-
-IVT_ERR(Instruction_Key_Miss, 6, 0x1800)
-IVT_ERR(Data_Key_Miss, 7, 0x1c00)
-IVT_ERR(Dirty_Bit, 8, 0x2000)
-IVT_ERR(Instruction_Access_Bit, 9, 0x2400)
-IVT_ERR(Data_Access_Bit, 10, 0x2800)
-IVT_ERR(Break_Instruction, 11, 0x2c00)
-IVT_ERR(External_Interrupt, 12, 0x3000)
-IVT_ERR(Reserved_3400, 13, 0x3400)
-IVT_ERR(Reserved_3800, 14, 0x3800)
-IVT_ERR(Reserved_3c00, 15, 0x3c00)
-IVT_ERR(Reserved_4000, 16, 0x4000)
-IVT_ERR(Reserved_4400, 17, 0x4400)
-IVT_ERR(Reserved_4800, 18, 0x4800)
-IVT_ERR(Reserved_4c00, 19, 0x4c00)
-IVT_ERR(Page_Not_Present, 20, 0x5000)
-IVT_ERR(Key_Permission, 21, 0x5100)
-IVT_ERR(Instruction_Access_Rights, 22, 0x5200)
-IVT_ERR(Data_Access_Rights, 23, 0x5300)
-IVT_ERR(General_Exception, 24, 0x5400)
-IVT_ERR(Disabled_FP_Register, 25, 0x5500)
-IVT_ERR(NaT_Consumption, 26, 0x5600)
-IVT_ERR(Speculation, 27, 0x5700)
-IVT_ERR(Reserved_5800, 28, 0x5800)
-IVT_ERR(Debug, 29, 0x5900)
-IVT_ERR(Unaligned_Reference, 30, 0x5a00)
-IVT_ERR(Unsupported_Data_Reference, 31, 0x5b00)
-IVT_ERR(Floating_Point_Fault, 32, 0x5c00)
-IVT_ERR(Floating_Point_Trap, 33, 0x5d00)
-IVT_ERR(Lower_Privilege_Transfer_Trap, 34, 0x5e00)
-IVT_ERR(Taken_Branch_Trap, 35, 0x5f00)
-IVT_ERR(Single_Step_Trap, 36, 0x6000)
-IVT_ERR(Reserved_6100, 37, 0x6100)
-IVT_ERR(Reserved_6200, 38, 0x6200)
-IVT_ERR(Reserved_6300, 39, 0x6300)
-IVT_ERR(Reserved_6400, 40, 0x6400)
-IVT_ERR(Reserved_6500, 41, 0x6500)
-IVT_ERR(Reserved_6600, 42, 0x6600)
-IVT_ERR(Reserved_6700, 43, 0x6700)
-IVT_ERR(Reserved_6800, 44, 0x6800)
-IVT_ERR(IA_32_Exception, 45, 0x6900)
-IVT_ERR(IA_32_Intercept, 46, 0x6a00)
-IVT_ERR(IA_32_Interrupt, 47, 0x6b00)
-IVT_ERR(Reserved_6c00, 48, 0x6c00)
-IVT_ERR(Reserved_6d00, 49, 0x6d00)
-IVT_ERR(Reserved_6e00, 50, 0x6e00)
-IVT_ERR(Reserved_6f00, 51, 0x6f00)
-IVT_ERR(Reserved_7000, 52, 0x7000)
-IVT_ERR(Reserved_7100, 53, 0x7100)
-IVT_ERR(Reserved_7200, 54, 0x7200)
-IVT_ERR(Reserved_7300, 55, 0x7300)
-IVT_ERR(Reserved_7400, 56, 0x7400)
-IVT_ERR(Reserved_7500, 57, 0x7500)
-IVT_ERR(Reserved_7600, 58, 0x7600)
-IVT_ERR(Reserved_7700, 59, 0x7700)
-IVT_ERR(Reserved_7800, 60, 0x7800)
-IVT_ERR(Reserved_7900, 61, 0x7900)
-IVT_ERR(Reserved_7a00, 62, 0x7a00)
-IVT_ERR(Reserved_7b00, 63, 0x7b00)
-IVT_ERR(Reserved_7c00, 64, 0x7c00)
-IVT_ERR(Reserved_7d00, 65, 0x7d00)
-IVT_ERR(Reserved_7e00, 66, 0x7e00)
-IVT_ERR(Reserved_7f00, 67, 0x7f00)
diff --git a/extras/mini-os/arch/ia64/minios-ia64.lds b/extras/mini-os/arch/ia64/minios-ia64.lds
deleted file mode 100644 (file)
index 2866a4a..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-OUTPUT_FORMAT("elf64-ia64-little")
-OUTPUT_ARCH(ia64)
-
-ENTRY(phys_start)
-
-PHDRS
-{
-  code PT_LOAD;
-  data PT_LOAD;
-}
-
-SECTIONS
-{
-
-  phys_start = _start - (((5<<(61))+0x100000000) - (1 << 20));
-
-  code : { } :code
-  . = ((5<<(61))+0x100000000);
-
-  _text = .;
-
-  .text : AT(ADDR(.text) - (((5<<(61))+0x100000000) - (1 << 20)))
-  {
-    *(.text)
-  }
-
-  _etext = .;
-
-  data : { } :data
-  .data : AT(ADDR(.data) - (((5<<(61))+0x100000000) - (1 << 20)))
-  { *(.data) 
-  }
-
-  .sdata : AT(ADDR(.sdata) - (((5<<(61))+0x100000000) - (1 << 20)))
-        { *(.sdata) *(.sdata1) *(.srdata) }
-
-  .rodata : AT(ADDR(.rodata) - (((5<<(61))+0x100000000) - (1 << 20)))
-  { *(.rodata) }
-
-  .rodata.str1.8 : AT(ADDR(.rodata.str1.8) - (((5<<(61))+0x100000000) - (1 << 20)))
-  { *(.rodata.str1.8) }
-
-  /* newlib initialization functions */
-  . = ALIGN(64 / 8);
-  PROVIDE (__preinit_array_start = .);
-  .preinit_array     : { *(.preinit_array) }
-  PROVIDE (__preinit_array_end = .);
-  PROVIDE (__init_array_start = .);
-  .init_array     : { *(.init_array) }
-  PROVIDE (__init_array_end = .);
-  PROVIDE (__fini_array_start = .);
-  .fini_array     : { *(.fini_array) }
-  PROVIDE (__fini_array_end = .);
-
-  .ctors : AT(ADDR(.ctors) - (((5<<(61))+0x100000000) - (1 << 20)))
-       {
-        __CTOR_LIST__ = .;
-        *(.ctors)
-       CONSTRUCTORS
-        QUAD(0)
-        __CTOR_END__ = .;
-        }
-
-  .dtors : AT(ADDR(.dtors) - (((5<<(61))+0x100000000) - (1 << 20)))
-        {
-        __DTOR_LIST__ = .;
-        *(.dtors)
-        QUAD(0)
-        __DTOR_END__ = .;
-        }
-
-  .IA_64.unwind_info : AT(ADDR(.IA_64.unwind_info) - (((5<<(61))+0x100000000) - (1 << 20)))
-  { *(.IA_64.unwind_info) }
-
-  .IA_64.unwind : AT(ADDR(.IA_64.unwind) - (((5<<(61))+0x100000000) - (1 << 20)))
-  { *(.IA_64.unwind) }
-
-  .bss : AT(ADDR(.bss) - (((5<<(61))+0x100000000) - (1 << 20)))
-  {
-    *(.bss)
-    *(.app.bss)
-  }
-
-  _end = .;
-
-}
diff --git a/extras/mini-os/arch/ia64/mm.c b/extras/mini-os/arch/ia64/mm.c
deleted file mode 100644 (file)
index 9040517..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Done by Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com>
- *
- * Description: Special ia64 memory management.
- * Parts are taken from FreeBSD.
- *
- ****************************************************************************
- *
- * 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.
- */
-
-
-#include <mini-os/os.h>
-#include <mini-os/mm.h>
-
-
-#define MAX_MEM_AREA   5
-paddr_t phys_avail[MAX_MEM_AREA * 2];
-int    phys_avail_cnt;
-uint64_t physmem;
-
-/*
- * These variables are defined in the linker script minios_ia64.lds
- * to get the size of the kernel.
- */
-extern uint64_t _text[], _etext[], _end[], kstack[], phys_start[];
-
-uint64_t kernstart, kernend, kernsize, kernpstart, kernpend;
-
-#ifdef HAVE_LIBC
-uint8_t _heap[512 * 1024];
-unsigned long heap = (unsigned long)_heap,
-              brk = (unsigned long)_heap,
-              heap_mapped = (unsigned long)_heap + sizeof(_heap),
-              heap_end = (unsigned long)_heap + sizeof(_heap);
-#endif
-
-/* Print the available memory chunks. */
-static void
-print_phys_avail(void)
-{
-       int i;
-
-       printk("Physical memory chunk(s):\n");
-       for (i = 0; phys_avail[i + 1] != 0; i += 2) {
-               int size = phys_avail[i + 1] - phys_avail[i];
-               printk("0x%08lx - 0x%08lx, %d bytes (%d pages)\n",
-                       phys_avail[i], phys_avail[i + 1] - 1,
-                       size, size / PAGE_SIZE);
-       }
-}
-
-void
-arch_init_mm(unsigned long* start_pfn_p, unsigned long* max_pfn_p)
-{
-       uint64_t ms, me;
-       int i, j;
-       uint64_t m, n;
-
-       kernstart = trunc_page(_text);
-       kernend  = roundup_page(_end);
-
-       kernpstart = trunc_page(ia64_tpa(kernstart));
-       kernpend = roundup_page(kernpstart + (kernend - kernstart));
-       kernsize = kernpend - kernpstart;
-
-       ms = roundup_page(machineFwG.mach_mem_start);
-       me = trunc_page(machineFwG.mach_mem_start+machineFwG.mach_mem_size);
-       memset((void*)phys_avail, 0, sizeof(phys_avail));
-       /* 1. Check where the kernel lies in physical memory. */
-       physmem = me - ms;
-       if ((ms <= kernpend) && (kernpstart <= me)) {
-               if (ms < kernpstart) {  /* There is a part before the kernel. */
-                       PRINT_BV("  Found chunk before kernel: 0x%lx - 0x%lx\n",
-                                ms, kernpstart);
-                       phys_avail[phys_avail_cnt] = ms;
-                       phys_avail[phys_avail_cnt+1] = kernpstart;
-                       phys_avail_cnt += 2;
-               }
-               if (kernpend < me) {    /* There is a part behind the kernel. */
-                       PRINT_BV("  Found chunk behind kernel: 0x%lx - 0x%lx\n",
-                                kernpend, me);
-                       phys_avail[phys_avail_cnt] = kernpend;
-                       phys_avail[phys_avail_cnt+1] = me;
-                       phys_avail_cnt += 2;
-               }
-       } else {        /* One big chunk */
-               PRINT_BV("  Found big chunk: 0x%lx - 0x%lx\n", ms, me);
-               phys_avail[phys_avail_cnt] = ms;
-               phys_avail[phys_avail_cnt + 1] = me;
-               phys_avail_cnt += 2;
-       }
-       phys_avail[phys_avail_cnt] = 0;
-
-       print_phys_avail();
-       /*
-        * In this first version I only look for the biggest mem area.
-        */
-       for (i = j = m = n = 0; i < phys_avail_cnt; i += 2) {
-               n = page_to_pfn(phys_avail[i + 1]) - page_to_pfn(phys_avail[i]);
-               if (n > m) {
-                       m = n;
-                       j = i;
-               }
-       }
-       *start_pfn_p = page_to_pfn(phys_avail[j]);
-       *max_pfn_p   = page_to_pfn(phys_avail[j +1 ]);
-}
-
-/* Currently only a dummy function. */
-void
-arch_init_demand_mapping_area(unsigned long max_pfn)
-{
-       max_pfn = max_pfn;
-}
-
-unsigned long allocate_ondemand(unsigned long n, unsigned long alignment)
-{
-        return 0;
-}
-
-/* Helper function used in gnttab.c. */
-void do_map_frames(unsigned long addr,
-    const unsigned long *f, unsigned long n, unsigned long stride,
-       unsigned long increment, domid_t id, int *err, unsigned long prot)
-{
-       /* TODO */
-       ASSERT(0);
-}
-
-void*
-map_frames_ex(const unsigned long* frames, unsigned long n, unsigned long stride,
-       unsigned long increment, unsigned long alignment, domid_t id,
-       int *err, unsigned long prot)
-{
-        /* TODO: incomplete! */
-        ASSERT(n == 1 || (stride == 0 && increment == 1));
-        ASSERT(id == DOMID_SELF);
-        ASSERT(prot == 0);
-       return (void*) __va(frames[0] << PAGE_SHIFT);
-}
-
-int unmap_frames(unsigned long virt_addr, unsigned long num_frames)
-{  
-    /* TODO */
-    ASSERT(0);
-}
-
-unsigned long alloc_contig_pages(int order, unsigned int addr_bits)
-{
-    /* TODO */
-    ASSERT(0);
-}
-
-void arch_init_p2m(unsigned long max_pfn)
-{
-    printk("Warn: p2m map not implemented.\n");
-}
diff --git a/extras/mini-os/arch/ia64/sal.c b/extras/mini-os/arch/ia64/sal.c
deleted file mode 100644 (file)
index 7fa7f94..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Done by Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com>
- * Mostly taken from FreeBSD.
- *
- ****************************************************************************
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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 <mini-os/os.h>
-#include <mini-os/lib.h>
-#include <mini-os/console.h>
-#include <mini-os/page.h>
-
-
-static struct ia64_fdesc sal_fdesc;
-uint64_t ia64_pal_entry;       /* PAL_PROC entrypoint */
-
-
-struct ia64_sal_result
-ia64_sal_call(uint64_t a1, uint64_t a2, uint64_t a3, uint64_t a4,
-             uint64_t a5, uint64_t a6, uint64_t a7, uint64_t a8)
-{
-       return ia64_sal_entry(a1, a2, a3, a4, a5, a6, a7, a8);
-}
-
-static struct ia64_sal_result
-fake_sal(uint64_t a1, uint64_t a2, uint64_t a3, uint64_t a4,
-        uint64_t a5, uint64_t a6, uint64_t a7, uint64_t a8)
-{
-       struct ia64_sal_result res;
-       res.sal_status = -3;
-       res.sal_result[0] = 0;
-       res.sal_result[1] = 0;
-       res.sal_result[2] = 0;
-       return res;
-}
-
-/*
- * Currently only the SAL_DESC_ENTRYPOINT is checked to get
- * the entry points the pal and sal functions.
- */
-void
-ia64_sal_init(struct sal_system_table *saltab)
-{
-       static int sizes[6] = { 48, 32, 16, 32, 16, 16 };
-       uint8_t *p;
-       int i;
-
-       PRINT_BV("Reading SALtable:\n");
-       ia64_sal_entry = fake_sal;
-
-       if (memcmp((void*)(uint64_t)(saltab->sal_signature), SAL_SIGNATURE, 4))
-       {
-               printk("Bad signature for SAL System Table\n");
-               return;
-       }
-       p = (uint8_t *) (saltab + 1);
-       for (i = 0; i < saltab->sal_entry_count; i++) {
-               switch (*p) {
-               case SAL_DESC_ENTRYPOINT:               // 0
-               {
-                       struct sal_entrypoint_descriptor *dp;
-
-                       dp = (struct sal_entrypoint_descriptor*)p;
-                       ia64_pal_entry =
-                               IA64_PHYS_TO_RR7(dp->sale_pal_proc);
-                       PRINT_BV("  PAL Proc at 0x%lx\n", ia64_pal_entry);
-                       sal_fdesc.func =
-                               IA64_PHYS_TO_RR7(dp->sale_sal_proc);
-                       sal_fdesc.gp = IA64_PHYS_TO_RR7(dp->sale_sal_gp);
-                       PRINT_BV("  SAL Proc at 0x%lx, GP at 0x%lx\n",
-                                sal_fdesc.func, sal_fdesc.gp);
-                       ia64_sal_entry = (sal_entry_t *) &sal_fdesc;
-                       break;
-               }
-               default:
-                       break;
-               }
-               p += sizes[*p];
-       }
-}
-
diff --git a/extras/mini-os/arch/ia64/sched.c b/extras/mini-os/arch/ia64/sched.c
deleted file mode 100644 (file)
index ae9e661..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/* 
- * Done by Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com
- *
- * Description: ia64 specific part of the scheduler for mini-os
- *
- ****************************************************************************
- *
- * 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.
- */
-
-
-#include <mini-os/types.h>
-#include <mini-os/sched.h>
-#include <mini-os/lib.h>
-#include <mini-os/xmalloc.h>
-#include <mini-os/mm.h>
-
-/* The function is implemented in fw.S */
-extern void thread_starter(void);
-
-void stack_walk(void)
-{
-    /* TODO */
-}
-
-struct thread*
-arch_create_thread(char *name, void (*function)(void *), void *data)
-{
-       struct thread* _thread;
-
-       _thread = (struct thread*)_xmalloc(sizeof(struct thread), 16);
-       /* Allocate pages for stack, stack will be aligned */
-       _thread->stack = (char *)alloc_pages(STACK_SIZE_PAGE_ORDER);
-       _thread->name = name;
-       memset((void*)&(_thread->regs), 0, sizeof(_thread->regs));
-       _thread->regs.sp = ((uint64_t)_thread->stack) + STACK_SIZE - 16;
-       _thread->regs.bsp = ((uint64_t)_thread->stack) + 0x10;
-       _thread->regs.rp = FDESC_FUNC(thread_starter);
-       _thread->regs.pfs = 0x82;
-       _thread->regs.r4 = FDESC_FUNC(function);
-       _thread->regs.r6 = (uint64_t)data;
-       return _thread;
-}
-
-extern void restore_context(struct thread*);
-extern int switch_context(struct thread*, struct thread*);
-
-void
-arch_switch_threads(struct thread* prev, struct thread* next)
-{
-       ia64_set_r13((uint64_t)next);
-       switch_context(prev, next);
-}
-
-/* Everything initialised, start idle thread */
-void
-run_idle_thread(void)
-{
-       //do_busy_loop();
-       ia64_set_r13((uint64_t)idle_thread);
-       restore_context(idle_thread);
-       printk("%s: restore_context() returned - bad!\n", __func__);
-}
diff --git a/extras/mini-os/arch/ia64/time.c b/extras/mini-os/arch/ia64/time.c
deleted file mode 100644 (file)
index 5341266..0000000
+++ /dev/null
@@ -1,289 +0,0 @@
-/* 
- * Done by Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com>
- * Description: simple ia64 specific time handling
- * Parts are taken from FreeBSD.
- *
- ****************************************************************************
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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 <mini-os/os.h>
-#include <mini-os/console.h>
-#include <mini-os/time.h>
-#include <mini-os/efi.h>
-#include <mini-os/events.h>
-
-struct timespec os_time;
-static uint64_t itc_alt;               /* itc on last update. */
-static uint64_t itc_at_boot;           /* itc on boot */
-static uint64_t itc_frequency;
-static uint64_t processor_frequency;
-static uint64_t itm_val;
-
-static int is_leap_year(int year)
-{
-       if( year % 4 == 0 )
-       {
-               if( year % 100 == 0 )
-               {
-                       if( year % 400 == 0 ) return 1;
-                       else return 0;
-               }
-               return 1;
-       }
-       return 0;
-}
-
-static int count_leap_years(int epoch, int year)
-{
-       int i, result = 0;
-       for( i = epoch ; i < year ; i++ ) if( is_leap_year(i) ) result++;
-       return result;
-}
-
-static int get_day(int year, int mon, int day) {
-       int result;
-       switch(mon)
-       {
-               case 0: result = 0; break;
-               case 1: result = 31; break; /* 1: 31 */
-               case 2: result = 59; break; /* 2: 31+28 */
-               case 3: result = 90; break; /* 3: 59+31 */
-               case 4: result = 120;break; /* 4: 90+30 */
-               case 5: result = 151;break; /* 5: 120+31 */
-               case 6: result = 181;break; /* 6: 151+30 */
-               case 7: result = 212;break; /* 7: 181+31 */
-               case 8: result = 243;break; /* 8: 212+31 */
-               case 9: result = 273;break; /* 9: 243+30 */
-               case 10:result = 304;break; /* 10:273+31 */
-               case 11:result = 334;break; /* 11:304+30 */
-               default: break;
-       }
-       if( is_leap_year(year) && mon > 2 ) result++;
-       result += day - 1;
-       return result;
-}
-
-/*
- * Converts Gregorian date to seconds since 1970-01-01 00:00:00.
- * Assumes input in normal date format, i.e. 1980-12-31 23:59:59
- * => year=1980, mon=12, day=31, hour=23, min=59, sec=59.
- *
- * WARNING: this function will overflow on 2106-02-07 06:28:16 on
- * machines were long is 32-bit! (However, as time_t is signed, we
- * will already get problems at other places on 2038-01-19 03:14:08)
- */
-static unsigned long _mktime(const unsigned int year, const unsigned int mon,
-                           const unsigned int day, const unsigned int hour,
-                           const unsigned int min, const unsigned int sec)
-{
-       unsigned long result = 0;
-
-       result = sec;
-       result += min * 60;
-       result += hour * 3600;
-       result += get_day(year, mon - 1, day) * 86400;
-       result += (year - 1970) * 31536000;
-       result += count_leap_years(1970, year) * 86400;
-
-       return result;
-}
-
-static inline uint64_t
-ns_from_cycles(uint64_t cycles)
-{
-       return (cycles * (1000000000 / itc_frequency));
-}
-
-static inline uint64_t
-ns_to_cycles(uint64_t ns)
-{
-       return (ns * (itc_frequency / 1000000000));
-}
-
-/*
- * Block the domain until until(nanoseconds) is over.
- * If block is called no timerinterrupts are delivered from xen!
- */
-void
-block_domain(s_time_t until)
-{
-       struct ia64_pal_result pal_res;
-       uint64_t c, new;
-
-       c = ns_to_cycles(until);
-       new = ia64_get_itc() + c - NOW();
-       ia64_set_itm(new);              /* Reload cr.itm */
-       /*
-        * PAL_HALT_LIGHT returns on every external interrupt,
-        * including timer interrupts.
-        */
-       pal_res = ia64_call_pal_static(PAL_HALT_LIGHT, 0, 0, 0);
-       if (pal_res.pal_status != 0)
-               printk("%s: PAL_HALT_LIGHT returns an error\n");
-       /* Reload the normal timer interrupt match. */
-       new = ia64_get_itc() + itm_val;
-       ia64_set_itm(new);
-}
-
-static void
-calculate_time(void)
-{
-       uint64_t itc_new, new;
-
-       itc_new = ia64_get_itc();
-       if (itc_new < itc_alt)
-               new = ~0 - itc_alt + itc_new;
-       else
-               new = itc_new - itc_alt;
-       itc_alt = itc_new;
-       new = ns_from_cycles(new);
-       os_time.tv_nsec += new;
-       if (os_time.tv_nsec > 1000000000) {     /* On overflow. */
-               os_time.tv_sec++;
-               os_time.tv_nsec -= 1000000000;
-       }
-}
-
-void
-timer_interrupt(evtchn_port_t port, struct pt_regs* regsP, void *data)
-{
-       uint64_t new;
-
-       calculate_time();
-       new = ia64_get_itc() + itm_val;
-       ia64_set_itm(new);
-}
-
-/*
- * monotonic_clock(): returns # of nanoseconds passed since time_init()
- */
-uint64_t
-monotonic_clock(void)
-{
-       uint64_t delta;
-
-       delta = ia64_get_itc() - itc_at_boot;
-       delta = ns_from_cycles(delta);
-       return delta;
-}
-
-int
-gettimeofday(struct timeval *tv, void *tz)
-{
-       calculate_time();
-       tv->tv_sec = os_time.tv_sec;                    /* seconds */
-       tv->tv_usec = NSEC_TO_USEC(os_time.tv_nsec);    /* microseconds */
-        return 0;
-};
-
-/*
- * Read the clock frequencies from pal and sal for calculating
- * the clock interrupt.
- */
-static void
-calculate_frequencies(void)
-{
-       struct ia64_sal_result sal_res;
-       struct ia64_pal_result pal_res;
-
-       pal_res = ia64_call_pal_static(PAL_FREQ_RATIOS, 0, 0, 0);
-       sal_res = ia64_sal_entry(SAL_FREQ_BASE, 0, 0, 0, 0, 0, 0, 0);
-
-       if (sal_res.sal_status == 0 && pal_res.pal_status == 0) {
-               processor_frequency =
-                       sal_res.sal_result[0] * (pal_res.pal_result[0] >> 32)
-                               / (pal_res.pal_result[0] & ((1L << 32) - 1));
-               itc_frequency =
-                       sal_res.sal_result[0] * (pal_res.pal_result[2] >> 32)
-                               / (pal_res.pal_result[2] & ((1L << 32) - 1));
-               PRINT_BV("Reading clock frequencies:\n");
-               PRINT_BV("  Platform clock frequency %ld Hz\n",
-                              sal_res.sal_result[0]);
-               PRINT_BV("  Processor ratio %ld/%ld, Bus ratio %ld/%ld, "
-                              "  ITC ratio %ld/%ld\n",
-                              pal_res.pal_result[0] >> 32,
-                              pal_res.pal_result[0] & ((1L << 32) - 1),
-                              pal_res.pal_result[1] >> 32,
-                              pal_res.pal_result[1] & ((1L << 32) - 1),
-                              pal_res.pal_result[2] >> 32,
-                              pal_res.pal_result[2] & ((1L << 32) - 1));
-
-               printk("  ITC frequency %ld\n", itc_frequency);
-       } else {
-               itc_frequency = 1000000000;
-               processor_frequency = 0;
-               printk("Reading clock frequencies failed!!! Using: %ld\n",
-                      itc_frequency);
-       }
-}
-
-
-//#define HZ 1
-#define HZ 1000                // 1000 clock ticks per sec
-#define IA64_TIMER_VECTOR 0xef
-
-void
-init_time(void)
-{
-       uint64_t new;
-       efi_time_t tm;
-       evtchn_port_t port = 0;
-
-       printk("Initialising time\n");
-       calculate_frequencies();
-
-       itm_val = (itc_frequency + HZ/2) / HZ;
-       printk("  itm_val: %ld\n", itm_val);
-
-       os_time.tv_sec = 0;
-       os_time.tv_nsec = 0;
-
-       if (efi_get_time(&tm)) {
-               printk("  EFI-Time: %d.%d.%d   %d:%d:%d\n", tm.Day,
-                      tm.Month, tm.Year, tm.Hour, tm.Minute, tm.Second);
-               os_time.tv_sec = _mktime(tm.Year, tm.Month,
-                                       tm.Day, tm.Hour, tm.Minute, tm.Second);
-               os_time.tv_nsec = tm.Nanosecond;
-       } else
-               printk("efi_get_time() failed\n");
-
-       port = bind_virq(VIRQ_ITC, timer_interrupt, NULL);
-       if (port == -1) {
-               printk("XEN timer request chn bind failed %i\n", port);
-               return;
-       }
-        unmask_evtchn(port);
-       itc_alt = ia64_get_itc();
-       itc_at_boot = itc_alt;
-       new = ia64_get_itc() + itm_val;
-       ia64_set_itv(IA64_TIMER_VECTOR);
-       ia64_set_itm(new);
-       ia64_srlz_d();
-}
-
-void
-fini_time(void)
-{
-       /* TODO */
-}
diff --git a/extras/mini-os/arch/ia64/xencomm.c b/extras/mini-os/arch/ia64/xencomm.c
deleted file mode 100644 (file)
index 9719e49..0000000
+++ /dev/null
@@ -1,394 +0,0 @@
-/*
- * Copyright (C) 2006 Hollis Blanchard <hollisb@us.ibm.com>, IBM Corporation
- * Tristan Gingold <tristan.gingold@bull.net>
- *
- * This program 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; either version 2 of the License, or
- * (at your option) any later version.
- * 
- * This program 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 program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
- */
-
-/*
- * This code is mostly taken from ia64-xen files xcom_mini.c and xencomm.c.
- * Changes: Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com
- */
-
-
-#include <mini-os/os.h>
-#include <mini-os/errno.h>
-#include <mini-os/lib.h>
-#include <mini-os/hypervisor.h>
-#include <xen/xencomm.h>
-#include <xen/grant_table.h>
-
-
-#define XENCOMM_MINI_ADDRS 3
-struct xencomm_mini
-{
-       struct xencomm_desc _desc;
-       uint64_t address[XENCOMM_MINI_ADDRS];
-};
-
-#define xen_guest_handle(hnd)  ((hnd).p)
-
-struct xencomm_handle;
-
-/* Translate virtual address to physical address.  */
-uint64_t
-xencomm_vaddr_to_paddr(uint64_t vaddr)
-{
-       if (IA64_RR_EXTR(vaddr) == 5)
-               return KERN_VIRT_2_PHYS(vaddr);
-
-       if (IA64_RR_EXTR(vaddr) == 7)
-               return __pa(vaddr);
-
-       return 0;
-}
-
-/* Inline version.  To be used only on linear space (kernel space).  */
-static struct xencomm_handle *
-xencomm_create_inline(void *buffer)
-{
-       unsigned long paddr;
-
-       paddr = xencomm_vaddr_to_paddr((unsigned long)buffer);
-       return (struct xencomm_handle *)(paddr | XENCOMM_INLINE_FLAG);
-}
-
-#define min(a,b) (((a) < (b)) ? (a) : (b))
-static int
-xencomm_init_desc(struct xencomm_desc *desc, void *buffer, unsigned long bytes)
-{
-       unsigned long recorded = 0;
-       int i = 0;
-
-       if ((buffer == NULL) && (bytes > 0))
-               BUG();
-
-       /* record the physical pages used */
-       if (buffer == NULL)
-               desc->nr_addrs = 0;
-
-       while ((recorded < bytes) && (i < desc->nr_addrs)) {
-               unsigned long vaddr = (unsigned long)buffer + recorded;
-               unsigned long paddr;
-               int offset;
-               int chunksz;
-
-               offset = vaddr % PAGE_SIZE; /* handle partial pages */
-               chunksz = min(PAGE_SIZE - offset, bytes - recorded);
-
-               paddr = xencomm_vaddr_to_paddr(vaddr);
-               if (paddr == ~0UL) {
-                       printk("%s: couldn't translate vaddr %lx\n",
-                              __func__, vaddr);
-                       return -EINVAL;
-               }
-
-               desc->address[i++] = paddr;
-               recorded += chunksz;
-       }
-       if (recorded < bytes) {
-               printk("%s: could only translate %ld of %ld bytes\n",
-                      __func__, recorded, bytes);
-               return -ENOSPC;
-       }
-
-       /* mark remaining addresses invalid (just for safety) */
-       while (i < desc->nr_addrs)
-               desc->address[i++] = XENCOMM_INVALID;
-       desc->magic = XENCOMM_MAGIC;
-       return 0;
-}
-
-static void *
-xencomm_alloc_mini(struct xencomm_mini *area, int *nbr_area)
-{
-       unsigned long base;
-       unsigned int pageoffset;
-
-       while (*nbr_area >= 0) {
-               /* Allocate an area.  */
-               (*nbr_area)--;
-
-               base = (unsigned long)(area + *nbr_area);
-               pageoffset = base % PAGE_SIZE; 
-
-               /* If the area does not cross a page, use it.  */
-               if ((PAGE_SIZE - pageoffset) >= sizeof(struct xencomm_mini))
-                       return &area[*nbr_area];
-       }
-       /* No more area.  */
-       return NULL;
-}
-
-int
-xencomm_create_mini(struct xencomm_mini *area, int *nbr_area,
-                    void *buffer, unsigned long bytes,
-                    struct xencomm_handle **ret)
-{
-       struct xencomm_desc *desc;
-       int rc;
-       unsigned long res;
-
-       desc = xencomm_alloc_mini(area, nbr_area);
-       if (!desc)
-               return -ENOMEM;
-       desc->nr_addrs = XENCOMM_MINI_ADDRS;
-
-       rc = xencomm_init_desc(desc, buffer, bytes);
-       if (rc)
-               return rc;
-
-       res = xencomm_vaddr_to_paddr((unsigned long)desc);
-       if (res == ~0UL)
-               return -EINVAL;
-
-       *ret = (struct xencomm_handle*)res;
-       return 0;
-}
-
-static int
-xencommize_mini_grant_table_op(struct xencomm_mini *xc_area, int *nbr_area,
-                               unsigned int cmd, void *op, unsigned int count,
-                               struct xencomm_handle **desc)
-{
-       struct xencomm_handle *desc1;
-       unsigned int argsize=0;
-       int rc;
-
-       switch (cmd) {
-       case GNTTABOP_map_grant_ref:
-               argsize = sizeof(struct gnttab_map_grant_ref);
-               break;
-       case GNTTABOP_unmap_grant_ref:
-               argsize = sizeof(struct gnttab_unmap_grant_ref);
-               break;
-       case GNTTABOP_setup_table:
-       {
-               struct gnttab_setup_table *setup = op;
-
-               argsize = sizeof(*setup);
-
-               if (count != 1)
-                       return -EINVAL;
-               rc = xencomm_create_mini
-                       (xc_area, nbr_area,
-                        (void*)(uint64_t) xen_guest_handle(setup->frame_list),
-                        setup->nr_frames
-                        * sizeof(*xen_guest_handle(setup->frame_list)),
-                        &desc1);
-               if (rc)
-                       return rc;
-               set_xen_guest_handle(setup->frame_list,
-                                    (void *)(uint64_t)desc1);
-               break;
-       }
-       case GNTTABOP_dump_table:
-               argsize = sizeof(struct gnttab_dump_table);
-               break;
-       case GNTTABOP_transfer:
-               argsize = sizeof(struct gnttab_transfer);
-               break;
-       case GNTTABOP_copy:
-               argsize = sizeof(struct gnttab_copy);
-               break;
-       default:
-               printk("%s: unknown mini grant table op %d\n", __func__, cmd);
-               BUG();
-       }
-
-       rc = xencomm_create_mini(xc_area, nbr_area, op, count * argsize, desc);
-
-       return rc;
-}
-
-static inline int
-xencomm_arch_hypercall_grant_table_op(unsigned int cmd,
-                                      struct xencomm_handle *uop,
-                                      unsigned int count)
-{
-       return _hypercall3(int, grant_table_op, cmd, uop, count);
-}
-
-int
-xencomm_mini_hypercall_grant_table_op(unsigned int cmd, void *op,
-                                      unsigned int count)
-{
-       int rc;
-       struct xencomm_handle *desc;
-       int nbr_area = 2;
-       struct xencomm_mini xc_area[2];
-
-       rc = xencommize_mini_grant_table_op(xc_area, &nbr_area,
-                                           cmd, op, count, &desc);
-       if (rc)
-               return rc;
-       return xencomm_arch_hypercall_grant_table_op(cmd, desc, count);
-}
-
-static void
-gnttab_map_grant_ref_pre(struct gnttab_map_grant_ref *uop)
-{
-       uint32_t flags;
-
-       flags = uop->flags;
-
-       if (flags & GNTMAP_host_map) {
-               if (flags & GNTMAP_application_map) {
-                       printk("GNTMAP_application_map is not supported yet: "
-                              "flags 0x%x\n", flags);
-                       BUG();
-               }
-               if (flags & GNTMAP_contains_pte) {
-                       printk("GNTMAP_contains_pte is not supported yet flags "
-                              "0x%x\n", flags);
-                       BUG();
-               }
-       } else if (flags & GNTMAP_device_map) {
-               printk("GNTMAP_device_map is not supported yet 0x%x\n", flags);
-               BUG();//XXX not yet. actually this flag is not used.
-       } else {
-               BUG();
-       }
-}
-
-int
-HYPERVISOR_grant_table_op(unsigned int cmd, void *uop, unsigned int count)
-{
-       if (cmd == GNTTABOP_map_grant_ref) {
-               unsigned int i;
-               for (i = 0; i < count; i++) {
-                       gnttab_map_grant_ref_pre(
-                               (struct gnttab_map_grant_ref*)uop + i);
-               }
-       }
-       return xencomm_mini_hypercall_grant_table_op(cmd, uop, count);
-}
-
-       /* In fw.S */
-extern int xencomm_arch_hypercall_suspend(struct xencomm_handle *arg);
-int
-HYPERVISOR_suspend(unsigned long srec)
-{
-        struct sched_shutdown arg;
-
-        arg.reason = (uint32_t)SHUTDOWN_suspend;
-
-        return xencomm_arch_hypercall_suspend(xencomm_create_inline(&arg));
-}
-
-int
-HYPERVISOR_event_channel_op(int cmd, void *arg)
-{
-       int rc;
-       struct xencomm_handle *newArg;
-
-       newArg = xencomm_create_inline(arg);
-       rc = _hypercall2(int, event_channel_op, cmd, newArg);
-       if (unlikely(rc == -ENOSYS)) {
-               struct evtchn_op op;
-
-               op.cmd = cmd;
-               memcpy(&op.u, arg, sizeof(op.u));
-               rc = _hypercall1(int, event_channel_op_compat, &op);
-       }
-       return rc;
-}
-
-static int
-xencomm_arch_xen_version(int cmd, struct xencomm_handle *arg)
-{
-       return _hypercall2(int, xen_version, cmd, arg);
-}
-
-static int
-xencomm_arch_xen_feature(int cmd, struct xencomm_handle *arg)
-{
-       struct xencomm_handle *newArg;
-
-       newArg = xencomm_create_inline(arg);
-       return _hypercall2(int, xen_version, cmd, newArg);
-}
-
-int
-HYPERVISOR_xen_version(int cmd, void *arg)
-{
-       switch(cmd) {
-               case XENVER_version:
-                       return xencomm_arch_xen_version(cmd, 0);
-               case XENVER_get_features:
-                       return xencomm_arch_xen_feature(cmd, arg);
-               default:
-                       return -1;
-       }
-}
-
-int
-HYPERVISOR_console_io(int cmd, int count, char *str)
-{
-       struct xencomm_handle *newStr;
-
-       newStr = xencomm_create_inline(str);
-       return _hypercall3(int, console_io, cmd, count, newStr);
-}
-
-int
-HYPERVISOR_sched_op_compat(int cmd, unsigned long arg)
-{
-       return _hypercall2(int, sched_op_compat, cmd, arg);
-}
-
-int
-HYPERVISOR_sched_op(int cmd, void *arg)
-{
-       struct xencomm_handle *newArg;
-
-       newArg = xencomm_create_inline(arg);
-       return _hypercall2(int, sched_op, cmd, newArg);
-}
-
-int
-HYPERVISOR_callback_op(int cmd, void *arg)
-{
-       struct xencomm_handle *newArg;
-
-       newArg = xencomm_create_inline(arg);
-       return _hypercall2(int, callback_op, cmd, newArg);
-}
-
-int
-HYPERVISOR_opt_feature(void *arg)
-{
-       struct xencomm_handle *new_arg;
-
-       new_arg = xencomm_create_inline(arg);
-
-       return _hypercall1(int, opt_feature, new_arg);
-}
-
-int
-HYPERVISOR_shutdown(unsigned int reason)
-{
-       struct sched_shutdown sched_shutdown = {
-               .reason = reason
-       };
-
-       int rc = HYPERVISOR_sched_op(SCHEDOP_shutdown, &sched_shutdown);
-
-       if (rc == -ENOSYS)
-               rc = HYPERVISOR_sched_op_compat(SCHEDOP_shutdown, reason);
-
-       return rc;
-}
-
index ebfa8ac5541ad3560737d2682a5bfbab3a2d5e62..2f1b3d7a0b9ce21331af59b24172716c8b830f65 100644 (file)
 #define NR_RESERVED_ENTRIES 8
 
 /* NR_GRANT_FRAMES must be less than or equal to that configured in Xen */
-#ifdef __ia64__
-#define NR_GRANT_FRAMES 1
-#else
 #define NR_GRANT_FRAMES 4
-#endif
 #define NR_GRANT_ENTRIES (NR_GRANT_FRAMES * PAGE_SIZE / sizeof(grant_entry_t))
 
 static grant_entry_t *gnttab_table;
index e299df1f73a381d7e8e31dcf1edf891987651f64..a62cb784632439f5de731aea73776f688f861f7c 100644 (file)
@@ -7,7 +7,6 @@
  * Copyright (c) 2002, K A Fraser
  * Copyright (c) 2005, Grzegorz Milos
  * Updates: Aravindh Puthiyaparambil <aravindh.puthiyaparambil@unisys.com>
- * Updates: Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com> for ia64
  */
 
 #ifndef _HYPERVISOR_H_
@@ -19,8 +18,6 @@
 #include <hypercall-x86_32.h>
 #elif defined(__x86_64__)
 #include <hypercall-x86_64.h>
-#elif defined(__ia64__)
-#include <hypercall-ia64.h>
 #else
 #error "Unsupported architecture"
 #endif
diff --git a/extras/mini-os/include/ia64/arch_limits.h b/extras/mini-os/include/ia64/arch_limits.h
deleted file mode 100644 (file)
index c7bb9b6..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-
-#ifndef __ARCH_LIMITS_H__
-#define __ARCH_LIMITS_H__
-
-/* Commonly 16K pages are used. */
-#define __PAGE_SHIFT   14      /* 16K pages */
-#define __PAGE_SIZE    (1<<(__PAGE_SHIFT))
-
-#define __STACK_SIZE_PAGE_ORDER   2
-#define __STACK_SIZE              (__PAGE_SIZE * (1 << __STACK_SIZE_PAGE_ORDER))
-          
-#endif /* __ARCH_LIMITS_H__ */
diff --git a/extras/mini-os/include/ia64/arch_mm.h b/extras/mini-os/include/ia64/arch_mm.h
deleted file mode 100644 (file)
index 8889164..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (C) 2007 - Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com>
- *
- ****************************************************************************
- * 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.
- */
-
-#ifndef __ARCH_MM_H__
-#define __ARCH_MM_H__
-
-#include "page.h"
-#include "ia64_cpu.h"
-
-#define PFN_PHYS(x)    (pfn_to_page(x))
-#define PHYS_PFN(x)    (page_to_pfn(x))
-#define to_virt(x)     __va(x)
-#define to_phys(x)     __pa(x)
-
-#define virt_to_mfn(x) virt_to_pfn(x)
-#define virtual_to_mfn(x)      (ia64_tpa((uint64_t)(x)) >> PAGE_SHIFT)
-
-#define map_frames(f, n) map_frames_ex(f, n, 1, 0, 1, DOMID_SELF, NULL, 0)
-/* TODO */
-#define map_zero(n, a) map_frames_ex(NULL, n, 0, 0, a, DOMID_SELF, NULL, 0)
-#define do_map_zero(start, n) ASSERT(n == 0)
-
-#endif /* __ARCH_MM_H__ */
diff --git a/extras/mini-os/include/ia64/arch_sched.h b/extras/mini-os/include/ia64/arch_sched.h
deleted file mode 100644 (file)
index f5714a3..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (c) 2006 Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com>
- * All rights reserved.
- *
- * The file contains ia64 specific scheduler declarations.
- *
- ****************************************************************************
- * 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.
- */
-
-#ifndef __ARCH_SCHED_H__
-#define __ARCH_SCHED_H__
-
-#include "os.h"
-
-struct thread;                         /* Only declaration */
-
-struct thread_regs
-{
-       unsigned long   unat_b;         /* NaT before spilling */
-       unsigned long   sp;
-       unsigned long   rp;
-       unsigned long   pr;
-       unsigned long   bsp;
-       unsigned long   pfs;
-       unsigned long   rnat;
-       unsigned long   lc;
-
-       unsigned long   unat_a;         /* NaT after spilling. */
-       unsigned long   r4;
-       unsigned long   r5;
-       unsigned long   r6;
-       unsigned long   r7;
-
-       unsigned long   b1;
-       unsigned long   b2;
-       unsigned long   b3;
-       unsigned long   b4;
-       unsigned long   b5;
-
-       ia64_fpreg_t    f2;
-       ia64_fpreg_t    f3;
-       ia64_fpreg_t    f4;
-       ia64_fpreg_t    f5;
-       ia64_fpreg_t    f16;
-       ia64_fpreg_t    f17;
-       ia64_fpreg_t    f18;
-       ia64_fpreg_t    f19;
-       ia64_fpreg_t    f20;
-       ia64_fpreg_t    f21;
-       ia64_fpreg_t    f22;
-       ia64_fpreg_t    f23;
-       ia64_fpreg_t    f24;
-       ia64_fpreg_t    f25;
-       ia64_fpreg_t    f26;
-       ia64_fpreg_t    f27;
-       ia64_fpreg_t    f28;
-       ia64_fpreg_t    f29;
-       ia64_fpreg_t    f30;
-       ia64_fpreg_t    f31;
-};
-
-typedef struct thread_regs thread_regs_t;
-
-void arch_switch_threads(struct thread* prev, struct thread* next);
-
-static inline struct thread* get_current(void)
-{
-       register struct thread *current asm("r13");
-       return current;
-}
-
-
-#endif /* __ARCH_SCHED_H__ */
diff --git a/extras/mini-os/include/ia64/arch_spinlock.h b/extras/mini-os/include/ia64/arch_spinlock.h
deleted file mode 100644 (file)
index 60712b5..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Done by Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com
- * The file contains ia64 special spinlock stuff.
- *
- ****************************************************************************
- * 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.
- */
-
-#ifndef _ARCH_SPINLOCK_H_
-#define _ARCH_SPINLOCK_H_
-
-#include "atomic.h"
-
-#define ARCH_SPIN_LOCK_UNLOCKED { 0 }
-
-#define SPIN_LOCK_UNUSED       0
-#define SPIN_LOCK_USED         1
-
-
-static inline void
-_raw_spin_lock(spinlock_t* lck)
-{
-       uint32_t ret;
-       do {
-               ret = ia64_cmpxchg_acq_32(&(lck->slock),
-                                         SPIN_LOCK_UNUSED, SPIN_LOCK_USED);
-       } while (ret == SPIN_LOCK_USED);
-}
-
-static inline void
-_raw_spin_unlock(spinlock_t *lck)
-{
-       asm volatile ("st4.rel.nta [%0] = r0\n\t" :: "r"(&(lck->slock))
-                                                       : "memory" );
-}
-
-static inline uint32_t
-_raw_spin_trylock(spinlock_t* lck)
-{
-       uint32_t ret;
-       ret = ia64_cmpxchg_acq_32(&(lck->slock), SPIN_LOCK_USED, SPIN_LOCK_USED);
-       return (ret == SPIN_LOCK_USED);
-}
-
-#endif /* _ARCH_SPINLOCK_H_ */
diff --git a/extras/mini-os/include/ia64/asm.h b/extras/mini-os/include/ia64/asm.h
deleted file mode 100644 (file)
index d96216f..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Done by Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com
- */
-
-#if !defined(_ASM_H_)
-#define _ASM_H_
-
-#define        ENTRY(_name_)                           \
-       .global _name_;                         \
-       .align  16;                             \
-       .proc   _name_;                         \
-_name_:;                                       \
-
-
-#define        END(_name_)                                             \
-       .endp   _name_
-
-#endif /* !defined(_ASM_H_) */
diff --git a/extras/mini-os/include/ia64/atomic.h b/extras/mini-os/include/ia64/atomic.h
deleted file mode 100644 (file)
index ba5aa16..0000000
+++ /dev/null
@@ -1,504 +0,0 @@
-/*
- * This code is mostly taken from FreeBSD machine/atomic.h
- * Changes: Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com>
- *
- ****************************************************************************
- * Copyright (c) 1998 Doug Rabson
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
- */
-
-#ifndef _MACHINE_ATOMIC_H_
-#define _MACHINE_ATOMIC_H_
-
-/*
- * Various simple arithmetic on memory which is atomic in the presence
- * of interrupts and SMP safe.
- */
-
-#if !defined(__ASSEMBLY__)
-
-#include <mini-os/types.h>
-
-
-/*
- * Everything is built out of cmpxchg.
- */
-#define IA64_CMPXCHG(sz, sem, p, cmpval, newval, ret)          \
-       __asm __volatile (                                      \
-               "mov ar.ccv=%2;;\n\t"                           \
-               "cmpxchg" #sz "." #sem " %0=%4,%3,ar.ccv\n\t"   \
-               : "=r" (ret), "=m" (*p)                         \
-               : "r" (cmpval), "r" (newval), "m" (*p)          \
-               : "memory")
-
-
-/*
- * Some common forms of cmpxch.
- */
-
-static __inline uint8_t
-ia64_cmpxchg_acq_8(volatile uint8_t* p, uint8_t cmpval, uint8_t newval)
-{
-       uint8_t ret;
-
-       IA64_CMPXCHG(1, acq, p, cmpval, newval, ret);
-       return (ret);
-}
-
-static __inline uint16_t
-ia64_cmpxchg_acq_16(volatile uint16_t* p, uint16_t cmpval, uint16_t newval)
-{
-       uint16_t ret;
-
-       IA64_CMPXCHG(2, acq, p, cmpval, newval, ret);
-       return (ret);
-}
-
-static __inline uint32_t
-ia64_cmpxchg_acq_32(volatile uint32_t* p, uint32_t cmpval, uint32_t newval)
-{
-       uint32_t ret;
-
-       IA64_CMPXCHG(4, acq, p, cmpval, newval, ret);
-       return (ret);
-}
-
-static __inline uint32_t
-ia64_cmpxchg_rel_32(volatile uint32_t* p, uint32_t cmpval, uint32_t newval)
-{
-       uint32_t ret;
-
-       IA64_CMPXCHG(4, rel, p, cmpval, newval, ret);
-       return (ret);
-}
-
-static __inline uint64_t
-ia64_cmpxchg_acq_64(volatile uint64_t* p, uint64_t cmpval, uint64_t newval)
-{
-       uint64_t ret;
-
-       IA64_CMPXCHG(8, acq, p, cmpval, newval, ret);
-       return (ret);
-}
-
-static __inline uint64_t
-ia64_cmpxchg_rel_64(volatile uint64_t* p, uint64_t cmpval, uint64_t newval)
-{
-       uint64_t ret;
-
-       IA64_CMPXCHG(8, rel, p, cmpval, newval, ret);
-       return (ret);
-}
-
-#define ATOMIC_STORE_LOAD(type, width, size)                   \
-static __inline uint##width##_t                                \
-ia64_ld_acq_##width(volatile uint##width##_t* p)               \
-{                                                              \
-       uint##width##_t v;                                      \
-                                                               \
-       __asm __volatile ("ld" size ".acq %0=%1"                \
-                         : "=r" (v)                            \
-                         : "m" (*p)                            \
-                         : "memory");                          \
-       return (v);                                             \
-}                                                              \
-                                                               \
-static __inline uint##width##_t                                \
-atomic_load_acq_##width(volatile uint##width##_t* p)           \
-{                                                              \
-       uint##width##_t v;                                      \
-                                                               \
-       __asm __volatile ("ld" size ".acq %0=%1"                \
-                         : "=r" (v)                            \
-                         : "m" (*p)                            \
-                         : "memory");                          \
-       return (v);                                             \
-}                                                              \
-                                                               \
-static __inline uint##width##_t                                \
-atomic_load_acq_##type(volatile uint##width##_t* p)            \
-{                                                              \
-       uint##width##_t v;                                      \
-                                                               \
-       __asm __volatile ("ld" size ".acq %0=%1"                \
-                         : "=r" (v)                            \
-                         : "m" (*p)                            \
-                         : "memory");                          \
-       return (v);                                             \
-}                                                              \
-                                                               \
-static __inline void                                           \
-ia64_st_rel_##width(volatile uint##width##_t* p, uint##width##_t v)\
-{                                                              \
-       __asm __volatile ("st" size ".rel %0=%1"                \
-                         : "=m" (*p)                           \
-                         : "r" (v)                             \
-                         : "memory");                          \
-}                                                              \
-                                                               \
-static __inline void                                           \
-atomic_store_rel_##width(volatile uint##width##_t* p, uint##width##_t v)\
-{                                                              \
-       __asm __volatile ("st" size ".rel %0=%1"                \
-                         : "=m" (*p)                           \
-                         : "r" (v)                             \
-                         : "memory");                          \
-}                                                              \
-                                                               \
-static __inline void                                           \
-atomic_store_rel_##type(volatile uint##width##_t* p, uint##width##_t v)\
-{                                                              \
-       __asm __volatile ("st" size ".rel %0=%1"                \
-                         : "=m" (*p)                           \
-                         : "r" (v)                             \
-                         : "memory");                          \
-}
-
-ATOMIC_STORE_LOAD(char, 8, "1")
-ATOMIC_STORE_LOAD(short, 16, "2")
-ATOMIC_STORE_LOAD(int, 32, "4")
-ATOMIC_STORE_LOAD(long, 64, "8")
-
-#undef ATOMIC_STORE_LOAD
-
-#define IA64_ATOMIC(sz, type, name, width, op)                 \
-                                                                       \
-static __inline type                                                   \
-atomic_##name##_acq_##width(volatile type *p, type v)          \
-{                                                                      \
-       type old, ret;                                                  \
-       do {                                                            \
-               old = *p;                                               \
-               IA64_CMPXCHG(sz, acq, p, old, old op v, ret);   \
-       } while (ret != old);                                           \
-       return(ret);                                                    \
-}                                                                      \
-                                                                       \
-static __inline type                                                   \
-atomic_##name##_rel_##width(volatile type *p, type v)          \
-{                                                                      \
-       type old, ret;                                                  \
-       do {                                                            \
-               old = *p;                                               \
-               IA64_CMPXCHG(sz, rel, p, old, old op v, ret);   \
-       } while (ret != old);                                           \
-       return(ret);                                                    \
-}
-
-IA64_ATOMIC(1, uint8_t,  set,  8,      |)
-IA64_ATOMIC(2, uint16_t, set,  16,     |)
-IA64_ATOMIC(4, uint32_t, set,  32,     |)
-IA64_ATOMIC(8, uint64_t, set,  64,     |)
-
-IA64_ATOMIC(1, uint8_t,  clear,        8,      &~)
-IA64_ATOMIC(2, uint16_t, clear,        16,     &~)
-IA64_ATOMIC(4, uint32_t, clear,        32,     &~)
-IA64_ATOMIC(8, uint64_t, clear,        64,     &~)
-
-IA64_ATOMIC(1, uint8_t,  add,  8,      +)
-IA64_ATOMIC(2, uint16_t, add,  16,     +)
-IA64_ATOMIC(4, uint32_t, add,  32,     +)
-IA64_ATOMIC(8, uint64_t, add,  64,     +)
-
-IA64_ATOMIC(1, uint8_t,  subtract,     8,      -)
-IA64_ATOMIC(2, uint16_t, subtract,     16,     -)
-IA64_ATOMIC(4, uint32_t, subtract,     32,     -)
-IA64_ATOMIC(8, uint64_t, subtract,     64,     -)
-
-#undef IA64_ATOMIC
-#undef IA64_CMPXCHG
-
-#define atomic_set_8                   atomic_set_acq_8
-#define        atomic_clear_8                  atomic_clear_acq_8
-#define atomic_add_8                   atomic_add_acq_8
-#define        atomic_subtract_8               atomic_subtract_acq_8
-
-#define atomic_set_16                  atomic_set_acq_16
-#define        atomic_clear_16                 atomic_clear_acq_16
-#define atomic_add_16                  atomic_add_acq_16
-#define        atomic_subtract_16              atomic_subtract_acq_16
-
-#define atomic_set_32                  atomic_set_acq_32
-#define        atomic_clear_32                 atomic_clear_acq_32
-#define atomic_add_32                  atomic_add_acq_32
-#define        atomic_subtract_32              atomic_subtract_acq_32
-
-#define atomic_set_64                  atomic_set_acq_64
-#define        atomic_clear_64                 atomic_clear_acq_64
-#define atomic_add_64                  atomic_add_acq_64
-#define        atomic_subtract_64              atomic_subtract_acq_64
-
-#define atomic_set_char                        atomic_set_8
-#define atomic_clear_char              atomic_clear_8
-#define atomic_add_char                        atomic_add_8
-#define atomic_subtract_char           atomic_subtract_8
-#define atomic_set_acq_char            atomic_set_acq_8
-#define atomic_clear_acq_char          atomic_clear_acq_8
-#define atomic_add_acq_char            atomic_add_acq_8
-#define atomic_subtract_acq_char       atomic_subtract_acq_8
-#define atomic_set_rel_char            atomic_set_rel_8
-#define atomic_clear_rel_char          atomic_clear_rel_8
-#define atomic_add_rel_char            atomic_add_rel_8
-#define atomic_subtract_rel_char       atomic_subtract_rel_8
-
-#define atomic_set_short               atomic_set_16
-#define atomic_clear_short             atomic_clear_16
-#define atomic_add_short               atomic_add_16
-#define atomic_subtract_short          atomic_subtract_16
-#define atomic_set_acq_short           atomic_set_acq_16
-#define atomic_clear_acq_short         atomic_clear_acq_16
-#define atomic_add_acq_short           atomic_add_acq_16
-#define atomic_subtract_acq_short      atomic_subtract_acq_16
-#define atomic_set_rel_short           atomic_set_rel_16
-#define atomic_clear_rel_short         atomic_clear_rel_16
-#define atomic_add_rel_short           atomic_add_rel_16
-#define atomic_subtract_rel_short      atomic_subtract_rel_16
-
-#define atomic_set_int                 atomic_set_32
-#define atomic_clear_int               atomic_clear_32
-#define atomic_add_int                 atomic_add_32
-#define atomic_subtract_int            atomic_subtract_32
-#define atomic_set_acq_int             atomic_set_acq_32
-#define atomic_clear_acq_int           atomic_clear_acq_32
-#define atomic_add_acq_int             atomic_add_acq_32
-#define atomic_subtract_acq_int                atomic_subtract_acq_32
-#define atomic_set_rel_int             atomic_set_rel_32
-#define atomic_clear_rel_int           atomic_clear_rel_32
-#define atomic_add_rel_int             atomic_add_rel_32
-#define atomic_subtract_rel_int                atomic_subtract_rel_32
-
-#define atomic_set_long                        atomic_set_64
-#define atomic_clear_long              atomic_clear_64
-#define atomic_add_long                        atomic_add_64
-#define atomic_subtract_long           atomic_subtract_64
-#define atomic_set_acq_long            atomic_set_acq_64
-#define atomic_clear_acq_long          atomic_clear_acq_64
-#define atomic_add_acq_long            atomic_add_acq_64
-#define atomic_subtract_acq_long       atomic_subtract_acq_64
-#define atomic_set_rel_long            atomic_set_rel_64
-#define atomic_clear_rel_long          atomic_clear_rel_64
-#define atomic_add_rel_long            atomic_add_rel_64
-#define atomic_subtract_rel_long       atomic_subtract_rel_64
-
-/*
- * Atomically compare the value stored at *p with cmpval and if the
- * two values are equal, update the value of *p with newval. Returns
- * zero if the compare failed, nonzero otherwise.
- */
-static __inline int
-atomic_cmpset_acq_32(volatile uint32_t* p, uint32_t cmpval, uint32_t newval)
-{
-       return ia64_cmpxchg_acq_32(p, cmpval, newval) == cmpval;
-}
-
-static __inline int
-atomic_cmpset_rel_32(volatile uint32_t* p, uint32_t cmpval, uint32_t newval)
-{
-       return ia64_cmpxchg_rel_32(p, cmpval, newval) == cmpval;
-}
-
-/*
- * Atomically compare the value stored at *p with cmpval and if the
- * two values are equal, update the value of *p with newval. Returns
- * zero if the compare failed, nonzero otherwise.
- */
-static __inline int
-atomic_cmpset_acq_64(volatile uint64_t* p, uint64_t cmpval, uint64_t newval)
-{
-       return ia64_cmpxchg_acq_64(p, cmpval, newval) == cmpval;
-}
-
-static __inline int
-atomic_cmpset_rel_64(volatile uint64_t* p, uint64_t cmpval, uint64_t newval)
-{
-       return ia64_cmpxchg_rel_64(p, cmpval, newval) == cmpval;
-}
-
-#define atomic_cmpset_32               atomic_cmpset_acq_32
-#define atomic_cmpset_64               atomic_cmpset_acq_64
-#define        atomic_cmpset_int               atomic_cmpset_32
-#define        atomic_cmpset_long              atomic_cmpset_64
-#define atomic_cmpset_acq_int          atomic_cmpset_acq_32
-#define atomic_cmpset_rel_int          atomic_cmpset_rel_32
-#define atomic_cmpset_acq_long         atomic_cmpset_acq_64
-#define atomic_cmpset_rel_long         atomic_cmpset_rel_64
-
-static __inline int
-atomic_cmpset_acq_ptr(volatile void *dst, void *exp, void *src)
-{
-        return atomic_cmpset_acq_long((volatile u_long *)dst,
-                                     (u_long)exp, (u_long)src);
-}
-
-static __inline int
-atomic_cmpset_rel_ptr(volatile void *dst, void *exp, void *src)
-{
-        return atomic_cmpset_rel_long((volatile u_long *)dst,
-                                     (u_long)exp, (u_long)src);
-}
-
-#define        atomic_cmpset_ptr       atomic_cmpset_acq_ptr
-
-static __inline void *
-atomic_load_acq_ptr(volatile void *p)
-{
-       return (void *)atomic_load_acq_long((volatile u_long *)p);
-}
-
-static __inline void
-atomic_store_rel_ptr(volatile void *p, void *v)
-{
-       atomic_store_rel_long((volatile u_long *)p, (u_long)v);
-}
-
-#define IA64_ATOMIC_PTR(NAME)                          \
-static __inline void                                   \
-atomic_##NAME##_ptr(volatile void *p, uintptr_t v)     \
-{                                                      \
-       atomic_##NAME##_long((volatile u_long *)p, v);  \
-}                                                      \
-                                                       \
-static __inline void                                   \
-atomic_##NAME##_acq_ptr(volatile void *p, uintptr_t v) \
-{                                                      \
-       atomic_##NAME##_acq_long((volatile u_long *)p, v);\
-}                                                      \
-                                                       \
-static __inline void                                   \
-atomic_##NAME##_rel_ptr(volatile void *p, uintptr_t v) \
-{                                                      \
-       atomic_##NAME##_rel_long((volatile u_long *)p, v);\
-}
-
-IA64_ATOMIC_PTR(set)
-IA64_ATOMIC_PTR(clear)
-IA64_ATOMIC_PTR(add)
-IA64_ATOMIC_PTR(subtract)
-
-#undef IA64_ATOMIC_PTR
-
-static __inline uint32_t
-atomic_readandclear_32(volatile uint32_t* p)
-{
-       uint32_t val;
-       do {
-               val = *p;
-       } while (!atomic_cmpset_32(p, val, 0));
-       return val;
-}
-
-static __inline uint64_t
-atomic_readandclear_64(volatile uint64_t* p)
-{
-       uint64_t val;
-       do {
-               val = *p;
-       } while (!atomic_cmpset_64(p, val, 0));
-       return val;
-}
-
-#define atomic_readandclear_int        atomic_readandclear_32
-#define atomic_readandclear_long       atomic_readandclear_64
-
-
-/* Some bit operations */
-
-static inline void
-set_bit(int num, volatile void *addr)
-{
-       uint32_t bit, old, new;
-       volatile uint32_t *p;
-       p = (volatile uint32_t *) addr + (num >> 5);
-       bit = 1 << (num & 31);
-       do
-       {
-               old = *p;
-               new = old | bit;
-       } while(ia64_cmpxchg_acq_32(p, old, new) != old);
-}
-
-static __inline__ void
-clear_bit(int num, volatile void *addr)
-{
-       uint32_t mask, old, new;
-       volatile uint32_t *p;
-       p = (volatile uint32_t *) addr + (num >> 5);
-       mask = ~(1 << (num & 31));
-       do {
-               old = *p;
-               new = old & mask;
-       } while (ia64_cmpxchg_acq_32(p, old, new) != old);
-}
-
-static __inline__ int
-test_bit(int num, const volatile void *addr)
-{
-       uint32_t val = 1;
-        return val & (((const volatile uint32_t *) addr)[num >> 5] >> (num & 31));
-}
-
-/*
- * test_and_set_bit - Set a bit and return its old value
- * num: Bit to set
- * addr: Address to count from
- */
-static inline int
-test_and_set_bit (int num, volatile void *addr)
-{
-        uint32_t bit, old, new;
-        volatile uint32_t *m;
-
-        m = (volatile uint32_t *) addr + (num >> 5);
-        bit = 1 << (num & 31);
-        do {
-                old = *m;
-                new = old | bit;
-        } while (ia64_cmpxchg_acq_32(m, old, new) != old);
-        return (old & bit) != 0;
-}
-
-/*
- * test_and_clear_bit - Clear a bit and return its old value
- * num: Bit to set
- * addr: Address to count from
- */
-static
-inline int test_and_clear_bit(int num, volatile unsigned long * addr)
-{
-        uint32_t bit, old, new;
-        volatile uint32_t* a;
-
-        a = (volatile uint32_t *) addr + (num >> 5);
-        bit = ~(1 << (num & 31));
-        do {
-                old = *a;
-                new = old & bit;
-        } while (ia64_cmpxchg_acq_32(a, old, new) != old);
-        return (old & ~bit) != 0;
-}
-
-
-#endif /* !defined(__ASSEMBLY__) */
-
-#endif /* ! _MACHINE_ATOMIC_H_ */
diff --git a/extras/mini-os/include/ia64/efi.h b/extras/mini-os/include/ia64/efi.h
deleted file mode 100644 (file)
index b70a0a8..0000000
+++ /dev/null
@@ -1,396 +0,0 @@
-/*
- * This is a short summary of declarations and definitions from different
- * efi header files of Intels' EFI_Toolkit_1.10.14.62 
- * used for the minimal implementation in mini-os.
- * Changes: Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com>
- *
- ****************************************************************************
- * Copyright (C) 2001-2004, Intel Corporation.
- * THIS SPECIFICATION IS PROVIDED "AS IS" WITH NO WARRANTIES WHATSOEVER,
- * INCLUDING ANY WARRANTY OF MERCHANTABILITY, NONINFRINGEMENT, FITNESS FOR
- * ANY PARTICULAR PURPOSE, OR ANY WARRANTY OTHERWISE ARISING OUT OF ANY
- * PROPOSAL, SPECIFICATION OR SAMPLE. Except for a limited copyright license
- * to copy this specification for internal use only, no license, express or
- * implied, by estoppel or otherwise, to any intellectual property rights is
- * granted herein.  Intel disclaims all liability, including liability for
- * infringement of any proprietary rights, relating to implementation of
- * information in this specification. Intel does not warrant or represent
- * that such implementation(s) will not infringe such rights.  Designers must
- * not rely on the absence or characteristics of any features or instructions
- * marked "reserved" or "undefined." Intel reserves these for future
- * definition and shall have no responsibility whatsoever for conflicts or
- * incompatibilities arising from future changes to them.
- * This document is an intermediate draft for comment only and is subject to
- * change without notice. Readers should not design products based on this
- * document.
- * Intel, the Intel logo, and Itanium are trademarks or registered trademarks
- * of Intel Corporation or its subsidiaries in the United States and other
- * countries.
- * Other names and brands may be claimed as the property of others.
- */
-
-#ifndef _EFI_H_
-#define _EFI_H_
-
-#include <mini-os/types.h>
-
-
-#define EFIWARN(a)                      (a)
-#define EFI_ERROR(a)                    (((int64_t) a) < 0)
-
-
-#define EFI_SUCCESS                     0
-#define EFI_LOAD_ERROR                  EFIERR(1)
-#define EFI_INVALID_PARAMETER           EFIERR(2)
-#define EFI_UNSUPPORTED                 EFIERR(3)
-#define EFI_BAD_BUFFER_SIZE             EFIERR(4)
-#define EFI_BUFFER_TOO_SMALL            EFIERR(5)
-#define EFI_NOT_READY                   EFIERR(6)
-#define EFI_DEVICE_ERROR                EFIERR(7)
-#define EFI_WRITE_PROTECTED             EFIERR(8)
-#define EFI_OUT_OF_RESOURCES            EFIERR(9)
-#define EFI_VOLUME_CORRUPTED            EFIERR(10)
-#define EFI_VOLUME_FULL                 EFIERR(11)
-#define EFI_NO_MEDIA                    EFIERR(12)
-#define EFI_MEDIA_CHANGED               EFIERR(13)
-#define EFI_NOT_FOUND                   EFIERR(14)
-#define EFI_ACCESS_DENIED               EFIERR(15)
-#define EFI_NO_RESPONSE                 EFIERR(16)
-#define EFI_NO_MAPPING                  EFIERR(17)
-#define EFI_TIMEOUT                     EFIERR(18)
-#define EFI_NOT_STARTED                 EFIERR(19)
-#define EFI_ALREADY_STARTED             EFIERR(20)
-#define EFI_ABORTED                     EFIERR(21)
-#define EFI_ICMP_ERROR                  EFIERR(22)
-#define EFI_TFTP_ERROR                  EFIERR(23)
-#define EFI_PROTOCOL_ERROR              EFIERR(24)
-
-#define EFI_WARN_UNKOWN_GLYPH           EFIWARN(1)
-#define EFI_WARN_DELETE_FAILURE         EFIWARN(2)
-#define EFI_WARN_WRITE_FAILURE          EFIWARN(3)
-#define EFI_WARN_BUFFER_TOO_SMALL       EFIWARN(4)
-
-
-typedef uint64_t       efi_status_t;
-typedef void*          efi_handle_t;
-typedef void*          efi_event_t;
-typedef uint16_t       efi_char16_t;
-
-
-/*
- * Standard EFI table header
- */
-
-struct efi_table_header
-{
-       uint64_t        Signature;
-       // Revision of EFI table specification,
-       // upper 16 bit - major revision number
-       // lower 16 bit - minor revision number
-       uint32_t        Revision;
-       uint32_t        HeaderSize;
-       uint32_t        CRC32;
-       uint32_t        Reserved;
-};
-typedef struct efi_table_header efi_table_header_t;
-
-/*
- * EFI Time
- */
-typedef struct
-{          
-       uint16_t        Year;       /* 1998 - 20XX */
-       uint8_t         Month;      /* 1 - 12 */
-       uint8_t         Day;        /* 1 - 31 */
-       uint8_t         Hour;       /* 0 - 23 */
-       uint8_t         Minute;     /* 0 - 59 */
-       uint8_t         Second;     /* 0 - 59 */
-       uint8_t         Pad1;
-       uint32_t        Nanosecond; /* 0 - 999,999,999 */
-       int16_t         TimeZone;   /* -1440 to 1440 or 2047 */
-       uint8_t         Daylight;
-       uint8_t         Pad2;
-} efi_time_t;
-
-/* Bit definitions for efi_time_t.Daylight */
-#define EFI_TIME_ADJUST_DAYLIGHT    0x01
-#define EFI_TIME_IN_DAYLIGHT        0x02
-
-/* Value definition for efi_time_t.TimeZone */
-#define EFI_UNSPECIFIED_TIMEZONE    0x07FF
-
-
-
-typedef struct
-{
-       uint32_t        Resolution;     /* 1e-6 parts per million */
-       uint32_t        Accuracy;       /* hertz */
-       uint8_t         SetsToZero;     /* Set clears sub-second time */
-} efi_time_capabilities_t;
-
-
-typedef efi_status_t (*efi_get_time_t) (efi_time_t*, efi_time_capabilities_t*);
-typedef efi_status_t (*efi_set_time_t) (efi_time_t*);
-typedef efi_status_t (*efi_get_wakeup_time_t) (uint8_t*, uint8_t*, efi_time_t*);
-typedef efi_status_t (*efi_set_wakeup_time_t) (uint8_t, efi_time_t*);
-
-/*
- * Memory
- * Preseve the attr on any range supplied.
- * ConventialMemory must have WB,SR,SW when supplied.
- * When allocating from ConventialMemory always make it WB,SR,SW
- * When returning to ConventialMemory always make it WB,SR,SW
- * When getting the memory map, or on RT for runtime types
- */
-
-typedef enum {
-       EfiReservedMemoryType,          /* 0 */
-       EfiLoaderCode,
-       EfiLoaderData,
-       EfiBootServicesCode,
-       EfiBootServicesData,
-       EfiRuntimeServicesCode,
-       EfiRuntimeServicesData,         /* 6 */
-       EfiConventionalMemory,          /* 7 */
-       EfiUnusableMemory,
-       EfiACPIReclaimMemory,           /* 9 */
-       EfiACPIMemoryNVS,               /* 10, a */
-       EfiMemoryMappedIO,
-       EfiMemoryMappedIOPortSpace,     /* 12, c */
-       EfiPalCode,                     /* 13, d */
-       EfiMaxMemoryType                /* 14, e */
-} efi_memory_type_t;
-
-/* possible caching types for the memory range */
-#define EFI_MEMORY_UC          0x0000000000000001
-#define EFI_MEMORY_WC          0x0000000000000002
-#define EFI_MEMORY_WT          0x0000000000000004
-#define EFI_MEMORY_WB          0x0000000000000008
-#define EFI_MEMORY_UCE         0x0000000000000010  
-/* physical memory protection on range */
-#define EFI_MEMORY_WP          0x0000000000001000
-#define EFI_MEMORY_RP          0x0000000000002000
-#define EFI_MEMORY_XP          0x0000000000004000
-/* range requires a runtime mapping */
-#define EFI_MEMORY_RUNTIME     0x8000000000000000
-
-#define EFI_MEMORY_DESCRIPTOR_VERSION  1
-
-typedef uint64_t efi_phys_addr_t;
-typedef uint64_t efi_virt_addr_t;
-
-typedef struct
-{
-       uint32_t        Type;           /* 32 bit padding */
-       efi_phys_addr_t PhysicalStart;
-       efi_virt_addr_t VirtualStart;
-       uint64_t        NumberOfPages;
-       uint64_t        Attribute;
-} efi_memory_descriptor_t;
-
-#define NextMemoryDescriptor(Ptr,Size)  ((efi_memory_descriptor_t*) (((uint8_t*) Ptr) + Size))
-
-
-typedef efi_status_t (*efi_set_virtual_address_map_t)
-       (
-               uint64_t MemoryMapSize,
-               uint64_t DescriptorSize,
-               uint32_t DescriptorVersion,
-               efi_memory_descriptor_t* VirtualMap
-       );
-
-typedef efi_status_t (*efi_convert_pointer_t)
-       (
-               uint64_t DebugDisposition,
-               void** Address
-       );
-
-/*
- * A GUID
- */
-
-typedef struct
-{          
-       uint32_t        Data1;
-       uint16_t        Data2;
-       uint16_t        Data3;
-       uint8_t         Data4[8]; 
-} efi_guid_t;
-
-/*
- * EFI Configuration Table and GUID definitions
- */
-
-#define MPS_TABLE_GUID                 \
-       { 0xeb9d2d2f, 0x2d88, 0x11d3,   \
-               { 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }
-
-#define ACPI_TABLE_GUID                        \
-       { 0xeb9d2d30, 0x2d88, 0x11d3,   \
-               { 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }
-
-#define ACPI_20_TABLE_GUID  \
-       { 0x8868e871, 0xe4f1, 0x11d3,   \
-               { 0xbc, 0x22, 0x0, 0x80, 0xc7, 0x3c, 0x88, 0x81 } }
-
-#define SMBIOS_TABLE_GUID    \
-       { 0xeb9d2d31, 0x2d88, 0x11d3,   \
-               { 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }
-
-#define SAL_SYSTEM_TABLE_GUID    \
-       { 0xeb9d2d32, 0x2d88, 0x11d3,   \
-               { 0x9a, 0x16, 0x0, 0x90, 0x27, 0x3f, 0xc1, 0x4d } }
-
-/* DIG64 Headless Console & Debug Port Table. */
-#define        HCDP_TABLE_GUID         \
-       {0xf951938d, 0x620b, 0x42ef,    \
-               {0x82, 0x79, 0xa8, 0x4b, 0x79, 0x61, 0x78, 0x98 } }
-
-
-typedef struct efi_configuration_table
-{
-       efi_guid_t      VendorGuid;
-       void*           VendorTable;
-} efi_configuration_table_t;
-
-
-/*
- * EFI platform variables
- */
-
-#define EFI_GLOBAL_VARIABLE     \
-    {  0x8BE4DF61, 0x93CA, 0x11d2, 0xAA, 0x0D, 0x00,   \
-       0xE0, 0x98, 0x03, 0x2B, 0x8C }
-
-/* Variable attributes */
-#define EFI_VARIABLE_NON_VOLATILE           0x00000001
-#define EFI_VARIABLE_BOOTSERVICE_ACCESS     0x00000002
-#define EFI_VARIABLE_RUNTIME_ACCESS         0x00000004
-
-/* Variable size limitation */
-#define EFI_MAXIMUM_VARIABLE_SIZE           1024
-
-typedef efi_status_t (*efi_get_variable_t)
-       (
-               efi_char16_t*   VariableName,
-               efi_guid_t      *VendorGuid,
-               uint32_t*       Attributes,
-               uint64_t*       DataSize,
-               void*           Data
-       );
-
-typedef
-efi_status_t (*efi_get_next_variable_name_t)
-       (
-               uint64_t*       VariableNameSize,
-               efi_char16_t*   VariableName,
-               efi_guid_t*     VendorGuid
-       );
-
-typedef efi_status_t (*efi_set_variable_t)
-       (
-               efi_char16_t*   VariableName,
-               efi_guid_t*     VendorGuid,
-               uint32_t        Attributes,
-               uint64_t        DataSize,
-               void*           Data
-       );
-
-/*
- * Misc
- */
-
-typedef enum
-{
-       EfiResetCold,
-       EfiResetWarm,
-       EfiResetShutdown
-} efi_reset_type_t;
-
-
-typedef efi_status_t (*efi_reset_system_t)
-       (
-               efi_reset_type_t        ResetType,
-               efi_status_t            ResetStatus,
-               uint64_t                DataSize,
-               efi_char16_t*           ResetData
-       );
-
-typedef efi_status_t (*efi_get_next_high_mono_count_t) (uint32_t* HighCount);
-
-
-/*
- * EFI Runtime Serivces Table
- */
-
-#define EFI_RUNTIME_SERVICES_SIGNATURE  0x5652453544e5552ULL
-#define EFI_RUNTIME_SERVICES_REVISION ((EFI_SPECIFICATION_MAJOR_REVISION<<16) \
-                                       | (EFI_SPECIFICATION_MINOR_REVISION))
-
-typedef struct
-{
-       efi_table_header_t              Hdr;
-       /* Time services */
-       efi_get_time_t                  GetTime;
-       efi_set_time_t                  SetTime;
-       efi_get_wakeup_time_t           GetWakeupTime;
-       efi_set_wakeup_time_t           SetWakeupTime;
-       /* Virtual memory services */
-       efi_set_virtual_address_map_t   SetVirtualAddressMap;
-       efi_convert_pointer_t           ConvertPointer;
-       /* Variable serviers */
-       efi_get_variable_t              GetVariable;
-       efi_get_next_variable_name_t    GetNextVariableName;
-       efi_set_variable_t              SetVariable;
-       /* Misc */
-       efi_get_next_high_mono_count_t  GetNextHighMonotonicCount;
-       efi_reset_system_t              ResetSystem;
-
-} efi_runtime_services_t;
-
-
-#define EFI_SPECIFICATION_MAJOR_REVISION 1
-#define EFI_SYSTEM_TABLE_SIGNATURE      0x5453595320494249
-#define EFI_SYSTEM_TABLE_REVISION  ((EFI_SPECIFICATION_MAJOR_REVISION<<16) \
-                                       | (EFI_SPECIFICATION_MINOR_REVISION))
-
-struct efi_system_table
-{
-       efi_table_header_t      Hdr;
-
-       uint64_t        FirmwareVendor;         // phys addr of CHAR16
-       uint32_t        FirmwareRevision;       // Firmware vendor specific
-
-       efi_handle_t    ConsoleInHandle;
-       uint64_t        ConIn;
-
-       efi_handle_t    ConsoleOutHandle;
-       uint64_t        ConOut;
-
-       efi_handle_t    StandardErrorHandle;
-       uint64_t        StdErr;
-
-       uint64_t        RuntimeServices;        // phys addr
-       uint64_t        BootServices;           // phys addr
-
-       uint64_t        NumberOfTableEntries;   // Number of entries in Config
-       uint64_t        ConfigurationTable;     // phys addr of ConfigTable
-};
-
-typedef struct efi_system_table efi_system_table_t;
-
-
-#define EFI_PAGE_SIZE   4096
-#define EFI_PAGE_MASK   0xFFF
-#define EFI_PAGE_SHIFT  12
-
-#define EFI_SIZE_TO_PAGES(a)  \
-    ( ((a) >> EFI_PAGE_SHIFT) + ((a) & EFI_PAGE_MASK ? 1 : 0) )
-
-
-void init_efi(void);
-int efi_get_time(efi_time_t* tmP);
-efi_status_t ia64_call_efi_physical(void *, ...);
-
-
-#endif /* _EFI_H_ */
diff --git a/extras/mini-os/include/ia64/hypercall-ia64.h b/extras/mini-os/include/ia64/hypercall-ia64.h
deleted file mode 100644 (file)
index 06ddc8c..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-/******************************************************************************
- * hypercall.h
- * 
- * Mini-OS-specific hypervisor handling for ia64.
- * 
- * Copyright (c) 2002-2004, K A Fraser
- * Changes: Dietmar Hahn <dietmar.hahn@fujiti-siemens.com>
- * 
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License version 2
- * as published by the Free Software Foundation; or, when distributed
- * separately from the Linux kernel or incorporated into other
- * software packages, subject to the following license:
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this source file (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.
- */
-
-#ifndef __HYPERCALL_H__
-#define __HYPERCALL_H__
-
-#include <xen/event_channel.h>
-#include <xen/sched.h>
-#include <xen/version.h>
-
-#ifndef _HYPERVISOR_H_
-# error "please don't include this file directly"
-#endif
-
-// See linux/compiler.h
-#define likely(x)       __builtin_expect(!!(x), 1)
-#define unlikely(x)     __builtin_expect(!!(x), 0)
-
-extern unsigned long __hypercall(unsigned long a1, unsigned long a2,
-                                 unsigned long a3, unsigned long a4,
-                                 unsigned long a5, unsigned long cmd);
-/*
- * Assembler stubs for hyper-calls.
- */
-
-#define _hypercall0(type, name)                                        \
-({                                                             \
-       long __res;                                             \
-       __res = __hypercall(0, 0, 0, 0, 0,                      \
-                           __HYPERVISOR_##name);               \
-       (type)__res;                                            \
-})
-
-#define _hypercall1(type, name, a1)                            \
-({                                                             \
-       long __res;                                             \
-       __res = __hypercall((unsigned long)a1,                  \
-                           0, 0, 0, 0, __HYPERVISOR_##name);   \
-       (type)__res;                                            \
-})
-
-#define _hypercall2(type, name, a1, a2)                                \
-({                                                             \
-       long __res;                                             \
-       __res = __hypercall((unsigned long)a1,                  \
-                           (unsigned long)a2,                  \
-                           0, 0, 0, __HYPERVISOR_##name);      \
-       (type)__res;                                            \
-})
-
-#define _hypercall3(type, name, a1, a2, a3)                    \
-({                                                             \
-       long __res;                                             \
-       __res = __hypercall((unsigned long)a1,                  \
-                           (unsigned long)a2,                  \
-                           (unsigned long)a3,                  \
-                           0, 0, __HYPERVISOR_##name);         \
-       (type)__res;                                            \
-})
-
-#define _hypercall4(type, name, a1, a2, a3, a4)                        \
-({                                                             \
-       long __res;                                             \
-       __res = __hypercall((unsigned long)a1,                  \
-                           (unsigned long)a2,                  \
-                           (unsigned long)a3,                  \
-                           (unsigned long)a4,                  \
-                           0, __HYPERVISOR_##name);            \
-       (type)__res;                                            \
-})
-
-#define _hypercall5(type, name, a1, a2, a3, a4, a5)            \
-({                                                             \
-       long __res;                                             \
-       __res = __hypercall((unsigned long)a1,                  \
-                           (unsigned long)a2,                  \
-                           (unsigned long)a3,                  \
-                           (unsigned long)a4,                  \
-                           (unsigned long)a5,                  \
-                           __HYPERVISOR_##name);               \
-       (type)__res;                                            \
-})
-
-
-int HYPERVISOR_event_channel_op(int cmd, void *arg);
-
-int HYPERVISOR_xen_version(int cmd, void *arg);
-
-int HYPERVISOR_console_io(int cmd, int count, char *str);
-
-int HYPERVISOR_sched_op_compat(int cmd, unsigned long arg);
-
-int HYPERVISOR_sched_op(int cmd, void *arg);
-
-int HYPERVISOR_callback_op(int cmd, void *arg);
-
-int HYPERVISOR_grant_table_op(unsigned int cmd, void *uop, unsigned int count);
-
-int HYPERVISOR_opt_feature(void *arg);
-
-int HYPERVISOR_suspend(unsigned long srec);
-
-int HYPERVISOR_shutdown(unsigned int reason);
-
-#endif /* __HYPERCALL_H__ */
diff --git a/extras/mini-os/include/ia64/ia64_cpu.h b/extras/mini-os/include/ia64/ia64_cpu.h
deleted file mode 100644 (file)
index 3e2e914..0000000
+++ /dev/null
@@ -1,738 +0,0 @@
-/*
- * Done by Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com>
- * This code is mostly taken from FreeBSD.
- *
- *
- ****************************************************************************
- * Copyright (c) 2000 Doug Rabson
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
- *
- */
-
-#ifndef _IA64_CPU_H_
-#define _IA64_CPU_H_
-
-#include "ia64_fpu.h"
-
-/*
- * Definition of Region Register bits (RR)
- *
- * RR bit field positions
- */
-#define IA64_RR_VE             0
-#define IA64_RR_MBZ0           1
-#define IA64_RR_PS             2
-#define IA64_RR_PS_LEN         6
-#define IA64_RR_RID            8
-#define IA64_RR_RID_LEN                24
-#define IA64_RR_MBZ1           32
-
-#define IA64_RR_IDX_POS                61
-
-#define IA64_RR_VAL(size,rid) (((size) << IA64_RR_PS) | ((rid) << IA64_RR_RID))
-
-/*
- * Define Protection Key Register (PKR)
- *
- * PKR bit field positions
- */
-#define IA64_PKR_V             0
-#define IA64_PKR_WD            1
-#define IA64_PKR_RD            2
-#define IA64_PKR_XD            3
-#define IA64_PKR_MBZ0          4
-#define IA64_PKR_KEY           8
-#define IA64_PKR_KEY_LEN       24
-#define IA64_PKR_MBZ1          32
-
-#define IA64_PKR_VALID         (1 << IA64_PKR_V)
-
-
-/*
- * ITIR bit field positions
- */
-
-#define        IA64_ITIR_MBZ0          0
-#define        IA64_ITIR_PS            2
-#define        IA64_ITIR_PS_LEN        6
-#define        IA64_ITIR_KEY           8
-#define        IA64_ITIR_KEY_LEN       24
-#define        IA64_ITIR_MBZ1          32
-#define        IA64_ITIR_MBZ1_LEN      16
-#define        IA64_ITIR_PPN           48
-#define        IA64_ITIR_PPN_LEN       15
-#define        IA64_ITIR_MBZ2          63
-
-/*
- * Definition of PSR and IPSR bits.
- */
-#define IA64_PSR_BE            0x0000000000000002
-#define IA64_PSR_UP            0x0000000000000004
-#define IA64_PSR_AC            0x0000000000000008
-#define IA64_PSR_MFL           0x0000000000000010
-#define IA64_PSR_MFH_BIT       5
-#define IA64_PSR_MFH           (1 << IA64_PSR_MFH_BIT)
-#define IA64_PSR_UMASK         (IA64_PSR_BE | IA64_PSR_UP |    \
-                               IA64_PSR_AC | IA64_PSR_MFL |    \
-                               IA64_PSR_MFH)
-#define IA64_PSR_IC_BIT                13
-#define IA64_PSR_IC            (1<<IA64_PSR_IC_BIT) /*0x0000000000002000*/
-#define IA64_PSR_I_BIT         14
-#define IA64_PSR_I             (1<<IA64_PSR_I_BIT) /*0x0000000000004000*/
-#define IA64_PSR_PK            0x0000000000008000
-#define IA64_PSR_DT            0x0000000000020000
-#define IA64_PSR_DFL           0x0000000000040000
-#define IA64_PSR_DFH           0x0000000000080000
-#define IA64_PSR_SP            0x0000000000100000
-#define IA64_PSR_PP            0x0000000000200000
-#define IA64_PSR_DI            0x0000000000400000
-#define IA64_PSR_SI            0x0000000000800000
-#define IA64_PSR_DB            0x0000000001000000
-#define IA64_PSR_LP            0x0000000002000000
-#define IA64_PSR_TB            0x0000000004000000
-#define IA64_PSR_RT            0x0000000008000000
-#define IA64_PSR_CPL           0x0000000300000000
-#define IA64_PSR_CPL_KERN      0x0000000000000000
-#define IA64_PSR_CPL_1         0x0000000100000000
-#define IA64_PSR_CPL_2         0x0000000200000000
-#define IA64_PSR_CPL_USER      0x0000000300000000
-#define IA64_PSR_IS            0x0000000400000000
-#define IA64_PSR_MC            0x0000000800000000
-#define IA64_PSR_IT            0x0000001000000000
-#define IA64_PSR_ID            0x0000002000000000
-#define IA64_PSR_DA            0x0000004000000000
-#define IA64_PSR_DD            0x0000008000000000
-#define IA64_PSR_SS            0x0000010000000000
-#define IA64_PSR_RI            0x0000060000000000
-#define IA64_PSR_RI_0          0x0000000000000000
-#define IA64_PSR_RI_1          0x0000020000000000
-#define IA64_PSR_RI_2          0x0000040000000000
-#define IA64_PSR_RI_SHIFT      41
-#define IA64_PSR_ED            0x0000080000000000
-#define IA64_PSR_BN            0x0000100000000000
-#define IA64_PSR_IA            0x0000200000000000
-
-
-#define STARTUP_PSR (IA64_PSR_IT | IA64_PSR_PK | \
-                    IA64_PSR_DT | IA64_PSR_RT | \
-                    IA64_PSR_BN | IA64_PSR_CPL_KERN | IA64_PSR_AC)
-
-#define MOS_SYS_PSR (IA64_PSR_IC | IA64_PSR_I | IA64_PSR_IT | \
-                    IA64_PSR_DT | IA64_PSR_RT | \
-                    IA64_PSR_BN | IA64_PSR_CPL_KERN | IA64_PSR_AC)
-
-#define MOS_USR_PSR (IA64_PSR_IC | IA64_PSR_I | IA64_PSR_IT | \
-                    IA64_PSR_DT | IA64_PSR_RT | \
-                    IA64_PSR_BN | IA64_PSR_CPL_USER | IA64_PSR_AC)
-
-/*
- * Definition of ISR bits.
- */
-#define IA64_ISR_CODE  0x000000000000ffff
-#define IA64_ISR_VECTOR        0x0000000000ff0000
-#define IA64_ISR_X     0x0000000100000000
-#define IA64_ISR_W     0x0000000200000000
-#define IA64_ISR_R     0x0000000400000000
-#define IA64_ISR_NA    0x0000000800000000
-#define IA64_ISR_SP    0x0000001000000000
-#define IA64_ISR_RS    0x0000002000000000
-#define IA64_ISR_IR    0x0000004000000000
-#define IA64_ISR_NI    0x0000008000000000
-#define IA64_ISR_SO    0x0000010000000000
-#define IA64_ISR_EI    0x0000060000000000
-#define IA64_ISR_EI_0  0x0000000000000000
-#define IA64_ISR_EI_1  0x0000020000000000
-#define IA64_ISR_EI_2  0x0000040000000000
-#define IA64_ISR_ED    0x0000080000000000
-
-/*
- * DCR bit positions
- */
-#define IA64_DCR_PP            0
-#define IA64_DCR_BE            1
-#define IA64_DCR_LC            2
-#define IA64_DCR_MBZ0          4
-#define IA64_DCR_MBZ0_V                0xf
-#define IA64_DCR_DM            8
-#define IA64_DCR_DP            9
-#define IA64_DCR_DK            10
-#define IA64_DCR_DX            11
-#define IA64_DCR_DR            12
-#define IA64_DCR_DA            13
-#define IA64_DCR_DD            14
-#define IA64_DCR_DEFER_ALL     0x7f00
-#define IA64_DCR_MBZ1          2
-#define IA64_DCR_MBZ1_V                0xffffffffffffULL
-
-
-#define IA64_DCR_DEFAULT (IA64_DCR_BE)
-
-/*
- * Vector numbers for various ia64 interrupts.
- */
-#define IA64_VEC_VHPT                          0
-#define IA64_VEC_ITLB                          1
-#define IA64_VEC_DTLB                          2
-#define IA64_VEC_ALT_ITLB                      3
-#define IA64_VEC_ALT_DTLB                      4
-#define IA64_VEC_NESTED_DTLB                   5
-#define IA64_VEC_IKEY_MISS                     6
-#define IA64_VEC_DKEY_MISS                     7
-#define IA64_VEC_DIRTY_BIT                     8
-#define IA64_VEC_INST_ACCESS                   9
-#define IA64_VEC_DATA_ACCESS                   10
-#define IA64_VEC_BREAK                         11
-#define IA64_VEC_EXT_INTR                      12
-#define IA64_VEC_PAGE_NOT_PRESENT              20
-#define IA64_VEC_KEY_PERMISSION                        21
-#define IA64_VEC_INST_ACCESS_RIGHTS            22
-#define IA64_VEC_DATA_ACCESS_RIGHTS            23
-#define IA64_VEC_GENERAL_EXCEPTION             24
-#define IA64_VEC_DISABLED_FP                   25
-#define IA64_VEC_NAT_CONSUMPTION               26
-#define IA64_VEC_SPECULATION                   27
-#define IA64_VEC_DEBUG                         29
-#define IA64_VEC_UNALIGNED_REFERENCE           30
-#define IA64_VEC_UNSUPP_DATA_REFERENCE         31
-#define IA64_VEC_FLOATING_POINT_FAULT          32
-#define IA64_VEC_FLOATING_POINT_TRAP           33
-#define IA64_VEC_LOWER_PRIVILEGE_TRANSFER      34
-#define IA64_VEC_TAKEN_BRANCH_TRAP             35
-#define IA64_VEC_SINGLE_STEP_TRAP              36
-#define IA64_VEC_IA32_EXCEPTION                        45
-#define IA64_VEC_IA32_INTERCEPT                        46
-#define IA64_VEC_IA32_INTERRUPT                        47
-
-/*
- * Define hardware RSE Configuration Register
- *
- * RS Configuration (RSC) bit field positions
- */
-
-#define IA64_RSC_MODE       0
-#define IA64_RSC_PL         2
-#define IA64_RSC_BE         4
-#define IA64_RSC_MBZ0       5
-#define IA64_RSC_MBZ0_V     0x3ff
-#define IA64_RSC_LOADRS     16
-#define IA64_RSC_LOADRS_LEN 14
-#define IA64_RSC_MBZ1       30
-#define IA64_RSC_MBZ1_V     0x3ffffffffULL
-
-/*
- * RSC modes
- */
-#define IA64_RSC_MODE_LY (0x0)                 /* Lazy */
-#define IA64_RSC_MODE_SI (0x1)                 /* Store intensive */
-#define IA64_RSC_MODE_LI (0x2)                 /* Load intensive */
-#define IA64_RSC_MODE_EA (0x3)                 /* Eager */
-
-#define IA64_RSE_EAGER (IA64_RSC_MODE_EA<<IA64_RSC_MODE)
-#define IA64_RSE_LAZY (IA64_RSC_MODE_LY<<IA64_RSC_MODE)
-
-
-
-#ifndef __ASSEMBLY__
-
-/* ia64 function descriptor and global pointer */
-struct ia64_fdesc
-{
-       uint64_t        func;
-       uint64_t        gp;
-};
-typedef struct ia64_fdesc ia64_fdesc_t;
-
-#define FDESC_FUNC(fn)  (((struct ia64_fdesc *) fn)->func)
-#define FDESC_GP(fn)    (((struct ia64_fdesc *) fn)->gp)
-
-
-/*
- * Various special ia64 instructions.
- */
-
-/*
- * Memory Fence.
- */
-static __inline void
-ia64_mf(void)
-{
-       __asm __volatile("mf" ::: "memory");
-}
-
-static __inline void
-ia64_mf_a(void)
-{
-       __asm __volatile("mf.a");
-}
-
-/*
- * Flush Cache.
- */
-static __inline void
-ia64_fc(uint64_t va)
-{
-       __asm __volatile("fc %0" :: "r"(va));
-}
-
-/*
- * Sync instruction stream.
- */
-static __inline void
-ia64_sync_i(void)
-{
-       __asm __volatile("sync.i");
-}
-
-/*
- * Calculate address in VHPT for va.
- */
-static __inline uint64_t
-ia64_thash(uint64_t va)
-{
-       uint64_t result;
-       __asm __volatile("thash %0=%1" : "=r" (result) : "r" (va));
-       return result;
-}
-
-/*
- * Calculate VHPT tag for va.
- */
-static __inline uint64_t
-ia64_ttag(uint64_t va)
-{
-       uint64_t result;
-       __asm __volatile("ttag %0=%1" : "=r" (result) : "r" (va));
-       return result;
-}
-
-/*
- * Convert virtual address to physical.
- */
-static __inline uint64_t
-ia64_tpa(uint64_t va)
-{
-       uint64_t result;
-       __asm __volatile("tpa %0=%1" : "=r" (result) : "r" (va));
-       return result;
-}
-
-/*
- * Generate a ptc.e instruction.
- */
-static __inline void
-ia64_ptc_e(uint64_t v)
-{
-       __asm __volatile("ptc.e %0;; srlz.d;;" :: "r"(v));
-}
-
-/*
- * Generate a ptc.g instruction.
- */
-static __inline void
-ia64_ptc_g(uint64_t va, uint64_t size)
-{
-       __asm __volatile("ptc.g %0,%1;; srlz.d;;" :: "r"(va), "r"(size<<2));
-}
-
-/*
- * Generate a ptc.ga instruction.
- */
-static __inline void
-ia64_ptc_ga(uint64_t va, uint64_t size)
-{
-       __asm __volatile("ptc.ga %0,%1;; srlz.d;;" :: "r"(va), "r"(size<<2));
-}
-
-/*
- * Generate a ptc.l instruction.
- */
-static __inline void
-ia64_ptc_l(uint64_t va, uint64_t size)
-{
-       __asm __volatile("ptc.l %0,%1;; srlz.d;;" :: "r"(va), "r"(size<<2));
-}
-
-/*
- * Read the value of psr.
- */
-static __inline uint64_t
-ia64_get_psr(void)
-{
-       uint64_t result;
-       __asm __volatile("mov %0=psr;;" : "=r" (result));
-       return result;
-}
-
-static __inline void
-ia64_set_psr(uint64_t v)
-{
-       __asm __volatile("mov psr.l=%0" :: "r" (v));
-}
-
-static __inline void
-ia64_srlz_d(void)
-{
-       __asm __volatile("srlz.d;;");
-}
-
-static __inline void
-disable_intr(void)
-{
-       __asm __volatile ("rsm psr.ic|psr.i");
-}
-
-static __inline void
-enable_intr(void)
-{
-       __asm __volatile ("ssm psr.ic|psr.i");
-}
-
-/*
- * Define accessors for application registers.
- */
-
-#define IA64_AR(name)                                                  \
-                                                                       \
-static __inline uint64_t                                               \
-ia64_get_##name(void)                                                  \
-{                                                                      \
-       uint64_t result;                                                \
-       __asm __volatile(";;mov %0=ar." #name ";;" : "=r" (result));    \
-       return result;                                                  \
-}                                                                      \
-                                                                       \
-static __inline void                                                   \
-ia64_set_##name(uint64_t v)                                            \
-{                                                                      \
-       __asm __volatile("mov ar." #name "=%0" :: "r" (v));             \
-}
-
-IA64_AR(k0)
-IA64_AR(k1)
-IA64_AR(k2)
-IA64_AR(k3)
-IA64_AR(k4)
-IA64_AR(k5)
-IA64_AR(k6)
-IA64_AR(k7)
-
-IA64_AR(rsc)
-IA64_AR(bsp)
-IA64_AR(bspstore)
-IA64_AR(rnat)
-
-IA64_AR(fcr)
-
-IA64_AR(eflag)
-IA64_AR(csd)
-IA64_AR(ssd)
-IA64_AR(cflg)
-IA64_AR(fsr)
-IA64_AR(fir)
-IA64_AR(fdr)
-
-IA64_AR(ccv)
-
-IA64_AR(unat)
-
-IA64_AR(fpsr)
-
-IA64_AR(itc)
-
-IA64_AR(pfs)
-IA64_AR(lc)
-IA64_AR(ec)
-
-/*
- * Define accessors for control registers.
- */
-
-#define IA64_CR(name)                                          \
-                                                               \
-static __inline uint64_t                                       \
-ia64_get_##name(void)                                          \
-{                                                              \
-       uint64_t result;                                        \
-       __asm __volatile("mov %0=cr." #name : "=r" (result));   \
-       return result;                                          \
-}                                                              \
-                                                               \
-static __inline void                                           \
-ia64_set_##name(uint64_t v)                                    \
-{                                                              \
-       __asm __volatile("mov cr." #name "=%0" :: "r" (v));     \
-}
-
-IA64_CR(dcr)
-IA64_CR(itm)
-IA64_CR(iva)
-
-IA64_CR(pta)
-
-IA64_CR(ipsr)
-IA64_CR(isr)
-
-IA64_CR(iip)
-IA64_CR(ifa)
-IA64_CR(itir)
-IA64_CR(iipa)
-IA64_CR(ifs)
-IA64_CR(iim)
-IA64_CR(iha)
-
-IA64_CR(lid)
-IA64_CR(ivr)
-IA64_CR(tpr)
-IA64_CR(eoi)
-IA64_CR(irr0)
-IA64_CR(irr1)
-IA64_CR(irr2)
-IA64_CR(irr3)
-IA64_CR(itv)
-IA64_CR(pmv)
-IA64_CR(cmcv)
-
-IA64_CR(lrr0)
-IA64_CR(lrr1)
-
-#define IA64_GR(name)                                          \
-                                                               \
-static __inline uint64_t                                       \
-ia64_get_##name(void)                                          \
-{                                                              \
-       uint64_t result;                                        \
-       __asm __volatile("mov %0=" #name : "=r" (result));      \
-       return result;                                          \
-}                                                              \
-                                                               \
-static __inline void                                           \
-ia64_set_##name(uint64_t v)                                    \
-{                                                              \
-       __asm __volatile("mov " #name "=%0" :: "r" (v));        \
-}
-
-IA64_GR(sp)
-IA64_GR(b0)
-IA64_GR(r13)   // tp
-
-
-/*
- * Write a region register.
- */
-static __inline void
-ia64_set_rr(uint64_t rrbase, uint64_t v)
-{
-       __asm __volatile("mov rr[%0]=%1;; srlz.d;;"
-                        :: "r"(rrbase), "r"(v) : "memory");
-}
-
-/*
- * Read a region register.
- */
-static __inline uint64_t
-ia64_get_rr(uint64_t rrbase)
-{
-       uint64_t v;
-       __asm __volatile("mov %1=rr[%0];;"
-                        : "=r" (v) : "r"(rrbase) : "memory");
-       return v;
-}
-
-
-/*
- * Read a CPUID register.
- */
-static __inline uint64_t
-ia64_get_cpuid(int i)
-{
-       uint64_t result;
-       __asm __volatile("mov %0=cpuid[%1]"
-                        : "=r" (result) : "r"(i));
-       return result;
-}
-
-
-struct trap_frame
-{
-       uint64_t        rsc;
-       uint64_t        ndirty;         /* number of dirty regs */
-       uint64_t        ssd;
-       uint64_t        iip;            /* interrupted ip */
-       uint64_t        ipsr;           /* interrupted psr */
-       uint64_t        ifs;            /* interruption func status register */
-
-       uint16_t        trap_num;       /* Trap num, index in trap_vec */
-       uint64_t        cfm;            /* current frame marker */
-       uint64_t        pfs;            /* previous function state ar64 */
-       uint64_t        bsp;            /* backing store pointer ar17 */
-       uint64_t        rnat;           /* rse nat collection ar19 */
-       uint64_t        csd;            /* comp and store data reg ar25 */
-       uint64_t        ccv;            /* comp and xchange val reg ar32 */
-       uint64_t        unat;           /* */
-       uint64_t        fpsr;           /* floating point state reg ar40 */
-       uint64_t        pr;             /* predicate regs 0-63 */
-
-       uint64_t        gp;             /* the gp pointer */
-       uint64_t        sp;             /* stack pointer */
-       uint64_t        tp;             /* thread pointer */
-
-       uint64_t        r2;             /* global reg 2 */
-       uint64_t        r3;
-       uint64_t        r8;
-       uint64_t        r9;
-       uint64_t        r10;
-       uint64_t        r11;
-       uint64_t        r14;
-       uint64_t        r15;
-       uint64_t        r16;
-       uint64_t        r17;
-       uint64_t        r18;
-       uint64_t        r19;
-       uint64_t        r20;
-       uint64_t        r21;
-       uint64_t        r22;
-       uint64_t        r23;
-       uint64_t        r24;
-       uint64_t        r25;
-       uint64_t        r26;
-       uint64_t        r27;
-       uint64_t        r28;
-       uint64_t        r29;
-       uint64_t        r30;
-       uint64_t        r31;
-
-       uint64_t        b0;
-       uint64_t        b6;
-       uint64_t        b7;
-
-       ia64_fpreg_t    f6;           /* floating point register 6 */
-       ia64_fpreg_t    f7;
-       ia64_fpreg_t    f8;
-       ia64_fpreg_t    f9;
-       ia64_fpreg_t    f10;
-       ia64_fpreg_t    f11;
-
-       uint64_t        ifa;            /* interruption faulting address */
-       uint64_t        isr;            /* interruption status register */
-       uint64_t        iim;            /* interruption immediate register */
-};
-
-typedef struct trap_frame trap_frame_t;
-
-
-#endif  /* __ASSEMBLY__ */
-
-/* Page access parameters. */
-#define PTE_P_SHIFT    0
-#define PTE_P          1
-
-#define PTE_MA_SHIFT   2
-#define PTE_MA_WB      0
-
-#define PTE_A_SHIFT    5
-#define PTE_A          1
-#define PTE_D_SHIFT    6
-#define PTE_D          1
-
-#define PTE_AR_SHIFT   9
-#define PTE_AR_R       0
-#define PTE_AR_RX      1
-#define PTE_AR_RW      2
-#define PTE_AR_RWX     3
-#define PTE_AR_R_RW    4
-#define PTE_AR_RX_RWX  5
-#define PTE_AR_RWX_RW  6
-/* privilege level */
-#define PTE_PL_SHIFT   7
-#define PTE_PL_KERN    0       /* used for kernel */
-/* page size */
-#define PTE_PS_4K      12
-#define PTE_PS_8K      13
-#define PTE_PS_16K     14
-#define PTE_PS_64K     16
-#define PTE_PS_256K    18
-#define PTE_PS_1M      20
-#define PTE_PS_4M      22
-#define PTE_PS_16M     24
-#define PTE_PS_64M     26
-#define PTE_PS_256M    28
-
-
-       /* Some offsets for ia64_pte_t. */
-#define PTE_OFF_P      0
-#define PTE_OFF_MA     3
-#define PTE_OFF_A      5
-#define PTE_OFF_D      6
-#define PTE_OFF_PL     7
-#define PTE_OFF_AR     9
-#define PTE_OFF_PPN    12
-#define PTE_OFF_ED     52
-
-#if !defined(_ASM) && !defined(__ASSEMBLY__)
-/*
- * A short-format VHPT entry. Also matches the TLB insertion format.
- */
-typedef struct
-{
-       uint64_t pte_p  :1;     /* bits 0..0 */
-       uint64_t pte_rv1:1;     /* bits 1..1 */
-       uint64_t pte_ma :3;     /* bits 2..4 */
-       uint64_t pte_a  :1;     /* bits 5..5 */
-       uint64_t pte_d  :1;     /* bits 6..6 */
-       uint64_t pte_pl :2;     /* bits 7..8 */
-       uint64_t pte_ar :3;     /* bits 9..11 */
-       uint64_t pte_ppn:38;    /* bits 12..49 */
-       uint64_t pte_rv2:2;     /* bits 50..51 */
-       uint64_t pte_ed :1;     /* bits 52..52 */
-       uint64_t pte_ig :11;    /* bits 53..63 */
-} ia64_pte_t;
-
-
-/*
- * A long-format VHPT entry.
- */
-typedef struct
-{
-       uint64_t pte_p          :1;     /* bits 0..0 */
-       uint64_t pte_rv1        :1;     /* bits 1..1 */
-       uint64_t pte_ma         :3;     /* bits 2..4 */
-       uint64_t pte_a          :1;     /* bits 5..5 */
-       uint64_t pte_d          :1;     /* bits 6..6 */
-       uint64_t pte_pl         :2;     /* bits 7..8 */
-       uint64_t pte_ar         :3;     /* bits 9..11 */
-       uint64_t pte_ppn        :38;    /* bits 12..49 */
-       uint64_t pte_rv2        :2;     /* bits 50..51 */
-       uint64_t pte_ed         :1;     /* bits 52..52 */
-       uint64_t pte_ig         :11;    /* bits 53..63 */
-       uint64_t pte_rv3        :2;     /* bits 0..1 */
-       uint64_t pte_ps         :6;     /* bits 2..7 */
-       uint64_t pte_key        :24;    /* bits 8..31 */
-       uint64_t pte_rv4        :32;    /* bits 32..63 */
-       uint64_t pte_tag;               /* includes ti */
-       uint64_t pte_chain;             /* pa of collision chain */
-} ia64_lpte_t;
-
-#endif /* __ASSEMBLY__ */
-
-#endif /* _IA64_CPU_H_ */
diff --git a/extras/mini-os/include/ia64/ia64_fpu.h b/extras/mini-os/include/ia64/ia64_fpu.h
deleted file mode 100644 (file)
index 91a17b9..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Done by Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com>
- * This code is mostly taken from FreeBSD.
- *
- ****************************************************************************
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
- *
- */
-
-#ifndef _IA64_FPU_H_
-#define _IA64_FPU_H_
-
-#include "os.h"
-
-/*
- * Floating point status register bits.
- */
-#define IA64_FPSR_TRAP_VD      UL_CONST(0x0000000000000001)
-#define IA64_FPSR_TRAP_DD      UL_CONST(0x0000000000000002)
-#define IA64_FPSR_TRAP_ZD      UL_CONST(0x0000000000000004)
-#define IA64_FPSR_TRAP_OD      UL_CONST(0x0000000000000008)
-#define IA64_FPSR_TRAP_UD      UL_CONST(0x0000000000000010)
-#define IA64_FPSR_TRAP_ID      UL_CONST(0x0000000000000020)
-#define IA64_FPSR_SF(i,v)      ((v) << ((i)*13+6))
-
-#define IA64_SF_FTZ            UL_CONST(0x0001)
-#define IA64_SF_WRE            UL_CONST(0x0002)
-#define IA64_SF_PC             UL_CONST(0x000c)
-#define IA64_SF_PC_0           UL_CONST(0x0000)
-#define IA64_SF_PC_1           UL_CONST(0x0004)
-#define IA64_SF_PC_2           UL_CONST(0x0008)
-#define IA64_SF_PC_3           UL_CONST(0x000c)
-#define IA64_SF_RC             UL_CONST(0x0030)
-#define IA64_SF_RC_NEAREST     UL_CONST(0x0000)
-#define IA64_SF_RC_NEGINF      UL_CONST(0x0010)
-#define IA64_SF_RC_POSINF      UL_CONST(0x0020)
-#define IA64_SF_RC_TRUNC       UL_CONST(0x0030)
-#define IA64_SF_TD             UL_CONST(0x0040)
-#define IA64_SF_V              UL_CONST(0x0080)
-#define IA64_SF_D              UL_CONST(0x0100)
-#define IA64_SF_Z              UL_CONST(0x0200)
-#define IA64_SF_O              UL_CONST(0x0400)
-#define IA64_SF_U              UL_CONST(0x0800)
-#define IA64_SF_I              UL_CONST(0x1000)
-
-#define IA64_SF_DEFAULT        (IA64_SF_PC_3 | IA64_SF_RC_NEAREST)
-
-#define IA64_FPSR_DEFAULT      (IA64_FPSR_TRAP_VD                      \
-                                | IA64_FPSR_TRAP_DD                    \
-                                | IA64_FPSR_TRAP_ZD                    \
-                                | IA64_FPSR_TRAP_OD                    \
-                                | IA64_FPSR_TRAP_UD                    \
-                                | IA64_FPSR_TRAP_ID                    \
-                                | IA64_FPSR_SF(0, IA64_SF_DEFAULT)     \
-                                | IA64_FPSR_SF(1, (IA64_SF_DEFAULT     \
-                                                   | IA64_SF_TD        \
-                                                   | IA64_SF_WRE))     \
-                                | IA64_FPSR_SF(2, (IA64_SF_DEFAULT     \
-                                                   | IA64_SF_TD))      \
-                                | IA64_FPSR_SF(3, (IA64_SF_DEFAULT     \
-                                                   | IA64_SF_TD)))
-
-
-#ifndef __ASSEMBLY__
-
-       /* This is from sys/cdefs.h in FreeBSD */
-#define __aligned(x)    __attribute__((__aligned__(x)))
-
-       /* A single Floating Point register. */
-struct ia64_fpreg
-{
-       uint8_t fpr_bits[16];
-} __aligned(16);
-
-typedef struct ia64_fpreg ia64_fpreg_t;
-
-#endif /* __ASSEMBLY__ */
-
-#endif /* _IA64_FPU_H_ */
diff --git a/extras/mini-os/include/ia64/os.h b/extras/mini-os/include/ia64/os.h
deleted file mode 100644 (file)
index 9a79e9b..0000000
+++ /dev/null
@@ -1,295 +0,0 @@
-/*
- * Copyright (C) 2007 - Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com>
- *
- ****************************************************************************
- * 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.
- */
-
-
-#if !defined(__OS_H__)
-#define __OS_H__
-
-#if !defined(__ASSEMBLY__)
-
-#include <mini-os/types.h>
-#include "ia64_cpu.h"
-#include "atomic.h"
-#include "efi.h"
-#include "sal.h"
-#include "pal.h"
-#include <mini-os/hypervisor.h>
-#include <mini-os/kernel.h>
-
-
-typedef uint64_t paddr_t;              /* Physical address. */
-#ifndef HAVE_LIBC
-typedef uint64_t caddr_t;              /* rr7/kernel memory address. */
-#endif
-
-#include "page.h"
-#include "mm.h"
-
-
-void arch_init(start_info_t *si);      /* in common.c */
-void arch_print_info(void);            /* in common.c */
-void arch_fini(void);
-
-
-/* Size of xen_ia64_boot_param.command_line */
-#define COMMAND_LINE_SIZE       512
-
-extern struct xen_ia64_boot_param* ia64_boot_paramP;
-extern struct xen_ia64_boot_param ia64BootParamG;
-extern char boot_cmd_line[];
-extern efi_system_table_t* efiSysTableP;
-extern int bootverbose;
-
-extern void ia64_probe_sapics(void);
-
-
-
-/* Contains the needed stuff from efi. */
-struct efi
-{
-
-       efi_system_table_t*             efiSysTableP;
-       efi_set_virtual_address_map_t   setVirtAddrMapF;
-       efi_get_time_t                  getTimeF;
-       efi_reset_system_t              resetSystemF;
-
-};
-
-struct machine_fw
-{
-       struct efi efi;
-
-       uint64_t ia64_port_base;        /* physical address */
-       uint64_t ia64_pal_base;         /* virtual rr7 address */
-
-       sal_system_table_t* ia64_sal_tableP;
-       sal_entry_t* ia64_sal_entryP;   /* SAL_PROC entrypoint */
-
-       uint64_t ia64_efi_acpi_table;   /* physical address */
-       uint64_t ia64_efi_acpi20_table; /* physical address */
-
-       uint64_t mach_mem_start;        /* phys start addr of machine memory */
-       uint64_t mach_mem_size;         /* size of machine memory */
-
-       uint64_t kernstart;             /* virt address of kern text start */
-       uint64_t kernend;
-       uint64_t kernpstart;            /* phys address of kern text start */
-       uint64_t kernpend;
-};
-
-extern struct machine_fw machineFwG;
-
-#define ia64_sal_entry machineFwG.ia64_sal_entryP
-
-#define smp_processor_id() 0
-
-static inline uint64_t
-xchg8(uint64_t* ptr, uint64_t x)                                               \
-{
-        uint64_t oldVal;
-        asm volatile ("xchg8 %0=[%1],%2" : "=r" (oldVal)
-                      : "r" (ptr), "r" (x) : "memory");
-        return oldVal;
-}
-#define xchg xchg8
-
-// Counts the number of 1-bits in x.
-#if __GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
-# define get_popcnt(x)         __builtin_popcountl(x)
-#else
-# define get_popcnt(x)                                 \
-  ({                                                   \
-       uint64_t num;                                   \
-       asm ("popcnt %0=%1" : "=r" (num) : "r" (x));    \
-       num;                                            \
-  })
-#endif
-
-/**
- * __ffs - find first bit in word.
- * @x: The word to search
- *
- * Undefined if no bit exists, so code should check against 0 first.
- */
-static inline unsigned long
-__ffs (unsigned long x)
-{
-       unsigned long result;
-
-       result = get_popcnt((x-1) & ~x);
-       return result;
-}
-
-
-static inline void
-synch_clear_bit(int num, volatile void *addr)
-{
-       clear_bit(num, addr);
-}
-
-static inline void
-synch_set_bit(int num, volatile void *addr)
-{
-       set_bit(num, addr);
-}
-
-static inline int
-synch_test_bit(int nr, const volatile void *addr)
-{
-       return test_bit(nr, addr);
-}
-
-static inline int
-synch_test_and_set_bit(int num, volatile void * addr)
-{
-       return test_and_set_bit(num, addr);
-}
-
-
-#define synch_cmpxchg(ptr, old, new) \
-((__typeof__(*(ptr)))__synch_cmpxchg((ptr),\
-                                     (unsigned long)(old), \
-                                     (unsigned long)(new), \
-                                     sizeof(*(ptr))))
-
-static inline unsigned long
-__synch_cmpxchg(volatile void *ptr, uint64_t old, uint64_t new, int size)
-{
-       switch (size)
-       {
-               case 1:
-                       return ia64_cmpxchg_acq_8(ptr, old, new);
-               case 2:
-                       return ia64_cmpxchg_acq_16(ptr, old, new);
-               case 4:
-                       return ia64_cmpxchg_acq_32(ptr, old, new);
-               case 8:
-                       return ia64_cmpxchg_acq_64(ptr, old, new);
-       }
-       return ia64_cmpxchg_acq_64(ptr, old, new);
-}
-
-extern shared_info_t *HYPERVISOR_shared_info;
-
-
-/*
- * This code is from the originally os.h and should be put in a
- * common header file!
- */
-
-/* 
- * The use of 'barrier' in the following reflects their use as local-lock
- * operations. Reentrancy must be prevented (e.g., __cli()) /before/ following
- * critical operations are executed. All critical operations must complete
- * /before/ reentrancy is permitted (e.g., __sti()). Alpha architecture also
- * includes these barriers, for example.
- */
-
-#define __cli()                                                                \
-do {                                                                   \
-       vcpu_info_t *_vcpu;                                             \
-       _vcpu = &HYPERVISOR_shared_info->vcpu_info[smp_processor_id()]; \
-       _vcpu->evtchn_upcall_mask = 1;                                  \
-       barrier();                                                      \
-} while (0)
-
-#define __sti()                                                                \
-do {                                                                   \
-       vcpu_info_t *_vcpu;                                             \
-       barrier();                                                      \
-       _vcpu = &HYPERVISOR_shared_info->vcpu_info[smp_processor_id()]; \
-       _vcpu->evtchn_upcall_mask = 0;                                  \
-       barrier(); /* unmask then check (avoid races) */                \
-       if (unlikely(_vcpu->evtchn_upcall_pending))                     \
-               force_evtchn_callback();                                \
-} while (0)
-
-#define __save_flags(x)                                                        \
-do {                                                                   \
-       vcpu_info_t *_vcpu;                                             \
-       _vcpu = &HYPERVISOR_shared_info->vcpu_info[smp_processor_id()]; \
-       (x) = _vcpu->evtchn_upcall_mask;                                \
-} while (0)
-
-#define __restore_flags(x)                                             \
-do {                                                                   \
-       vcpu_info_t *_vcpu;                                             \
-       barrier();                                                      \
-       _vcpu = &HYPERVISOR_shared_info->vcpu_info[smp_processor_id()]; \
-       if ((_vcpu->evtchn_upcall_mask = (x)) == 0) {                   \
-               barrier(); /* unmask then check (avoid races) */        \
-               if ( unlikely(_vcpu->evtchn_upcall_pending) )           \
-                       force_evtchn_callback();                        \
-       }\
-} while (0)
-
-#define safe_halt()            ((void)0)
-
-#define __save_and_cli(x)                                              \
-do {                                                                   \
-       vcpu_info_t *_vcpu;                                             \
-       _vcpu = &HYPERVISOR_shared_info->vcpu_info[smp_processor_id()]; \
-       (x) = _vcpu->evtchn_upcall_mask;                                \
-       _vcpu->evtchn_upcall_mask = 1;                                  \
-       barrier();                                                      \
-} while (0)
-
-#define local_irq_save(x)      __save_and_cli(x)
-#define local_irq_restore(x)   __restore_flags(x)
-#define local_save_flags(x)    __save_flags(x)
-#define local_irq_disable()    __cli()
-#define local_irq_enable()     __sti()
-
-#define irqs_disabled()                        \
-       (HYPERVISOR_shared_info->vcpu_info[smp_processor_id()].evtchn_upcall_mask)
-
-/* This is a barrier for the compiler only, NOT the processor! */
-#define barrier() __asm__ __volatile__("": : :"memory")
-
-#define mb()   ia64_mf()
-#define rmb()  mb()
-#define wmb()  mb()
-
-
-#define BUG()  \
-       { printk("mini-os BUG at %s:%d!\n", __FILE__, __LINE__); do_exit(); }
-
-#define PRINT_BV(_fmt, _params...)             \
-       if (bootverbose)                        \
-               printk(_fmt , ## _params)
-
-#endif /* !defined(__ASSEMBLY__) */
-
-#if defined(__ASSEMBLY__)
-
-#define UL_CONST(x)    x
-#define UL_TYPE(x)     x
-
-#else /* defined(__ASSEMBLY__) */
-
-#define UL_CONST(x)    x##UL
-#define UL_TYPE(x)     ((uint64_t)x)
-
-#endif /* defined(__ASSEMBLY__) */
-
-#endif /* !defined(__OS_H__) */
diff --git a/extras/mini-os/include/ia64/page.h b/extras/mini-os/include/ia64/page.h
deleted file mode 100644 (file)
index 67be0a5..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Done by Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com>
- * Common stuff for memory and page handling.
- * Parts are taken from FreeBSD.
- *
- ****************************************************************************
- * 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.
- */
-
-
-#if !defined(_PAGE_H_)
-#define _PAGE_H_
-
-#include "os.h"
-#include "ia64_cpu.h"
-
-#define PTE_KERNEL_ATTR ((PTE_P<<PTE_P_SHIFT)          |\
-                       (PTE_MA_WB<<PTE_MA_SHIFT)       |\
-                       (PTE_D<<PTE_D_SHIFT)            |\
-                       (PTE_A<<PTE_A_SHIFT)            |\
-                       (PTE_PL_KERN<<PTE_PL_SHIFT)     |\
-                       (PTE_AR_RWX<<PTE_AR_SHIFT))
-
-
-/* The kernel tr page size for text and data. */
-#define KERNEL_TR_PAGE_SIZE    PTE_PS_1M
-/* The efi-pal page size for text and data. */
-#define PAL_TR_PAGE_SIZE       PTE_PS_1M
-
-#include "arch_limits.h"
-#define PAGE_SHIFT     __PAGE_SHIFT
-#define PAGE_SIZE      __PAGE_SIZE
-#define PAGE_MASK      (~(PAGE_SIZE-1))
-
-#define KSTACK_PAGES   4       /* 4 pages for the kernel stack + bsp */
-
-#define IA64_TR_KERNEL 0       /* itr0, dtr0: maps kernel image (code) */
-#define IA64_TR_PAL    1       /* itr1: maps pal code */
-
-/*
- * Manipulating region bits of an address.
- */
-#define IA64_RR_BASE(n)                ((UL_TYPE(n)) << 61)
-#define IA64_RR_MASK(x)                ((UL_TYPE(x)) & ((1L << 61) - 1))
-#define IA64_RR_EXTR(x)                ((x) >> 61)
-
-#define IA64_PHYS_TO_RR5(x)    ((x) | IA64_RR_BASE(5))
-#define IA64_PHYS_TO_RR7(x)    ((x) | IA64_RR_BASE(7))
-
-#define __pa(x)        IA64_RR_MASK(x)
-#define __va(x)        IA64_PHYS_TO_RR7(x)
-
-#define roundup_page(x)        ((((unsigned long)(x)) + PAGE_SIZE -1) & PAGE_MASK)
-#define trunc_page(x)  ((unsigned long)(x) & PAGE_MASK)
-
-
-#if !defined(__ASSEMBLY__)
-
-/* Contains the parts of the physically memory. */
-extern paddr_t phys_avail[];
-
-#define page_to_pfn(page)      ((uint64_t)(page) >> PAGE_SHIFT)
-#define pfn_to_page(pfn)       ((uint64_t)pfn << PAGE_SHIFT)
-/* Get phyiscal address of page of virtual address. */
-#define virt_to_page(addr)     ((uint64_t)__pa(addr) & PAGE_MASK)
-#define virt_to_pfn(addr)      (page_to_pfn(virt_to_page(addr)))
-
-
-#endif /* __ASSEMBLY__ */
-
-
-/* For both see minios-ia64.lds. */
-/* This is where the kernel virtually starts. */
-#define KERNEL_START   IA64_PHYS_TO_RR5(0x100000000)
-/* !!!!!
- * For physical start of kernel
- * Currently used in arch/ia64/fw.S.
- * !!!!!
- */
-#define KERNEL_PHYS_START_SHIFT        20
-
-/* A region 5 address to physical address */
-#define KERN_VIRT_2_PHYS(x) (((x) - KERNEL_START) + \
-                               (1 << KERNEL_PHYS_START_SHIFT))
-
-/* Some protection keys for region 5 and 7 addresses. */
-#define IA64_KEY_REG7  0x234   /* Region 7 - identity mapped addresses */
-#define IA64_KEY_REG5  0x89a   /* Region 5 - kernel addresses */
-
-// This is xen specific !
-#define PAGE_SHIFT_XEN_16K     14      // For 16KB page size
-#define mfn_to_virt(mfn)       ((void*)__va((mfn) << PAGE_SHIFT_XEN_16K))
-
-#endif /* !defined(_PAGE_H_) */
diff --git a/extras/mini-os/include/ia64/pal.h b/extras/mini-os/include/ia64/pal.h
deleted file mode 100644 (file)
index 8eb853d..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Done by Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com>
- * The code is mostly taken from FreeBSD.
- *
- ****************************************************************************
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
- *
- */
-
-#ifndef _PAL_H_
-#define _PAL_H_
-
-/*
- * Architected static calling convention procedures.
- */
-#define PAL_CACHE_FLUSH                1
-#define PAL_CACHE_INFO         2
-#define PAL_CACHE_INIT         3
-#define PAL_CACHE_SUMMARY      4
-#define PAL_MEM_ATTRIB         5
-#define PAL_PTCE_INFO          6
-#define PAL_VM_INFO            7
-#define PAL_VM_SUMMARY         8
-#define PAL_BUS_GET_FEATURES   9
-#define PAL_BUS_SET_FEATURES   10
-#define PAL_DEBUG_INFO         11
-#define PAL_FIXED_ADDR         12
-#define PAL_FREQ_BASE          13
-#define PAL_FREQ_RATIOS                14
-#define PAL_PERF_MON_INFO      15
-#define PAL_PLATFORM_ADDR      16
-#define PAL_PROC_GET_FEATURE   17
-#define PAL_PROC_SET_FEATURE   18
-#define PAL_RSE_INFO           19
-#define PAL_VERSION            20
-#define PAL_MC_CLEAR_LOG       21
-#define PAL_MC_DRAIN           22
-#define PAL_MC_DYNAMIC_STATE   24
-#define PAL_MC_ERROR_INFO      25
-#define PAL_MC_EXPECTED                23
-#define PAL_MC_REGISTER_MEM    27
-#define PAL_MC_RESUME          26
-#define PAL_HALT               28
-#define PAL_HALT_LIGHT         29
-#define PAL_COPY_INFO          30
-#define PAL_CACHE_LINE_INIT    31
-#define PAL_PMI_ENTRYPOINT     32
-#define PAL_ENTER_IA_32_ENV    33
-#define PAL_VM_PAGE_SIZE       34
-#define PAL_MEM_FOR_TEST       37
-#define PAL_CACHE_PROT_INFO    38
-#define PAL_REGISTER_INFO      39
-#define PAL_SHUTDOWN           40
-#define PAL_PREFETCH_VISIBILITY        41
-
-
-struct ia64_pal_result
-{
-       int64_t         pal_status;
-       uint64_t        pal_result[3];
-};
-
-extern struct ia64_pal_result
-       ia64_call_pal_static(uint64_t proc, uint64_t arg1,
-                            uint64_t arg2, uint64_t arg3);
-
-#endif /* _PAL_H_ */
diff --git a/extras/mini-os/include/ia64/privop.h b/extras/mini-os/include/ia64/privop.h
deleted file mode 100644 (file)
index d8cdbae..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-
-/*
- * Copyright (C) 2005 Hewlett-Packard Co
- *     Dan Magenheimer <dan.magenheimer@hp.com>
- *
- * Paravirtualizations of privileged operations for Xen/ia64
- *
- */
-
-#ifndef _PRIVOP_H_
-#define _PRIVOP_H_
-
-#include <xen/arch-ia64.h>
-
-#define IA64_PARAVIRTUALIZED
-
-/* At 1 MB, before per-cpu space but still addressable using addl instead
-   of movl. */
-#define XSI_BASE               0xfffffffffff00000
-
-/* Address of mapped regs.  */
-#define XMAPPEDREGS_BASE       (XSI_BASE + XSI_SIZE)
-
-#ifdef __ASSEMBLY__
-#define        XEN_HYPER_RFI           break HYPERPRIVOP_RFI
-#define        XEN_HYPER_RSM_PSR_DT    break HYPERPRIVOP_RSM_DT
-#define        XEN_HYPER_SSM_PSR_DT    break HYPERPRIVOP_SSM_DT
-#define        XEN_HYPER_COVER         break HYPERPRIVOP_COVER
-#define        XEN_HYPER_ITC_D         break HYPERPRIVOP_ITC_D
-#define        XEN_HYPER_ITC_I         break HYPERPRIVOP_ITC_I
-#define        XEN_HYPER_SSM_I         break HYPERPRIVOP_SSM_I
-#define        XEN_HYPER_GET_IVR       break HYPERPRIVOP_GET_IVR
-#define        XEN_HYPER_GET_TPR       break HYPERPRIVOP_GET_TPR
-#define        XEN_HYPER_SET_TPR       break HYPERPRIVOP_SET_TPR
-#define        XEN_HYPER_EOI           break HYPERPRIVOP_EOI
-#define        XEN_HYPER_SET_ITM       break HYPERPRIVOP_SET_ITM
-#define        XEN_HYPER_THASH         break HYPERPRIVOP_THASH
-#define        XEN_HYPER_PTC_GA        break HYPERPRIVOP_PTC_GA
-#define        XEN_HYPER_ITR_D         break HYPERPRIVOP_ITR_D
-#define        XEN_HYPER_GET_RR        break HYPERPRIVOP_GET_RR
-#define        XEN_HYPER_SET_RR        break HYPERPRIVOP_SET_RR
-#define        XEN_HYPER_SET_KR        break HYPERPRIVOP_SET_KR
-#define        XEN_HYPER_FC            break HYPERPRIVOP_FC
-#define        XEN_HYPER_GET_CPUID     break HYPERPRIVOP_GET_CPUID
-#define        XEN_HYPER_GET_PMD       break HYPERPRIVOP_GET_PMD
-#define        XEN_HYPER_GET_EFLAG     break HYPERPRIVOP_GET_EFLAG
-#define        XEN_HYPER_SET_EFLAG     break HYPERPRIVOP_SET_EFLAG
-#define        XEN_HYPER_RSM_BE        break HYPERPRIVOP_RSM_BE
-#define        XEN_HYPER_GET_PSR       break HYPERPRIVOP_GET_PSR
-
-#define XSI_IFS                        (XSI_BASE + XSI_IFS_OFS)
-#define XSI_PRECOVER_IFS       (XSI_BASE + XSI_PRECOVER_IFS_OFS)
-#define XSI_INCOMPL_REGFR      (XSI_BASE + XSI_INCOMPL_REGFR_OFS)
-#define XSI_IFA                        (XSI_BASE + XSI_IFA_OFS)
-#define XSI_ISR                        (XSI_BASE + XSI_ISR_OFS)
-#define XSI_IIM                        (XSI_BASE + XSI_IIM_OFS)
-#define XSI_ITIR               (XSI_BASE + XSI_ITIR_OFS)
-#define XSI_PSR_I_ADDR         (XSI_BASE + XSI_PSR_I_ADDR_OFS)
-#define XSI_PSR_IC             (XSI_BASE + XSI_PSR_IC_OFS)
-#define XSI_IPSR               (XSI_BASE + XSI_IPSR_OFS)
-#define XSI_IIP                        (XSI_BASE + XSI_IIP_OFS)
-#define XSI_BANK1_R16          (XSI_BASE + XSI_BANK1_R16_OFS)
-#define XSI_BANKNUM            (XSI_BASE + XSI_BANKNUM_OFS)
-#define XSI_IHA                        (XSI_BASE + XSI_IHA_OFS)
-#endif
-
-#ifndef __ASSEMBLY__
-#define        XEN_HYPER_SSM_I         asm("break %0" : : "i" (HYPERPRIVOP_SSM_I))
-#define        XEN_HYPER_GET_IVR       asm("break %0" : : "i" (HYPERPRIVOP_GET_IVR))
-
-/************************************************/
-/* Instructions paravirtualized for performance */
-/************************************************/
-
-/* Xen uses memory-mapped virtual privileged registers for access to many
- * performance-sensitive privileged registers.  Some, like the processor
- * status register (psr), are broken up into multiple memory locations.
- * Others, like "pend", are abstractions based on privileged registers.
- * "Pend" is guaranteed to be set if reading cr.ivr would return a
- * (non-spurious) interrupt. */
-#define XEN_MAPPEDREGS ((struct mapped_regs *)XMAPPEDREGS_BASE)
-#define XSI_PSR_I                      \
-       (*XEN_MAPPEDREGS->interrupt_mask_addr)
-#define xen_get_virtual_psr_i()                \
-       (!XSI_PSR_I)
-#define xen_set_virtual_psr_i(_val)    \
-       ({ XSI_PSR_I = (uint8_t)(_val) ? 0 : 1; })
-#define xen_get_virtual_psr_ic()       \
-       ( XEN_MAPPEDREGS->interrupt_collection_enabled )
-#define xen_set_virtual_psr_ic(_val)   \
-       ({ XEN_MAPPEDREGS->interrupt_collection_enabled = _val ? 1 : 0; })
-#define xen_get_virtual_pend()         (XEN_MAPPEDREGS->pending_interruption)
-
-#endif /* __ASSEMBLY__ */
-
-#endif /* _PRIVOP_H_ */
-
diff --git a/extras/mini-os/include/ia64/sal.h b/extras/mini-os/include/ia64/sal.h
deleted file mode 100644 (file)
index c0271c7..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * Done by Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com>
- * The code is mostly taken from FreeBSD.
- *
- ****************************************************************************
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR 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 AUTHOR 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.
- *
- */
-
-
-/*
- * The SAL System Table starts with a header which is described in
- * sal_system_table_t.
- * Table header will be followed by a variable number of variable length
- * entries. The first byte of each entry will identify the entry type and
- * the entries shall be in ascending order by the entry type. Each entry
- * type will have a known fixed length. The total length of this table
- * depends upon the configuration of the system. Operating system software
- * must step through each entry until it reaches the ENTRY_COUNT. The entries
- * are sorted on entry type in ascending order.
- * Unless otherwise stated, there is one entry per entry type.
- */
-
-#ifndef _SAL_H_
-#define _SAL_H_
-
-typedef uint64_t u_int64_t;
-typedef uint32_t u_int32_t;
-typedef uint16_t u_int16_t;
-typedef uint8_t u_int8_t;
-
-struct sal_system_table {
-       char            sal_signature[4];
-#define        SAL_SIGNATURE   "SST_"
-       uint32_t        sal_length;
-       uint8_t         sal_rev[2];     /* Byte 8 - Minor, Byte 0 - Major */
-       uint16_t        sal_entry_count;        // num entries in var part
-       uint8_t         sal_checksum;
-       uint8_t         sal_reserved1[7];
-       uint8_t         sal_a_version[2];       // like sal_rev
-       uint8_t         sal_b_version[2];       // like sal_rev
-       char            sal_oem_id[32];         // Ascii - manufacturer of HW
-       char            sal_product_id[32];     // ascii - identification
-       uint8_t         sal_reserved2[8];
-};
-
-typedef struct sal_system_table sal_system_table_t;
-
-#define SAL_DESC_ENTRYPOINT            0
-#define SAL_DESC_ENTRYPOINT_LENGTH     48
-#define SAL_DESC_MEMORY                        1
-#define SAL_DESC_MEMORY_LENGTH         32
-#define SAL_DESC_PLATFORM              2
-#define SAL_DESC_PLATFORM_LENGT                16
-#define SAL_DESC_TR_REG                        3
-#define SAL_DESC_TR_REG_LENGTH         32
-#define SAL_DESC_PURGE_TR_CACHE                4
-#define SAL_DESC_PURGE_TR_CACHE_LENGTH 16
-#define SAL_DESC_AP_WAKEUP             5
-#define SAL_DESC_AP_WAKEUP_LENGTH      16
-
-
-struct sal_entrypoint_descriptor
-{
-       uint8_t         sale_type;              /* == 0 */
-       uint8_t         sale_reserved1[7];
-       uint64_t        sale_pal_proc;          /* PAL_PROC entry point */
-       uint64_t        sale_sal_proc;          /* SAL_PROC entry point */
-       uint64_t        sale_sal_gp;            /* gp for SAL_PROC, PAL_PROC */
-       uint8_t         sale_reserved2[16];
-};
-
-struct sal_memory_descriptor
-{
-       uint8_t         sale_type;      /* == 1 */
-       uint8_t         sale_need_virtual;
-       uint8_t         sale_current_attribute;
-       uint8_t         sale_access_rights;
-       uint8_t         sale_supported_attributes;
-       uint8_t         sale_reserved1;
-       uint8_t         sale_memory_type[2];
-       uint64_t        sale_physical_address;
-       uint32_t        sale_length;
-       uint8_t         sale_reserved2[12];
-};
-
-struct sal_platform_descriptor
-{
-       uint8_t         sale_type;      /* == 2 */
-       uint8_t         sale_features;
-       uint8_t         sale_reserved[14];
-};
-
-struct sal_tr_descriptor
-{
-       u_int8_t        sale_type;      /* == 3 */
-       u_int8_t        sale_register_type;
-       u_int8_t        sale_register_number;
-       u_int8_t        sale_reserved1[5];
-       u_int64_t       sale_virtual_address;
-       u_int64_t       sale_page_size;
-       u_int8_t        sale_reserved2[8];
-};
-
-struct sal_ptc_cache_descriptor
-{
-       uint8_t         sale_type;      /* == 4 */
-       uint8_t         sale_reserved[3];
-       uint32_t        sale_domains;
-       uint64_t        sale_address;
-};
-
-struct sal_ap_wakeup_descriptor
-{
-       uint8_t         sale_type;      /* == 5 */
-       uint8_t         sale_mechanism;
-       uint8_t         sale_reserved[6];
-       uint64_t        sale_vector;
-};
-
-/*
- * SAL Procedure numbers.
- */
-
-#define SAL_SET_VECTORS                        0x01000000
-#define SAL_GET_STATE_INFO             0x01000001
-#define SAL_GET_STATE_INFO_SIZE                0x01000002
-#define SAL_CLEAR_STATE_INFO           0x01000003
-#define SAL_MC_RENDEZ                  0x01000004
-#define SAL_MC_SET_PARAMS              0x01000005
-#define SAL_REGISTER_PHYSICAL_ADDR     0x01000006
-#define SAL_CACHE_FLUSH                        0x01000008
-#define SAL_CACHE_INIT                 0x01000009
-#define SAL_PCI_CONFIG_READ            0x01000010
-#define SAL_PCI_CONFIG_WRITE           0x01000011
-#define SAL_FREQ_BASE                  0x01000012
-#define SAL_UPDATE_PAL                 0x01000020
-
-/* SAL_SET_VECTORS event handler types */
-#define        SAL_OS_MCA              0
-#define        SAL_OS_INIT             1
-#define        SAL_OS_BOOT_RENDEZ      2
-
-/* SAL_GET_STATE_INFO, SAL_GET_STATE_INFO_SIZE types */
-#define        SAL_INFO_MCA            0
-#define        SAL_INFO_INIT           1
-#define        SAL_INFO_CMC            2
-#define        SAL_INFO_CPE            3
-#define        SAL_INFO_TYPES          4       /* number of types we know about */
-
-struct ia64_sal_result
-{
-       int64_t         sal_status;
-       uint64_t        sal_result[3];
-};
-typedef struct ia64_sal_result ia64_sal_result_t;
-
-typedef ia64_sal_result_t sal_entry_t
-       (       uint64_t, uint64_t, uint64_t, uint64_t,
-               uint64_t, uint64_t, uint64_t, uint64_t
-       );
-
-extern ia64_sal_result_t ia64_sal_call(uint64_t, uint64_t, uint64_t, uint64_t,
-                                       uint64_t, uint64_t, uint64_t, uint64_t);
-
-extern void ia64_sal_init(sal_system_table_t *saltab);
-
-#endif /* _SAL_H_ */
diff --git a/extras/mini-os/include/ia64/traps.h b/extras/mini-os/include/ia64/traps.h
deleted file mode 100644 (file)
index cd5589c..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Done by Dietmar Hahn <dietmar.hahn@fujitsu-siemens.com>
- *
- ****************************************************************************
- * 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.
- */
-
-#if !defined(_TRAPS_H_)
-#define _TRAPS_H_
-
-#if !defined(__ASSEMBLY__)
-
-/* See ia64_cpu.h */
-struct trap_frame;
-
-#define pt_regs trap_frame
-
-/*
- * A dummy function, which is currently not supported.
- */
-inline static void trap_init(void)
-{
-       //printk("trap_init() until now not needed!\n");
-}
-inline static void trap_fini(void)
-{
-       //printk("trap_fini() until now not needed!\n");
-}
-
-
-#endif /* !defined(__ASSEMBLY__) */
-
-#include "ia64_cpu.h"
-
-void stack_walk(void);
-
-#endif /* !defined(_TRAPS_H_) */
-
index 2fd43f30b20ab14ff048553c7ca7ee52c52b1a28..a94cd6de46e6690058ab7180e64e289d76b0ab28 100644 (file)
@@ -29,8 +29,6 @@
 #include <xen/arch-x86_32.h>
 #elif defined(__x86_64__)
 #include <xen/arch-x86_64.h>
-#elif defined(__ia64__)
-#include <xen/arch-ia64.h>
 #else
 #error "Unsupported architecture"
 #endif
index b8e168a54f74339f1c1bc5c389ee1c5972f9fc93..5d2b8643c8c0da4737d7d989477accecc3bd3865 100644 (file)
@@ -25,7 +25,7 @@
 #define SHRT_MAX        0x7fff
 #define USHRT_MAX       0xffff
 
-#if defined(__x86_64__) || defined(__ia64__)
+#if defined(__x86_64__)
 # define LONG_MAX       0x7fffffffffffffffL
 # define ULONG_MAX      0xffffffffffffffffUL
 #else
index ea3239d6029a9a586fbe05f8552130ca7c3e4ea9..3d99d7d8453dba52fed1d27b0eea3fdde64b35b2 100644 (file)
@@ -12,13 +12,9 @@ struct thread
 {
     char *name;
     char *stack;
-#if !defined(__ia64__)
     /* keep in that order */
     unsigned long sp;  /* Stack pointer */
     unsigned long ip;  /* Instruction pointer */
-#else /* !defined(__ia64__) */
-    thread_regs_t regs;
-#endif /* !defined(__ia64__) */
     MINIOS_TAILQ_ENTRY(struct thread) thread_list;
     uint32_t flags;
     s_time_t wakeup_time;
index 456e21ac0687ae33d7b937e20ed69663e471ee8f..6640ede52b6c40a69b6ae11e2363896b49c63132 100644 (file)
@@ -33,7 +33,7 @@ typedef unsigned long long  u_quad_t;
 
 typedef struct { unsigned long pte_low, pte_high; } pte_t;
 
-#elif defined(__x86_64__) || defined(__ia64__)
+#elif defined(__x86_64__)
 typedef long                quad_t;
 typedef unsigned long       u_quad_t;
 
@@ -54,7 +54,7 @@ typedef struct { unsigned long pte; } pte_t;
 #ifdef __i386__
 typedef unsigned int        uintptr_t;
 typedef int                 intptr_t;
-#elif defined(__x86_64__) || defined(__ia64__)
+#elif defined(__x86_64__)
 typedef unsigned long       uintptr_t;
 typedef long                intptr_t;
 #endif /* __i386__ || __x86_64__ */
@@ -67,7 +67,7 @@ typedef   signed int int32_t;
 #ifdef __i386__
 typedef   signed long long int64_t;
 typedef unsigned long long uint64_t;
-#elif defined(__x86_64__) || defined(__ia64__)
+#elif defined(__x86_64__)
 typedef   signed long int64_t;
 typedef unsigned long uint64_t;
 #endif
index c8f8d33d31dd6df7d2d8fa72782bf7be10cd9719..c941b4c420b15f9f9ef8bb3a83b29fe7aee69554 100644 (file)
 #include <mini-os/lib.h>
 #include <mini-os/time.h>
 
-       /* On ia64 these functions lead to crashes. These are replaced by
-        * assembler functions. */
-#if !defined(__ia64__)
-
 /* XXX RN: Yuck hardcoded endianess :) */
 #define _QUAD_HIGHWORD 1
 #define _QUAD_LOWWORD 0
@@ -428,7 +424,6 @@ __moddi3(quad_t a, quad_t b)
        (void)__qdivrem(ua, ub, &ur);
        return (neg ? -ur : ur);
 }
-#endif /* !defined(__ia64__) */
 
 #ifndef HAVE_LIBC
 /* Should be random enough for our uses */
index 743d45d051343b0b55e066e4ff490194a60810fe..d2d52646b2015ca5fab143e4344c86ee301abd1b 100644 (file)
@@ -361,7 +361,6 @@ void free_pages(void *pointer, int order)
    
 }
 
-#ifndef __ia64__
 int free_physical_pages(xen_pfn_t *mfns, int n)
 {
     struct xen_memory_reservation reservation;
@@ -372,7 +371,6 @@ int free_physical_pages(xen_pfn_t *mfns, int n)
     reservation.domid = DOMID_SELF;
     return HYPERVISOR_memory_op(XENMEM_decrease_reservation, &reservation);
 }
-#endif
 
 #ifdef HAVE_LIBC
 void *sbrk(ptrdiff_t increment)
diff --git a/tools/debugger/xenitp/Makefile b/tools/debugger/xenitp/Makefile
deleted file mode 100644 (file)
index ba8f44c..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-XEN_ROOT=$(CURDIR)/../../..
-include $(XEN_ROOT)/tools/Rules.mk
-
-#CFLAGS  += -Werror -g -O0
-
-CFLAGS  += $(CFLAGS_libxenctrl)
-
-LIBBIN   = 
-
-ifeq ($(XEN_TARGET_ARCH),ia64)
-LIBBIN  += xenitp
-endif
-
-.PHONY: all
-all: build
-
-.PHONY: build
-build: $(LIBBIN)
-
-.PHONY: install
-install: build
-       [ -z "$(LIBBIN)" ] || $(INSTALL_DIR) $(DESTDIR)$(PRIVATE_BINDIR)
-       [ -z "$(LIBBIN)" ] || $(INSTALL_PROG) $(LIBBIN) $(DESTDIR)$(PRIVATE_BINDIR)
-
-.PHONY: clean
-clean:
-       $(RM) *.a *.so *.o *.rpm $(LIBBIN)
-
-XENITP_OBJS=xenitp.o ia64-dis.o ia64-opc.o cpu-ia64-opc.o
-
-xenitp: $(XENITP_OBJS)
-       $(CC) $(CFLAGS) -o $@ $(XENITP_OBJS) $(LDLIBS_libxenctrl)
diff --git a/tools/debugger/xenitp/README b/tools/debugger/xenitp/README
deleted file mode 100644 (file)
index 0cd248e..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-xenitp README
-*************
-
-
-Xenitp is a low-level, non-symbolic debugger.  It only works on ia64.
-
-* Building xenitp
-First do 'make tools' at the top level to build libxc and includes.  Then
-cd to tools/debugger/xenitp and do make.
-
-* Using xenitp
-Usage is: xenitp DOM
-DOM is a domain number.
-'help' shows all the command available.
-When the domain is running, C-c stops it.
-
-* Source origin
-All these files come from binutils:
-cpu-ia64-opc.c
-dis-asm.h
-ia64-asmtab.c
-ia64-asmtab.h
-ia64-dis.c
-ia64-gen.c
-ia64.h
-ia64-opc-a.c
-ia64-opc-b.c
-ia64-opc.c
-ia64-opc-d.c
-ia64-opc-f.c
-ia64-opc.h
-ia64-opc-i.c
-ia64-opc-m.c
-ia64-opc-x.c
-
-xenitp.c is based on xenctxt.c
diff --git a/tools/debugger/xenitp/cpu-ia64-opc.c b/tools/debugger/xenitp/cpu-ia64-opc.c
deleted file mode 100644 (file)
index 317de45..0000000
+++ /dev/null
@@ -1,615 +0,0 @@
-/* Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006
-   Free Software Foundation, Inc.
-   Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
-
-This file is part of BFD, the Binary File Descriptor library.
-
-This program 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; either version 2 of the License, or
-(at your option) any later version.
-
-This program 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 program; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
-
-/* Logically, this code should be part of libopcode but since some of
-   the operand insertion/extraction functions help bfd to implement
-   relocations, this code is included as part of cpu-ia64.c.  This
-   avoids circular dependencies between libopcode and libbfd and also
-   obviates the need for applications to link in libopcode when all
-   they really want is libbfd.
-
-   --davidm Mon Apr 13 22:14:02 1998 */
-
-#include "ia64-opc.h"
-
-#define NELEMS(a)  ((int) (sizeof (a) / sizeof ((a)[0])))
-
-static const char*
-ins_rsvd (const struct ia64_operand *self ATTRIBUTE_UNUSED,
-         ia64_insn value ATTRIBUTE_UNUSED, ia64_insn *code ATTRIBUTE_UNUSED)
-{
-  return "internal error---this shouldn't happen";
-}
-
-static const char*
-ext_rsvd (const struct ia64_operand *self ATTRIBUTE_UNUSED,
-         ia64_insn code ATTRIBUTE_UNUSED, ia64_insn *valuep ATTRIBUTE_UNUSED)
-{
-  return "internal error---this shouldn't happen";
-}
-
-static const char*
-ins_const (const struct ia64_operand *self ATTRIBUTE_UNUSED,
-          ia64_insn value ATTRIBUTE_UNUSED, ia64_insn *code ATTRIBUTE_UNUSED)
-{
-  return 0;
-}
-
-static const char*
-ext_const (const struct ia64_operand *self ATTRIBUTE_UNUSED,
-          ia64_insn code ATTRIBUTE_UNUSED, ia64_insn *valuep ATTRIBUTE_UNUSED)
-{
-  return 0;
-}
-
-static const char*
-ins_reg (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
-{
-  if (value >= 1u << self->field[0].bits)
-    return "register number out of range";
-
-  *code |= value << self->field[0].shift;
-  return 0;
-}
-
-static const char*
-ext_reg (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
-{
-  *valuep = ((code >> self->field[0].shift)
-            & ((1u << self->field[0].bits) - 1));
-  return 0;
-}
-
-static const char*
-ins_immu (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
-{
-  ia64_insn new = 0;
-  int i;
-
-  for (i = 0; i < NELEMS (self->field) && self->field[i].bits; ++i)
-    {
-      new |= ((value & ((((ia64_insn) 1) << self->field[i].bits) - 1))
-             << self->field[i].shift);
-      value >>= self->field[i].bits;
-    }
-  if (value)
-    return "integer operand out of range";
-
-  *code |= new;
-  return 0;
-}
-
-static const char*
-ext_immu (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
-{
-  BFD_HOST_U_64_BIT value = 0;
-  int i, bits = 0, total = 0;
-
-  for (i = 0; i < NELEMS (self->field) && self->field[i].bits; ++i)
-    {
-      bits = self->field[i].bits;
-      value |= ((code >> self->field[i].shift)
-               & ((((BFD_HOST_U_64_BIT) 1) << bits) - 1)) << total;
-      total += bits;
-    }
-  *valuep = value;
-  return 0;
-}
-
-static const char*
-ins_immu5b (const struct ia64_operand *self, ia64_insn value,
-           ia64_insn *code)
-{
-  if (value < 32 || value > 63)
-    return "value must be between 32 and 63";
-  return ins_immu (self, value - 32, code);
-}
-
-static const char*
-ext_immu5b (const struct ia64_operand *self, ia64_insn code,
-           ia64_insn *valuep)
-{
-  const char *result;
-
-  result = ext_immu (self, code, valuep);
-  if (result)
-    return result;
-
-  *valuep = *valuep + 32;
-  return 0;
-}
-
-static const char*
-ins_immus8 (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
-{
-  if (value & 0x7)
-    return "value not an integer multiple of 8";
-  return ins_immu (self, value >> 3, code);
-}
-
-static const char*
-ext_immus8 (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
-{
-  const char *result;
-
-  result = ext_immu (self, code, valuep);
-  if (result)
-    return result;
-
-  *valuep = *valuep << 3;
-  return 0;
-}
-
-static const char*
-ins_imms_scaled (const struct ia64_operand *self, ia64_insn value,
-                ia64_insn *code, int scale)
-{
-  BFD_HOST_64_BIT svalue = value, sign_bit = 0;
-  ia64_insn new = 0;
-  int i;
-
-  svalue >>= scale;
-
-  for (i = 0; i < NELEMS (self->field) && self->field[i].bits; ++i)
-    {
-      new |= ((svalue & ((((ia64_insn) 1) << self->field[i].bits) - 1))
-             << self->field[i].shift);
-      sign_bit = (svalue >> (self->field[i].bits - 1)) & 1;
-      svalue >>= self->field[i].bits;
-    }
-  if ((!sign_bit && svalue != 0) || (sign_bit && svalue != -1))
-    return "integer operand out of range";
-
-  *code |= new;
-  return 0;
-}
-
-static const char*
-ext_imms_scaled (const struct ia64_operand *self, ia64_insn code,
-                ia64_insn *valuep, int scale)
-{
-  int i, bits = 0, total = 0;
-  BFD_HOST_64_BIT val = 0, sign;
-
-  for (i = 0; i < NELEMS (self->field) && self->field[i].bits; ++i)
-    {
-      bits = self->field[i].bits;
-      val |= ((code >> self->field[i].shift)
-             & ((((BFD_HOST_U_64_BIT) 1) << bits) - 1)) << total;
-      total += bits;
-    }
-  /* sign extend: */
-  sign = (BFD_HOST_64_BIT) 1 << (total - 1);
-  val = (val ^ sign) - sign;
-
-  *valuep = (val << scale);
-  return 0;
-}
-
-static const char*
-ins_imms (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
-{
-  return ins_imms_scaled (self, value, code, 0);
-}
-
-static const char*
-ins_immsu4 (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
-{
-  value = ((value & 0xffffffff) ^ 0x80000000) - 0x80000000;
-
-  return ins_imms_scaled (self, value, code, 0);
-}
-
-static const char*
-ext_imms (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
-{
-  return ext_imms_scaled (self, code, valuep, 0);
-}
-
-static const char*
-ins_immsm1 (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
-{
-  --value;
-  return ins_imms_scaled (self, value, code, 0);
-}
-
-static const char*
-ins_immsm1u4 (const struct ia64_operand *self, ia64_insn value,
-             ia64_insn *code)
-{
-  value = ((value & 0xffffffff) ^ 0x80000000) - 0x80000000;
-
-  --value;
-  return ins_imms_scaled (self, value, code, 0);
-}
-
-static const char*
-ext_immsm1 (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
-{
-  const char *res = ext_imms_scaled (self, code, valuep, 0);
-
-  ++*valuep;
-  return res;
-}
-
-static const char*
-ins_imms1 (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
-{
-  return ins_imms_scaled (self, value, code, 1);
-}
-
-static const char*
-ext_imms1 (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
-{
-  return ext_imms_scaled (self, code, valuep, 1);
-}
-
-static const char*
-ins_imms4 (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
-{
-  return ins_imms_scaled (self, value, code, 4);
-}
-
-static const char*
-ext_imms4 (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
-{
-  return ext_imms_scaled (self, code, valuep, 4);
-}
-
-static const char*
-ins_imms16 (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
-{
-  return ins_imms_scaled (self, value, code, 16);
-}
-
-static const char*
-ext_imms16 (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
-{
-  return ext_imms_scaled (self, code, valuep, 16);
-}
-
-static const char*
-ins_cimmu (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
-{
-  ia64_insn mask = (((ia64_insn) 1) << self->field[0].bits) - 1;
-  return ins_immu (self, value ^ mask, code);
-}
-
-static const char*
-ext_cimmu (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
-{
-  const char *result;
-  ia64_insn mask;
-
-  mask = (((ia64_insn) 1) << self->field[0].bits) - 1;
-  result = ext_immu (self, code, valuep);
-  if (!result)
-    {
-      mask = (((ia64_insn) 1) << self->field[0].bits) - 1;
-      *valuep ^= mask;
-    }
-  return result;
-}
-
-static const char*
-ins_cnt (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
-{
-  --value;
-  if (value >= ((BFD_HOST_U_64_BIT) 1) << self->field[0].bits)
-    return "count out of range";
-
-  *code |= value << self->field[0].shift;
-  return 0;
-}
-
-static const char*
-ext_cnt (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
-{
-  *valuep = ((code >> self->field[0].shift)
-            & ((((BFD_HOST_U_64_BIT) 1) << self->field[0].bits) - 1)) + 1;
-  return 0;
-}
-
-static const char*
-ins_cnt2b (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
-{
-  --value;
-
-  if (value > 2)
-    return "count must be in range 1..3";
-
-  *code |= value << self->field[0].shift;
-  return 0;
-}
-
-static const char*
-ext_cnt2b (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
-{
-  *valuep = ((code >> self->field[0].shift) & 0x3) + 1;
-  return 0;
-}
-
-static const char*
-ins_cnt2c (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
-{
-  switch (value)
-    {
-    case 0:    value = 0; break;
-    case 7:    value = 1; break;
-    case 15:   value = 2; break;
-    case 16:   value = 3; break;
-    default:   return "count must be 0, 7, 15, or 16";
-    }
-  *code |= value << self->field[0].shift;
-  return 0;
-}
-
-static const char*
-ext_cnt2c (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
-{
-  ia64_insn value;
-
-  value = (code >> self->field[0].shift) & 0x3;
-  switch (value)
-    {
-    case 0: value =  0; break;
-    case 1: value =  7; break;
-    case 2: value = 15; break;
-    case 3: value = 16; break;
-    }
-  *valuep = value;
-  return 0;
-}
-
-static const char*
-ins_inc3 (const struct ia64_operand *self, ia64_insn value, ia64_insn *code)
-{
-  BFD_HOST_64_BIT val = value;
-  BFD_HOST_U_64_BIT sign = 0;
-
-  if (val < 0)
-    {
-      sign = 0x4;
-      value = -value;
-    }
-  switch (value)
-    {
-    case  1:   value = 3; break;
-    case  4:   value = 2; break;
-    case  8:   value = 1; break;
-    case 16:   value = 0; break;
-    default:   return "count must be +/- 1, 4, 8, or 16";
-    }
-  *code |= (sign | value) << self->field[0].shift;
-  return 0;
-}
-
-static const char*
-ext_inc3 (const struct ia64_operand *self, ia64_insn code, ia64_insn *valuep)
-{
-  BFD_HOST_64_BIT val;
-  int negate;
-
-  val = (code >> self->field[0].shift) & 0x7;
-  negate = val & 0x4;
-  switch (val & 0x3)
-    {
-    case 0: val = 16; break;
-    case 1: val =  8; break;
-    case 2: val =  4; break;
-    case 3: val =  1; break;
-    }
-  if (negate)
-    val = -val;
-
-  *valuep = val;
-  return 0;
-}
-
-#define CST    IA64_OPND_CLASS_CST
-#define REG    IA64_OPND_CLASS_REG
-#define IND    IA64_OPND_CLASS_IND
-#define ABS    IA64_OPND_CLASS_ABS
-#define REL    IA64_OPND_CLASS_REL
-
-#define SDEC   IA64_OPND_FLAG_DECIMAL_SIGNED
-#define UDEC   IA64_OPND_FLAG_DECIMAL_UNSIGNED
-
-const struct ia64_operand elf64_ia64_operands[IA64_OPND_COUNT] =
-  {
-    /* constants: */
-    { CST, ins_const, ext_const, "NIL",                {{ 0, 0}}, 0, "<none>" },
-    { CST, ins_const, ext_const, "ar.csd",     {{ 0, 0}}, 0, "ar.csd" },
-    { CST, ins_const, ext_const, "ar.ccv",     {{ 0, 0}}, 0, "ar.ccv" },
-    { CST, ins_const, ext_const, "ar.pfs",     {{ 0, 0}}, 0, "ar.pfs" },
-    { CST, ins_const, ext_const, "1",          {{ 0, 0}}, 0, "1" },
-    { CST, ins_const, ext_const, "8",          {{ 0, 0}}, 0, "8" },
-    { CST, ins_const, ext_const, "16",         {{ 0, 0}}, 0, "16" },
-    { CST, ins_const, ext_const, "r0",         {{ 0, 0}}, 0, "r0" },
-    { CST, ins_const, ext_const, "ip",         {{ 0, 0}}, 0, "ip" },
-    { CST, ins_const, ext_const, "pr",         {{ 0, 0}}, 0, "pr" },
-    { CST, ins_const, ext_const, "pr.rot",     {{ 0, 0}}, 0, "pr.rot" },
-    { CST, ins_const, ext_const, "psr",                {{ 0, 0}}, 0, "psr" },
-    { CST, ins_const, ext_const, "psr.l",      {{ 0, 0}}, 0, "psr.l" },
-    { CST, ins_const, ext_const, "psr.um",     {{ 0, 0}}, 0, "psr.um" },
-
-    /* register operands: */
-    { REG, ins_reg,   ext_reg, "ar", {{ 7, 20}}, 0,            /* AR3 */
-      "an application register" },
-    { REG, ins_reg,   ext_reg,  "b", {{ 3,  6}}, 0,            /* B1 */
-      "a branch register" },
-    { REG, ins_reg,   ext_reg,  "b", {{ 3, 13}}, 0,            /* B2 */
-      "a branch register"},
-    { REG, ins_reg,   ext_reg, "cr", {{ 7, 20}}, 0,            /* CR */
-      "a control register"},
-    { REG, ins_reg,   ext_reg,  "f", {{ 7,  6}}, 0,            /* F1 */
-      "a floating-point register" },
-    { REG, ins_reg,   ext_reg,  "f", {{ 7, 13}}, 0,            /* F2 */
-      "a floating-point register" },
-    { REG, ins_reg,   ext_reg,  "f", {{ 7, 20}}, 0,            /* F3 */
-      "a floating-point register" },
-    { REG, ins_reg,   ext_reg,  "f", {{ 7, 27}}, 0,            /* F4 */
-      "a floating-point register" },
-    { REG, ins_reg,   ext_reg,  "p", {{ 6,  6}}, 0,            /* P1 */
-      "a predicate register" },
-    { REG, ins_reg,   ext_reg,  "p", {{ 6, 27}}, 0,            /* P2 */
-      "a predicate register" },
-    { REG, ins_reg,   ext_reg,  "r", {{ 7,  6}}, 0,            /* R1 */
-      "a general register" },
-    { REG, ins_reg,   ext_reg,  "r", {{ 7, 13}}, 0,            /* R2 */
-      "a general register" },
-    { REG, ins_reg,   ext_reg,  "r", {{ 7, 20}}, 0,            /* R3 */
-      "a general register" },
-    { REG, ins_reg,   ext_reg,  "r", {{ 2, 20}}, 0,            /* R3_2 */
-      "a general register r0-r3" },
-
-    /* memory operands: */
-    { IND, ins_reg,   ext_reg, "",      {{7, 20}}, 0,          /* MR3 */
-      "a memory address" },
-
-    /* indirect operands: */
-    { IND, ins_reg,   ext_reg, "cpuid", {{7, 20}}, 0,          /* CPUID_R3 */
-      "a cpuid register" },
-    { IND, ins_reg,   ext_reg, "dbr",   {{7, 20}}, 0,          /* DBR_R3 */
-      "a dbr register" },
-    { IND, ins_reg,   ext_reg, "dtr",   {{7, 20}}, 0,          /* DTR_R3 */
-      "a dtr register" },
-    { IND, ins_reg,   ext_reg, "itr",   {{7, 20}}, 0,          /* ITR_R3 */
-      "an itr register" },
-    { IND, ins_reg,   ext_reg, "ibr",   {{7, 20}}, 0,          /* IBR_R3 */
-      "an ibr register" },
-    { IND, ins_reg,   ext_reg, "msr",   {{7, 20}}, 0,          /* MSR_R3 */
-      "an msr register" },
-    { IND, ins_reg,   ext_reg, "pkr",   {{7, 20}}, 0,          /* PKR_R3 */
-      "a pkr register" },
-    { IND, ins_reg,   ext_reg, "pmc",   {{7, 20}}, 0,          /* PMC_R3 */
-      "a pmc register" },
-    { IND, ins_reg,   ext_reg, "pmd",   {{7, 20}}, 0,          /* PMD_R3 */
-      "a pmd register" },
-    { IND, ins_reg,   ext_reg, "rr",    {{7, 20}}, 0,          /* RR_R3 */
-      "an rr register" },
-
-    /* immediate operands: */
-    { ABS, ins_cimmu, ext_cimmu, 0, {{ 5, 20 }}, UDEC,         /* CCNT5 */
-      "a 5-bit count (0-31)" },
-    { ABS, ins_cnt,   ext_cnt,   0, {{ 2, 27 }}, UDEC,         /* CNT2a */
-      "a 2-bit count (1-4)" },
-    { ABS, ins_cnt2b, ext_cnt2b, 0, {{ 2, 27 }}, UDEC,         /* CNT2b */
-      "a 2-bit count (1-3)" },
-    { ABS, ins_cnt2c, ext_cnt2c, 0, {{ 2, 30 }}, UDEC,         /* CNT2c */
-      "a count (0, 7, 15, or 16)" },
-    { ABS, ins_immu,  ext_immu,  0, {{ 5, 14}}, UDEC,          /* CNT5 */
-      "a 5-bit count (0-31)" },
-    { ABS, ins_immu,  ext_immu,  0, {{ 6, 27}}, UDEC,          /* CNT6 */
-      "a 6-bit count (0-63)" },
-    { ABS, ins_cimmu, ext_cimmu, 0, {{ 6, 20}}, UDEC,          /* CPOS6a */
-      "a 6-bit bit pos (0-63)" },
-    { ABS, ins_cimmu, ext_cimmu, 0, {{ 6, 14}}, UDEC,          /* CPOS6b */
-      "a 6-bit bit pos (0-63)" },
-    { ABS, ins_cimmu, ext_cimmu, 0, {{ 6, 31}}, UDEC,          /* CPOS6c */
-      "a 6-bit bit pos (0-63)" },
-    { ABS, ins_imms,  ext_imms,  0, {{ 1, 36}}, SDEC,          /* IMM1 */
-      "a 1-bit integer (-1, 0)" },
-    { ABS, ins_immu,  ext_immu,  0, {{ 2, 13}}, UDEC,          /* IMMU2 */
-      "a 2-bit unsigned (0-3)" },
-    { ABS, ins_immu5b,  ext_immu5b,  0, {{ 5, 14}}, UDEC,      /* IMMU5b */
-      "a 5-bit unsigned (32 + (0-31))" },
-    { ABS, ins_immu,  ext_immu,  0, {{ 7, 13}}, 0,             /* IMMU7a */
-      "a 7-bit unsigned (0-127)" },
-    { ABS, ins_immu,  ext_immu,  0, {{ 7, 20}}, 0,             /* IMMU7b */
-      "a 7-bit unsigned (0-127)" },
-    { ABS, ins_immu,  ext_immu,  0, {{ 7, 13}}, UDEC,          /* SOF */
-      "a frame size (register count)" },
-    { ABS, ins_immu,  ext_immu,  0, {{ 7, 20}}, UDEC,          /* SOL */
-      "a local register count" },
-    { ABS, ins_immus8,ext_immus8,0, {{ 4, 27}}, UDEC,          /* SOR */
-      "a rotating register count (integer multiple of 8)" },
-    { ABS, ins_imms,  ext_imms,  0,                            /* IMM8 */
-      {{ 7, 13}, { 1, 36}}, SDEC,
-      "an 8-bit integer (-128-127)" },
-    { ABS, ins_immsu4,  ext_imms,  0,                          /* IMM8U4 */
-      {{ 7, 13}, { 1, 36}}, SDEC,
-      "an 8-bit signed integer for 32-bit unsigned compare (-128-127)" },
-    { ABS, ins_immsm1,  ext_immsm1,  0,                                /* IMM8M1 */
-      {{ 7, 13}, { 1, 36}}, SDEC,
-      "an 8-bit integer (-127-128)" },
-    { ABS, ins_immsm1u4,  ext_immsm1,  0,                      /* IMM8M1U4 */
-      {{ 7, 13}, { 1, 36}}, SDEC,
-      "an 8-bit integer for 32-bit unsigned compare (-127-(-1),1-128,0x100000000)" },
-    { ABS, ins_immsm1,  ext_immsm1,  0,                                /* IMM8M1U8 */
-      {{ 7, 13}, { 1, 36}}, SDEC,
-      "an 8-bit integer for 64-bit unsigned compare (-127-(-1),1-128,0x10000000000000000)" },
-    { ABS, ins_immu,  ext_immu,  0, {{ 2, 33}, { 7, 20}}, 0,   /* IMMU9 */
-      "a 9-bit unsigned (0-511)" },
-    { ABS, ins_imms,  ext_imms,  0,                            /* IMM9a */
-      {{ 7,  6}, { 1, 27}, { 1, 36}}, SDEC,
-      "a 9-bit integer (-256-255)" },
-    { ABS, ins_imms,  ext_imms, 0,                             /* IMM9b */
-      {{ 7, 13}, { 1, 27}, { 1, 36}}, SDEC,
-      "a 9-bit integer (-256-255)" },
-    { ABS, ins_imms,  ext_imms, 0,                             /* IMM14 */
-      {{ 7, 13}, { 6, 27}, { 1, 36}}, SDEC,
-      "a 14-bit integer (-8192-8191)" },
-    { ABS, ins_imms1, ext_imms1, 0,                            /* IMM17 */
-      {{ 7,  6}, { 8, 24}, { 1, 36}}, 0,
-      "a 17-bit integer (-65536-65535)" },
-    { ABS, ins_immu,  ext_immu,  0, {{20,  6}, { 1, 36}}, 0,   /* IMMU21 */
-      "a 21-bit unsigned" },
-    { ABS, ins_imms,  ext_imms,  0,                            /* IMM22 */
-      {{ 7, 13}, { 9, 27}, { 5, 22}, { 1, 36}}, SDEC,
-      "a 22-bit signed integer" },
-    { ABS, ins_immu,  ext_immu,  0,                            /* IMMU24 */
-      {{21,  6}, { 2, 31}, { 1, 36}}, 0,
-      "a 24-bit unsigned" },
-    { ABS, ins_imms16,ext_imms16,0, {{27,  6}, { 1, 36}}, 0,   /* IMM44 */
-      "a 44-bit unsigned (least 16 bits ignored/zeroes)" },
-    { ABS, ins_rsvd,  ext_rsvd,        0, {{0,  0}}, 0,                /* IMMU62 */
-      "a 62-bit unsigned" },
-    { ABS, ins_rsvd,  ext_rsvd,        0, {{0,  0}}, 0,                /* IMMU64 */
-      "a 64-bit unsigned" },
-    { ABS, ins_inc3,  ext_inc3,  0, {{ 3, 13}}, SDEC,          /* INC3 */
-      "an increment (+/- 1, 4, 8, or 16)" },
-    { ABS, ins_cnt,   ext_cnt,   0, {{ 4, 27}}, UDEC,          /* LEN4 */
-      "a 4-bit length (1-16)" },
-    { ABS, ins_cnt,   ext_cnt,   0, {{ 6, 27}}, UDEC,          /* LEN6 */
-      "a 6-bit length (1-64)" },
-    { ABS, ins_immu,  ext_immu,  0, {{ 4, 20}},        0,              /* MBTYPE4 */
-      "a mix type (@rev, @mix, @shuf, @alt, or @brcst)" },
-    { ABS, ins_immu,  ext_immu,  0, {{ 8, 20}},        0,              /* MBTYPE8 */
-      "an 8-bit mix type" },
-    { ABS, ins_immu,  ext_immu,  0, {{ 6, 14}}, UDEC,          /* POS6 */
-      "a 6-bit bit pos (0-63)" },
-    { REL, ins_imms4, ext_imms4, 0, {{ 7,  6}, { 2, 33}}, 0,   /* TAG13 */
-      "a branch tag" },
-    { REL, ins_imms4, ext_imms4, 0, {{ 9, 24}}, 0,             /* TAG13b */
-      "a branch tag" },
-    { REL, ins_imms4, ext_imms4, 0, {{20,  6}, { 1, 36}}, 0,   /* TGT25 */
-      "a branch target" },
-    { REL, ins_imms4, ext_imms4, 0,                            /* TGT25b */
-      {{ 7,  6}, {13, 20}, { 1, 36}}, 0,
-      "a branch target" },
-    { REL, ins_imms4, ext_imms4, 0, {{20, 13}, { 1, 36}}, 0,   /* TGT25c */
-      "a branch target" },
-    { REL, ins_rsvd, ext_rsvd, 0, {{0, 0}}, 0,                  /* TGT64  */
-      "a branch target" },
-
-    { ABS, ins_const, ext_const, 0, {{0, 0}}, 0,               /* LDXMOV */
-      "ldxmov target" },
-  };
diff --git a/tools/debugger/xenitp/dis-asm.h b/tools/debugger/xenitp/dis-asm.h
deleted file mode 100644 (file)
index efb6eaf..0000000
+++ /dev/null
@@ -1,548 +0,0 @@
-/* Interface between the opcode library and its callers.
-
-   Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005
-   Free Software Foundation, Inc.
-
-   This program 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; either version 2, or (at your option)
-   any later version.
-
-   This program 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 program; if not, write to the Free Software
-   Foundation, Inc., 51 Franklin Street - Fifth Floor,
-   Boston, MA 02110-1301, USA.
-
-   Written by Cygnus Support, 1993.
-
-   The opcode library (libopcodes.a) provides instruction decoders for
-   a large variety of instruction sets, callable with an identical
-   interface, for making instruction-processing programs more independent
-   of the instruction set being processed.  */
-
-#ifndef DIS_ASM_H
-#define DIS_ASM_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <string.h>
-#include <inttypes.h>
-
-#define PARAMS(x) x
-typedef void *PTR;
-typedef uint64_t bfd_vma;
-typedef int64_t bfd_signed_vma;
-typedef uint8_t bfd_byte;
-typedef int bfd_boolean;
-#define BFD_HOST_U_64_BIT unsigned long
-#define BFD_HOST_64_BIT long
-#define sprintf_vma(s,x) sprintf (s, "%0" PRIx64, x)
-
-extern unsigned long bfd_getl64 (const bfd_byte *addr);
-
-#define BFD64
-#define ATTRIBUTE_FPTR_PRINTF_2
-#define ATTRIBUTE_UNUSED __attribute__((unused))
-
-enum bfd_flavour {
-  bfd_target_unknown_flavour,
-  bfd_target_aout_flavour,
-  bfd_target_coff_flavour,
-  bfd_target_ecoff_flavour,
-  bfd_target_elf_flavour,
-  bfd_target_ieee_flavour,
-  bfd_target_nlm_flavour,
-  bfd_target_oasys_flavour,
-  bfd_target_tekhex_flavour,
-  bfd_target_srec_flavour,
-  bfd_target_ihex_flavour,
-  bfd_target_som_flavour,
-  bfd_target_os9k_flavour,
-  bfd_target_versados_flavour,
-  bfd_target_msdos_flavour,
-  bfd_target_evax_flavour
-};
-
-enum bfd_endian { BFD_ENDIAN_BIG, BFD_ENDIAN_LITTLE, BFD_ENDIAN_UNKNOWN };
-
-enum bfd_architecture 
-{
-  bfd_arch_unknown,    /* File arch not known */
-  bfd_arch_obscure,    /* Arch known, not one of these */
-  bfd_arch_m68k,       /* Motorola 68xxx */
-#define bfd_mach_m68000 1
-#define bfd_mach_m68008 2
-#define bfd_mach_m68010 3
-#define bfd_mach_m68020 4
-#define bfd_mach_m68030 5
-#define bfd_mach_m68040 6
-#define bfd_mach_m68060 7
-#define bfd_mach_cpu32  8
-#define bfd_mach_mcf5200  9
-#define bfd_mach_mcf5206e 10
-#define bfd_mach_mcf5307  11
-#define bfd_mach_mcf5407  12
-#define bfd_mach_mcf528x  13
-#define bfd_mach_mcfv4e   14
-#define bfd_mach_mcf521x   15
-#define bfd_mach_mcf5249   16
-#define bfd_mach_mcf547x   17
-#define bfd_mach_mcf548x   18
-  bfd_arch_vax,        /* DEC Vax */   
-  bfd_arch_i960,       /* Intel 960 */
-     /* The order of the following is important.
-       lower number indicates a machine type that 
-       only accepts a subset of the instructions
-       available to machines with higher numbers.
-       The exception is the "ca", which is
-       incompatible with all other machines except 
-       "core". */
-
-#define bfd_mach_i960_core      1
-#define bfd_mach_i960_ka_sa     2
-#define bfd_mach_i960_kb_sb     3
-#define bfd_mach_i960_mc        4
-#define bfd_mach_i960_xa        5
-#define bfd_mach_i960_ca        6
-#define bfd_mach_i960_jx        7
-#define bfd_mach_i960_hx        8
-
-  bfd_arch_a29k,       /* AMD 29000 */
-  bfd_arch_sparc,      /* SPARC */
-#define bfd_mach_sparc                 1
-/* The difference between v8plus and v9 is that v9 is a true 64 bit env.  */
-#define bfd_mach_sparc_sparclet        2
-#define bfd_mach_sparc_sparclite       3
-#define bfd_mach_sparc_v8plus          4
-#define bfd_mach_sparc_v8plusa         5 /* with ultrasparc add'ns.  */
-#define bfd_mach_sparc_sparclite_le    6
-#define bfd_mach_sparc_v9              7
-#define bfd_mach_sparc_v9a             8 /* with ultrasparc add'ns.  */
-#define bfd_mach_sparc_v8plusb         9 /* with cheetah add'ns.  */
-#define bfd_mach_sparc_v9b             10 /* with cheetah add'ns.  */
-/* Nonzero if MACH has the v9 instruction set.  */
-#define bfd_mach_sparc_v9_p(mach) \
-  ((mach) >= bfd_mach_sparc_v8plus && (mach) <= bfd_mach_sparc_v9b \
-   && (mach) != bfd_mach_sparc_sparclite_le)
-  bfd_arch_mips,       /* MIPS Rxxxx */
-#define bfd_mach_mips3000              3000
-#define bfd_mach_mips3900              3900
-#define bfd_mach_mips4000              4000
-#define bfd_mach_mips4010              4010
-#define bfd_mach_mips4100              4100
-#define bfd_mach_mips4300              4300
-#define bfd_mach_mips4400              4400
-#define bfd_mach_mips4600              4600
-#define bfd_mach_mips4650              4650
-#define bfd_mach_mips5000              5000
-#define bfd_mach_mips6000              6000
-#define bfd_mach_mips8000              8000
-#define bfd_mach_mips10000             10000
-#define bfd_mach_mips16                16
-  bfd_arch_i386,       /* Intel 386 */
-#define bfd_mach_i386_i386 0
-#define bfd_mach_i386_i8086 1
-#define bfd_mach_i386_i386_intel_syntax 2
-#define bfd_mach_x86_64 3
-#define bfd_mach_x86_64_intel_syntax 4
-  bfd_arch_we32k,      /* AT&T WE32xxx */
-  bfd_arch_tahoe,      /* CCI/Harris Tahoe */
-  bfd_arch_i860,       /* Intel 860 */
-  bfd_arch_romp,       /* IBM ROMP PC/RT */
-  bfd_arch_alliant,    /* Alliant */
-  bfd_arch_convex,     /* Convex */
-  bfd_arch_m88k,       /* Motorola 88xxx */
-  bfd_arch_pyramid,    /* Pyramid Technology */
-  bfd_arch_h8300,      /* Hitachi H8/300 */
-#define bfd_mach_h8300   1
-#define bfd_mach_h8300h  2
-#define bfd_mach_h8300s  3
-  bfd_arch_powerpc,    /* PowerPC */
-#define bfd_mach_ppc           0
-#define bfd_mach_ppc64         1
-#define bfd_mach_ppc_403       403
-#define bfd_mach_ppc_403gc     4030
-#define bfd_mach_ppc_505       505
-#define bfd_mach_ppc_601       601
-#define bfd_mach_ppc_602       602
-#define bfd_mach_ppc_603       603
-#define bfd_mach_ppc_ec603e    6031
-#define bfd_mach_ppc_604       604
-#define bfd_mach_ppc_620       620
-#define bfd_mach_ppc_630       630
-#define bfd_mach_ppc_750       750
-#define bfd_mach_ppc_860       860
-#define bfd_mach_ppc_a35       35
-#define bfd_mach_ppc_rs64ii    642
-#define bfd_mach_ppc_rs64iii   643
-#define bfd_mach_ppc_7400      7400
-  bfd_arch_rs6000,     /* IBM RS/6000 */
-  bfd_arch_hppa,       /* HP PA RISC */
-  bfd_arch_d10v,       /* Mitsubishi D10V */
-  bfd_arch_z8k,        /* Zilog Z8000 */
-#define bfd_mach_z8001         1
-#define bfd_mach_z8002         2
-  bfd_arch_h8500,      /* Hitachi H8/500 */
-  bfd_arch_sh,         /* Hitachi SH */
-#define bfd_mach_sh            1
-#define bfd_mach_sh2        0x20
-#define bfd_mach_sh_dsp     0x2d
-#define bfd_mach_sh2a       0x2a
-#define bfd_mach_sh2a_nofpu 0x2b
-#define bfd_mach_sh2e       0x2e
-#define bfd_mach_sh3        0x30
-#define bfd_mach_sh3_nommu  0x31
-#define bfd_mach_sh3_dsp    0x3d
-#define bfd_mach_sh3e       0x3e
-#define bfd_mach_sh4        0x40
-#define bfd_mach_sh4_nofpu  0x41
-#define bfd_mach_sh4_nommu_nofpu  0x42
-#define bfd_mach_sh4a       0x4a
-#define bfd_mach_sh4a_nofpu 0x4b
-#define bfd_mach_sh4al_dsp  0x4d
-#define bfd_mach_sh5        0x50
-  bfd_arch_alpha,      /* Dec Alpha */
-#define bfd_mach_alpha 1
-  bfd_arch_arm,        /* Advanced Risc Machines ARM */
-#define bfd_mach_arm_2         1
-#define bfd_mach_arm_2a                2
-#define bfd_mach_arm_3         3
-#define bfd_mach_arm_3M        4
-#define bfd_mach_arm_4                 5
-#define bfd_mach_arm_4T        6
-  bfd_arch_ns32k,      /* National Semiconductors ns32000 */
-  bfd_arch_w65,        /* WDC 65816 */
-  bfd_arch_tic30,      /* Texas Instruments TMS320C30 */
-  bfd_arch_v850,       /* NEC V850 */
-#define bfd_mach_v850          0
-  bfd_arch_arc,        /* Argonaut RISC Core */
-#define bfd_mach_arc_base 0
-  bfd_arch_m32r,       /* Mitsubishi M32R/D */
-#define bfd_mach_m32r          0  /* backwards compatibility */
-  bfd_arch_mn10200,    /* Matsushita MN10200 */
-  bfd_arch_mn10300,    /* Matsushita MN10300 */
-  bfd_arch_last
-  };
-
-typedef struct symbol_cache_entry
-{
-    const char *name;
-    union
-    {
-        PTR p;
-        bfd_vma i;
-    } udata;
-} asymbol;
-
-typedef int (*fprintf_ftype) (void *, const char*, ...) ATTRIBUTE_FPTR_PRINTF_2;
-
-enum dis_insn_type {
-  dis_noninsn,                 /* Not a valid instruction */
-  dis_nonbranch,               /* Not a branch instruction */
-  dis_branch,                  /* Unconditional branch */
-  dis_condbranch,              /* Conditional branch */
-  dis_jsr,                     /* Jump to subroutine */
-  dis_condjsr,                 /* Conditional jump to subroutine */
-  dis_dref,                    /* Data reference instruction */
-  dis_dref2                    /* Two data references in instruction */
-};
-
-/* This struct is passed into the instruction decoding routine,
-   and is passed back out into each callback.  The various fields are used
-   for conveying information from your main routine into your callbacks,
-   for passing information into the instruction decoders (such as the
-   addresses of the callback functions), or for passing information
-   back from the instruction decoders to their callers.
-
-   It must be initialized before it is first passed; this can be done
-   by hand, or using one of the initialization macros below.  */
-
-typedef struct disassemble_info {
-  fprintf_ftype fprintf_func;
-  void *stream;
-  void *application_data;
-
-  /* Target description.  We could replace this with a pointer to the bfd,
-     but that would require one.  There currently isn't any such requirement
-     so to avoid introducing one we record these explicitly.  */
-  /* The bfd_flavour.  This can be bfd_target_unknown_flavour.  */
-  enum bfd_flavour flavour;
-  /* The bfd_arch value.  */
-  enum bfd_architecture arch;
-  /* The bfd_mach value.  */
-  unsigned long mach;
-  /* Endianness (for bi-endian cpus).  Mono-endian cpus can ignore this.  */
-  enum bfd_endian endian;
-  /* An arch/mach-specific bitmask of selected instruction subsets, mainly
-     for processors with run-time-switchable instruction sets.  The default,
-     zero, means that there is no constraint.  CGEN-based opcodes ports
-     may use ISA_foo masks.  */
-  void *insn_sets;
-
-  /* Some targets need information about the current section to accurately
-     display insns.  If this is NULL, the target disassembler function
-     will have to make its best guess.  */
-  //asection *section;
-
-  /* An array of pointers to symbols either at the location being disassembled
-     or at the start of the function being disassembled.  The array is sorted
-     so that the first symbol is intended to be the one used.  The others are
-     present for any misc. purposes.  This is not set reliably, but if it is
-     not NULL, it is correct.  */
-  asymbol **symbols;
-  /* Number of symbols in array.  */
-  int num_symbols;
-
-  /* For use by the disassembler.
-     The top 16 bits are reserved for public use (and are documented here).
-     The bottom 16 bits are for the internal use of the disassembler.  */
-  unsigned long flags;
-#define INSN_HAS_RELOC 0x80000000
-  void *private_data;
-
-  /* Function used to get bytes to disassemble.  MEMADDR is the
-     address of the stuff to be disassembled, MYADDR is the address to
-     put the bytes in, and LENGTH is the number of bytes to read.
-     INFO is a pointer to this struct.
-     Returns an errno value or 0 for success.  */
-  int (*read_memory_func)
-    (bfd_vma memaddr, bfd_byte *myaddr, unsigned int length,
-     struct disassemble_info *info);
-
-  /* Function which should be called if we get an error that we can't
-     recover from.  STATUS is the errno value from read_memory_func and
-     MEMADDR is the address that we were trying to read.  INFO is a
-     pointer to this struct.  */
-  void (*memory_error_func)
-    (int status, bfd_vma memaddr, struct disassemble_info *info);
-
-  /* Function called to print ADDR.  */
-  void (*print_address_func)
-    (bfd_vma addr, struct disassemble_info *info);
-
-  /* Function called to determine if there is a symbol at the given ADDR.
-     If there is, the function returns 1, otherwise it returns 0.
-     This is used by ports which support an overlay manager where
-     the overlay number is held in the top part of an address.  In
-     some circumstances we want to include the overlay number in the
-     address, (normally because there is a symbol associated with
-     that address), but sometimes we want to mask out the overlay bits.  */
-  int (* symbol_at_address_func)
-    (bfd_vma addr, struct disassemble_info * info);
-
-  /* Function called to check if a SYMBOL is can be displayed to the user.
-     This is used by some ports that want to hide special symbols when
-     displaying debugging outout.  */
-  bfd_boolean (* symbol_is_valid)
-    (asymbol *, struct disassemble_info * info);
-
-  /* These are for buffer_read_memory.  */
-  bfd_byte *buffer;
-  bfd_vma buffer_vma;
-  unsigned int buffer_length;
-
-  /* This variable may be set by the instruction decoder.  It suggests
-      the number of bytes objdump should display on a single line.  If
-      the instruction decoder sets this, it should always set it to
-      the same value in order to get reasonable looking output.  */
-  int bytes_per_line;
-
-  /* The next two variables control the way objdump displays the raw data.  */
-  /* For example, if bytes_per_line is 8 and bytes_per_chunk is 4, the */
-  /* output will look like this:
-     00:   00000000 00000000
-     with the chunks displayed according to "display_endian". */
-  int bytes_per_chunk;
-  enum bfd_endian display_endian;
-
-  /* Number of octets per incremented target address
-     Normally one, but some DSPs have byte sizes of 16 or 32 bits.  */
-  unsigned int octets_per_byte;
-
-  /* The number of zeroes we want to see at the end of a section before we
-     start skipping them.  */
-  unsigned int skip_zeroes;
-
-  /* The number of zeroes to skip at the end of a section.  If the number
-     of zeroes at the end is between SKIP_ZEROES_AT_END and SKIP_ZEROES,
-     they will be disassembled.  If there are fewer than
-     SKIP_ZEROES_AT_END, they will be skipped.  This is a heuristic
-     attempt to avoid disassembling zeroes inserted by section
-     alignment.  */
-  unsigned int skip_zeroes_at_end;
-
-  /* Whether the disassembler always needs the relocations.  */
-  bfd_boolean disassembler_needs_relocs;
-
-  /* Results from instruction decoders.  Not all decoders yet support
-     this information.  This info is set each time an instruction is
-     decoded, and is only valid for the last such instruction.
-
-     To determine whether this decoder supports this information, set
-     insn_info_valid to 0, decode an instruction, then check it.  */
-
-  char insn_info_valid;                /* Branch info has been set. */
-  char branch_delay_insns;     /* How many sequential insn's will run before
-                                  a branch takes effect.  (0 = normal) */
-  char data_size;              /* Size of data reference in insn, in bytes */
-  enum dis_insn_type insn_type;        /* Type of instruction */
-  bfd_vma target;              /* Target address of branch or dref, if known;
-                                  zero if unknown.  */
-  bfd_vma target2;             /* Second target address for dref2 */
-
-  /* Command line options specific to the target disassembler.  */
-  char * disassembler_options;
-
-} disassemble_info;
-
-\f
-/* Standard disassemblers.  Disassemble one instruction at the given
-   target address.  Return number of octets processed.  */
-typedef int (*disassembler_ftype) (bfd_vma, disassemble_info *);
-
-extern int print_insn_big_mips         (bfd_vma, disassemble_info *);
-extern int print_insn_little_mips      (bfd_vma, disassemble_info *);
-extern int print_insn_i386             (bfd_vma, disassemble_info *);
-extern int print_insn_i386_att         (bfd_vma, disassemble_info *);
-extern int print_insn_i386_intel       (bfd_vma, disassemble_info *);
-extern int print_insn_ia64             (bfd_vma, disassemble_info *);
-extern int print_insn_i370             (bfd_vma, disassemble_info *);
-extern int print_insn_m68hc11          (bfd_vma, disassemble_info *);
-extern int print_insn_m68hc12          (bfd_vma, disassemble_info *);
-extern int print_insn_m68k             (bfd_vma, disassemble_info *);
-extern int print_insn_z80              (bfd_vma, disassemble_info *);
-extern int print_insn_z8001            (bfd_vma, disassemble_info *);
-extern int print_insn_z8002            (bfd_vma, disassemble_info *);
-extern int print_insn_h8300            (bfd_vma, disassemble_info *);
-extern int print_insn_h8300h           (bfd_vma, disassemble_info *);
-extern int print_insn_h8300s           (bfd_vma, disassemble_info *);
-extern int print_insn_h8500            (bfd_vma, disassemble_info *);
-extern int print_insn_alpha            (bfd_vma, disassemble_info *);
-extern int print_insn_big_arm          (bfd_vma, disassemble_info *);
-extern int print_insn_little_arm       (bfd_vma, disassemble_info *);
-extern int print_insn_sparc            (bfd_vma, disassemble_info *);
-extern int print_insn_avr              (bfd_vma, disassemble_info *);
-extern int print_insn_bfin             (bfd_vma, disassemble_info *);
-extern int print_insn_d10v             (bfd_vma, disassemble_info *);
-extern int print_insn_d30v             (bfd_vma, disassemble_info *);
-extern int print_insn_dlx              (bfd_vma, disassemble_info *);
-extern int print_insn_fr30             (bfd_vma, disassemble_info *);
-extern int print_insn_hppa             (bfd_vma, disassemble_info *);
-extern int print_insn_i860             (bfd_vma, disassemble_info *);
-extern int print_insn_i960             (bfd_vma, disassemble_info *);
-extern int print_insn_ip2k             (bfd_vma, disassemble_info *);
-extern int print_insn_m32r             (bfd_vma, disassemble_info *);
-extern int print_insn_m88k             (bfd_vma, disassemble_info *);
-extern int print_insn_maxq_little      (bfd_vma, disassemble_info *);
-extern int print_insn_maxq_big         (bfd_vma, disassemble_info *);
-extern int print_insn_mcore            (bfd_vma, disassemble_info *);
-extern int print_insn_mmix             (bfd_vma, disassemble_info *);
-extern int print_insn_mn10200          (bfd_vma, disassemble_info *);
-extern int print_insn_mn10300          (bfd_vma, disassemble_info *);
-extern int print_insn_mt                (bfd_vma, disassemble_info *);
-extern int print_insn_msp430           (bfd_vma, disassemble_info *);
-extern int print_insn_ns32k            (bfd_vma, disassemble_info *);
-extern int print_insn_crx               (bfd_vma, disassemble_info *);
-extern int print_insn_openrisc         (bfd_vma, disassemble_info *);
-extern int print_insn_big_or32         (bfd_vma, disassemble_info *);
-extern int print_insn_little_or32      (bfd_vma, disassemble_info *);
-extern int print_insn_pdp11            (bfd_vma, disassemble_info *);
-extern int print_insn_pj               (bfd_vma, disassemble_info *);
-extern int print_insn_big_powerpc      (bfd_vma, disassemble_info *);
-extern int print_insn_little_powerpc   (bfd_vma, disassemble_info *);
-extern int print_insn_rs6000           (bfd_vma, disassemble_info *);
-extern int print_insn_s390             (bfd_vma, disassemble_info *);
-extern int print_insn_sh               (bfd_vma, disassemble_info *);
-extern int print_insn_tic30            (bfd_vma, disassemble_info *);
-extern int print_insn_tic4x            (bfd_vma, disassemble_info *);
-extern int print_insn_tic54x           (bfd_vma, disassemble_info *);
-extern int print_insn_tic80            (bfd_vma, disassemble_info *);
-extern int print_insn_v850             (bfd_vma, disassemble_info *);
-extern int print_insn_vax              (bfd_vma, disassemble_info *);
-extern int print_insn_w65              (bfd_vma, disassemble_info *);
-extern int print_insn_xstormy16                (bfd_vma, disassemble_info *);
-extern int print_insn_xtensa           (bfd_vma, disassemble_info *);
-extern int print_insn_sh64             (bfd_vma, disassemble_info *);
-extern int print_insn_sh64x_media      (bfd_vma, disassemble_info *);
-extern int print_insn_frv              (bfd_vma, disassemble_info *);
-extern int print_insn_iq2000           (bfd_vma, disassemble_info *);
-extern int print_insn_xc16x            (bfd_vma, disassemble_info *);
-extern int print_insn_m32c     (bfd_vma, disassemble_info *);
-
-extern disassembler_ftype arc_get_disassembler (void *);
-//extern disassembler_ftype cris_get_disassembler (bfd *);
-
-extern void print_mips_disassembler_options (FILE *);
-extern void print_ppc_disassembler_options (FILE *);
-extern void print_arm_disassembler_options (FILE *);
-extern void parse_arm_disassembler_option (char *);
-extern int get_arm_regname_num_options (void);
-extern int set_arm_regname_option (int);
-extern int get_arm_regnames (int, const char **, const char **, const char *const **);
-extern bfd_boolean arm_symbol_is_valid (asymbol *, struct disassemble_info *);
-
-/* Fetch the disassembler for a given BFD, if that support is available.  */
-//extern disassembler_ftype disassembler (bfd *);
-
-/* Amend the disassemble_info structure as necessary for the target architecture.
-   Should only be called after initialising the info->arch field.  */
-extern void disassemble_init_for_target (struct disassemble_info * info);
-
-/* Document any target specific options available from the disassembler.  */
-extern void disassembler_usage (FILE *);
-
-\f
-/* This block of definitions is for particular callers who read instructions
-   into a buffer before calling the instruction decoder.  */
-
-/* Here is a function which callers may wish to use for read_memory_func.
-   It gets bytes from a buffer.  */
-extern int buffer_read_memory
-  (bfd_vma, bfd_byte *, unsigned int, struct disassemble_info *);
-
-/* This function goes with buffer_read_memory.
-   It prints a message using info->fprintf_func and info->stream.  */
-extern void perror_memory (int, bfd_vma, struct disassemble_info *);
-
-
-/* Just print the address in hex.  This is included for completeness even
-   though both GDB and objdump provide their own (to print symbolic
-   addresses).  */
-extern void generic_print_address
-  (bfd_vma, struct disassemble_info *);
-
-/* Always true.  */
-extern int generic_symbol_at_address
-  (bfd_vma, struct disassemble_info *);
-
-/* Also always true.  */
-extern bfd_boolean generic_symbol_is_valid
-  (asymbol *, struct disassemble_info *);
-
-/* Method to initialize a disassemble_info struct.  This should be
-   called by all applications creating such a struct.  */
-extern void init_disassemble_info (struct disassemble_info *info, void *stream,
-                                  fprintf_ftype fprintf_func);
-
-/* For compatibility with existing code.  */
-#define INIT_DISASSEMBLE_INFO(INFO, STREAM, FPRINTF_FUNC) \
-  init_disassemble_info (&(INFO), (STREAM), (fprintf_ftype) (FPRINTF_FUNC))
-#define INIT_DISASSEMBLE_INFO_NO_ARCH(INFO, STREAM, FPRINTF_FUNC) \
-  init_disassemble_info (&(INFO), (STREAM), (fprintf_ftype) (FPRINTF_FUNC))
-
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* ! defined (DIS_ASM_H) */
diff --git a/tools/debugger/xenitp/ia64-asmtab.c b/tools/debugger/xenitp/ia64-asmtab.c
deleted file mode 100644 (file)
index 6350fd4..0000000
+++ /dev/null
@@ -1,8774 +0,0 @@
-/* This file is automatically generated by ia64-gen.  Do not edit!  */
-static const char * const ia64_strings[] = {
-  "", "0", "1", "a", "acq", "add", "addl", "addp4", "adds", "alloc", "and",
-  "andcm", "b", "bias", "br", "break", "brl", "brp", "bsw", "c", "call",
-  "cexit", "chk", "cloop", "clr", "clrrrb", "cmp", "cmp4", "cmp8xchg16",
-  "cmpxchg1", "cmpxchg2", "cmpxchg4", "cmpxchg8", "cond", "cover", "ctop",
-  "czx1", "czx2", "d", "dep", "dpnt", "dptk", "e", "epc", "eq", "excl",
-  "exit", "exp", "extr", "f", "fabs", "fadd", "famax", "famin", "fand",
-  "fandcm", "fault", "fc", "fchkf", "fclass", "fclrf", "fcmp", "fcvt",
-  "fetchadd4", "fetchadd8", "few", "fill", "flushrs", "fma", "fmax",
-  "fmerge", "fmin", "fmix", "fmpy", "fms", "fneg", "fnegabs", "fnma",
-  "fnmpy", "fnorm", "for", "fpabs", "fpack", "fpamax", "fpamin", "fpcmp",
-  "fpcvt", "fpma", "fpmax", "fpmerge", "fpmin", "fpmpy", "fpms", "fpneg",
-  "fpnegabs", "fpnma", "fpnmpy", "fprcpa", "fprsqrta", "frcpa", "frsqrta",
-  "fselect", "fsetc", "fsub", "fswap", "fsxt", "fwb", "fx", "fxor", "fxu",
-  "g", "ga", "ge", "getf", "geu", "gt", "gtu", "h", "hint", "hu", "i", "ia",
-  "imp", "invala", "itc", "itr", "l", "ld1", "ld16", "ld2", "ld4", "ld8",
-  "ldf", "ldf8", "ldfd", "ldfe", "ldfp8", "ldfpd", "ldfps", "ldfs", "le",
-  "leu", "lfetch", "loadrs", "loop", "lr", "lt", "ltu", "lu", "m", "many",
-  "mf", "mix1", "mix2", "mix4", "mov", "movl", "mux1", "mux2", "nc", "ne",
-  "neq", "nge", "ngt", "nl", "nle", "nlt", "nm", "nop", "nr", "ns", "nt1",
-  "nt2", "nta", "nz", "or", "orcm", "ord", "pack2", "pack4", "padd1",
-  "padd2", "padd4", "pavg1", "pavg2", "pavgsub1", "pavgsub2", "pcmp1",
-  "pcmp2", "pcmp4", "pmax1", "pmax2", "pmin1", "pmin2", "pmpy2", "pmpyshr2",
-  "popcnt", "pr", "probe", "psad1", "pshl2", "pshl4", "pshladd2", "pshr2",
-  "pshr4", "pshradd2", "psub1", "psub2", "psub4", "ptc", "ptr", "r", "raz",
-  "rel", "ret", "rfi", "rsm", "rum", "rw", "s", "s0", "s1", "s2", "s3",
-  "sa", "se", "setf", "shl", "shladd", "shladdp4", "shr", "shrp", "sig",
-  "spill", "spnt", "sptk", "srlz", "ssm", "sss", "st1", "st16", "st2",
-  "st4", "st8", "stf", "stf8", "stfd", "stfe", "stfs", "sub", "sum", "sxt1",
-  "sxt2", "sxt4", "sync", "tak", "tbit", "tf", "thash", "tnat", "tpa",
-  "trunc", "ttag", "u", "unc", "unord", "unpack1", "unpack2", "unpack4",
-  "uss", "uus", "uuu", "vmsw", "w", "wexit", "wtop", "x", "xchg1", "xchg2",
-  "xchg4", "xchg8", "xf", "xma", "xmpy", "xor", "xuf", "z", "zxt1", "zxt2",
-  "zxt4",
-};
-
-static const struct ia64_dependency
-dependencies[] = {
-  { "ALAT", 0, 0, 0, -1, NULL, },
-  { "AR[BSP]", 26, 0, 2, 17, NULL, },
-  { "AR[BSPSTORE]", 26, 0, 2, 18, NULL, },
-  { "AR[CCV]", 26, 0, 2, 32, NULL, },
-  { "AR[CFLG]", 26, 0, 2, 27, NULL, },
-  { "AR[CSD]", 26, 0, 2, 25, NULL, },
-  { "AR[EC]", 26, 0, 2, 66, NULL, },
-  { "AR[EFLAG]", 26, 0, 2, 24, NULL, },
-  { "AR[FCR]", 26, 0, 2, 21, NULL, },
-  { "AR[FDR]", 26, 0, 2, 30, NULL, },
-  { "AR[FIR]", 26, 0, 2, 29, NULL, },
-  { "AR[FPSR].sf0.controls", 30, 0, 2, -1, NULL, },
-  { "AR[FPSR].sf1.controls", 30, 0, 2, -1, NULL, },
-  { "AR[FPSR].sf2.controls", 30, 0, 2, -1, NULL, },
-  { "AR[FPSR].sf3.controls", 30, 0, 2, -1, NULL, },
-  { "AR[FPSR].sf0.flags", 30, 0, 2, -1, NULL, },
-  { "AR[FPSR].sf1.flags", 30, 0, 2, -1, NULL, },
-  { "AR[FPSR].sf2.flags", 30, 0, 2, -1, NULL, },
-  { "AR[FPSR].sf3.flags", 30, 0, 2, -1, NULL, },
-  { "AR[FPSR].traps", 30, 0, 2, -1, NULL, },
-  { "AR[FPSR].rv", 30, 0, 2, -1, NULL, },
-  { "AR[FSR]", 26, 0, 2, 28, NULL, },
-  { "AR[ITC]", 26, 0, 2, 44, NULL, },
-  { "AR[K%], % in 0 - 7", 1, 0, 2, -1, NULL, },
-  { "AR[LC]", 26, 0, 2, 65, NULL, },
-  { "AR[PFS]", 26, 0, 2, 64, NULL, },
-  { "AR[PFS]", 26, 0, 2, 64, NULL, },
-  { "AR[PFS]", 26, 0, 0, 64, NULL, },
-  { "AR[RNAT]", 26, 0, 2, 19, NULL, },
-  { "AR[RSC]", 26, 0, 2, 16, NULL, },
-  { "AR[SSD]", 26, 0, 2, 26, NULL, },
-  { "AR[UNAT]{%}, % in 0 - 63", 2, 0, 2, -1, NULL, },
-  { "AR%, % in 8-15, 20, 22-23, 31, 33-35, 37-39, 41-43, 45-47, 67-111", 3, 0, 0, -1, NULL, },
-  { "AR%, % in 48-63, 112-127", 4, 0, 2, -1, NULL, },
-  { "BR%, % in 0 - 7", 5, 0, 2, -1, NULL, },
-  { "BR%, % in 0 - 7", 5, 0, 0, -1, NULL, },
-  { "BR%, % in 0 - 7", 5, 0, 2, -1, NULL, },
-  { "CFM", 6, 0, 2, -1, NULL, },
-  { "CFM", 6, 0, 2, -1, NULL, },
-  { "CFM", 6, 0, 2, -1, NULL, },
-  { "CFM", 6, 0, 2, -1, NULL, },
-  { "CFM", 6, 0, 0, -1, NULL, },
-  { "CPUID#", 7, 0, 5, -1, NULL, },
-  { "CR[CMCV]", 27, 0, 3, 74, NULL, },
-  { "CR[DCR]", 27, 0, 3, 0, NULL, },
-  { "CR[EOI]", 27, 0, 7, 67, "SC Section 5.8.3.4, \"End of External Interrupt Register (EOI Ð CR67)\" on page 2:119", },
-  { "CR[GPTA]", 27, 0, 3, 9, NULL, },
-  { "CR[IFA]", 27, 0, 1, 20, NULL, },
-  { "CR[IFA]", 27, 0, 3, 20, NULL, },
-  { "CR[IFS]", 27, 0, 3, 23, NULL, },
-  { "CR[IFS]", 27, 0, 1, 23, NULL, },
-  { "CR[IFS]", 27, 0, 1, 23, NULL, },
-  { "CR[IHA]", 27, 0, 3, 25, NULL, },
-  { "CR[IIM]", 27, 0, 3, 24, NULL, },
-  { "CR[IIP]", 27, 0, 3, 19, NULL, },
-  { "CR[IIP]", 27, 0, 1, 19, NULL, },
-  { "CR[IIPA]", 27, 0, 3, 22, NULL, },
-  { "CR[IPSR]", 27, 0, 3, 16, NULL, },
-  { "CR[IPSR]", 27, 0, 1, 16, NULL, },
-  { "CR[IRR%], % in 0 - 3", 8, 0, 3, -1, NULL, },
-  { "CR[ISR]", 27, 0, 3, 17, NULL, },
-  { "CR[ITIR]", 27, 0, 3, 21, NULL, },
-  { "CR[ITIR]", 27, 0, 1, 21, NULL, },
-  { "CR[ITM]", 27, 0, 3, 1, NULL, },
-  { "CR[ITV]", 27, 0, 3, 72, NULL, },
-  { "CR[IVA]", 27, 0, 4, 2, NULL, },
-  { "CR[IVR]", 27, 0, 7, 65, "SC Section 5.8.3.2, \"External Interrupt Vector Register (IVR Ð CR65)\" on page 2:118", },
-  { "CR[LID]", 27, 0, 7, 64, "SC Section 5.8.3.1, \"Local ID (LID Ð CR64)\" on page 2:117", },
-  { "CR[LRR%], % in 0 - 1", 9, 0, 3, -1, NULL, },
-  { "CR[PMV]", 27, 0, 3, 73, NULL, },
-  { "CR[PTA]", 27, 0, 3, 8, NULL, },
-  { "CR[TPR]", 27, 0, 3, 66, NULL, },
-  { "CR[TPR]", 27, 0, 7, 66, "SC Section 5.8.3.3, \"Task Priority Register (TPR Ð CR66)\" on page 2:119", },
-  { "CR[TPR]", 27, 0, 1, 66, NULL, },
-  { "CR%, % in 3-7, 10-15, 18, 26-63, 75-79, 82-127", 10, 0, 0, -1, NULL, },
-  { "DBR#", 11, 0, 2, -1, NULL, },
-  { "DBR#", 11, 0, 3, -1, NULL, },
-  { "DTC", 0, 0, 3, -1, NULL, },
-  { "DTC", 0, 0, 2, -1, NULL, },
-  { "DTC", 0, 0, 0, -1, NULL, },
-  { "DTC", 0, 0, 2, -1, NULL, },
-  { "DTC_LIMIT*", 0, 0, 2, -1, NULL, },
-  { "DTR", 0, 0, 3, -1, NULL, },
-  { "DTR", 0, 0, 2, -1, NULL, },
-  { "DTR", 0, 0, 3, -1, NULL, },
-  { "DTR", 0, 0, 0, -1, NULL, },
-  { "DTR", 0, 0, 2, -1, NULL, },
-  { "FR%, % in 0 - 1", 12, 0, 0, -1, NULL, },
-  { "FR%, % in 2 - 127", 13, 0, 2, -1, NULL, },
-  { "FR%, % in 2 - 127", 13, 0, 0, -1, NULL, },
-  { "GR0", 14, 0, 0, -1, NULL, },
-  { "GR%, % in 1 - 127", 15, 0, 0, -1, NULL, },
-  { "GR%, % in 1 - 127", 15, 0, 2, -1, NULL, },
-  { "IBR#", 16, 0, 2, -1, NULL, },
-  { "InService*", 17, 0, 3, -1, NULL, },
-  { "InService*", 17, 0, 2, -1, NULL, },
-  { "InService*", 17, 0, 2, -1, NULL, },
-  { "IP", 0, 0, 0, -1, NULL, },
-  { "ITC", 0, 0, 4, -1, NULL, },
-  { "ITC", 0, 0, 2, -1, NULL, },
-  { "ITC", 0, 0, 0, -1, NULL, },
-  { "ITC", 0, 0, 4, -1, NULL, },
-  { "ITC", 0, 0, 2, -1, NULL, },
-  { "ITC_LIMIT*", 0, 0, 2, -1, NULL, },
-  { "ITR", 0, 0, 2, -1, NULL, },
-  { "ITR", 0, 0, 4, -1, NULL, },
-  { "ITR", 0, 0, 2, -1, NULL, },
-  { "ITR", 0, 0, 0, -1, NULL, },
-  { "ITR", 0, 0, 4, -1, NULL, },
-  { "memory", 0, 0, 0, -1, NULL, },
-  { "MSR#", 18, 0, 5, -1, NULL, },
-  { "PKR#", 19, 0, 3, -1, NULL, },
-  { "PKR#", 19, 0, 0, -1, NULL, },
-  { "PKR#", 19, 0, 2, -1, NULL, },
-  { "PKR#", 19, 0, 2, -1, NULL, },
-  { "PMC#", 20, 0, 2, -1, NULL, },
-  { "PMC#", 20, 0, 7, -1, "SC Section 7.2.1, \"Generic Performance Counter Registers\" for PMC[0].fr on page 2:150", },
-  { "PMD#", 21, 0, 2, -1, NULL, },
-  { "PR0", 0, 0, 0, -1, NULL, },
-  { "PR%, % in 1 - 15", 22, 0, 2, -1, NULL, },
-  { "PR%, % in 1 - 15", 22, 0, 2, -1, NULL, },
-  { "PR%, % in 1 - 15", 22, 0, 0, -1, NULL, },
-  { "PR%, % in 16 - 62", 23, 0, 2, -1, NULL, },
-  { "PR%, % in 16 - 62", 23, 0, 2, -1, NULL, },
-  { "PR%, % in 16 - 62", 23, 0, 0, -1, NULL, },
-  { "PR63", 24, 0, 2, -1, NULL, },
-  { "PR63", 24, 0, 2, -1, NULL, },
-  { "PR63", 24, 0, 0, -1, NULL, },
-  { "PSR.ac", 28, 0, 1, 3, NULL, },
-  { "PSR.ac", 28, 0, 3, 3, NULL, },
-  { "PSR.ac", 28, 0, 2, 3, NULL, },
-  { "PSR.ac", 28, 0, 2, 3, NULL, },
-  { "PSR.be", 28, 0, 1, 1, NULL, },
-  { "PSR.be", 28, 0, 3, 1, NULL, },
-  { "PSR.be", 28, 0, 2, 1, NULL, },
-  { "PSR.be", 28, 0, 2, 1, NULL, },
-  { "PSR.bn", 28, 0, 2, 44, NULL, },
-  { "PSR.cpl", 28, 0, 1, 32, NULL, },
-  { "PSR.cpl", 28, 0, 2, 32, NULL, },
-  { "PSR.da", 28, 0, 2, 38, NULL, },
-  { "PSR.db", 28, 0, 3, 24, NULL, },
-  { "PSR.db", 28, 0, 2, 24, NULL, },
-  { "PSR.db", 28, 0, 2, 24, NULL, },
-  { "PSR.dd", 28, 0, 2, 39, NULL, },
-  { "PSR.dfh", 28, 0, 3, 19, NULL, },
-  { "PSR.dfh", 28, 0, 2, 19, NULL, },
-  { "PSR.dfh", 28, 0, 2, 19, NULL, },
-  { "PSR.dfl", 28, 0, 3, 18, NULL, },
-  { "PSR.dfl", 28, 0, 2, 18, NULL, },
-  { "PSR.dfl", 28, 0, 2, 18, NULL, },
-  { "PSR.di", 28, 0, 3, 22, NULL, },
-  { "PSR.di", 28, 0, 2, 22, NULL, },
-  { "PSR.di", 28, 0, 2, 22, NULL, },
-  { "PSR.dt", 28, 0, 3, 17, NULL, },
-  { "PSR.dt", 28, 0, 2, 17, NULL, },
-  { "PSR.dt", 28, 0, 2, 17, NULL, },
-  { "PSR.ed", 28, 0, 2, 43, NULL, },
-  { "PSR.i", 28, 0, 2, 14, NULL, },
-  { "PSR.ia", 28, 0, 0, 14, NULL, },
-  { "PSR.ic", 28, 0, 2, 13, NULL, },
-  { "PSR.ic", 28, 0, 3, 13, NULL, },
-  { "PSR.ic", 28, 0, 2, 13, NULL, },
-  { "PSR.id", 28, 0, 0, 14, NULL, },
-  { "PSR.is", 28, 0, 0, 14, NULL, },
-  { "PSR.it", 28, 0, 2, 14, NULL, },
-  { "PSR.lp", 28, 0, 2, 25, NULL, },
-  { "PSR.lp", 28, 0, 3, 25, NULL, },
-  { "PSR.lp", 28, 0, 2, 25, NULL, },
-  { "PSR.mc", 28, 0, 2, 35, NULL, },
-  { "PSR.mfh", 28, 0, 2, 5, NULL, },
-  { "PSR.mfl", 28, 0, 2, 4, NULL, },
-  { "PSR.pk", 28, 0, 3, 15, NULL, },
-  { "PSR.pk", 28, 0, 2, 15, NULL, },
-  { "PSR.pk", 28, 0, 2, 15, NULL, },
-  { "PSR.pp", 28, 0, 2, 21, NULL, },
-  { "PSR.ri", 28, 0, 0, 41, NULL, },
-  { "PSR.rt", 28, 0, 2, 27, NULL, },
-  { "PSR.rt", 28, 0, 3, 27, NULL, },
-  { "PSR.rt", 28, 0, 2, 27, NULL, },
-  { "PSR.si", 28, 0, 2, 23, NULL, },
-  { "PSR.si", 28, 0, 3, 23, NULL, },
-  { "PSR.si", 28, 0, 2, 23, NULL, },
-  { "PSR.sp", 28, 0, 2, 20, NULL, },
-  { "PSR.sp", 28, 0, 3, 20, NULL, },
-  { "PSR.sp", 28, 0, 2, 20, NULL, },
-  { "PSR.ss", 28, 0, 2, 40, NULL, },
-  { "PSR.tb", 28, 0, 3, 26, NULL, },
-  { "PSR.tb", 28, 0, 2, 26, NULL, },
-  { "PSR.tb", 28, 0, 2, 26, NULL, },
-  { "PSR.up", 28, 0, 2, 2, NULL, },
-  { "PSR.vm", 28, 0, 1, 46, NULL, },
-  { "PSR.vm", 28, 0, 2, 46, NULL, },
-  { "RR#", 25, 0, 3, -1, NULL, },
-  { "RR#", 25, 0, 2, -1, NULL, },
-  { "RSE", 29, 0, 2, -1, NULL, },
-  { "ALAT", 0, 1, 0, -1, NULL, },
-  { "AR[BSP]", 26, 1, 2, 17, NULL, },
-  { "AR[BSPSTORE]", 26, 1, 2, 18, NULL, },
-  { "AR[CCV]", 26, 1, 2, 32, NULL, },
-  { "AR[CFLG]", 26, 1, 2, 27, NULL, },
-  { "AR[CSD]", 26, 1, 2, 25, NULL, },
-  { "AR[EC]", 26, 1, 2, 66, NULL, },
-  { "AR[EFLAG]", 26, 1, 2, 24, NULL, },
-  { "AR[FCR]", 26, 1, 2, 21, NULL, },
-  { "AR[FDR]", 26, 1, 2, 30, NULL, },
-  { "AR[FIR]", 26, 1, 2, 29, NULL, },
-  { "AR[FPSR].sf0.controls", 30, 1, 2, -1, NULL, },
-  { "AR[FPSR].sf1.controls", 30, 1, 2, -1, NULL, },
-  { "AR[FPSR].sf2.controls", 30, 1, 2, -1, NULL, },
-  { "AR[FPSR].sf3.controls", 30, 1, 2, -1, NULL, },
-  { "AR[FPSR].sf0.flags", 30, 1, 0, -1, NULL, },
-  { "AR[FPSR].sf0.flags", 30, 1, 2, -1, NULL, },
-  { "AR[FPSR].sf0.flags", 30, 1, 2, -1, NULL, },
-  { "AR[FPSR].sf1.flags", 30, 1, 0, -1, NULL, },
-  { "AR[FPSR].sf1.flags", 30, 1, 2, -1, NULL, },
-  { "AR[FPSR].sf1.flags", 30, 1, 2, -1, NULL, },
-  { "AR[FPSR].sf2.flags", 30, 1, 0, -1, NULL, },
-  { "AR[FPSR].sf2.flags", 30, 1, 2, -1, NULL, },
-  { "AR[FPSR].sf2.flags", 30, 1, 2, -1, NULL, },
-  { "AR[FPSR].sf3.flags", 30, 1, 0, -1, NULL, },
-  { "AR[FPSR].sf3.flags", 30, 1, 2, -1, NULL, },
-  { "AR[FPSR].sf3.flags", 30, 1, 2, -1, NULL, },
-  { "AR[FPSR].rv", 30, 1, 2, -1, NULL, },
-  { "AR[FPSR].traps", 30, 1, 2, -1, NULL, },
-  { "AR[FSR]", 26, 1, 2, 28, NULL, },
-  { "AR[ITC]", 26, 1, 2, 44, NULL, },
-  { "AR[K%], % in 0 - 7", 1, 1, 2, -1, NULL, },
-  { "AR[LC]", 26, 1, 2, 65, NULL, },
-  { "AR[PFS]", 26, 1, 0, 64, NULL, },
-  { "AR[PFS]", 26, 1, 2, 64, NULL, },
-  { "AR[PFS]", 26, 1, 2, 64, NULL, },
-  { "AR[RNAT]", 26, 1, 2, 19, NULL, },
-  { "AR[RSC]", 26, 1, 2, 16, NULL, },
-  { "AR[SSD]", 26, 1, 2, 26, NULL, },
-  { "AR[UNAT]{%}, % in 0 - 63", 2, 1, 2, -1, NULL, },
-  { "AR%, % in 8-15, 20, 22-23, 31, 33-35, 37-39, 41-43, 45-47, 67-111", 3, 1, 0, -1, NULL, },
-  { "AR%, % in 48 - 63, 112-127", 4, 1, 2, -1, NULL, },
-  { "BR%, % in 0 - 7", 5, 1, 2, -1, NULL, },
-  { "BR%, % in 0 - 7", 5, 1, 2, -1, NULL, },
-  { "BR%, % in 0 - 7", 5, 1, 2, -1, NULL, },
-  { "BR%, % in 0 - 7", 5, 1, 0, -1, NULL, },
-  { "CFM", 6, 1, 2, -1, NULL, },
-  { "CPUID#", 7, 1, 0, -1, NULL, },
-  { "CR[CMCV]", 27, 1, 2, 74, NULL, },
-  { "CR[DCR]", 27, 1, 2, 0, NULL, },
-  { "CR[EOI]", 27, 1, 7, 67, "SC Section 5.8.3.4, \"End of External Interrupt Register (EOI Ð CR67)\" on page 2:119", },
-  { "CR[GPTA]", 27, 1, 2, 9, NULL, },
-  { "CR[IFA]", 27, 1, 2, 20, NULL, },
-  { "CR[IFS]", 27, 1, 2, 23, NULL, },
-  { "CR[IHA]", 27, 1, 2, 25, NULL, },
-  { "CR[IIM]", 27, 1, 2, 24, NULL, },
-  { "CR[IIP]", 27, 1, 2, 19, NULL, },
-  { "CR[IIPA]", 27, 1, 2, 22, NULL, },
-  { "CR[IPSR]", 27, 1, 2, 16, NULL, },
-  { "CR[IRR%], % in 0 - 3", 8, 1, 2, -1, NULL, },
-  { "CR[ISR]", 27, 1, 2, 17, NULL, },
-  { "CR[ITIR]", 27, 1, 2, 21, NULL, },
-  { "CR[ITM]", 27, 1, 2, 1, NULL, },
-  { "CR[ITV]", 27, 1, 2, 72, NULL, },
-  { "CR[IVA]", 27, 1, 2, 2, NULL, },
-  { "CR[IVR]", 27, 1, 7, 65, "SC", },
-  { "CR[LID]", 27, 1, 7, 64, "SC", },
-  { "CR[LRR%], % in 0 - 1", 9, 1, 2, -1, NULL, },
-  { "CR[PMV]", 27, 1, 2, 73, NULL, },
-  { "CR[PTA]", 27, 1, 2, 8, NULL, },
-  { "CR[TPR]", 27, 1, 2, 66, NULL, },
-  { "CR%, % in 3-7, 10-15, 18, 26-63, 75-79, 82-127", 10, 1, 0, -1, NULL, },
-  { "DBR#", 11, 1, 2, -1, NULL, },
-  { "DTC", 0, 1, 0, -1, NULL, },
-  { "DTC", 0, 1, 2, -1, NULL, },
-  { "DTC", 0, 1, 2, -1, NULL, },
-  { "DTC_LIMIT*", 0, 1, 2, -1, NULL, },
-  { "DTR", 0, 1, 2, -1, NULL, },
-  { "DTR", 0, 1, 2, -1, NULL, },
-  { "DTR", 0, 1, 2, -1, NULL, },
-  { "DTR", 0, 1, 0, -1, NULL, },
-  { "FR%, % in 0 - 1", 12, 1, 0, -1, NULL, },
-  { "FR%, % in 2 - 127", 13, 1, 2, -1, NULL, },
-  { "GR0", 14, 1, 0, -1, NULL, },
-  { "GR%, % in 1 - 127", 15, 1, 2, -1, NULL, },
-  { "IBR#", 16, 1, 2, -1, NULL, },
-  { "InService*", 17, 1, 7, -1, "SC", },
-  { "IP", 0, 1, 0, -1, NULL, },
-  { "ITC", 0, 1, 0, -1, NULL, },
-  { "ITC", 0, 1, 2, -1, NULL, },
-  { "ITC", 0, 1, 2, -1, NULL, },
-  { "ITR", 0, 1, 2, -1, NULL, },
-  { "ITR", 0, 1, 2, -1, NULL, },
-  { "ITR", 0, 1, 0, -1, NULL, },
-  { "memory", 0, 1, 0, -1, NULL, },
-  { "MSR#", 18, 1, 7, -1, "SC", },
-  { "PKR#", 19, 1, 0, -1, NULL, },
-  { "PKR#", 19, 1, 0, -1, NULL, },
-  { "PKR#", 19, 1, 2, -1, NULL, },
-  { "PMC#", 20, 1, 2, -1, NULL, },
-  { "PMD#", 21, 1, 2, -1, NULL, },
-  { "PR0", 0, 1, 0, -1, NULL, },
-  { "PR%, % in 1 - 15", 22, 1, 0, -1, NULL, },
-  { "PR%, % in 1 - 15", 22, 1, 0, -1, NULL, },
-  { "PR%, % in 1 - 15", 22, 1, 2, -1, NULL, },
-  { "PR%, % in 1 - 15", 22, 1, 2, -1, NULL, },
-  { "PR%, % in 16 - 62", 23, 1, 0, -1, NULL, },
-  { "PR%, % in 16 - 62", 23, 1, 0, -1, NULL, },
-  { "PR%, % in 16 - 62", 23, 1, 2, -1, NULL, },
-  { "PR%, % in 16 - 62", 23, 1, 2, -1, NULL, },
-  { "PR63", 24, 1, 0, -1, NULL, },
-  { "PR63", 24, 1, 0, -1, NULL, },
-  { "PR63", 24, 1, 2, -1, NULL, },
-  { "PR63", 24, 1, 2, -1, NULL, },
-  { "PSR.ac", 28, 1, 2, 3, NULL, },
-  { "PSR.be", 28, 1, 2, 1, NULL, },
-  { "PSR.bn", 28, 1, 2, 44, NULL, },
-  { "PSR.cpl", 28, 1, 2, 32, NULL, },
-  { "PSR.da", 28, 1, 2, 38, NULL, },
-  { "PSR.db", 28, 1, 2, 24, NULL, },
-  { "PSR.dd", 28, 1, 2, 39, NULL, },
-  { "PSR.dfh", 28, 1, 2, 19, NULL, },
-  { "PSR.dfl", 28, 1, 2, 18, NULL, },
-  { "PSR.di", 28, 1, 2, 22, NULL, },
-  { "PSR.dt", 28, 1, 2, 17, NULL, },
-  { "PSR.ed", 28, 1, 2, 43, NULL, },
-  { "PSR.i", 28, 1, 2, 14, NULL, },
-  { "PSR.ia", 28, 1, 2, 14, NULL, },
-  { "PSR.ic", 28, 1, 2, 13, NULL, },
-  { "PSR.id", 28, 1, 2, 14, NULL, },
-  { "PSR.is", 28, 1, 2, 14, NULL, },
-  { "PSR.it", 28, 1, 2, 14, NULL, },
-  { "PSR.lp", 28, 1, 2, 25, NULL, },
-  { "PSR.mc", 28, 1, 2, 35, NULL, },
-  { "PSR.mfh", 28, 1, 0, 5, NULL, },
-  { "PSR.mfh", 28, 1, 2, 5, NULL, },
-  { "PSR.mfh", 28, 1, 2, 5, NULL, },
-  { "PSR.mfl", 28, 1, 0, 4, NULL, },
-  { "PSR.mfl", 28, 1, 2, 4, NULL, },
-  { "PSR.mfl", 28, 1, 2, 4, NULL, },
-  { "PSR.pk", 28, 1, 2, 15, NULL, },
-  { "PSR.pp", 28, 1, 2, 21, NULL, },
-  { "PSR.ri", 28, 1, 2, 41, NULL, },
-  { "PSR.rt", 28, 1, 2, 27, NULL, },
-  { "PSR.si", 28, 1, 2, 23, NULL, },
-  { "PSR.sp", 28, 1, 2, 20, NULL, },
-  { "PSR.ss", 28, 1, 2, 40, NULL, },
-  { "PSR.tb", 28, 1, 2, 26, NULL, },
-  { "PSR.up", 28, 1, 2, 2, NULL, },
-  { "PSR.vm", 28, 1, 2, 46, NULL, },
-  { "RR#", 25, 1, 2, -1, NULL, },
-  { "RSE", 29, 1, 2, -1, NULL, },
-  { "PR63", 24, 2, 6, -1, NULL, },
-};
-
-static const unsigned short dep0[] = {
-  97, 282, 2140, 2327, 
-};
-
-static const unsigned short dep1[] = {
-  40, 41, 97, 158, 162, 175, 185, 282, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 
-  2327, 4135, 20616, 
-};
-
-static const unsigned short dep2[] = {
-  97, 282, 2166, 2167, 2169, 2170, 2172, 2173, 2175, 2344, 2347, 2348, 2351, 
-  2352, 2355, 2356, 
-};
-
-static const unsigned short dep3[] = {
-  40, 41, 97, 158, 162, 175, 185, 282, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 
-  2344, 2347, 2348, 2351, 2352, 2355, 2356, 4135, 20616, 
-};
-
-static const unsigned short dep4[] = {
-  97, 282, 22646, 22647, 22649, 22650, 22652, 22653, 22655, 22824, 22827, 22828, 
-  22831, 22832, 22835, 22836, 
-};
-
-static const unsigned short dep5[] = {
-  40, 41, 97, 158, 162, 175, 185, 282, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 
-  4135, 20616, 22824, 22827, 22828, 22831, 22832, 22835, 22836, 
-};
-
-static const unsigned short dep6[] = {
-  97, 282, 2166, 2167, 2169, 2170, 2172, 2173, 2175, 2344, 2345, 2347, 2349, 
-  2351, 2353, 2355, 
-};
-
-static const unsigned short dep7[] = {
-  40, 41, 97, 158, 162, 175, 185, 282, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 
-  2344, 2345, 2348, 2349, 2352, 2353, 2356, 4135, 20616, 
-};
-
-static const unsigned short dep8[] = {
-  97, 282, 2166, 2167, 2169, 2170, 2172, 2173, 2175, 2344, 2346, 2348, 2350, 
-  2352, 2354, 2356, 
-};
-
-static const unsigned short dep9[] = {
-  40, 41, 97, 158, 162, 175, 185, 282, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 
-  2344, 2346, 2347, 2350, 2351, 2354, 2355, 4135, 20616, 
-};
-
-static const unsigned short dep10[] = {
-  97, 282, 2166, 2167, 2169, 2170, 2172, 2173, 2175, 2344, 2345, 2346, 2347, 
-  2348, 2349, 2350, 2351, 2352, 2353, 2354, 2355, 2356, 
-};
-
-static const unsigned short dep11[] = {
-  40, 41, 97, 158, 162, 175, 185, 282, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 
-  2344, 2345, 2346, 2347, 2348, 2349, 2350, 2351, 2352, 2353, 2354, 2355, 2356, 
-  4135, 20616, 
-};
-
-static const unsigned short dep12[] = {
-  97, 282, 2395, 
-};
-
-static const unsigned short dep13[] = {
-  40, 41, 97, 158, 162, 164, 175, 185, 186, 188, 282, 2082, 2083, 2166, 2168, 
-  2169, 2171, 2172, 2174, 2175, 4135, 
-};
-
-static const unsigned short dep14[] = {
-  97, 163, 282, 325, 2395, 28866, 29018, 
-};
-
-static const unsigned short dep15[] = {
-  1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 
-  22, 23, 24, 25, 26, 28, 29, 30, 31, 32, 33, 40, 41, 97, 150, 152, 158, 162, 
-  164, 175, 185, 186, 188, 282, 325, 2082, 2083, 2166, 2168, 2169, 2171, 2172, 
-  2174, 2175, 4135, 28866, 29018, 
-};
-
-static const unsigned short dep16[] = {
-  1, 6, 40, 97, 137, 196, 201, 241, 282, 312, 2395, 28866, 29018, 
-};
-
-static const unsigned short dep17[] = {
-  1, 25, 27, 38, 40, 41, 97, 158, 162, 164, 166, 167, 175, 185, 186, 188, 196, 
-  201, 241, 282, 312, 2082, 2083, 2166, 2168, 2169, 2171, 2172, 2174, 2175, 
-  4135, 28866, 29018, 
-};
-
-static const unsigned short dep18[] = {
-  1, 40, 51, 97, 196, 241, 248, 282, 28866, 29018, 
-};
-
-static const unsigned short dep19[] = {
-  1, 38, 40, 41, 97, 158, 160, 161, 162, 175, 185, 190, 191, 196, 241, 248, 
-  282, 4135, 28866, 29018, 
-};
-
-static const unsigned short dep20[] = {
-  40, 97, 241, 282, 
-};
-
-static const unsigned short dep21[] = {
-  97, 158, 162, 175, 185, 241, 282, 
-};
-
-static const unsigned short dep22[] = {
-  1, 40, 97, 131, 135, 136, 138, 139, 142, 143, 146, 149, 152, 155, 156, 157, 
-  158, 161, 162, 163, 164, 167, 168, 169, 170, 173, 174, 175, 178, 181, 184, 
-  185, 188, 189, 191, 196, 241, 282, 309, 310, 311, 312, 313, 314, 315, 316, 
-  317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 330, 331, 333, 
-  334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 28866, 29018, 
-};
-
-static const unsigned short dep23[] = {
-  1, 38, 40, 41, 50, 51, 55, 58, 73, 97, 137, 138, 158, 162, 175, 185, 190, 
-  191, 196, 241, 282, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 
-  320, 321, 322, 323, 324, 325, 326, 327, 328, 330, 331, 333, 334, 335, 336, 
-  337, 338, 339, 340, 341, 342, 343, 344, 4135, 28866, 29018, 
-};
-
-static const unsigned short dep24[] = {
-  97, 136, 282, 311, 
-};
-
-static const unsigned short dep25[] = {
-  97, 137, 138, 158, 162, 175, 185, 190, 191, 282, 311, 
-};
-
-static const unsigned short dep26[] = {
-  97, 137, 282, 312, 
-};
-
-static const unsigned short dep27[] = {
-  25, 26, 97, 98, 101, 105, 108, 137, 138, 158, 162, 164, 175, 185, 282, 312, 
-  
-};
-
-static const unsigned short dep28[] = {
-  97, 190, 282, 344, 
-};
-
-static const unsigned short dep29[] = {
-  97, 98, 101, 105, 108, 137, 138, 158, 162, 164, 175, 185, 282, 344, 
-};
-
-static const unsigned short dep30[] = {
-  40, 41, 97, 158, 162, 175, 185, 282, 2166, 2168, 2169, 2171, 2172, 2174, 2175, 
-  4135, 
-};
-
-static const unsigned short dep31[] = {
-  1, 25, 40, 97, 196, 228, 229, 241, 282, 2082, 2285, 2288, 2395, 28866, 29018, 
-  
-};
-
-static const unsigned short dep32[] = {
-  1, 6, 38, 40, 41, 97, 137, 138, 158, 162, 164, 175, 185, 186, 188, 196, 228, 
-  230, 241, 282, 2082, 2083, 2166, 2168, 2169, 2171, 2172, 2174, 2175, 2286, 
-  2288, 4135, 28866, 29018, 
-};
-
-static const unsigned short dep33[] = {
-  97, 282, 
-};
-
-static const unsigned short dep34[] = {
-  97, 158, 162, 175, 185, 282, 2082, 2084, 
-};
-
-static const unsigned short dep35[] = {
-  40, 41, 97, 158, 162, 164, 175, 185, 186, 188, 282, 2166, 2168, 2169, 2171, 
-  2172, 2174, 2175, 4135, 
-};
-
-static const unsigned short dep36[] = {
-  6, 37, 38, 39, 97, 125, 126, 201, 241, 282, 307, 308, 2395, 
-};
-
-static const unsigned short dep37[] = {
-  6, 37, 40, 41, 97, 158, 162, 164, 175, 185, 186, 188, 201, 241, 282, 307, 
-  308, 347, 2166, 2168, 2169, 2171, 2172, 2174, 2175, 4135, 
-};
-
-static const unsigned short dep38[] = {
-  24, 97, 227, 282, 2395, 
-};
-
-static const unsigned short dep39[] = {
-  24, 40, 41, 97, 158, 162, 164, 175, 185, 186, 188, 227, 282, 2166, 2168, 2169, 
-  2171, 2172, 2174, 2175, 4135, 
-};
-
-static const unsigned short dep40[] = {
-  6, 24, 37, 38, 39, 97, 125, 126, 201, 227, 241, 282, 307, 308, 2395, 
-};
-
-static const unsigned short dep41[] = {
-  6, 24, 37, 40, 41, 97, 158, 162, 164, 175, 185, 186, 188, 201, 227, 241, 282, 
-  307, 308, 347, 2166, 2168, 2169, 2171, 2172, 2174, 2175, 4135, 
-};
-
-static const unsigned short dep42[] = {
-  1, 6, 38, 40, 41, 97, 137, 138, 158, 162, 164, 175, 185, 186, 188, 196, 228, 
-  230, 241, 282, 2166, 2168, 2169, 2171, 2172, 2174, 2175, 2286, 2288, 4135, 
-  28866, 29018, 
-};
-
-static const unsigned short dep43[] = {
-  97, 158, 162, 175, 185, 282, 
-};
-
-static const unsigned short dep44[] = {
-  15, 97, 210, 211, 282, 2136, 2325, 18601, 18602, 18761, 18762, 18764, 18765, 
-  22646, 22647, 22648, 22650, 22651, 22653, 22654, 22824, 22827, 22828, 22831, 
-  22832, 22835, 22836, 
-};
-
-static const unsigned short dep45[] = {
-  11, 19, 20, 40, 41, 97, 158, 162, 175, 185, 210, 212, 282, 2135, 2136, 2137, 
-  2166, 2167, 2170, 2173, 2325, 4135, 16528, 16530, 16531, 16533, 18761, 18763, 
-  18764, 18766, 22824, 22827, 22828, 22831, 22832, 22835, 22836, 
-};
-
-static const unsigned short dep46[] = {
-  15, 16, 17, 18, 97, 210, 211, 213, 214, 216, 217, 219, 220, 282, 2136, 2325, 
-  18601, 18602, 18761, 18762, 18764, 18765, 22646, 22647, 22648, 22650, 22651, 
-  22653, 22654, 22824, 22827, 22828, 22831, 22832, 22835, 22836, 
-};
-
-static const unsigned short dep47[] = {
-  11, 12, 13, 14, 19, 20, 40, 41, 97, 158, 162, 175, 185, 210, 212, 213, 215, 
-  216, 218, 219, 221, 282, 2135, 2136, 2137, 2166, 2167, 2170, 2173, 2325, 4135, 
-  16528, 16530, 16531, 16533, 18761, 18763, 18764, 18766, 22824, 22827, 22828, 
-  22831, 22832, 22835, 22836, 
-};
-
-static const unsigned short dep48[] = {
-  16, 97, 213, 214, 282, 2136, 2325, 18601, 18602, 18761, 18762, 18764, 18765, 
-  22646, 22647, 22648, 22650, 22651, 22653, 22654, 22824, 22827, 22828, 22831, 
-  22832, 22835, 22836, 
-};
-
-static const unsigned short dep49[] = {
-  12, 19, 20, 40, 41, 97, 158, 162, 175, 185, 213, 215, 282, 2135, 2136, 2137, 
-  2166, 2167, 2170, 2173, 2325, 4135, 16528, 16530, 16531, 16533, 18761, 18763, 
-  18764, 18766, 22824, 22827, 22828, 22831, 22832, 22835, 22836, 
-};
-
-static const unsigned short dep50[] = {
-  17, 97, 216, 217, 282, 2136, 2325, 18601, 18602, 18761, 18762, 18764, 18765, 
-  22646, 22647, 22648, 22650, 22651, 22653, 22654, 22824, 22827, 22828, 22831, 
-  22832, 22835, 22836, 
-};
-
-static const unsigned short dep51[] = {
-  13, 19, 20, 40, 41, 97, 158, 162, 175, 185, 216, 218, 282, 2135, 2136, 2137, 
-  2166, 2167, 2170, 2173, 2325, 4135, 16528, 16530, 16531, 16533, 18761, 18763, 
-  18764, 18766, 22824, 22827, 22828, 22831, 22832, 22835, 22836, 
-};
-
-static const unsigned short dep52[] = {
-  18, 97, 219, 220, 282, 2136, 2325, 18601, 18602, 18761, 18762, 18764, 18765, 
-  22646, 22647, 22648, 22650, 22651, 22653, 22654, 22824, 22827, 22828, 22831, 
-  22832, 22835, 22836, 
-};
-
-static const unsigned short dep53[] = {
-  14, 19, 20, 40, 41, 97, 158, 162, 175, 185, 219, 221, 282, 2135, 2136, 2137, 
-  2166, 2167, 2170, 2173, 2325, 4135, 16528, 16530, 16531, 16533, 18761, 18763, 
-  18764, 18766, 22824, 22827, 22828, 22831, 22832, 22835, 22836, 
-};
-
-static const unsigned short dep54[] = {
-  15, 97, 210, 211, 282, 2136, 2325, 18601, 18602, 18761, 18762, 18764, 18765, 
-  
-};
-
-static const unsigned short dep55[] = {
-  11, 19, 20, 40, 41, 97, 158, 162, 175, 185, 210, 212, 282, 2135, 2136, 2137, 
-  2166, 2167, 2170, 2173, 2325, 4135, 16528, 16530, 16531, 16533, 18761, 18763, 
-  18764, 18766, 
-};
-
-static const unsigned short dep56[] = {
-  15, 16, 17, 18, 97, 210, 211, 213, 214, 216, 217, 219, 220, 282, 2136, 2325, 
-  18601, 18602, 18761, 18762, 18764, 18765, 
-};
-
-static const unsigned short dep57[] = {
-  11, 12, 13, 14, 19, 20, 40, 41, 97, 158, 162, 175, 185, 210, 212, 213, 215, 
-  216, 218, 219, 221, 282, 2135, 2136, 2137, 2166, 2167, 2170, 2173, 2325, 4135, 
-  16528, 16530, 16531, 16533, 18761, 18763, 18764, 18766, 
-};
-
-static const unsigned short dep58[] = {
-  16, 97, 213, 214, 282, 2136, 2325, 18601, 18602, 18761, 18762, 18764, 18765, 
-  
-};
-
-static const unsigned short dep59[] = {
-  12, 19, 20, 40, 41, 97, 158, 162, 175, 185, 213, 215, 282, 2135, 2136, 2137, 
-  2166, 2167, 2170, 2173, 2325, 4135, 16528, 16530, 16531, 16533, 18761, 18763, 
-  18764, 18766, 
-};
-
-static const unsigned short dep60[] = {
-  17, 97, 216, 217, 282, 2136, 2325, 18601, 18602, 18761, 18762, 18764, 18765, 
-  
-};
-
-static const unsigned short dep61[] = {
-  13, 19, 20, 40, 41, 97, 158, 162, 175, 185, 216, 218, 282, 2135, 2136, 2137, 
-  2166, 2167, 2170, 2173, 2325, 4135, 16528, 16530, 16531, 16533, 18761, 18763, 
-  18764, 18766, 
-};
-
-static const unsigned short dep62[] = {
-  18, 97, 219, 220, 282, 2136, 2325, 18601, 18602, 18761, 18762, 18764, 18765, 
-  
-};
-
-static const unsigned short dep63[] = {
-  14, 19, 20, 40, 41, 97, 158, 162, 175, 185, 219, 221, 282, 2135, 2136, 2137, 
-  2166, 2167, 2170, 2173, 2325, 4135, 16528, 16530, 16531, 16533, 18761, 18763, 
-  18764, 18766, 
-};
-
-static const unsigned short dep64[] = {
-  97, 282, 2136, 2325, 18601, 18602, 18761, 18762, 18764, 18765, 
-};
-
-static const unsigned short dep65[] = {
-  40, 41, 97, 158, 162, 175, 185, 282, 2135, 2136, 2137, 2166, 2167, 2170, 2173, 
-  2325, 4135, 16528, 16530, 16531, 16533, 18761, 18763, 18764, 18766, 
-};
-
-static const unsigned short dep66[] = {
-  11, 97, 206, 282, 
-};
-
-static const unsigned short dep67[] = {
-  11, 40, 41, 97, 158, 162, 175, 185, 206, 282, 2166, 2167, 2170, 2173, 4135, 
-  
-};
-
-static const unsigned short dep68[] = {
-  11, 40, 41, 97, 158, 162, 175, 185, 282, 2166, 2167, 2170, 2173, 4135, 
-};
-
-static const unsigned short dep69[] = {
-  12, 97, 207, 282, 
-};
-
-static const unsigned short dep70[] = {
-  11, 40, 41, 97, 158, 162, 175, 185, 207, 282, 2166, 2167, 2170, 2173, 4135, 
-  
-};
-
-static const unsigned short dep71[] = {
-  13, 97, 208, 282, 
-};
-
-static const unsigned short dep72[] = {
-  11, 40, 41, 97, 158, 162, 175, 185, 208, 282, 2166, 2167, 2170, 2173, 4135, 
-  
-};
-
-static const unsigned short dep73[] = {
-  14, 97, 209, 282, 
-};
-
-static const unsigned short dep74[] = {
-  11, 40, 41, 97, 158, 162, 175, 185, 209, 282, 2166, 2167, 2170, 2173, 4135, 
-  
-};
-
-static const unsigned short dep75[] = {
-  15, 97, 211, 212, 282, 
-};
-
-static const unsigned short dep76[] = {
-  40, 41, 97, 158, 162, 175, 185, 211, 212, 282, 2166, 2167, 2170, 2173, 4135, 
-  
-};
-
-static const unsigned short dep77[] = {
-  40, 41, 97, 158, 162, 175, 185, 282, 2166, 2167, 2170, 2173, 4135, 
-};
-
-static const unsigned short dep78[] = {
-  16, 97, 214, 215, 282, 
-};
-
-static const unsigned short dep79[] = {
-  40, 41, 97, 158, 162, 175, 185, 214, 215, 282, 2166, 2167, 2170, 2173, 4135, 
-  
-};
-
-static const unsigned short dep80[] = {
-  17, 97, 217, 218, 282, 
-};
-
-static const unsigned short dep81[] = {
-  40, 41, 97, 158, 162, 175, 185, 217, 218, 282, 2166, 2167, 2170, 2173, 4135, 
-  
-};
-
-static const unsigned short dep82[] = {
-  18, 97, 220, 221, 282, 
-};
-
-static const unsigned short dep83[] = {
-  40, 41, 97, 158, 162, 175, 185, 220, 221, 282, 2166, 2167, 2170, 2173, 4135, 
-  
-};
-
-static const unsigned short dep84[] = {
-  15, 19, 20, 40, 41, 97, 158, 162, 164, 175, 185, 186, 188, 282, 2166, 2167, 
-  2170, 2173, 4135, 
-};
-
-static const unsigned short dep85[] = {
-  15, 16, 19, 20, 40, 41, 97, 158, 162, 164, 175, 185, 186, 188, 282, 2166, 
-  2167, 2170, 2173, 4135, 
-};
-
-static const unsigned short dep86[] = {
-  15, 17, 19, 20, 40, 41, 97, 158, 162, 164, 175, 185, 186, 188, 282, 2166, 
-  2167, 2170, 2173, 4135, 
-};
-
-static const unsigned short dep87[] = {
-  15, 18, 19, 20, 40, 41, 97, 158, 162, 164, 175, 185, 186, 188, 282, 2166, 
-  2167, 2170, 2173, 4135, 
-};
-
-static const unsigned short dep88[] = {
-  15, 97, 210, 211, 282, 
-};
-
-static const unsigned short dep89[] = {
-  11, 19, 20, 40, 41, 97, 158, 162, 175, 185, 210, 212, 282, 2166, 2167, 2170, 
-  2173, 4135, 
-};
-
-static const unsigned short dep90[] = {
-  15, 16, 17, 18, 97, 210, 211, 213, 214, 216, 217, 219, 220, 282, 
-};
-
-static const unsigned short dep91[] = {
-  11, 12, 13, 14, 19, 20, 40, 41, 97, 158, 162, 175, 185, 210, 212, 213, 215, 
-  216, 218, 219, 221, 282, 2166, 2167, 2170, 2173, 4135, 
-};
-
-static const unsigned short dep92[] = {
-  16, 97, 213, 214, 282, 
-};
-
-static const unsigned short dep93[] = {
-  12, 19, 20, 40, 41, 97, 158, 162, 175, 185, 213, 215, 282, 2166, 2167, 2170, 
-  2173, 4135, 
-};
-
-static const unsigned short dep94[] = {
-  17, 97, 216, 217, 282, 
-};
-
-static const unsigned short dep95[] = {
-  13, 19, 20, 40, 41, 97, 158, 162, 175, 185, 216, 218, 282, 2166, 2167, 2170, 
-  2173, 4135, 
-};
-
-static const unsigned short dep96[] = {
-  18, 97, 219, 220, 282, 
-};
-
-static const unsigned short dep97[] = {
-  14, 19, 20, 40, 41, 97, 158, 162, 175, 185, 219, 221, 282, 2166, 2167, 2170, 
-  2173, 4135, 
-};
-
-static const unsigned short dep98[] = {
-  15, 97, 210, 211, 282, 2166, 2167, 2168, 2170, 2171, 2173, 2174, 2344, 2347, 
-  2348, 2351, 2352, 2355, 2356, 
-};
-
-static const unsigned short dep99[] = {
-  11, 19, 20, 40, 41, 97, 158, 162, 175, 185, 210, 212, 282, 2135, 2136, 2137, 
-  2166, 2167, 2170, 2173, 2344, 2347, 2348, 2351, 2352, 2355, 2356, 4135, 16528, 
-  16530, 16531, 16533, 
-};
-
-static const unsigned short dep100[] = {
-  15, 16, 17, 18, 97, 210, 211, 213, 214, 216, 217, 219, 220, 282, 2166, 2167, 
-  2168, 2170, 2171, 2173, 2174, 2344, 2347, 2348, 2351, 2352, 2355, 2356, 
-};
-
-static const unsigned short dep101[] = {
-  11, 12, 13, 14, 19, 20, 40, 41, 97, 158, 162, 175, 185, 210, 212, 213, 215, 
-  216, 218, 219, 221, 282, 2135, 2136, 2137, 2166, 2167, 2170, 2173, 2344, 2347, 
-  2348, 2351, 2352, 2355, 2356, 4135, 16528, 16530, 16531, 16533, 
-};
-
-static const unsigned short dep102[] = {
-  16, 97, 213, 214, 282, 2166, 2167, 2168, 2170, 2171, 2173, 2174, 2344, 2347, 
-  2348, 2351, 2352, 2355, 2356, 
-};
-
-static const unsigned short dep103[] = {
-  12, 19, 20, 40, 41, 97, 158, 162, 175, 185, 213, 215, 282, 2135, 2136, 2137, 
-  2166, 2167, 2170, 2173, 2344, 2347, 2348, 2351, 2352, 2355, 2356, 4135, 16528, 
-  16530, 16531, 16533, 
-};
-
-static const unsigned short dep104[] = {
-  17, 97, 216, 217, 282, 2166, 2167, 2168, 2170, 2171, 2173, 2174, 2344, 2347, 
-  2348, 2351, 2352, 2355, 2356, 
-};
-
-static const unsigned short dep105[] = {
-  13, 19, 20, 40, 41, 97, 158, 162, 175, 185, 216, 218, 282, 2135, 2136, 2137, 
-  2166, 2167, 2170, 2173, 2344, 2347, 2348, 2351, 2352, 2355, 2356, 4135, 16528, 
-  16530, 16531, 16533, 
-};
-
-static const unsigned short dep106[] = {
-  18, 97, 219, 220, 282, 2166, 2167, 2168, 2170, 2171, 2173, 2174, 2344, 2347, 
-  2348, 2351, 2352, 2355, 2356, 
-};
-
-static const unsigned short dep107[] = {
-  14, 19, 20, 40, 41, 97, 158, 162, 175, 185, 219, 221, 282, 2135, 2136, 2137, 
-  2166, 2167, 2170, 2173, 2344, 2347, 2348, 2351, 2352, 2355, 2356, 4135, 16528, 
-  16530, 16531, 16533, 
-};
-
-static const unsigned short dep108[] = {
-  15, 97, 210, 211, 282, 22646, 22647, 22648, 22650, 22651, 22653, 22654, 22824, 
-  22827, 22828, 22831, 22832, 22835, 22836, 
-};
-
-static const unsigned short dep109[] = {
-  11, 19, 20, 40, 41, 97, 158, 162, 175, 185, 210, 212, 282, 2135, 2136, 2137, 
-  2166, 2167, 2170, 2173, 4135, 16528, 16530, 16531, 16533, 22824, 22827, 22828, 
-  22831, 22832, 22835, 22836, 
-};
-
-static const unsigned short dep110[] = {
-  15, 16, 17, 18, 97, 210, 211, 213, 214, 216, 217, 219, 220, 282, 22646, 22647, 
-  22648, 22650, 22651, 22653, 22654, 22824, 22827, 22828, 22831, 22832, 22835, 
-  22836, 
-};
-
-static const unsigned short dep111[] = {
-  11, 12, 13, 14, 19, 20, 40, 41, 97, 158, 162, 175, 185, 210, 212, 213, 215, 
-  216, 218, 219, 221, 282, 2135, 2136, 2137, 2166, 2167, 2170, 2173, 4135, 16528, 
-  16530, 16531, 16533, 22824, 22827, 22828, 22831, 22832, 22835, 22836, 
-};
-
-static const unsigned short dep112[] = {
-  16, 97, 213, 214, 282, 22646, 22647, 22648, 22650, 22651, 22653, 22654, 22824, 
-  22827, 22828, 22831, 22832, 22835, 22836, 
-};
-
-static const unsigned short dep113[] = {
-  12, 19, 20, 40, 41, 97, 158, 162, 175, 185, 213, 215, 282, 2135, 2136, 2137, 
-  2166, 2167, 2170, 2173, 4135, 16528, 16530, 16531, 16533, 22824, 22827, 22828, 
-  22831, 22832, 22835, 22836, 
-};
-
-static const unsigned short dep114[] = {
-  17, 97, 216, 217, 282, 22646, 22647, 22648, 22650, 22651, 22653, 22654, 22824, 
-  22827, 22828, 22831, 22832, 22835, 22836, 
-};
-
-static const unsigned short dep115[] = {
-  13, 19, 20, 40, 41, 97, 158, 162, 175, 185, 216, 218, 282, 2135, 2136, 2137, 
-  2166, 2167, 2170, 2173, 4135, 16528, 16530, 16531, 16533, 22824, 22827, 22828, 
-  22831, 22832, 22835, 22836, 
-};
-
-static const unsigned short dep116[] = {
-  18, 97, 219, 220, 282, 22646, 22647, 22648, 22650, 22651, 22653, 22654, 22824, 
-  22827, 22828, 22831, 22832, 22835, 22836, 
-};
-
-static const unsigned short dep117[] = {
-  14, 19, 20, 40, 41, 97, 158, 162, 175, 185, 219, 221, 282, 2135, 2136, 2137, 
-  2166, 2167, 2170, 2173, 4135, 16528, 16530, 16531, 16533, 22824, 22827, 22828, 
-  22831, 22832, 22835, 22836, 
-};
-
-static const unsigned short dep118[] = {
-  97, 282, 2166, 2167, 2168, 2170, 2171, 2173, 2174, 2344, 2347, 2348, 2351, 
-  2352, 2355, 2356, 
-};
-
-static const unsigned short dep119[] = {
-  40, 41, 97, 158, 162, 175, 185, 282, 2135, 2136, 2137, 2166, 2167, 2170, 2173, 
-  2344, 2347, 2348, 2351, 2352, 2355, 2356, 4135, 16528, 16530, 16531, 16533, 
-  
-};
-
-static const unsigned short dep120[] = {
-  97, 282, 22646, 22647, 22648, 22650, 22651, 22653, 22654, 22824, 22827, 22828, 
-  22831, 22832, 22835, 22836, 
-};
-
-static const unsigned short dep121[] = {
-  40, 41, 97, 158, 162, 175, 185, 282, 2135, 2136, 2137, 2166, 2167, 2170, 2173, 
-  4135, 16528, 16530, 16531, 16533, 22824, 22827, 22828, 22831, 22832, 22835, 
-  22836, 
-};
-
-static const unsigned short dep122[] = {
-  19, 20, 40, 41, 97, 158, 162, 175, 185, 282, 2135, 2136, 2137, 2166, 2167, 
-  2170, 2173, 2325, 4135, 16528, 16530, 16531, 16533, 18761, 18763, 18764, 18766, 
-  
-};
-
-static const unsigned short dep123[] = {
-  40, 41, 97, 158, 162, 164, 175, 185, 186, 188, 282, 2138, 2139, 2140, 2166, 
-  2167, 2170, 2173, 4135, 20616, 
-};
-
-static const unsigned short dep124[] = {
-  97, 282, 2083, 2084, 2286, 2287, 
-};
-
-static const unsigned short dep125[] = {
-  40, 41, 97, 158, 162, 175, 185, 282, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 
-  2285, 2287, 4135, 20616, 
-};
-
-static const unsigned short dep126[] = {
-  40, 41, 97, 158, 162, 175, 185, 282, 2082, 2084, 2166, 2167, 2170, 2173, 2327, 
-  4135, 20616, 
-};
-
-static const unsigned short dep127[] = {
-  97, 282, 14455, 14457, 14458, 14460, 14461, 14463, 14635, 14636, 14639, 14640, 
-  14643, 14644, 
-};
-
-static const unsigned short dep128[] = {
-  40, 41, 97, 158, 162, 175, 185, 282, 2138, 2139, 2140, 4135, 14635, 14636, 
-  14639, 14640, 14643, 14644, 20616, 24694, 24695, 24698, 24701, 
-};
-
-static const unsigned short dep129[] = {
-  97, 122, 124, 125, 127, 282, 303, 304, 307, 308, 
-};
-
-static const unsigned short dep130[] = {
-  40, 41, 97, 158, 162, 175, 185, 282, 303, 304, 307, 308, 4135, 24694, 24695, 
-  24698, 24701, 
-};
-
-static const unsigned short dep131[] = {
-  40, 41, 97, 158, 162, 175, 185, 282, 2166, 2167, 2170, 2173, 2327, 4135, 20616, 
-  
-};
-
-static const unsigned short dep132[] = {
-  40, 41, 97, 119, 122, 125, 158, 162, 175, 185, 282, 2327, 4135, 20616, 24694, 
-  
-};
-
-static const unsigned short dep133[] = {
-  6, 24, 26, 27, 97, 201, 227, 230, 282, 2081, 2284, 
-};
-
-static const unsigned short dep134[] = {
-  40, 41, 97, 158, 162, 175, 185, 201, 227, 229, 282, 2138, 2139, 2140, 2166, 
-  2167, 2170, 2173, 2284, 4135, 20616, 
-};
-
-static const unsigned short dep135[] = {
-  6, 24, 25, 26, 40, 41, 97, 158, 162, 175, 185, 282, 2081, 2166, 2167, 2170, 
-  2173, 2327, 4135, 20616, 
-};
-
-static const unsigned short dep136[] = {
-  40, 41, 97, 158, 162, 175, 185, 282, 2166, 2167, 2170, 2173, 2344, 2347, 2348, 
-  2351, 2352, 2355, 2356, 4135, 
-};
-
-static const unsigned short dep137[] = {
-  40, 41, 97, 158, 162, 175, 185, 282, 2166, 2167, 2170, 2173, 4135, 22824, 
-  22827, 22828, 22831, 22832, 22835, 22836, 
-};
-
-static const unsigned short dep138[] = {
-  40, 41, 97, 158, 162, 175, 185, 282, 2166, 2167, 2170, 2173, 2344, 2345, 2348, 
-  2349, 2352, 2353, 2356, 4135, 
-};
-
-static const unsigned short dep139[] = {
-  40, 41, 97, 158, 162, 175, 185, 282, 2166, 2167, 2170, 2173, 2344, 2346, 2347, 
-  2350, 2351, 2354, 2355, 4135, 
-};
-
-static const unsigned short dep140[] = {
-  40, 41, 97, 158, 162, 175, 185, 282, 2166, 2167, 2170, 2173, 2344, 2345, 2346, 
-  2347, 2348, 2349, 2350, 2351, 2352, 2353, 2354, 2355, 2356, 4135, 
-};
-
-static const unsigned short dep141[] = {
-  0, 40, 41, 97, 158, 162, 164, 175, 185, 186, 188, 282, 2166, 2167, 2170, 2173, 
-  4135, 
-};
-
-static const unsigned short dep142[] = {
-  0, 97, 195, 282, 
-};
-
-static const unsigned short dep143[] = {
-  0, 40, 41, 97, 158, 162, 164, 175, 185, 186, 188, 195, 282, 2166, 2167, 2170, 
-  2173, 4135, 
-};
-
-static const unsigned short dep144[] = {
-  40, 41, 97, 158, 162, 175, 185, 195, 282, 2166, 2167, 2170, 2173, 4135, 
-};
-
-static const unsigned short dep145[] = {
-  2, 28, 97, 197, 231, 282, 28866, 29018, 
-};
-
-static const unsigned short dep146[] = {
-  1, 2, 28, 29, 97, 158, 162, 175, 177, 178, 185, 197, 231, 282, 28866, 29018, 
-  
-};
-
-static const unsigned short dep147[] = {
-  1, 28, 29, 38, 40, 41, 97, 158, 162, 175, 177, 178, 185, 197, 231, 282, 4135, 
-  28866, 29018, 
-};
-
-static const unsigned short dep148[] = {
-  0, 40, 41, 97, 158, 162, 175, 185, 195, 282, 2166, 2167, 2170, 2173, 4135, 
-  
-};
-
-static const unsigned short dep149[] = {
-  1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 
-  28, 29, 30, 31, 97, 196, 197, 198, 199, 200, 202, 203, 204, 205, 206, 207, 
-  208, 209, 211, 212, 214, 215, 217, 218, 220, 221, 222, 223, 224, 225, 231, 
-  232, 233, 234, 282, 2071, 2081, 2274, 2284, 28866, 29018, 
-};
-
-static const unsigned short dep150[] = {
-  29, 40, 41, 97, 137, 138, 158, 162, 175, 185, 190, 191, 196, 197, 198, 199, 
-  200, 202, 203, 204, 205, 206, 207, 208, 209, 211, 212, 214, 215, 217, 218, 
-  220, 221, 222, 223, 224, 225, 231, 232, 233, 234, 282, 2138, 2139, 2140, 2166, 
-  2167, 2170, 2173, 2274, 2284, 4135, 20616, 28866, 29018, 
-};
-
-static const unsigned short dep151[] = {
-  97, 282, 14464, 14466, 14468, 14470, 14505, 14506, 14525, 14645, 14646, 14666, 
-  14667, 14669, 14670, 14679, 
-};
-
-static const unsigned short dep152[] = {
-  40, 41, 97, 158, 162, 175, 183, 184, 185, 282, 2166, 2167, 2170, 2173, 4135, 
-  14645, 14646, 14666, 14667, 14669, 14670, 14679, 
-};
-
-static const unsigned short dep153[] = {
-  14464, 14466, 14468, 14470, 14505, 14506, 14525, 14645, 14646, 14666, 14667, 
-  14669, 14670, 14679, 
-};
-
-static const unsigned short dep154[] = {
-  183, 184, 14645, 14646, 14666, 14667, 14669, 14670, 14679, 
-};
-
-static const unsigned short dep155[] = {
-  97, 282, 14465, 14466, 14469, 14470, 14480, 14481, 14483, 14484, 14486, 14487, 
-  14489, 14490, 14493, 14495, 14496, 14505, 14506, 14507, 14508, 14510, 14515, 
-  14516, 14518, 14519, 14525, 14645, 14646, 14652, 14653, 14654, 14655, 14657, 
-  14659, 14666, 14667, 14669, 14670, 14671, 14672, 14675, 14676, 14679, 
-};
-
-static const unsigned short dep156[] = {
-  40, 41, 97, 137, 138, 158, 162, 175, 185, 190, 191, 282, 2166, 2167, 2170, 
-  2173, 4135, 14645, 14646, 14652, 14653, 14654, 14655, 14657, 14659, 14666, 
-  14667, 14669, 14670, 14671, 14672, 14675, 14676, 14679, 34888, 
-};
-
-static const unsigned short dep157[] = {
-  40, 41, 97, 137, 138, 158, 162, 175, 185, 190, 191, 282, 2166, 2167, 2170, 
-  2173, 4135, 14645, 14646, 14652, 14653, 14654, 14655, 14657, 14659, 14666, 
-  14667, 14669, 14670, 14671, 14672, 14675, 14676, 14679, 
-};
-
-static const unsigned short dep158[] = {
-  1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 
-  28, 29, 30, 31, 40, 41, 97, 137, 138, 158, 162, 175, 180, 181, 185, 190, 191, 
-  282, 2071, 2081, 2166, 2167, 2170, 2173, 2327, 4135, 20616, 28866, 
-};
-
-static const unsigned short dep159[] = {
-  43, 44, 45, 46, 47, 48, 49, 50, 52, 53, 54, 55, 56, 57, 58, 60, 61, 62, 63, 
-  64, 65, 67, 69, 70, 71, 72, 73, 94, 96, 97, 243, 244, 245, 246, 247, 248, 
-  249, 250, 251, 252, 253, 255, 256, 257, 258, 259, 261, 263, 264, 265, 281, 
-  282, 2116, 2310, 
-};
-
-static const unsigned short dep160[] = {
-  40, 41, 96, 97, 137, 138, 158, 160, 161, 162, 175, 185, 190, 191, 243, 244, 
-  245, 246, 247, 248, 249, 250, 251, 252, 253, 255, 256, 257, 258, 259, 261, 
-  263, 264, 265, 281, 282, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 2310, 4135, 
-  20616, 
-};
-
-static const unsigned short dep161[] = {
-  59, 95, 97, 254, 281, 282, 2140, 2327, 
-};
-
-static const unsigned short dep162[] = {
-  40, 41, 43, 44, 46, 48, 49, 51, 52, 53, 54, 56, 57, 60, 61, 63, 64, 65, 66, 
-  67, 69, 70, 71, 94, 95, 97, 137, 138, 158, 160, 161, 162, 175, 185, 190, 191, 
-  254, 281, 282, 2107, 2116, 2166, 2167, 2170, 2173, 2327, 4135, 20616, 
-};
-
-static const unsigned short dep163[] = {
-  2, 28, 41, 97, 197, 231, 241, 282, 2140, 2327, 28866, 29018, 
-};
-
-static const unsigned short dep164[] = {
-  2, 25, 26, 28, 29, 38, 40, 41, 97, 158, 162, 175, 177, 178, 185, 197, 231, 
-  241, 282, 2327, 4135, 20616, 28866, 29018, 
-};
-
-static const unsigned short dep165[] = {
-  97, 129, 130, 133, 134, 140, 141, 144, 145, 147, 148, 150, 151, 153, 154, 
-  157, 159, 160, 165, 166, 169, 170, 171, 172, 174, 176, 177, 179, 180, 182, 
-  183, 186, 187, 189, 282, 309, 310, 314, 316, 317, 318, 319, 321, 323, 327, 
-  330, 331, 333, 334, 335, 336, 338, 339, 340, 342, 343, 
-};
-
-static const unsigned short dep166[] = {
-  40, 41, 97, 137, 138, 158, 162, 175, 185, 190, 191, 282, 309, 310, 314, 316, 
-  317, 318, 319, 321, 323, 327, 330, 331, 333, 334, 335, 336, 338, 339, 340, 
-  342, 343, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 4135, 20616, 34888, 
-};
-
-static const unsigned short dep167[] = {
-  97, 128, 130, 132, 134, 169, 170, 189, 282, 309, 310, 330, 331, 333, 334, 
-  343, 
-};
-
-static const unsigned short dep168[] = {
-  40, 41, 97, 158, 162, 175, 183, 184, 185, 282, 309, 310, 330, 331, 333, 334, 
-  343, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 4135, 20616, 
-};
-
-static const unsigned short dep169[] = {
-  40, 41, 97, 130, 131, 134, 135, 137, 138, 141, 142, 145, 146, 148, 149, 151, 
-  152, 154, 155, 157, 158, 159, 161, 162, 164, 165, 167, 168, 169, 170, 172, 
-  173, 174, 175, 176, 178, 179, 181, 182, 184, 185, 187, 188, 189, 190, 191, 
-  282, 2166, 2167, 2170, 2173, 2327, 4135, 20616, 
-};
-
-static const unsigned short dep170[] = {
-  40, 41, 97, 130, 131, 134, 135, 158, 162, 169, 170, 175, 185, 189, 282, 2166, 
-  2167, 2170, 2173, 2327, 4135, 20616, 
-};
-
-static const unsigned short dep171[] = {
-  40, 41, 70, 76, 77, 82, 84, 97, 111, 137, 138, 153, 155, 158, 162, 171, 173, 
-  175, 185, 192, 282, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 2327, 4135, 
-  20616, 
-};
-
-static const unsigned short dep172[] = {
-  40, 41, 70, 76, 77, 82, 84, 97, 111, 137, 138, 139, 140, 142, 143, 153, 155, 
-  158, 162, 171, 173, 175, 185, 192, 282, 2138, 2139, 2140, 2166, 2167, 2170, 
-  2173, 4135, 20616, 
-};
-
-static const unsigned short dep173[] = {
-  77, 78, 97, 101, 102, 269, 270, 282, 284, 285, 
-};
-
-static const unsigned short dep174[] = {
-  40, 41, 47, 62, 78, 80, 86, 97, 99, 102, 137, 138, 158, 160, 161, 162, 175, 
-  185, 190, 191, 192, 269, 270, 282, 284, 285, 2138, 2139, 2140, 2166, 2167, 
-  2170, 2173, 4135, 20616, 
-};
-
-static const unsigned short dep175[] = {
-  40, 41, 47, 62, 78, 80, 97, 99, 102, 104, 106, 137, 138, 158, 160, 161, 162, 
-  175, 185, 190, 191, 192, 269, 270, 282, 284, 285, 2138, 2139, 2140, 2166, 
-  2167, 2170, 2173, 4135, 20616, 
-};
-
-static const unsigned short dep176[] = {
-  97, 282, 12480, 12481, 12633, 
-};
-
-static const unsigned short dep177[] = {
-  40, 41, 97, 137, 138, 158, 162, 175, 185, 190, 191, 282, 2138, 2139, 2140, 
-  2166, 2167, 2170, 2173, 4135, 12633, 20616, 
-};
-
-static const unsigned short dep178[] = {
-  97, 282, 6219, 6220, 6411, 
-};
-
-static const unsigned short dep179[] = {
-  40, 41, 97, 137, 138, 158, 162, 175, 185, 190, 191, 282, 2138, 2139, 2140, 
-  2166, 2167, 2170, 2173, 4135, 6411, 20616, 
-};
-
-static const unsigned short dep180[] = {
-  97, 282, 6237, 6424, 
-};
-
-static const unsigned short dep181[] = {
-  40, 41, 97, 137, 138, 158, 162, 175, 185, 190, 191, 282, 2138, 2139, 2140, 
-  2166, 2167, 2170, 2173, 4135, 6424, 20616, 
-};
-
-static const unsigned short dep182[] = {
-  97, 282, 6255, 6256, 6257, 6258, 6435, 6437, 8484, 
-};
-
-static const unsigned short dep183[] = {
-  40, 41, 97, 137, 138, 158, 162, 175, 185, 190, 191, 282, 2138, 2139, 2140, 
-  2166, 2167, 2170, 2173, 4135, 6258, 6436, 6437, 8304, 8483, 20616, 
-};
-
-static const unsigned short dep184[] = {
-  97, 282, 6259, 6260, 6438, 
-};
-
-static const unsigned short dep185[] = {
-  40, 41, 97, 137, 138, 158, 162, 175, 185, 190, 191, 282, 2138, 2139, 2140, 
-  2166, 2167, 2170, 2173, 4135, 6438, 20616, 
-};
-
-static const unsigned short dep186[] = {
-  97, 282, 6261, 6439, 
-};
-
-static const unsigned short dep187[] = {
-  40, 41, 97, 137, 138, 158, 162, 175, 185, 190, 191, 282, 2138, 2139, 2140, 
-  2166, 2167, 2170, 2173, 4135, 6439, 20616, 
-};
-
-static const unsigned short dep188[] = {
-  97, 282, 10350, 10530, 
-};
-
-static const unsigned short dep189[] = {
-  40, 41, 97, 137, 138, 158, 162, 175, 185, 190, 191, 282, 2138, 2139, 2140, 
-  2166, 2167, 2170, 2173, 4135, 10530, 20616, 
-};
-
-static const unsigned short dep190[] = {
-  77, 78, 82, 83, 97, 101, 102, 269, 270, 272, 273, 282, 284, 285, 
-};
-
-static const unsigned short dep191[] = {
-  40, 41, 47, 62, 78, 80, 83, 86, 97, 99, 102, 137, 138, 158, 160, 161, 162, 
-  175, 185, 190, 191, 192, 269, 270, 272, 274, 282, 284, 285, 2138, 2139, 2140, 
-  2166, 2167, 2170, 2173, 4135, 20616, 
-};
-
-static const unsigned short dep192[] = {
-  77, 78, 97, 101, 102, 104, 105, 269, 270, 282, 284, 285, 286, 287, 
-};
-
-static const unsigned short dep193[] = {
-  40, 41, 47, 62, 78, 80, 97, 99, 102, 104, 106, 137, 138, 158, 160, 161, 162, 
-  175, 185, 190, 191, 192, 269, 270, 282, 284, 285, 286, 287, 2138, 2139, 2140, 
-  2166, 2167, 2170, 2173, 4135, 20616, 
-};
-
-static const unsigned short dep194[] = {
-  40, 41, 97, 137, 138, 158, 162, 175, 185, 190, 191, 282, 2138, 2139, 2140, 
-  2166, 2167, 2170, 2173, 2327, 4135, 12481, 20616, 
-};
-
-static const unsigned short dep195[] = {
-  40, 41, 97, 137, 138, 158, 162, 175, 185, 190, 191, 282, 2138, 2139, 2140, 
-  2166, 2167, 2170, 2173, 2327, 4135, 6219, 20616, 
-};
-
-static const unsigned short dep196[] = {
-  40, 41, 97, 137, 138, 158, 162, 175, 185, 190, 191, 282, 2138, 2139, 2140, 
-  2166, 2167, 2170, 2173, 2327, 4135, 6237, 20616, 
-};
-
-static const unsigned short dep197[] = {
-  40, 41, 97, 137, 138, 158, 162, 175, 185, 190, 191, 282, 2138, 2139, 2140, 
-  2166, 2167, 2170, 2173, 2327, 4135, 6257, 8303, 20616, 
-};
-
-static const unsigned short dep198[] = {
-  40, 41, 97, 137, 138, 158, 162, 175, 185, 190, 191, 282, 2138, 2139, 2140, 
-  2166, 2167, 2170, 2173, 2327, 4135, 6259, 20616, 
-};
-
-static const unsigned short dep199[] = {
-  40, 41, 97, 137, 138, 158, 162, 175, 183, 184, 185, 282, 2138, 2139, 2140, 
-  2166, 2167, 2170, 2173, 2327, 4135, 6260, 6261, 20616, 
-};
-
-static const unsigned short dep200[] = {
-  40, 41, 97, 158, 162, 175, 185, 282, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 
-  2327, 4135, 10350, 20616, 
-};
-
-static const unsigned short dep201[] = {
-  40, 41, 97, 158, 162, 175, 185, 190, 191, 282, 2138, 2139, 2140, 2166, 2167, 
-  2170, 2173, 2327, 4135, 6186, 20616, 
-};
-
-static const unsigned short dep202[] = {
-  77, 79, 80, 97, 98, 99, 100, 268, 269, 282, 283, 284, 
-};
-
-static const unsigned short dep203[] = {
-  40, 41, 78, 79, 83, 85, 97, 100, 102, 104, 107, 137, 138, 158, 162, 175, 185, 
-  190, 191, 192, 268, 270, 282, 283, 285, 2138, 2139, 2140, 2166, 2167, 2170, 
-  2173, 4135, 20616, 
-};
-
-static const unsigned short dep204[] = {
-  77, 79, 80, 81, 97, 98, 99, 100, 103, 268, 269, 271, 282, 283, 284, 
-};
-
-static const unsigned short dep205[] = {
-  40, 41, 78, 79, 81, 83, 85, 97, 100, 102, 103, 104, 107, 137, 138, 158, 162, 
-  175, 185, 190, 191, 192, 268, 270, 271, 282, 283, 285, 2138, 2139, 2140, 2166, 
-  2167, 2170, 2173, 4135, 20616, 
-};
-
-static const unsigned short dep206[] = {
-  77, 79, 80, 84, 85, 86, 97, 98, 99, 100, 268, 269, 274, 275, 282, 283, 284, 
-  
-};
-
-static const unsigned short dep207[] = {
-  40, 41, 78, 79, 83, 85, 97, 100, 102, 137, 138, 158, 162, 175, 185, 190, 191, 
-  192, 268, 270, 273, 275, 282, 283, 285, 2138, 2139, 2140, 2166, 2167, 2170, 
-  2173, 4135, 20616, 
-};
-
-static const unsigned short dep208[] = {
-  77, 79, 80, 97, 98, 99, 100, 106, 107, 108, 268, 269, 282, 283, 284, 287, 
-  288, 
-};
-
-static const unsigned short dep209[] = {
-  40, 41, 78, 79, 97, 100, 102, 104, 107, 137, 138, 158, 162, 175, 185, 190, 
-  191, 192, 268, 270, 282, 283, 285, 286, 288, 2138, 2139, 2140, 2166, 2167, 
-  2170, 2173, 4135, 20616, 
-};
-
-static const unsigned short dep210[] = {
-  40, 41, 46, 70, 97, 158, 162, 175, 185, 190, 191, 192, 282, 2138, 2139, 2140, 
-  2166, 2167, 2170, 2173, 2327, 4135, 20616, 
-};
-
-static const unsigned short dep211[] = {
-  40, 41, 97, 158, 162, 175, 185, 190, 191, 192, 282, 2138, 2139, 2140, 2166, 
-  2167, 2170, 2173, 2327, 4135, 20616, 
-};
-
-static const unsigned short dep212[] = {
-  40, 41, 70, 77, 82, 84, 97, 137, 138, 153, 155, 158, 162, 175, 185, 190, 191, 
-  192, 282, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 2327, 4135, 20616, 
-};
-
-static const unsigned short dep213[] = {
-  40, 41, 97, 158, 162, 164, 175, 185, 186, 188, 282, 2135, 2136, 2137, 2138, 
-  2139, 2140, 2166, 2167, 2170, 2173, 4135, 16528, 16530, 16531, 16533, 20616, 
-  
-};
-
-static const unsigned short dep214[] = {
-  40, 41, 70, 77, 82, 84, 97, 153, 155, 158, 162, 175, 185, 192, 282, 2138, 
-  2139, 2140, 2166, 2167, 2170, 2173, 4135, 20616, 
-};
-
-static const unsigned short dep215[] = {
-  40, 41, 78, 79, 97, 100, 137, 138, 158, 162, 175, 185, 190, 191, 268, 270, 
-  282, 283, 285, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 4135, 20616, 
-};
-
-static const unsigned short dep216[] = {
-  40, 41, 70, 76, 77, 82, 84, 97, 109, 111, 128, 129, 131, 132, 133, 135, 137, 
-  138, 139, 140, 142, 143, 153, 155, 158, 162, 171, 173, 175, 185, 190, 191, 
-  192, 282, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 2327, 4135, 20616, 
-};
-
-static const unsigned short dep217[] = {
-  5, 97, 200, 282, 2140, 2327, 
-};
-
-static const unsigned short dep218[] = {
-  40, 41, 70, 76, 77, 82, 84, 97, 109, 111, 128, 129, 131, 132, 133, 135, 137, 
-  138, 139, 140, 142, 143, 153, 155, 158, 162, 171, 173, 175, 185, 190, 191, 
-  192, 200, 282, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 2327, 4135, 20616, 
-  
-};
-
-static const unsigned short dep219[] = {
-  40, 41, 44, 70, 76, 77, 82, 84, 97, 109, 111, 128, 129, 131, 132, 133, 135, 
-  137, 138, 139, 140, 142, 143, 153, 155, 156, 158, 162, 171, 173, 175, 185, 
-  190, 191, 192, 282, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 2327, 4135, 
-  20616, 
-};
-
-static const unsigned short dep220[] = {
-  0, 97, 195, 282, 2140, 2327, 
-};
-
-static const unsigned short dep221[] = {
-  0, 40, 41, 70, 76, 77, 82, 84, 97, 109, 111, 128, 129, 131, 132, 133, 135, 
-  137, 138, 139, 140, 142, 143, 153, 155, 158, 162, 171, 173, 175, 185, 190, 
-  191, 192, 195, 282, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 2327, 4135, 
-  20616, 
-};
-
-static const unsigned short dep222[] = {
-  0, 40, 41, 44, 70, 76, 77, 82, 84, 97, 109, 111, 128, 129, 131, 132, 133, 
-  135, 137, 138, 139, 140, 142, 143, 153, 155, 156, 158, 162, 171, 173, 175, 
-  185, 190, 191, 192, 195, 282, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 2327, 
-  4135, 20616, 
-};
-
-static const unsigned short dep223[] = {
-  31, 40, 41, 70, 76, 77, 82, 84, 97, 109, 111, 128, 129, 131, 132, 133, 135, 
-  137, 138, 139, 140, 142, 143, 153, 155, 158, 162, 171, 173, 175, 185, 190, 
-  191, 192, 282, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 2327, 4135, 20616, 
-  
-};
-
-static const unsigned short dep224[] = {
-  0, 97, 195, 282, 2327, 26715, 
-};
-
-static const unsigned short dep225[] = {
-  0, 97, 109, 195, 282, 289, 
-};
-
-static const unsigned short dep226[] = {
-  0, 40, 41, 70, 76, 77, 82, 84, 97, 111, 128, 129, 131, 132, 133, 135, 137, 
-  138, 139, 140, 142, 143, 153, 155, 158, 162, 171, 173, 175, 185, 190, 191, 
-  192, 195, 282, 289, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 4135, 20616, 
-  
-};
-
-static const unsigned short dep227[] = {
-  0, 5, 40, 41, 70, 76, 77, 82, 84, 97, 111, 128, 129, 131, 132, 133, 135, 137, 
-  138, 139, 140, 142, 143, 153, 155, 158, 162, 171, 173, 175, 185, 190, 191, 
-  192, 195, 282, 289, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 4135, 20616, 
-  
-};
-
-static const unsigned short dep228[] = {
-  0, 31, 97, 109, 195, 234, 282, 289, 
-};
-
-static const unsigned short dep229[] = {
-  0, 40, 41, 70, 76, 77, 82, 84, 97, 111, 128, 129, 131, 132, 133, 135, 137, 
-  138, 139, 140, 142, 143, 153, 155, 158, 162, 171, 173, 175, 185, 190, 191, 
-  192, 195, 234, 282, 289, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 4135, 20616, 
-  
-};
-
-static const unsigned short dep230[] = {
-  0, 97, 109, 195, 282, 289, 2140, 2327, 
-};
-
-static const unsigned short dep231[] = {
-  0, 3, 40, 41, 70, 76, 77, 82, 84, 97, 109, 111, 128, 129, 131, 132, 133, 135, 
-  137, 138, 139, 140, 142, 143, 153, 155, 158, 162, 171, 173, 175, 185, 190, 
-  191, 192, 195, 282, 289, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 2327, 4135, 
-  20616, 
-};
-
-static const unsigned short dep232[] = {
-  0, 3, 5, 40, 41, 70, 76, 77, 82, 84, 97, 109, 111, 128, 129, 131, 132, 133, 
-  135, 137, 138, 139, 140, 142, 143, 153, 155, 158, 162, 171, 173, 175, 185, 
-  190, 191, 192, 195, 282, 289, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 2327, 
-  4135, 20616, 
-};
-
-static const unsigned short dep233[] = {
-  0, 40, 41, 70, 76, 77, 82, 84, 97, 109, 111, 128, 129, 131, 132, 133, 135, 
-  137, 138, 139, 140, 142, 143, 153, 155, 158, 162, 171, 173, 175, 185, 190, 
-  191, 192, 195, 282, 289, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 2327, 4135, 
-  20616, 
-};
-
-static const unsigned short dep234[] = {
-  40, 41, 97, 158, 162, 175, 185, 282, 2135, 2136, 2137, 2166, 2167, 2170, 2173, 
-  2327, 4135, 16528, 16530, 16531, 16533, 20616, 
-};
-
-static const unsigned short dep235[] = {
-  0, 40, 41, 70, 76, 77, 82, 84, 97, 111, 128, 129, 131, 132, 133, 135, 137, 
-  138, 139, 140, 142, 143, 153, 155, 158, 162, 171, 173, 175, 185, 190, 191, 
-  192, 195, 282, 289, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 2327, 4135, 
-  20616, 
-};
-
-static const unsigned short dep236[] = {
-  0, 31, 97, 109, 195, 234, 282, 289, 2140, 2327, 
-};
-
-static const unsigned short dep237[] = {
-  0, 40, 41, 70, 76, 77, 82, 84, 97, 111, 128, 129, 131, 132, 133, 135, 137, 
-  138, 139, 140, 142, 143, 153, 155, 158, 162, 171, 173, 175, 185, 190, 191, 
-  192, 195, 234, 282, 289, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 2327, 4135, 
-  20616, 
-};
-
-static const unsigned short dep238[] = {
-  40, 41, 70, 76, 77, 82, 84, 97, 109, 111, 128, 129, 131, 132, 133, 135, 137, 
-  138, 139, 140, 142, 143, 153, 155, 158, 162, 171, 173, 175, 185, 190, 191, 
-  192, 282, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 2325, 4135, 16528, 16530, 
-  16531, 16533, 18761, 18763, 18764, 18766, 20616, 
-};
-
-static const unsigned short dep239[] = {
-  40, 41, 44, 70, 76, 77, 82, 84, 97, 109, 111, 128, 129, 131, 132, 133, 135, 
-  137, 138, 139, 140, 142, 143, 153, 155, 156, 158, 162, 171, 173, 175, 185, 
-  190, 191, 192, 282, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 2325, 4135, 
-  16528, 16530, 16531, 16533, 18761, 18763, 18764, 18766, 20616, 
-};
-
-static const unsigned short dep240[] = {
-  0, 97, 195, 282, 2136, 2325, 18601, 18602, 18761, 18762, 18764, 18765, 
-};
-
-static const unsigned short dep241[] = {
-  0, 40, 41, 70, 76, 77, 82, 84, 97, 109, 111, 128, 129, 131, 132, 133, 135, 
-  137, 138, 139, 140, 142, 143, 153, 155, 158, 162, 171, 173, 175, 185, 190, 
-  191, 192, 195, 282, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 2325, 4135, 
-  16528, 16530, 16531, 16533, 18761, 18763, 18764, 18766, 20616, 
-};
-
-static const unsigned short dep242[] = {
-  0, 40, 41, 44, 70, 76, 77, 82, 84, 97, 109, 111, 128, 129, 131, 132, 133, 
-  135, 137, 138, 139, 140, 142, 143, 153, 155, 156, 158, 162, 171, 173, 175, 
-  185, 190, 191, 192, 195, 282, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 2325, 
-  4135, 16528, 16530, 16531, 16533, 18761, 18763, 18764, 18766, 20616, 
-};
-
-static const unsigned short dep243[] = {
-  0, 97, 195, 282, 2137, 2325, 18601, 18602, 18761, 18762, 18764, 18765, 
-};
-
-static const unsigned short dep244[] = {
-  97, 282, 2136, 2140, 2325, 2327, 18601, 18602, 18761, 18762, 18764, 18765, 
-  
-};
-
-static const unsigned short dep245[] = {
-  40, 41, 70, 76, 77, 82, 84, 97, 109, 111, 128, 129, 131, 132, 133, 135, 137, 
-  138, 139, 140, 142, 143, 153, 155, 158, 162, 171, 173, 175, 185, 190, 191, 
-  192, 282, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 2325, 2327, 4135, 16528, 
-  16530, 16531, 16533, 18761, 18763, 18764, 18766, 20616, 
-};
-
-static const unsigned short dep246[] = {
-  40, 41, 44, 70, 76, 77, 82, 84, 97, 109, 111, 128, 129, 131, 132, 133, 135, 
-  137, 138, 139, 140, 142, 143, 153, 155, 156, 158, 162, 171, 173, 175, 185, 
-  190, 191, 192, 282, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 2325, 2327, 
-  4135, 16528, 16530, 16531, 16533, 18761, 18763, 18764, 18766, 20616, 
-};
-
-static const unsigned short dep247[] = {
-  0, 97, 195, 282, 2136, 2140, 2325, 2327, 18601, 18602, 18761, 18762, 18764, 
-  18765, 
-};
-
-static const unsigned short dep248[] = {
-  0, 40, 41, 70, 76, 77, 82, 84, 97, 109, 111, 128, 129, 131, 132, 133, 135, 
-  137, 138, 139, 140, 142, 143, 153, 155, 158, 162, 171, 173, 175, 185, 190, 
-  191, 192, 195, 282, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 2325, 2327, 
-  4135, 16528, 16530, 16531, 16533, 18761, 18763, 18764, 18766, 20616, 
-};
-
-static const unsigned short dep249[] = {
-  0, 40, 41, 44, 70, 76, 77, 82, 84, 97, 109, 111, 128, 129, 131, 132, 133, 
-  135, 137, 138, 139, 140, 142, 143, 153, 155, 156, 158, 162, 171, 173, 175, 
-  185, 190, 191, 192, 195, 282, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 2325, 
-  2327, 4135, 16528, 16530, 16531, 16533, 18761, 18763, 18764, 18766, 20616, 
-  
-};
-
-static const unsigned short dep250[] = {
-  0, 97, 195, 282, 2137, 2140, 2325, 2327, 18601, 18602, 18761, 18762, 18764, 
-  18765, 
-};
-
-static const unsigned short dep251[] = {
-  0, 40, 41, 70, 76, 77, 82, 84, 97, 111, 128, 129, 131, 132, 133, 135, 137, 
-  138, 139, 140, 142, 143, 153, 155, 158, 162, 171, 173, 175, 185, 190, 191, 
-  192, 195, 282, 289, 2135, 2136, 2137, 2138, 2139, 2140, 2166, 2167, 2170, 
-  2173, 4135, 16528, 16530, 16531, 16533, 20616, 
-};
-
-static const unsigned short dep252[] = {
-  40, 41, 70, 76, 77, 82, 84, 97, 137, 138, 139, 140, 142, 143, 153, 155, 156, 
-  158, 162, 171, 173, 175, 185, 192, 282, 2166, 2167, 2170, 2173, 4135, 
-};
-
-static const unsigned short dep253[] = {
-  40, 41, 70, 76, 77, 82, 84, 97, 137, 138, 139, 140, 142, 143, 153, 155, 156, 
-  158, 162, 171, 173, 175, 185, 192, 282, 2138, 2139, 2140, 2166, 2167, 2170, 
-  2173, 2327, 4135, 20616, 
-};
-
-static const unsigned short dep254[] = {
-  40, 41, 97, 158, 162, 175, 185, 282, 2138, 2139, 2140, 2166, 2167, 2170, 2173, 
-  2325, 4135, 16528, 16530, 16531, 16533, 18761, 18763, 18764, 18766, 20616, 
-  
-};
-
-static const unsigned short dep255[] = {
-  0, 40, 41, 70, 76, 77, 82, 84, 97, 111, 128, 129, 131, 132, 133, 135, 137, 
-  138, 139, 140, 142, 143, 153, 155, 158, 162, 171, 173, 175, 185, 190, 191, 
-  192, 195, 282, 289, 2135, 2136, 2137, 2138, 2139, 2140, 2166, 2167, 2170, 
-  2173, 2327, 4135, 16528, 16530, 16531, 16533, 20616, 
-};
-
-static const unsigned short dep256[] = {
-  1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 
-  22, 24, 26, 27, 28, 29, 30, 31, 97, 196, 197, 198, 199, 200, 201, 202, 203, 
-  204, 205, 206, 207, 208, 209, 211, 212, 214, 215, 217, 218, 220, 221, 222, 
-  223, 224, 225, 227, 230, 231, 232, 233, 234, 282, 2071, 2081, 2140, 2274, 
-  2284, 2327, 28866, 29018, 
-};
-
-static const unsigned short dep257[] = {
-  1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 
-  22, 24, 25, 26, 28, 29, 30, 31, 40, 41, 97, 137, 138, 158, 162, 175, 180, 
-  181, 185, 190, 191, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 
-  207, 208, 209, 211, 212, 214, 215, 217, 218, 220, 221, 222, 223, 224, 225, 
-  227, 229, 231, 232, 233, 234, 282, 2071, 2081, 2138, 2139, 2140, 2166, 2167, 
-  2170, 2173, 2274, 2284, 2327, 4135, 20616, 28866, 29018, 
-};
-
-#define NELS(X) (sizeof(X)/sizeof(X[0]))
-static const struct ia64_opcode_dependency
-op_dependencies[] = {
-  { NELS(dep1), dep1, NELS(dep0), dep0, },
-  { NELS(dep3), dep3, NELS(dep2), dep2, },
-  { NELS(dep5), dep5, NELS(dep4), dep4, },
-  { NELS(dep7), dep7, NELS(dep6), dep6, },
-  { NELS(dep9), dep9, NELS(dep8), dep8, },
-  { NELS(dep11), dep11, NELS(dep10), dep10, },
-  { NELS(dep13), dep13, NELS(dep12), dep12, },
-  { NELS(dep15), dep15, NELS(dep14), dep14, },
-  { NELS(dep17), dep17, NELS(dep16), dep16, },
-  { NELS(dep19), dep19, NELS(dep18), dep18, },
-  { NELS(dep21), dep21, NELS(dep20), dep20, },
-  { NELS(dep23), dep23, NELS(dep22), dep22, },
-  { NELS(dep25), dep25, NELS(dep24), dep24, },
-  { NELS(dep27), dep27, NELS(dep26), dep26, },
-  { NELS(dep29), dep29, NELS(dep28), dep28, },
-  { NELS(dep30), dep30, NELS(dep12), dep12, },
-  { NELS(dep32), dep32, NELS(dep31), dep31, },
-  { NELS(dep34), dep34, NELS(dep33), dep33, },
-  { NELS(dep35), dep35, NELS(dep12), dep12, },
-  { NELS(dep37), dep37, NELS(dep36), dep36, },
-  { NELS(dep39), dep39, NELS(dep38), dep38, },
-  { NELS(dep41), dep41, NELS(dep40), dep40, },
-  { NELS(dep42), dep42, NELS(dep31), dep31, },
-  { NELS(dep43), dep43, NELS(dep33), dep33, },
-  { NELS(dep45), dep45, NELS(dep44), dep44, },
-  { NELS(dep47), dep47, NELS(dep46), dep46, },
-  { NELS(dep49), dep49, NELS(dep48), dep48, },
-  { NELS(dep51), dep51, NELS(dep50), dep50, },
-  { NELS(dep53), dep53, NELS(dep52), dep52, },
-  { NELS(dep55), dep55, NELS(dep54), dep54, },
-  { NELS(dep57), dep57, NELS(dep56), dep56, },
-  { NELS(dep59), dep59, NELS(dep58), dep58, },
-  { NELS(dep61), dep61, NELS(dep60), dep60, },
-  { NELS(dep63), dep63, NELS(dep62), dep62, },
-  { NELS(dep65), dep65, NELS(dep64), dep64, },
-  { NELS(dep67), dep67, NELS(dep66), dep66, },
-  { NELS(dep68), dep68, NELS(dep33), dep33, },
-  { NELS(dep70), dep70, NELS(dep69), dep69, },
-  { NELS(dep72), dep72, NELS(dep71), dep71, },
-  { NELS(dep74), dep74, NELS(dep73), dep73, },
-  { NELS(dep76), dep76, NELS(dep75), dep75, },
-  { NELS(dep77), dep77, NELS(dep33), dep33, },
-  { NELS(dep79), dep79, NELS(dep78), dep78, },
-  { NELS(dep81), dep81, NELS(dep80), dep80, },
-  { NELS(dep83), dep83, NELS(dep82), dep82, },
-  { NELS(dep84), dep84, NELS(dep33), dep33, },
-  { NELS(dep85), dep85, NELS(dep33), dep33, },
-  { NELS(dep86), dep86, NELS(dep33), dep33, },
-  { NELS(dep87), dep87, NELS(dep33), dep33, },
-  { NELS(dep89), dep89, NELS(dep88), dep88, },
-  { NELS(dep91), dep91, NELS(dep90), dep90, },
-  { NELS(dep93), dep93, NELS(dep92), dep92, },
-  { NELS(dep95), dep95, NELS(dep94), dep94, },
-  { NELS(dep97), dep97, NELS(dep96), dep96, },
-  { NELS(dep99), dep99, NELS(dep98), dep98, },
-  { NELS(dep101), dep101, NELS(dep100), dep100, },
-  { NELS(dep103), dep103, NELS(dep102), dep102, },
-  { NELS(dep105), dep105, NELS(dep104), dep104, },
-  { NELS(dep107), dep107, NELS(dep106), dep106, },
-  { NELS(dep109), dep109, NELS(dep108), dep108, },
-  { NELS(dep111), dep111, NELS(dep110), dep110, },
-  { NELS(dep113), dep113, NELS(dep112), dep112, },
-  { NELS(dep115), dep115, NELS(dep114), dep114, },
-  { NELS(dep117), dep117, NELS(dep116), dep116, },
-  { NELS(dep119), dep119, NELS(dep118), dep118, },
-  { NELS(dep121), dep121, NELS(dep120), dep120, },
-  { NELS(dep122), dep122, NELS(dep64), dep64, },
-  { NELS(dep123), dep123, NELS(dep33), dep33, },
-  { NELS(dep125), dep125, NELS(dep124), dep124, },
-  { NELS(dep126), dep126, NELS(dep0), dep0, },
-  { NELS(dep128), dep128, NELS(dep127), dep127, },
-  { NELS(dep130), dep130, NELS(dep129), dep129, },
-  { NELS(dep131), dep131, NELS(dep0), dep0, },
-  { NELS(dep132), dep132, NELS(dep0), dep0, },
-  { NELS(dep134), dep134, NELS(dep133), dep133, },
-  { NELS(dep135), dep135, NELS(dep0), dep0, },
-  { NELS(dep136), dep136, NELS(dep2), dep2, },
-  { NELS(dep137), dep137, NELS(dep4), dep4, },
-  { NELS(dep138), dep138, NELS(dep6), dep6, },
-  { NELS(dep139), dep139, NELS(dep8), dep8, },
-  { NELS(dep140), dep140, NELS(dep10), dep10, },
-  { NELS(dep141), dep141, NELS(dep33), dep33, },
-  { NELS(dep143), dep143, NELS(dep142), dep142, },
-  { NELS(dep144), dep144, NELS(dep142), dep142, },
-  { NELS(dep146), dep146, NELS(dep145), dep145, },
-  { NELS(dep147), dep147, NELS(dep145), dep145, },
-  { NELS(dep148), dep148, NELS(dep142), dep142, },
-  { NELS(dep150), dep150, NELS(dep149), dep149, },
-  { NELS(dep152), dep152, NELS(dep151), dep151, },
-  { NELS(dep154), dep154, NELS(dep153), dep153, },
-  { NELS(dep156), dep156, NELS(dep155), dep155, },
-  { NELS(dep157), dep157, NELS(dep155), dep155, },
-  { NELS(dep158), dep158, NELS(dep0), dep0, },
-  { NELS(dep160), dep160, NELS(dep159), dep159, },
-  { NELS(dep162), dep162, NELS(dep161), dep161, },
-  { NELS(dep164), dep164, NELS(dep163), dep163, },
-  { NELS(dep166), dep166, NELS(dep165), dep165, },
-  { NELS(dep168), dep168, NELS(dep167), dep167, },
-  { NELS(dep169), dep169, NELS(dep0), dep0, },
-  { NELS(dep170), dep170, NELS(dep0), dep0, },
-  { NELS(dep171), dep171, NELS(dep0), dep0, },
-  { NELS(dep172), dep172, NELS(dep33), dep33, },
-  { NELS(dep174), dep174, NELS(dep173), dep173, },
-  { NELS(dep175), dep175, NELS(dep173), dep173, },
-  { NELS(dep177), dep177, NELS(dep176), dep176, },
-  { NELS(dep179), dep179, NELS(dep178), dep178, },
-  { NELS(dep181), dep181, NELS(dep180), dep180, },
-  { NELS(dep183), dep183, NELS(dep182), dep182, },
-  { NELS(dep185), dep185, NELS(dep184), dep184, },
-  { NELS(dep187), dep187, NELS(dep186), dep186, },
-  { NELS(dep189), dep189, NELS(dep188), dep188, },
-  { NELS(dep191), dep191, NELS(dep190), dep190, },
-  { NELS(dep193), dep193, NELS(dep192), dep192, },
-  { NELS(dep194), dep194, NELS(dep0), dep0, },
-  { NELS(dep195), dep195, NELS(dep0), dep0, },
-  { NELS(dep196), dep196, NELS(dep0), dep0, },
-  { NELS(dep197), dep197, NELS(dep0), dep0, },
-  { NELS(dep198), dep198, NELS(dep0), dep0, },
-  { NELS(dep199), dep199, NELS(dep0), dep0, },
-  { NELS(dep200), dep200, NELS(dep0), dep0, },
-  { NELS(dep201), dep201, NELS(dep0), dep0, },
-  { NELS(dep203), dep203, NELS(dep202), dep202, },
-  { NELS(dep205), dep205, NELS(dep204), dep204, },
-  { NELS(dep207), dep207, NELS(dep206), dep206, },
-  { NELS(dep209), dep209, NELS(dep208), dep208, },
-  { NELS(dep210), dep210, NELS(dep0), dep0, },
-  { NELS(dep211), dep211, NELS(dep0), dep0, },
-  { NELS(dep212), dep212, NELS(dep0), dep0, },
-  { NELS(dep213), dep213, NELS(dep33), dep33, },
-  { NELS(dep214), dep214, NELS(dep33), dep33, },
-  { NELS(dep215), dep215, NELS(dep202), dep202, },
-  { NELS(dep216), dep216, NELS(dep0), dep0, },
-  { NELS(dep218), dep218, NELS(dep217), dep217, },
-  { NELS(dep219), dep219, NELS(dep0), dep0, },
-  { NELS(dep221), dep221, NELS(dep220), dep220, },
-  { NELS(dep222), dep222, NELS(dep220), dep220, },
-  { NELS(dep223), dep223, NELS(dep0), dep0, },
-  { NELS(dep221), dep221, NELS(dep224), dep224, },
-  { NELS(dep226), dep226, NELS(dep225), dep225, },
-  { NELS(dep227), dep227, NELS(dep225), dep225, },
-  { NELS(dep229), dep229, NELS(dep228), dep228, },
-  { NELS(dep231), dep231, NELS(dep230), dep230, },
-  { NELS(dep232), dep232, NELS(dep230), dep230, },
-  { NELS(dep233), dep233, NELS(dep230), dep230, },
-  { NELS(dep234), dep234, NELS(dep0), dep0, },
-  { NELS(dep235), dep235, NELS(dep230), dep230, },
-  { NELS(dep237), dep237, NELS(dep236), dep236, },
-  { NELS(dep238), dep238, NELS(dep64), dep64, },
-  { NELS(dep239), dep239, NELS(dep64), dep64, },
-  { NELS(dep241), dep241, NELS(dep240), dep240, },
-  { NELS(dep242), dep242, NELS(dep240), dep240, },
-  { NELS(dep241), dep241, NELS(dep243), dep243, },
-  { NELS(dep245), dep245, NELS(dep244), dep244, },
-  { NELS(dep246), dep246, NELS(dep244), dep244, },
-  { NELS(dep248), dep248, NELS(dep247), dep247, },
-  { NELS(dep249), dep249, NELS(dep247), dep247, },
-  { NELS(dep248), dep248, NELS(dep250), dep250, },
-  { NELS(dep251), dep251, NELS(dep225), dep225, },
-  { NELS(dep252), dep252, NELS(dep33), dep33, },
-  { NELS(dep253), dep253, NELS(dep0), dep0, },
-  { NELS(dep254), dep254, NELS(dep64), dep64, },
-  { NELS(dep255), dep255, NELS(dep230), dep230, },
-  { 0, NULL, 0, NULL, },
-  { NELS(dep257), dep257, NELS(dep256), dep256, },
-};
-
-static const struct ia64_completer_table
-completer_table[] = {
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 95 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 95 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, 594, -1, 0, 1, 6 },
-  { 0x0, 0x0, 0, 657, -1, 0, 1, 18 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 162 },
-  { 0x0, 0x0, 0, 756, -1, 0, 1, 18 },
-  { 0x0, 0x0, 0, 2198, -1, 0, 1, 10 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 9 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 13 },
-  { 0x1, 0x1, 0, -1, -1, 13, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 34 },
-  { 0x0, 0x0, 0, 2406, -1, 0, 1, 30 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 30 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 30 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 34 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 34 },
-  { 0x0, 0x0, 0, 1140, -1, 0, 1, 129 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 45 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 41 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 84 },
-  { 0x0, 0x0, 0, 2246, -1, 0, 1, 30 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 30 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 30 },
-  { 0x0, 0x0, 0, 2473, -1, 0, 1, 30 },
-  { 0x0, 0x0, 0, 2250, -1, 0, 1, 30 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 34 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 34 },
-  { 0x0, 0x0, 0, 2252, -1, 0, 1, 30 },
-  { 0x0, 0x0, 0, 2482, -1, 0, 1, 30 },
-  { 0x0, 0x0, 0, 2485, -1, 0, 1, 30 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 34 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 34 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 34 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 30 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 30 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 30 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 30 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 30 },
-  { 0x0, 0x0, 0, 2507, -1, 0, 1, 30 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 30 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 34 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 34 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 30 },
-  { 0x0, 0x0, 0, 2510, -1, 0, 1, 30 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 25 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 25 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 25 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 25 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 34 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 36 },
-  { 0x0, 0x0, 0, 2518, -1, 0, 1, 30 },
-  { 0x0, 0x0, 0, 1409, -1, 0, 1, 34 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 41 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 34 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 162 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 83 },
-  { 0x0, 0x0, 0, 1457, -1, 0, 1, 131 },
-  { 0x0, 0x0, 0, 1466, -1, 0, 1, 131 },
-  { 0x0, 0x0, 0, 1475, -1, 0, 1, 131 },
-  { 0x0, 0x0, 0, 1477, -1, 0, 1, 132 },
-  { 0x0, 0x0, 0, 1479, -1, 0, 1, 132 },
-  { 0x0, 0x0, 0, 1488, -1, 0, 1, 131 },
-  { 0x0, 0x0, 0, 1497, -1, 0, 1, 131 },
-  { 0x0, 0x0, 0, 1506, -1, 0, 1, 131 },
-  { 0x0, 0x0, 0, 1515, -1, 0, 1, 131 },
-  { 0x0, 0x0, 0, 1524, -1, 0, 1, 131 },
-  { 0x0, 0x0, 0, 1533, -1, 0, 1, 131 },
-  { 0x0, 0x0, 0, 1543, -1, 0, 1, 131 },
-  { 0x0, 0x0, 0, 1553, -1, 0, 1, 131 },
-  { 0x0, 0x0, 0, 1563, -1, 0, 1, 131 },
-  { 0x0, 0x0, 0, 1572, -1, 0, 1, 147 },
-  { 0x0, 0x0, 0, 1578, -1, 0, 1, 152 },
-  { 0x0, 0x0, 0, 1584, -1, 0, 1, 152 },
-  { 0x0, 0x0, 0, 1590, -1, 0, 1, 147 },
-  { 0x0, 0x0, 0, 1596, -1, 0, 1, 152 },
-  { 0x0, 0x0, 0, 1602, -1, 0, 1, 152 },
-  { 0x0, 0x0, 0, 1608, -1, 0, 1, 147 },
-  { 0x0, 0x0, 0, 1614, -1, 0, 1, 152 },
-  { 0x0, 0x0, 0, 1620, -1, 0, 1, 152 },
-  { 0x0, 0x0, 0, 1626, -1, 0, 1, 147 },
-  { 0x0, 0x0, 0, 1632, -1, 0, 1, 152 },
-  { 0x0, 0x0, 0, 1638, -1, 0, 1, 147 },
-  { 0x0, 0x0, 0, 1644, -1, 0, 1, 152 },
-  { 0x0, 0x0, 0, 1650, -1, 0, 1, 147 },
-  { 0x0, 0x0, 0, 1656, -1, 0, 1, 152 },
-  { 0x0, 0x0, 0, 1662, -1, 0, 1, 147 },
-  { 0x0, 0x0, 0, 1668, -1, 0, 1, 152 },
-  { 0x0, 0x0, 0, 1674, -1, 0, 1, 152 },
-  { 0x0, 0x0, 0, 1678, -1, 0, 1, 158 },
-  { 0x0, 0x0, 0, 1682, -1, 0, 1, 159 },
-  { 0x0, 0x0, 0, 1686, -1, 0, 1, 159 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 85 },
-  { 0x0, 0x0, 0, 258, -1, 0, 1, 41 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 34 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 68 },
-  { 0x1, 0x1, 0, 1166, -1, 20, 1, 68 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 69 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 70 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 70 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 71 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 72 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 73 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 93 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 94 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 96 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 97 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 98 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 99 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 104 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 105 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 106 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 107 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 108 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 109 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 110 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 113 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 114 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 115 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 116 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 117 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 118 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 119 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 120 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 163 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 163 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 163 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 72 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 162 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, 2858, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, 2859, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, 2210, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, 2211, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, 2873, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, 2874, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, 2875, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, 2876, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, 2877, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, 2860, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, 2861, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 11 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 91 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 89 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x1, 0x1, 0, -1, -1, 13, 1, 0 },
-  { 0x0, 0x0, 0, 2879, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 90 },
-  { 0x0, 0x0, 0, 1966, -1, 0, 1, 138 },
-  { 0x0, 0x0, 0, 1968, -1, 0, 1, 145 },
-  { 0x0, 0x0, 0, 1970, -1, 0, 1, 139 },
-  { 0x0, 0x0, 0, 1972, -1, 0, 1, 139 },
-  { 0x0, 0x0, 0, 1974, -1, 0, 1, 138 },
-  { 0x0, 0x0, 0, 1976, -1, 0, 1, 145 },
-  { 0x0, 0x0, 0, 1978, -1, 0, 1, 138 },
-  { 0x0, 0x0, 0, 1980, -1, 0, 1, 145 },
-  { 0x0, 0x0, 0, 1983, -1, 0, 1, 138 },
-  { 0x0, 0x0, 0, 1986, -1, 0, 1, 145 },
-  { 0x0, 0x0, 0, 1989, -1, 0, 1, 157 },
-  { 0x0, 0x0, 0, 1990, -1, 0, 1, 161 },
-  { 0x0, 0x0, 0, 1991, -1, 0, 1, 157 },
-  { 0x0, 0x0, 0, 1992, -1, 0, 1, 161 },
-  { 0x0, 0x0, 0, 1993, -1, 0, 1, 157 },
-  { 0x0, 0x0, 0, 1994, -1, 0, 1, 161 },
-  { 0x0, 0x0, 0, 1995, -1, 0, 1, 157 },
-  { 0x0, 0x0, 0, 1996, -1, 0, 1, 161 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 88 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 127 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 125 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 127 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 126 },
-  { 0x0, 0x0, 0, 1687, -1, 0, 1, 143 },
-  { 0x0, 0x0, 0, 1688, -1, 0, 1, 143 },
-  { 0x0, 0x0, 0, 1689, -1, 0, 1, 143 },
-  { 0x0, 0x0, 0, 1690, -1, 0, 1, 143 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 0, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 1, 224, -1, 0, 1, 12 },
-  { 0x0, 0x0, 1, 225, -1, 0, 1, 14 },
-  { 0x1, 0x1, 2, -1, -1, 27, 1, 12 },
-  { 0x1, 0x1, 2, -1, -1, 27, 1, 14 },
-  { 0x0, 0x0, 3, -1, 1340, 0, 0, -1 },
-  { 0x0, 0x0, 3, -1, 1341, 0, 0, -1 },
-  { 0x1, 0x1, 3, 2749, 1450, 33, 1, 134 },
-  { 0x1, 0x1, 3, 2750, 1459, 33, 1, 134 },
-  { 0x1, 0x1, 3, 2751, 1468, 33, 1, 134 },
-  { 0x1, 0x1, 3, 2752, 1481, 33, 1, 134 },
-  { 0x1, 0x1, 3, 2753, 1490, 33, 1, 134 },
-  { 0x1, 0x1, 3, 2754, 1499, 33, 1, 134 },
-  { 0x1, 0x1, 3, 2755, 1508, 33, 1, 134 },
-  { 0x1, 0x1, 3, 2756, 1517, 33, 1, 134 },
-  { 0x1, 0x1, 3, 2757, 1526, 33, 1, 134 },
-  { 0x1, 0x1, 3, 2758, 1535, 33, 1, 134 },
-  { 0x1, 0x1, 3, 2759, 1545, 33, 1, 134 },
-  { 0x1, 0x1, 3, 2760, 1555, 33, 1, 134 },
-  { 0x1, 0x1, 3, 2761, 1568, 33, 1, 149 },
-  { 0x1, 0x1, 3, 2762, 1574, 33, 1, 154 },
-  { 0x1, 0x1, 3, 2763, 1580, 33, 1, 154 },
-  { 0x1, 0x1, 3, 2764, 1586, 33, 1, 149 },
-  { 0x1, 0x1, 3, 2765, 1592, 33, 1, 154 },
-  { 0x1, 0x1, 3, 2766, 1598, 33, 1, 154 },
-  { 0x1, 0x1, 3, 2767, 1604, 33, 1, 149 },
-  { 0x1, 0x1, 3, 2768, 1610, 33, 1, 154 },
-  { 0x1, 0x1, 3, 2769, 1616, 33, 1, 154 },
-  { 0x1, 0x1, 3, 2770, 1622, 33, 1, 149 },
-  { 0x1, 0x1, 3, 2771, 1628, 33, 1, 154 },
-  { 0x1, 0x1, 3, 2772, 1634, 33, 1, 149 },
-  { 0x1, 0x1, 3, 2773, 1640, 33, 1, 154 },
-  { 0x1, 0x1, 3, 2774, 1646, 33, 1, 149 },
-  { 0x1, 0x1, 3, 2775, 1652, 33, 1, 154 },
-  { 0x1, 0x1, 3, 2776, 1658, 33, 1, 149 },
-  { 0x1, 0x1, 3, 2777, 1664, 33, 1, 154 },
-  { 0x1, 0x1, 3, 2778, 1670, 33, 1, 154 },
-  { 0x1, 0x1, 3, -1, -1, 27, 1, 41 },
-  { 0x0, 0x0, 4, 2212, 1425, 0, 1, 142 },
-  { 0x0, 0x0, 4, 2213, 1427, 0, 1, 142 },
-  { 0x0, 0x0, 4, 2214, 1429, 0, 1, 141 },
-  { 0x0, 0x0, 4, 2215, 1431, 0, 1, 141 },
-  { 0x0, 0x0, 4, 2216, 1433, 0, 1, 141 },
-  { 0x0, 0x0, 4, 2217, 1435, 0, 1, 141 },
-  { 0x0, 0x0, 4, 2218, 1437, 0, 1, 141 },
-  { 0x0, 0x0, 4, 2219, 1439, 0, 1, 141 },
-  { 0x0, 0x0, 4, 2220, 1441, 0, 1, 141 },
-  { 0x0, 0x0, 4, 2221, 1443, 0, 1, 141 },
-  { 0x0, 0x0, 4, 2222, 1445, 0, 1, 143 },
-  { 0x0, 0x0, 4, 2223, 1447, 0, 1, 143 },
-  { 0x1, 0x1, 4, -1, 1454, 33, 1, 137 },
-  { 0x5, 0x5, 4, 552, 1453, 32, 1, 131 },
-  { 0x1, 0x1, 4, -1, 1463, 33, 1, 137 },
-  { 0x5, 0x5, 4, 553, 1462, 32, 1, 131 },
-  { 0x1, 0x1, 4, -1, 1472, 33, 1, 137 },
-  { 0x5, 0x5, 4, 554, 1471, 32, 1, 131 },
-  { 0x1, 0x1, 4, -1, 1476, 32, 1, 132 },
-  { 0x1, 0x1, 4, -1, 1478, 32, 1, 132 },
-  { 0x1, 0x1, 4, -1, 1485, 33, 1, 137 },
-  { 0x5, 0x5, 4, 555, 1484, 32, 1, 131 },
-  { 0x1, 0x1, 4, -1, 1494, 33, 1, 137 },
-  { 0x5, 0x5, 4, 556, 1493, 32, 1, 131 },
-  { 0x1, 0x1, 4, -1, 1503, 33, 1, 137 },
-  { 0x5, 0x5, 4, 557, 1502, 32, 1, 131 },
-  { 0x1, 0x1, 4, -1, 1512, 33, 1, 137 },
-  { 0x5, 0x5, 4, 558, 1511, 32, 1, 131 },
-  { 0x1, 0x1, 4, -1, 1521, 33, 1, 137 },
-  { 0x5, 0x5, 4, 559, 1520, 32, 1, 131 },
-  { 0x1, 0x1, 4, -1, 1530, 33, 1, 137 },
-  { 0x5, 0x5, 4, 560, 1529, 32, 1, 131 },
-  { 0x1, 0x1, 4, -1, 1540, 33, 1, 137 },
-  { 0x5, 0x5, 4, 1036, 1538, 32, 1, 131 },
-  { 0x1, 0x1, 4, -1, 1550, 33, 1, 137 },
-  { 0x5, 0x5, 4, 1037, 1548, 32, 1, 131 },
-  { 0x1, 0x1, 4, -1, 1560, 33, 1, 137 },
-  { 0x5, 0x5, 4, 1038, 1558, 32, 1, 131 },
-  { 0x1, 0x21, 10, 2013, -1, 33, 1, 3 },
-  { 0x200001, 0x200001, 10, 2014, -1, 12, 1, 3 },
-  { 0x1, 0x21, 10, 420, -1, 33, 1, 3 },
-  { 0x200001, 0x200001, 10, 2074, -1, 12, 1, 3 },
-  { 0x0, 0x0, 10, -1, 2075, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2076, 0, 0, -1 },
-  { 0x0, 0x0, 10, 2017, -1, 0, 1, 3 },
-  { 0x1, 0x1, 10, 2018, -1, 12, 1, 3 },
-  { 0x1, 0x1, 10, 2019, -1, 33, 1, 3 },
-  { 0x200001, 0x200001, 10, 2020, -1, 12, 1, 3 },
-  { 0x0, 0x0, 10, 430, -1, 0, 1, 3 },
-  { 0x1, 0x1, 10, 2080, -1, 12, 1, 3 },
-  { 0x1, 0x1, 10, 434, -1, 33, 1, 3 },
-  { 0x200001, 0x200001, 10, 2082, -1, 12, 1, 3 },
-  { 0x0, 0x0, 10, 438, -1, 0, 1, 3 },
-  { 0x1, 0x1, 10, 2084, -1, 12, 1, 3 },
-  { 0x1, 0x1, 10, 442, -1, 33, 1, 3 },
-  { 0x200001, 0x200001, 10, 2086, -1, 12, 1, 3 },
-  { 0x0, 0x0, 10, 446, -1, 0, 1, 3 },
-  { 0x1, 0x1, 10, 2088, -1, 12, 1, 3 },
-  { 0x1, 0x1, 10, 450, -1, 33, 1, 3 },
-  { 0x200001, 0x200001, 10, 2090, -1, 12, 1, 3 },
-  { 0x1, 0x21, 10, 2033, -1, 33, 1, 3 },
-  { 0x200001, 0x200001, 10, 2034, -1, 12, 1, 3 },
-  { 0x1, 0x21, 10, 460, -1, 33, 1, 3 },
-  { 0x200001, 0x200001, 10, 2096, -1, 12, 1, 3 },
-  { 0x0, 0x0, 10, -1, 2097, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2098, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2101, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2102, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2103, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2104, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2105, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2106, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2107, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2108, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2109, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2110, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2111, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2112, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2113, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2114, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2115, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2116, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2117, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2118, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2119, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2120, 0, 0, -1 },
-  { 0x1, 0x21, 10, 2037, -1, 33, 1, 3 },
-  { 0x200001, 0x200001, 10, 2038, -1, 12, 1, 3 },
-  { 0x1, 0x21, 10, 468, -1, 33, 1, 3 },
-  { 0x200001, 0x200001, 10, 2122, -1, 12, 1, 3 },
-  { 0x0, 0x0, 10, -1, 2123, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2124, 0, 0, -1 },
-  { 0x0, 0x0, 10, 2041, -1, 0, 1, 3 },
-  { 0x1, 0x1, 10, 2042, -1, 12, 1, 3 },
-  { 0x1, 0x1, 10, 2043, -1, 33, 1, 3 },
-  { 0x200001, 0x200001, 10, 2044, -1, 12, 1, 3 },
-  { 0x0, 0x0, 10, 478, -1, 0, 1, 3 },
-  { 0x1, 0x1, 10, 2128, -1, 12, 1, 3 },
-  { 0x1, 0x1, 10, 482, -1, 33, 1, 3 },
-  { 0x200001, 0x200001, 10, 2130, -1, 12, 1, 3 },
-  { 0x0, 0x0, 10, 486, -1, 0, 1, 3 },
-  { 0x1, 0x1, 10, 2132, -1, 12, 1, 3 },
-  { 0x1, 0x1, 10, 490, -1, 33, 1, 3 },
-  { 0x200001, 0x200001, 10, 2134, -1, 12, 1, 3 },
-  { 0x0, 0x0, 10, 494, -1, 0, 1, 3 },
-  { 0x1, 0x1, 10, 2136, -1, 12, 1, 3 },
-  { 0x1, 0x1, 10, 498, -1, 33, 1, 3 },
-  { 0x200001, 0x200001, 10, 2138, -1, 12, 1, 3 },
-  { 0x1, 0x21, 10, 2057, -1, 33, 1, 3 },
-  { 0x200001, 0x200001, 10, 2058, -1, 12, 1, 3 },
-  { 0x1, 0x21, 10, 508, -1, 33, 1, 3 },
-  { 0x200001, 0x200001, 10, 2144, -1, 12, 1, 3 },
-  { 0x0, 0x0, 10, -1, 2145, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2146, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2149, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2150, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2151, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2152, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2153, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2154, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2155, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2156, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2157, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2158, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2159, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2160, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2161, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2162, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2163, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2164, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2165, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2166, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2167, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2168, 0, 0, -1 },
-  { 0x1, 0x1, 10, 2061, -1, 36, 1, 3 },
-  { 0x1000001, 0x1000001, 10, 2062, -1, 12, 1, 3 },
-  { 0x1, 0x1, 10, 2063, -1, 36, 1, 3 },
-  { 0x1000001, 0x1000001, 10, 2064, -1, 12, 1, 3 },
-  { 0x0, 0x0, 10, -1, 2169, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2171, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2173, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2175, 0, 0, -1 },
-  { 0x1, 0x1, 10, 2065, -1, 36, 1, 78 },
-  { 0x1000001, 0x1000001, 10, 2066, -1, 12, 1, 78 },
-  { 0x1, 0x1, 10, 2067, -1, 36, 1, 78 },
-  { 0x1000001, 0x1000001, 10, 2068, -1, 12, 1, 78 },
-  { 0x0, 0x0, 10, -1, 2177, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2179, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2181, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2183, 0, 0, -1 },
-  { 0x1, 0x1, 10, 2069, -1, 36, 1, 3 },
-  { 0x1000001, 0x1000001, 10, 2070, -1, 12, 1, 3 },
-  { 0x1, 0x1, 10, 2071, -1, 36, 1, 3 },
-  { 0x1000001, 0x1000001, 10, 2072, -1, 12, 1, 3 },
-  { 0x0, 0x0, 10, -1, 2185, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2187, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2189, 0, 0, -1 },
-  { 0x0, 0x0, 10, -1, 2191, 0, 0, -1 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x200001, 0x4200001, 11, 2015, -1, 12, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x1, 0x1, 11, 300, -1, 33, 1, 3 },
-  { 0x0, 0x0, 11, 2077, -1, 0, 1, 3 },
-  { 0x1, 0x1, 11, 2078, -1, 12, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x1, 0x1, 11, 2021, -1, 12, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x0, 0x0, 11, 308, -1, 0, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x200001, 0x200001, 11, 2023, -1, 12, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x1, 0x1, 11, 310, -1, 33, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x1, 0x1, 11, 2025, -1, 12, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x0, 0x0, 11, 312, -1, 0, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x200001, 0x200001, 11, 2027, -1, 12, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x1, 0x1, 11, 314, -1, 33, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x1, 0x1, 11, 2029, -1, 12, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x0, 0x0, 11, 316, -1, 0, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x200001, 0x200001, 11, 2031, -1, 12, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x1, 0x1, 11, 318, -1, 33, 1, 3 },
-  { 0x0, 0x0, 11, 2091, -1, 0, 1, 3 },
-  { 0x1, 0x1, 11, 2092, -1, 12, 1, 3 },
-  { 0x1, 0x1, 11, 2093, -1, 33, 1, 3 },
-  { 0x200001, 0x200001, 11, 2094, -1, 12, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x200001, 0x4200001, 11, 2035, -1, 12, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x1, 0x1, 11, 322, -1, 33, 1, 3 },
-  { 0x0, 0x0, 11, 2099, -1, 0, 1, 3 },
-  { 0x1, 0x1, 11, 2100, -1, 12, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x200001, 0x4200001, 11, 2039, -1, 12, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x1, 0x1, 11, 348, -1, 33, 1, 3 },
-  { 0x0, 0x0, 11, 2125, -1, 0, 1, 3 },
-  { 0x1, 0x1, 11, 2126, -1, 12, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x1, 0x1, 11, 2045, -1, 12, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x0, 0x0, 11, 356, -1, 0, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x200001, 0x200001, 11, 2047, -1, 12, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x1, 0x1, 11, 358, -1, 33, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x1, 0x1, 11, 2049, -1, 12, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x0, 0x0, 11, 360, -1, 0, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x200001, 0x200001, 11, 2051, -1, 12, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x1, 0x1, 11, 362, -1, 33, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x1, 0x1, 11, 2053, -1, 12, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x0, 0x0, 11, 364, -1, 0, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x200001, 0x200001, 11, 2055, -1, 12, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x1, 0x1, 11, 366, -1, 33, 1, 3 },
-  { 0x0, 0x0, 11, 2139, -1, 0, 1, 3 },
-  { 0x1, 0x1, 11, 2140, -1, 12, 1, 3 },
-  { 0x1, 0x1, 11, 2141, -1, 33, 1, 3 },
-  { 0x200001, 0x200001, 11, 2142, -1, 12, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x200001, 0x4200001, 11, 2059, -1, 12, 1, 3 },
-  { 0x2, 0x3, 11, -1, -1, 37, 1, 5 },
-  { 0x1, 0x1, 11, 370, -1, 33, 1, 3 },
-  { 0x0, 0x0, 11, 2147, -1, 0, 1, 3 },
-  { 0x1, 0x1, 11, 2148, -1, 12, 1, 3 },
-  { 0x1, 0x1, 11, -1, -1, 36, 1, 5 },
-  { 0x1, 0x1, 11, -1, -1, 36, 1, 5 },
-  { 0x1, 0x1, 11, -1, -1, 36, 1, 5 },
-  { 0x1, 0x1, 11, -1, -1, 36, 1, 5 },
-  { 0x1, 0x1, 11, 2170, -1, 36, 1, 3 },
-  { 0x1000001, 0x1000001, 11, 2172, -1, 12, 1, 3 },
-  { 0x1, 0x1, 11, 2174, -1, 36, 1, 3 },
-  { 0x1000001, 0x1000001, 11, 2176, -1, 12, 1, 3 },
-  { 0x1, 0x1, 11, -1, -1, 36, 1, 80 },
-  { 0x1, 0x1, 11, -1, -1, 36, 1, 80 },
-  { 0x1, 0x1, 11, -1, -1, 36, 1, 80 },
-  { 0x1, 0x1, 11, -1, -1, 36, 1, 80 },
-  { 0x1, 0x1, 11, 2178, -1, 36, 1, 78 },
-  { 0x1000001, 0x1000001, 11, 2180, -1, 12, 1, 78 },
-  { 0x1, 0x1, 11, 2182, -1, 36, 1, 78 },
-  { 0x1000001, 0x1000001, 11, 2184, -1, 12, 1, 78 },
-  { 0x1, 0x1, 11, -1, -1, 36, 1, 5 },
-  { 0x1, 0x1, 11, -1, -1, 36, 1, 5 },
-  { 0x1, 0x1, 11, -1, -1, 36, 1, 5 },
-  { 0x1, 0x1, 11, -1, -1, 36, 1, 5 },
-  { 0x1, 0x1, 11, 2186, -1, 36, 1, 3 },
-  { 0x1000001, 0x1000001, 11, 2188, -1, 12, 1, 3 },
-  { 0x1, 0x1, 11, 2190, -1, 36, 1, 3 },
-  { 0x1000001, 0x1000001, 11, 2192, -1, 12, 1, 3 },
-  { 0x0, 0x0, 12, -1, -1, 0, 1, 15 },
-  { 0x0, 0x0, 12, -1, -1, 0, 1, 15 },
-  { 0x0, 0x0, 12, -1, -1, 0, 1, 15 },
-  { 0x1, 0x1, 13, 272, 1452, 34, 1, 131 },
-  { 0x1, 0x1, 13, 274, 1461, 34, 1, 131 },
-  { 0x1, 0x1, 13, 276, 1470, 34, 1, 131 },
-  { 0x1, 0x1, 13, 280, 1483, 34, 1, 131 },
-  { 0x1, 0x1, 13, 282, 1492, 34, 1, 131 },
-  { 0x1, 0x1, 13, 284, 1501, 34, 1, 131 },
-  { 0x1, 0x1, 13, 286, 1510, 34, 1, 131 },
-  { 0x1, 0x1, 13, 288, 1519, 34, 1, 131 },
-  { 0x1, 0x1, 13, 290, 1528, 34, 1, 131 },
-  { 0x1, 0x1, 13, 292, 1537, 34, 1, 131 },
-  { 0x1, 0x1, 13, 294, 1547, 34, 1, 131 },
-  { 0x1, 0x1, 13, 296, 1557, 34, 1, 131 },
-  { 0x0, 0x0, 19, -1, 795, 0, 0, -1 },
-  { 0x0, 0x0, 19, -1, 796, 0, 0, -1 },
-  { 0x0, 0x0, 19, -1, 797, 0, 0, -1 },
-  { 0x0, 0x0, 19, -1, 798, 0, 0, -1 },
-  { 0x0, 0x0, 19, -1, 799, 0, 0, -1 },
-  { 0x0, 0x0, 19, -1, 800, 0, 0, -1 },
-  { 0x0, 0x0, 19, -1, 801, 0, 0, -1 },
-  { 0x0, 0x0, 19, -1, 802, 0, 0, -1 },
-  { 0x0, 0x0, 19, -1, 803, 0, 0, -1 },
-  { 0x0, 0x0, 19, -1, 804, 0, 0, -1 },
-  { 0x0, 0x0, 19, -1, 805, 0, 0, -1 },
-  { 0x0, 0x0, 19, -1, 806, 0, 0, -1 },
-  { 0x0, 0x0, 19, -1, 807, 0, 0, -1 },
-  { 0x0, 0x0, 19, -1, 808, 0, 0, -1 },
-  { 0x0, 0x0, 19, -1, 809, 0, 0, -1 },
-  { 0x0, 0x0, 19, -1, 810, 0, 0, -1 },
-  { 0x0, 0x0, 19, -1, 811, 0, 0, -1 },
-  { 0x0, 0x0, 19, -1, 812, 0, 0, -1 },
-  { 0x0, 0x0, 19, -1, 813, 0, 0, -1 },
-  { 0x0, 0x0, 19, -1, 814, 0, 0, -1 },
-  { 0x0, 0x0, 19, -1, 815, 0, 0, -1 },
-  { 0x0, 0x0, 19, -1, 816, 0, 0, -1 },
-  { 0x0, 0x0, 19, -1, 817, 0, 0, -1 },
-  { 0x0, 0x0, 19, -1, 818, 0, 0, -1 },
-  { 0x0, 0x0, 19, -1, 819, 0, 0, -1 },
-  { 0x0, 0x0, 19, -1, 820, 0, 0, -1 },
-  { 0x0, 0x0, 19, -1, 821, 0, 0, -1 },
-  { 0x0, 0x0, 19, -1, 822, 0, 0, -1 },
-  { 0x0, 0x0, 19, -1, 823, 0, 0, -1 },
-  { 0x0, 0x0, 19, -1, 824, 0, 0, -1 },
-  { 0x0, 0x0, 20, -1, 2827, 0, 0, -1 },
-  { 0x0, 0x0, 20, -1, 2828, 0, 0, -1 },
-  { 0x0, 0x0, 20, -1, 2843, 0, 0, -1 },
-  { 0x0, 0x0, 20, -1, 2844, 0, 0, -1 },
-  { 0x0, 0x0, 20, -1, 2849, 0, 0, -1 },
-  { 0x0, 0x0, 20, -1, 2850, 0, 0, -1 },
-  { 0x0, 0x0, 21, 831, 2839, 0, 0, -1 },
-  { 0x0, 0x0, 21, 832, 2841, 0, 0, -1 },
-  { 0x0, 0x0, 23, -1, 2837, 0, 0, -1 },
-  { 0x0, 0x0, 23, -1, 2838, 0, 0, -1 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 6 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 6 },
-  { 0x1, 0x1, 24, 1272, -1, 35, 1, 6 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 6 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 6 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 6 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 6 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 6 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 6 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 6 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 6 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 6 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 6 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 6 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 6 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 6 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 6 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 6 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 6 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 7 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 7 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 7 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 7 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 7 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 7 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 7 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 7 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 6 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 6 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 6 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 6 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 6 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 6 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 6 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 6 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 7 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 7 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 7 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 7 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 8 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 8 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 8 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 8 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 8 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 8 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 8 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 8 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 8 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 8 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 8 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 8 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 16 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 16 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 16 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 16 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 16 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 16 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 16 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 16 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 16 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 16 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 16 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 16 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, 1293, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 19 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 19 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 19 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 19 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 19 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 19 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 19 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 19 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 19 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 19 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 19 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 19 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 19 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 19 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 19 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 19 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 19 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 19 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 19 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 19 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 19 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 19 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 19 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 19 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 20 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 21 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, 1326, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 18 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
-  { 0x1, 0x1, 24, -1, -1, 35, 1, 22 },
-  { 0x1, 0x1, 24, -1, -1, 33, 1, 82 },
-  { 0x1, 0x1, 24, -1, -1, 33, 1, 82 },
-  { 0x1, 0x1, 24, 1342, 1455, 35, 1, 137 },
-  { 0x1, 0x1, 24, 1343, 1464, 35, 1, 137 },
-  { 0x1, 0x1, 24, 1344, 1473, 35, 1, 137 },
-  { 0x1, 0x1, 24, 1345, 1486, 35, 1, 137 },
-  { 0x1, 0x1, 24, 1346, 1495, 35, 1, 137 },
-  { 0x1, 0x1, 24, 1347, 1504, 35, 1, 137 },
-  { 0x1, 0x1, 24, 1348, 1513, 35, 1, 137 },
-  { 0x1, 0x1, 24, 1349, 1522, 35, 1, 137 },
-  { 0x1, 0x1, 24, 1350, 1531, 35, 1, 137 },
-  { 0x1, 0x1, 24, 1351, 1541, 35, 1, 137 },
-  { 0x1, 0x1, 24, 1352, 1551, 35, 1, 137 },
-  { 0x1, 0x1, 24, 1353, 1561, 35, 1, 137 },
-  { 0x1, 0x1, 24, 1354, 1570, 35, 1, 151 },
-  { 0x1, 0x1, 24, 1355, 1576, 35, 1, 156 },
-  { 0x1, 0x1, 24, 1356, 1582, 35, 1, 156 },
-  { 0x1, 0x1, 24, 1357, 1588, 35, 1, 151 },
-  { 0x1, 0x1, 24, 1358, 1594, 35, 1, 156 },
-  { 0x1, 0x1, 24, 1359, 1600, 35, 1, 156 },
-  { 0x1, 0x1, 24, 1360, 1606, 35, 1, 151 },
-  { 0x1, 0x1, 24, 1361, 1612, 35, 1, 156 },
-  { 0x1, 0x1, 24, 1362, 1618, 35, 1, 156 },
-  { 0x1, 0x1, 24, 1363, 1624, 35, 1, 151 },
-  { 0x1, 0x1, 24, 1364, 1630, 35, 1, 156 },
-  { 0x1, 0x1, 24, 1365, 1636, 35, 1, 151 },
-  { 0x1, 0x1, 24, 1366, 1642, 35, 1, 156 },
-  { 0x1, 0x1, 24, 1367, 1648, 35, 1, 151 },
-  { 0x1, 0x1, 24, 1368, 1654, 35, 1, 156 },
-  { 0x1, 0x1, 24, 1369, 1660, 35, 1, 151 },
-  { 0x1, 0x1, 24, 1370, 1666, 35, 1, 156 },
-  { 0x1, 0x1, 24, 1371, 1672, 35, 1, 156 },
-  { 0x0, 0x0, 33, 2821, 2819, 0, 0, -1 },
-  { 0x0, 0x0, 33, 2824, 2822, 0, 0, -1 },
-  { 0x0, 0x0, 33, 2830, 2829, 0, 0, -1 },
-  { 0x0, 0x0, 33, 2832, 2831, 0, 0, -1 },
-  { 0x0, 0x0, 33, 2846, 2845, 0, 0, -1 },
-  { 0x0, 0x0, 33, 2848, 2847, 0, 0, -1 },
-  { 0x0, 0x0, 35, -1, 2840, 0, 0, -1 },
-  { 0x0, 0x0, 35, -1, 2842, 0, 0, -1 },
-  { 0x1, 0x1, 38, -1, 2290, 37, 1, 30 },
-  { 0x1, 0x1, 38, -1, 2349, 37, 1, 30 },
-  { 0x0, 0x0, 38, -1, 2352, 0, 0, -1 },
-  { 0x1, 0x1, 38, -1, -1, 37, 1, 30 },
-  { 0x1, 0x1, 38, -1, 2357, 37, 1, 30 },
-  { 0x0, 0x0, 38, -1, 2360, 0, 0, -1 },
-  { 0x1, 0x1, 38, -1, -1, 37, 1, 30 },
-  { 0x0, 0x0, 38, -1, 2363, 0, 0, -1 },
-  { 0x1, 0x1, 38, -1, -1, 37, 1, 30 },
-  { 0x1, 0x1, 38, -1, 2366, 37, 1, 30 },
-  { 0x1, 0x1, 38, -1, 2369, 37, 1, 30 },
-  { 0x1, 0x1, 38, -1, 2402, 37, 1, 30 },
-  { 0x3, 0x3, 38, -1, -1, 30, 1, 144 },
-  { 0x0, 0x0, 38, 1142, -1, 0, 1, 102 },
-  { 0x0, 0x0, 38, -1, -1, 0, 1, 111 },
-  { 0x0, 0x0, 38, 1148, -1, 0, 1, 123 },
-  { 0x3, 0x3, 38, -1, -1, 30, 1, 160 },
-  { 0x0, 0x0, 38, 1149, -1, 0, 1, 41 },
-  { 0x0, 0x0, 40, -1, 973, 0, 0, -1 },
-  { 0x0, 0x0, 40, -1, 981, 0, 0, -1 },
-  { 0x0, 0x0, 40, 1151, 977, 0, 0, -1 },
-  { 0x3, 0x3, 40, -1, 622, 33, 1, 6 },
-  { 0x18000001, 0x18000001, 40, -1, 630, 6, 1, 7 },
-  { 0x3, 0x3, 40, 1152, 626, 33, 1, 6 },
-  { 0x0, 0x0, 40, -1, 985, 0, 0, -1 },
-  { 0x3, 0x3, 40, -1, 642, 33, 1, 8 },
-  { 0x0, 0x0, 40, -1, 989, 0, 0, -1 },
-  { 0x3, 0x3, 40, -1, 654, 33, 1, 16 },
-  { 0x0, 0x0, 40, -1, 994, 0, 0, -1 },
-  { 0x0, 0x0, 40, -1, 998, 0, 0, -1 },
-  { 0x3, 0x3, 40, -1, 677, 33, 1, 18 },
-  { 0x3, 0x3, 40, -1, 681, 33, 1, 18 },
-  { 0x0, 0x0, 40, -1, 1002, 0, 0, -1 },
-  { 0x0, 0x0, 40, -1, 1006, 0, 0, -1 },
-  { 0x3, 0x3, 40, -1, 701, 33, 1, 19 },
-  { 0x18000001, 0x18000001, 40, -1, 705, 6, 1, 19 },
-  { 0x0, 0x0, 40, -1, 1010, 0, 0, -1 },
-  { 0x3, 0x3, 40, -1, 717, 33, 1, 20 },
-  { 0x0, 0x0, 40, -1, 1014, 0, 0, -1 },
-  { 0x0, 0x0, 40, -1, 1018, 0, 0, -1 },
-  { 0x3, 0x3, 40, -1, 737, 33, 1, 21 },
-  { 0x18000001, 0x18000001, 40, -1, 741, 6, 1, 21 },
-  { 0x0, 0x0, 40, -1, 1022, 0, 0, -1 },
-  { 0x3, 0x3, 40, -1, 753, 33, 1, 22 },
-  { 0x0, 0x0, 40, -1, 1027, 0, 0, -1 },
-  { 0x0, 0x0, 40, -1, 1031, 0, 0, -1 },
-  { 0x3, 0x3, 40, -1, 776, 33, 1, 18 },
-  { 0x3, 0x3, 40, -1, 780, 33, 1, 18 },
-  { 0x0, 0x0, 40, -1, 1035, 0, 0, -1 },
-  { 0x3, 0x3, 40, -1, 792, 33, 1, 22 },
-  { 0x0, 0x0, 41, 851, 972, 0, 0, -1 },
-  { 0x0, 0x0, 41, 852, 980, 0, 0, -1 },
-  { 0x0, 0x0, 41, 853, 976, 0, 0, -1 },
-  { 0x1, 0x1, 41, 854, 621, 34, 1, 6 },
-  { 0x10000001, 0x10000001, 41, 855, 629, 6, 1, 7 },
-  { 0x1, 0x1, 41, 856, 625, 34, 1, 6 },
-  { 0x0, 0x0, 41, 857, 984, 0, 0, -1 },
-  { 0x1, 0x1, 41, 858, 641, 34, 1, 8 },
-  { 0x0, 0x0, 41, 859, 988, 0, 0, -1 },
-  { 0x1, 0x1, 41, 860, 653, 34, 1, 16 },
-  { 0x0, 0x0, 41, 861, 993, 0, 0, -1 },
-  { 0x0, 0x0, 41, 862, 997, 0, 0, -1 },
-  { 0x1, 0x1, 41, 863, 676, 34, 1, 18 },
-  { 0x1, 0x1, 41, 864, 680, 34, 1, 18 },
-  { 0x0, 0x0, 41, 865, 1001, 0, 0, -1 },
-  { 0x0, 0x0, 41, 866, 1005, 0, 0, -1 },
-  { 0x1, 0x1, 41, 867, 700, 34, 1, 19 },
-  { 0x10000001, 0x10000001, 41, 868, 704, 6, 1, 19 },
-  { 0x0, 0x0, 41, 869, 1009, 0, 0, -1 },
-  { 0x1, 0x1, 41, 870, 716, 34, 1, 20 },
-  { 0x0, 0x0, 41, 871, 1013, 0, 0, -1 },
-  { 0x0, 0x0, 41, 872, 1017, 0, 0, -1 },
-  { 0x1, 0x1, 41, 873, 736, 34, 1, 21 },
-  { 0x10000001, 0x10000001, 41, 874, 740, 6, 1, 21 },
-  { 0x0, 0x0, 41, 875, 1021, 0, 0, -1 },
-  { 0x1, 0x1, 41, 876, 752, 34, 1, 22 },
-  { 0x0, 0x0, 41, 877, 1026, 0, 0, -1 },
-  { 0x0, 0x0, 41, 878, 1030, 0, 0, -1 },
-  { 0x1, 0x1, 41, 879, 775, 34, 1, 18 },
-  { 0x1, 0x1, 41, 880, 779, 34, 1, 18 },
-  { 0x0, 0x0, 41, 881, 1034, 0, 0, -1 },
-  { 0x1, 0x1, 41, 882, 791, 34, 1, 22 },
-  { 0x800001, 0x800001, 41, -1, 1156, 4, 1, 17 },
-  { 0x1, 0x1, 41, 2236, 1154, 4, 1, 17 },
-  { 0x1, 0x1, 41, 957, 1159, 4, 1, 23 },
-  { 0x2, 0x3, 41, -1, 1164, 20, 1, 68 },
-  { 0x1, 0x1, 41, 2237, 1162, 21, 1, 68 },
-  { 0x0, 0x0, 42, -1, -1, 0, 1, 86 },
-  { 0x0, 0x0, 42, -1, -1, 0, 1, 86 },
-  { 0x0, 0x0, 42, -1, -1, 0, 1, 130 },
-  { 0x1, 0x1, 44, 1372, 297, 38, 1, 1 },
-  { 0x1, 0x1, 44, 1373, 299, 38, 1, 1 },
-  { 0x0, 0x0, 44, -1, 302, 0, 0, -1 },
-  { 0x0, 0x0, 44, -1, 424, 0, 0, -1 },
-  { 0x1, 0x1, 44, 1377, 319, 38, 1, 1 },
-  { 0x1, 0x1, 44, 1378, 321, 38, 1, 1 },
-  { 0x0, 0x0, 44, -1, 324, 0, 0, -1 },
-  { 0x0, 0x0, 44, -1, 464, 0, 0, -1 },
-  { 0x0, 0x0, 44, -1, 326, 0, 0, -1 },
-  { 0x0, 0x0, 44, -1, 344, 0, 0, -1 },
-  { 0x1, 0x1, 44, 1384, 345, 38, 1, 1 },
-  { 0x1, 0x1, 44, 1385, 347, 38, 1, 1 },
-  { 0x0, 0x0, 44, -1, 350, 0, 0, -1 },
-  { 0x0, 0x0, 44, -1, 472, 0, 0, -1 },
-  { 0x1, 0x1, 44, 1389, 367, 38, 1, 1 },
-  { 0x1, 0x1, 44, 1390, 369, 38, 1, 1 },
-  { 0x0, 0x0, 44, -1, 372, 0, 0, -1 },
-  { 0x0, 0x0, 44, -1, 512, 0, 0, -1 },
-  { 0x0, 0x0, 44, -1, 374, 0, 0, -1 },
-  { 0x0, 0x0, 44, -1, 392, 0, 0, -1 },
-  { 0x0, 0x0, 44, 1248, 2297, 0, 0, -1 },
-  { 0x0, 0x0, 44, 1249, 2305, 0, 1, 55 },
-  { 0x0, 0x0, 44, 1250, 2972, 0, 1, 55 },
-  { 0x0, 0x0, 44, 1251, 2373, 0, 0, -1 },
-  { 0x0, 0x0, 44, 1252, -1, 0, 1, 50 },
-  { 0x0, 0x0, 44, 1120, -1, 0, 1, 0 },
-  { 0x0, 0x0, 44, 1121, -1, 0, 1, 0 },
-  { 0x0, 0x0, 44, 1122, -1, 0, 1, 0 },
-  { 0x1, 0x1, 45, -1, 1676, 30, 1, 158 },
-  { 0x1, 0x1, 45, 963, 1675, 30, 1, 158 },
-  { 0x1, 0x1, 45, -1, 1680, 30, 1, 159 },
-  { 0x1, 0x1, 45, 964, 1679, 30, 1, 159 },
-  { 0x1, 0x1, 45, -1, 1684, 30, 1, 159 },
-  { 0x1, 0x1, 45, 965, 1683, 30, 1, 159 },
-  { 0x3, 0x3, 46, -1, 1160, 3, 1, 23 },
-  { 0x1, 0x1, 47, 2257, -1, 30, 1, 144 },
-  { 0x1, 0x1, 47, 2288, -1, 30, 1, 160 },
-  { 0x0, 0x0, 49, -1, -1, 0, 1, 41 },
-  { 0x0, 0x0, 49, -1, -1, 0, 1, 41 },
-  { 0x0, 0x0, 49, -1, -1, 0, 1, 41 },
-  { 0x1, 0x1, 56, -1, 1677, 31, 1, 158 },
-  { 0x1, 0x1, 56, -1, 1681, 31, 1, 159 },
-  { 0x1, 0x1, 56, -1, 1685, 31, 1, 159 },
-  { 0x0, 0x0, 56, -1, -1, 0, 1, 101 },
-  { 0x2, 0x3, 56, -1, -1, 27, 1, 101 },
-  { 0x1, 0x1, 56, -1, -1, 28, 1, 101 },
-  { 0x0, 0x0, 65, 14, 592, 0, 1, 6 },
-  { 0x0, 0x0, 65, 1273, 595, 0, 1, 6 },
-  { 0x1, 0x1, 65, 1274, 597, 33, 1, 6 },
-  { 0x1, 0x1, 65, 1275, 599, 34, 1, 6 },
-  { 0x3, 0x3, 65, 1276, 601, 33, 1, 6 },
-  { 0x0, 0x0, 65, 1277, 603, 0, 1, 6 },
-  { 0x1, 0x1, 65, 1278, 605, 33, 1, 6 },
-  { 0x1, 0x1, 65, 1279, 607, 34, 1, 6 },
-  { 0x3, 0x3, 65, 1280, 609, 33, 1, 6 },
-  { 0x1, 0x1, 65, 1281, 611, 6, 1, 7 },
-  { 0x8000001, 0x8000001, 65, 1282, 613, 6, 1, 7 },
-  { 0x10000001, 0x10000001, 65, 1283, 615, 6, 1, 7 },
-  { 0x18000001, 0x18000001, 65, 1284, 617, 6, 1, 7 },
-  { 0x0, 0x0, 65, 1285, 631, 0, 1, 8 },
-  { 0x1, 0x1, 65, 1286, 633, 33, 1, 8 },
-  { 0x1, 0x1, 65, 1287, 635, 34, 1, 8 },
-  { 0x3, 0x3, 65, 1288, 637, 33, 1, 8 },
-  { 0x0, 0x0, 65, 1289, 643, 0, 1, 16 },
-  { 0x1, 0x1, 65, 1290, 645, 33, 1, 16 },
-  { 0x1, 0x1, 65, 1291, 647, 34, 1, 16 },
-  { 0x3, 0x3, 65, 1292, 649, 33, 1, 16 },
-  { 0x0, 0x0, 65, 15, 655, 0, 1, 18 },
-  { 0x0, 0x0, 65, 1294, 658, 0, 1, 18 },
-  { 0x1, 0x1, 65, 1295, 660, 33, 1, 18 },
-  { 0x1, 0x1, 65, 1296, 662, 34, 1, 18 },
-  { 0x3, 0x3, 65, 1297, 664, 33, 1, 18 },
-  { 0x0, 0x0, 65, 1298, 666, 0, 1, 18 },
-  { 0x1, 0x1, 65, 1299, 668, 33, 1, 18 },
-  { 0x1, 0x1, 65, 1300, 670, 34, 1, 18 },
-  { 0x3, 0x3, 65, 1301, 672, 33, 1, 18 },
-  { 0x0, 0x0, 65, 1302, 682, 0, 1, 19 },
-  { 0x1, 0x1, 65, 1303, 684, 33, 1, 19 },
-  { 0x1, 0x1, 65, 1304, 686, 34, 1, 19 },
-  { 0x3, 0x3, 65, 1305, 688, 33, 1, 19 },
-  { 0x1, 0x1, 65, 1306, 690, 6, 1, 19 },
-  { 0x8000001, 0x8000001, 65, 1307, 692, 6, 1, 19 },
-  { 0x10000001, 0x10000001, 65, 1308, 694, 6, 1, 19 },
-  { 0x18000001, 0x18000001, 65, 1309, 696, 6, 1, 19 },
-  { 0x0, 0x0, 65, 1310, 706, 0, 1, 20 },
-  { 0x1, 0x1, 65, 1311, 708, 33, 1, 20 },
-  { 0x1, 0x1, 65, 1312, 710, 34, 1, 20 },
-  { 0x3, 0x3, 65, 1313, 712, 33, 1, 20 },
-  { 0x0, 0x0, 65, 1314, 718, 0, 1, 21 },
-  { 0x1, 0x1, 65, 1315, 720, 33, 1, 21 },
-  { 0x1, 0x1, 65, 1316, 722, 34, 1, 21 },
-  { 0x3, 0x3, 65, 1317, 724, 33, 1, 21 },
-  { 0x1, 0x1, 65, 1318, 726, 6, 1, 21 },
-  { 0x8000001, 0x8000001, 65, 1319, 728, 6, 1, 21 },
-  { 0x10000001, 0x10000001, 65, 1320, 730, 6, 1, 21 },
-  { 0x18000001, 0x18000001, 65, 1321, 732, 6, 1, 21 },
-  { 0x0, 0x0, 65, 1322, 742, 0, 1, 22 },
-  { 0x1, 0x1, 65, 1323, 744, 33, 1, 22 },
-  { 0x1, 0x1, 65, 1324, 746, 34, 1, 22 },
-  { 0x3, 0x3, 65, 1325, 748, 33, 1, 22 },
-  { 0x0, 0x0, 65, 17, 754, 0, 1, 18 },
-  { 0x0, 0x0, 65, 1327, 757, 0, 1, 18 },
-  { 0x1, 0x1, 65, 1328, 759, 33, 1, 18 },
-  { 0x1, 0x1, 65, 1329, 761, 34, 1, 18 },
-  { 0x3, 0x3, 65, 1330, 763, 33, 1, 18 },
-  { 0x0, 0x0, 65, 1331, 765, 0, 1, 18 },
-  { 0x1, 0x1, 65, 1332, 767, 33, 1, 18 },
-  { 0x1, 0x1, 65, 1333, 769, 34, 1, 18 },
-  { 0x3, 0x3, 65, 1334, 771, 33, 1, 18 },
-  { 0x0, 0x0, 65, 1335, 781, 0, 1, 22 },
-  { 0x1, 0x1, 65, 1336, 783, 33, 1, 22 },
-  { 0x1, 0x1, 65, 1337, 785, 34, 1, 22 },
-  { 0x3, 0x3, 65, 1338, 787, 33, 1, 22 },
-  { 0x3, 0x3, 66, 561, 1539, 33, 1, 136 },
-  { 0x3, 0x3, 66, 562, 1549, 33, 1, 136 },
-  { 0x3, 0x3, 66, 563, 1559, 33, 1, 136 },
-  { 0x0, 0x0, 66, -1, 1564, 0, 1, 147 },
-  { 0x0, 0x0, 66, -1, 1565, 0, 1, 152 },
-  { 0x0, 0x0, 66, -1, 1566, 0, 1, 152 },
-  { 0x0, 0x0, 107, 1046, 2345, 0, 0, -1 },
-  { 0x0, 0x0, 107, 1047, 2864, 0, 1, 30 },
-  { 0x0, 0x0, 107, 1048, 2386, 0, 0, -1 },
-  { 0x0, 0x0, 107, 1049, 2868, 0, 1, 30 },
-  { 0x0, 0x0, 109, -1, 2347, 0, 0, -1 },
-  { 0x1, 0x1, 109, -1, 2865, 27, 1, 30 },
-  { 0x0, 0x0, 109, -1, 2388, 0, 0, -1 },
-  { 0x1, 0x1, 109, -1, 2869, 27, 1, 30 },
-  { 0x0, 0x0, 110, 1051, -1, 0, 1, 122 },
-  { 0x1, 0x1, 111, -1, -1, 27, 1, 122 },
-  { 0x0, 0x0, 112, 1082, 2894, 0, 1, 1 },
-  { 0x0, 0x0, 112, 1083, 2897, 0, 1, 1 },
-  { 0x0, 0x0, 112, 1224, 305, 0, 0, -1 },
-  { 0x0, 0x0, 112, 1225, 309, 0, 0, -1 },
-  { 0x0, 0x0, 112, 1185, 440, 0, 0, -1 },
-  { 0x0, 0x0, 112, 1186, 448, 0, 0, -1 },
-  { 0x0, 0x0, 112, -1, 456, 0, 0, -1 },
-  { 0x0, 0x0, 112, 1084, 2910, 0, 1, 1 },
-  { 0x0, 0x0, 112, 1085, 2913, 0, 1, 1 },
-  { 0x0, 0x0, 112, -1, 330, 0, 0, -1 },
-  { 0x0, 0x0, 112, -1, 334, 0, 0, -1 },
-  { 0x0, 0x0, 112, 1233, 335, 0, 0, -1 },
-  { 0x0, 0x0, 112, 1234, 339, 0, 0, -1 },
-  { 0x0, 0x0, 112, 1086, 2934, 0, 1, 1 },
-  { 0x0, 0x0, 112, 1087, 2937, 0, 1, 1 },
-  { 0x0, 0x0, 112, 1237, 353, 0, 0, -1 },
-  { 0x0, 0x0, 112, 1238, 357, 0, 0, -1 },
-  { 0x0, 0x0, 112, 1198, 488, 0, 0, -1 },
-  { 0x0, 0x0, 112, 1199, 496, 0, 0, -1 },
-  { 0x0, 0x0, 112, -1, 504, 0, 0, -1 },
-  { 0x0, 0x0, 112, 1391, 2948, 0, 1, 1 },
-  { 0x0, 0x0, 112, 1392, 2950, 0, 1, 1 },
-  { 0x0, 0x0, 112, -1, 378, 0, 0, -1 },
-  { 0x0, 0x0, 112, -1, 382, 0, 0, -1 },
-  { 0x0, 0x0, 112, 1246, 383, 0, 0, -1 },
-  { 0x0, 0x0, 112, 1247, 387, 0, 0, -1 },
-  { 0x0, 0x0, 112, -1, 2315, 0, 0, -1 },
-  { 0x1, 0x9, 112, -1, 2319, 33, 1, 55 },
-  { 0x1, 0x9, 112, -1, 2981, 33, 1, 55 },
-  { 0x2, 0x3, 112, 1408, 2382, 27, 1, 50 },
-  { 0x1, 0x1, 114, 1374, 2895, 37, 1, 1 },
-  { 0x1, 0x1, 114, 1375, 2898, 37, 1, 1 },
-  { 0x1, 0x1, 114, 1379, 2911, 37, 1, 1 },
-  { 0x1, 0x1, 114, 1380, 2914, 37, 1, 1 },
-  { 0x1, 0x1, 114, 1386, 2935, 37, 1, 1 },
-  { 0x1, 0x1, 114, 1387, 2938, 37, 1, 1 },
-  { 0x0, 0x0, 114, -1, 2958, 0, 1, 1 },
-  { 0x0, 0x0, 114, -1, 2959, 0, 1, 1 },
-  { 0x0, 0x0, 115, 1123, 2890, 0, 1, 1 },
-  { 0x0, 0x0, 115, 1124, 2892, 0, 1, 1 },
-  { 0x0, 0x0, 115, 1183, 303, 0, 0, -1 },
-  { 0x0, 0x0, 115, 1184, 307, 0, 0, -1 },
-  { 0x0, 0x0, 115, -1, 444, 0, 0, -1 },
-  { 0x0, 0x0, 115, -1, 452, 0, 0, -1 },
-  { 0x0, 0x0, 115, 1228, 454, 0, 0, -1 },
-  { 0x0, 0x0, 115, -1, 2908, 0, 1, 1 },
-  { 0x0, 0x0, 115, -1, 2909, 0, 1, 1 },
-  { 0x0, 0x0, 115, 1231, 328, 0, 0, -1 },
-  { 0x0, 0x0, 115, 1232, 332, 0, 0, -1 },
-  { 0x0, 0x0, 115, 1192, 337, 0, 0, -1 },
-  { 0x0, 0x0, 115, 1193, 341, 0, 0, -1 },
-  { 0x0, 0x0, 115, 1127, 2930, 0, 1, 1 },
-  { 0x0, 0x0, 115, 1128, 2932, 0, 1, 1 },
-  { 0x0, 0x0, 115, 1196, 351, 0, 0, -1 },
-  { 0x0, 0x0, 115, 1197, 355, 0, 0, -1 },
-  { 0x0, 0x0, 115, -1, 492, 0, 0, -1 },
-  { 0x0, 0x0, 115, -1, 500, 0, 0, -1 },
-  { 0x0, 0x0, 115, 1241, 502, 0, 0, -1 },
-  { 0x0, 0x0, 115, -1, 2946, 0, 1, 1 },
-  { 0x0, 0x0, 115, -1, 2947, 0, 1, 1 },
-  { 0x0, 0x0, 115, 1244, 376, 0, 0, -1 },
-  { 0x0, 0x0, 115, 1245, 380, 0, 0, -1 },
-  { 0x0, 0x0, 115, 1205, 385, 0, 0, -1 },
-  { 0x0, 0x0, 115, 1206, 389, 0, 0, -1 },
-  { 0x0, 0x0, 115, 1078, 2313, 0, 0, -1 },
-  { 0x0, 0x0, 115, 1079, 2317, 0, 1, 55 },
-  { 0x0, 0x0, 115, 1080, 2980, 0, 1, 55 },
-  { 0x0, 0x0, 115, 1081, 2381, 0, 1, 50 },
-  { 0x1, 0x1, 115, -1, -1, 27, 1, 0 },
-  { 0x1, 0x1, 115, -1, -1, 27, 1, 0 },
-  { 0x1, 0x1, 115, -1, -1, 27, 1, 0 },
-  { 0x1, 0x1, 116, -1, 2891, 37, 1, 1 },
-  { 0x1, 0x1, 116, -1, 2893, 37, 1, 1 },
-  { 0x0, 0x0, 116, -1, 2918, 0, 1, 1 },
-  { 0x0, 0x0, 116, -1, 2919, 0, 1, 1 },
-  { 0x1, 0x1, 116, -1, 2931, 37, 1, 1 },
-  { 0x1, 0x1, 116, -1, 2933, 37, 1, 1 },
-  { 0x0, 0x0, 116, -1, 2956, 0, 1, 1 },
-  { 0x0, 0x0, 116, -1, 2957, 0, 1, 1 },
-  { 0x0, 0x0, 117, 1176, -1, 0, 1, 0 },
-  { 0x0, 0x0, 117, 1177, -1, 0, 1, 0 },
-  { 0x0, 0x0, 117, 1178, -1, 0, 1, 0 },
-  { 0x3, 0x3, 117, 1136, -1, 34, 1, 34 },
-  { 0x3, 0x3, 117, 1137, -1, 34, 1, 41 },
-  { 0x1, 0x1, 119, -1, -1, 35, 1, 34 },
-  { 0x1, 0x1, 119, -1, -1, 35, 1, 41 },
-  { 0x0, 0x0, 120, -1, -1, 0, 1, 41 },
-  { 0x0, 0x0, 120, -1, -1, 0, 1, 67 },
-  { 0x1, 0x1, 120, -1, -1, 36, 1, 129 },
-  { 0x0, 0x0, 120, -1, -1, 0, 1, 41 },
-  { 0x1, 0x1, 120, -1, -1, 27, 1, 103 },
-  { 0x0, 0x0, 120, -1, -1, 0, 1, 112 },
-  { 0x0, 0x0, 120, -1, -1, 0, 1, 74 },
-  { 0x0, 0x0, 120, -1, -1, 0, 1, 74 },
-  { 0x0, 0x0, 120, -1, -1, 0, 1, 75 },
-  { 0x0, 0x0, 120, -1, -1, 0, 1, 41 },
-  { 0x1, 0x1, 120, -1, -1, 27, 1, 124 },
-  { 0x1, 0x1, 120, -1, -1, 27, 1, 41 },
-  { 0x0, 0x0, 120, -1, -1, 0, 1, 41 },
-  { 0x0, 0x0, 121, -1, 2820, 0, 0, -1 },
-  { 0x0, 0x0, 121, -1, 2823, 0, 0, -1 },
-  { 0x1, 0x1, 122, -1, -1, 35, 1, 17 },
-  { 0x1, 0x1, 122, -1, -1, 35, 1, 17 },
-  { 0x1, 0x1, 122, -1, -1, 35, 1, 17 },
-  { 0x1, 0x1, 122, -1, -1, 35, 1, 17 },
-  { 0x1, 0x1, 122, -1, -1, 35, 1, 23 },
-  { 0x1, 0x1, 122, -1, -1, 35, 1, 23 },
-  { 0x1, 0x1, 122, -1, -1, 35, 1, 23 },
-  { 0x1, 0x1, 122, -1, -1, 35, 1, 23 },
-  { 0x1, 0x1, 122, -1, -1, 23, 1, 68 },
-  { 0x1, 0x1, 122, -1, -1, 23, 1, 68 },
-  { 0x1, 0x1, 122, -1, -1, 23, 1, 68 },
-  { 0x1, 0x1, 122, -1, -1, 23, 1, 68 },
-  { 0x1, 0x1, 122, 918, -1, 23, 1, 68 },
-  { 0x9, 0x9, 122, 919, -1, 20, 1, 68 },
-  { 0x0, 0x0, 126, 2199, -1, 0, 1, 0 },
-  { 0x0, 0x0, 126, 2200, -1, 0, 1, 0 },
-  { 0x1, 0x1, 126, -1, -1, 28, 1, 34 },
-  { 0x1, 0x1, 126, -1, -1, 27, 1, 34 },
-  { 0x1, 0x1, 126, -1, -1, 29, 1, 0 },
-  { 0x1, 0x1, 126, -1, -1, 29, 1, 0 },
-  { 0x1, 0x1, 126, -1, -1, 29, 1, 0 },
-  { 0x1, 0x1, 126, -1, -1, 29, 1, 0 },
-  { 0x0, 0x0, 126, -1, -1, 0, 1, 121 },
-  { 0x1, 0x1, 126, -1, -1, 29, 1, 0 },
-  { 0x1, 0x1, 126, -1, -1, 29, 1, 0 },
-  { 0x1, 0x1, 126, -1, -1, 29, 1, 0 },
-  { 0x0, 0x0, 126, 1134, -1, 0, 1, 34 },
-  { 0x0, 0x0, 126, 1262, -1, 0, 1, 41 },
-  { 0x0, 0x0, 140, 1212, 2886, 0, 1, 1 },
-  { 0x0, 0x0, 140, 1213, 2888, 0, 1, 1 },
-  { 0x0, 0x0, 140, 1054, 304, 0, 0, -1 },
-  { 0x0, 0x0, 140, 1055, 432, 0, 0, -1 },
-  { 0x0, 0x0, 140, 1094, 313, 0, 0, -1 },
-  { 0x0, 0x0, 140, 1095, 317, 0, 0, -1 },
-  { 0x0, 0x0, 140, 1096, 453, 0, 0, -1 },
-  { 0x0, 0x0, 140, -1, 2906, 0, 1, 1 },
-  { 0x0, 0x0, 140, -1, 2907, 0, 1, 1 },
-  { 0x0, 0x0, 140, 1099, 327, 0, 0, -1 },
-  { 0x0, 0x0, 140, 1100, 331, 0, 0, -1 },
-  { 0x0, 0x0, 140, -1, 338, 0, 0, -1 },
-  { 0x0, 0x0, 140, -1, 342, 0, 0, -1 },
-  { 0x0, 0x0, 140, 1216, 2926, 0, 1, 1 },
-  { 0x0, 0x0, 140, 1217, 2928, 0, 1, 1 },
-  { 0x0, 0x0, 140, 1067, 352, 0, 0, -1 },
-  { 0x0, 0x0, 140, 1068, 480, 0, 0, -1 },
-  { 0x0, 0x0, 140, 1107, 361, 0, 0, -1 },
-  { 0x0, 0x0, 140, 1108, 365, 0, 0, -1 },
-  { 0x0, 0x0, 140, 1109, 501, 0, 0, -1 },
-  { 0x0, 0x0, 140, -1, 2944, 0, 1, 1 },
-  { 0x0, 0x0, 140, -1, 2945, 0, 1, 1 },
-  { 0x0, 0x0, 140, 1112, 375, 0, 0, -1 },
-  { 0x0, 0x0, 140, 1113, 379, 0, 0, -1 },
-  { 0x0, 0x0, 140, -1, 386, 0, 0, -1 },
-  { 0x0, 0x0, 140, -1, 390, 0, 0, -1 },
-  { 0x0, 0x0, 140, 3012, 2301, 0, 0, -1 },
-  { 0x1, 0x1, 140, 3013, 2309, 33, 1, 55 },
-  { 0x1, 0x1, 140, 3014, 2974, 33, 1, 55 },
-  { 0x0, 0x0, 140, 3015, 2375, 0, 0, -1 },
-  { 0x1, 0x1, 140, 3016, -1, 28, 1, 50 },
-  { 0x1, 0x1, 141, -1, 2887, 37, 1, 1 },
-  { 0x1, 0x1, 141, -1, 2889, 37, 1, 1 },
-  { 0x0, 0x0, 141, -1, 2916, 0, 1, 1 },
-  { 0x0, 0x0, 141, -1, 2917, 0, 1, 1 },
-  { 0x1, 0x1, 141, -1, 2927, 37, 1, 1 },
-  { 0x1, 0x1, 141, -1, 2929, 37, 1, 1 },
-  { 0x0, 0x0, 141, -1, 2954, 0, 1, 1 },
-  { 0x0, 0x0, 141, -1, 2955, 0, 1, 1 },
-  { 0x1, 0x1, 144, 917, 1158, 3, 1, 23 },
-  { 0x0, 0x0, 145, 2201, -1, 0, 1, 34 },
-  { 0x0, 0x0, 146, 923, 2880, 0, 1, 1 },
-  { 0x0, 0x0, 146, 924, 2883, 0, 1, 1 },
-  { 0x0, 0x0, 146, -1, 306, 0, 0, -1 },
-  { 0x0, 0x0, 146, -1, 436, 0, 0, -1 },
-  { 0x0, 0x0, 146, 1056, 311, 0, 0, -1 },
-  { 0x0, 0x0, 146, 1057, 315, 0, 0, -1 },
-  { 0x0, 0x0, 146, 1058, 455, 0, 0, -1 },
-  { 0x0, 0x0, 146, 927, 2900, 0, 1, 1 },
-  { 0x0, 0x0, 146, 928, 2903, 0, 1, 1 },
-  { 0x0, 0x0, 146, 1061, 329, 0, 0, -1 },
-  { 0x0, 0x0, 146, 1062, 333, 0, 0, -1 },
-  { 0x0, 0x0, 146, 1101, 336, 0, 0, -1 },
-  { 0x0, 0x0, 146, 1102, 340, 0, 0, -1 },
-  { 0x0, 0x0, 146, 933, 2920, 0, 1, 1 },
-  { 0x0, 0x0, 146, 934, 2923, 0, 1, 1 },
-  { 0x0, 0x0, 146, -1, 354, 0, 0, -1 },
-  { 0x0, 0x0, 146, -1, 484, 0, 0, -1 },
-  { 0x0, 0x0, 146, 1069, 359, 0, 0, -1 },
-  { 0x0, 0x0, 146, 1070, 363, 0, 0, -1 },
-  { 0x0, 0x0, 146, 1071, 503, 0, 0, -1 },
-  { 0x0, 0x0, 146, 937, 2940, 0, 1, 1 },
-  { 0x0, 0x0, 146, 938, 2942, 0, 1, 1 },
-  { 0x0, 0x0, 146, 1074, 377, 0, 0, -1 },
-  { 0x0, 0x0, 146, 1075, 381, 0, 0, -1 },
-  { 0x0, 0x0, 146, 1114, 384, 0, 0, -1 },
-  { 0x0, 0x0, 146, 1115, 388, 0, 0, -1 },
-  { 0x0, 0x0, 146, 1207, 2299, 0, 0, -1 },
-  { 0x1, 0x1, 146, 1208, 2307, 36, 1, 55 },
-  { 0x1, 0x1, 146, 1209, 2973, 36, 1, 55 },
-  { 0x0, 0x0, 146, 1210, 2374, 0, 0, -1 },
-  { 0x1, 0x1, 146, 1211, -1, 27, 1, 50 },
-  { 0x1, 0x1, 147, -1, 2882, 37, 1, 1 },
-  { 0x1, 0x1, 147, -1, 2885, 37, 1, 1 },
-  { 0x1, 0x1, 147, -1, 2902, 37, 1, 1 },
-  { 0x1, 0x1, 147, -1, 2905, 37, 1, 1 },
-  { 0x1, 0x1, 147, -1, 2922, 37, 1, 1 },
-  { 0x1, 0x1, 147, -1, 2925, 37, 1, 1 },
-  { 0x0, 0x0, 147, -1, 2952, 0, 1, 1 },
-  { 0x0, 0x0, 147, -1, 2953, 0, 1, 1 },
-  { 0x0, 0x0, 148, -1, -1, 0, 1, 34 },
-  { 0x0, 0x0, 148, 1135, -1, 0, 1, 41 },
-  { 0x0, 0x0, 149, -1, -1, 0, 1, 41 },
-  { 0x0, 0x0, 149, -1, -1, 0, 1, 67 },
-  { 0x0, 0x0, 149, -1, 2960, 0, 1, 64 },
-  { 0x0, 0x0, 149, -1, 2961, 0, 1, 64 },
-  { 0x0, 0x0, 149, -1, -1, 0, 1, 41 },
-  { 0x0, 0x0, 149, -1, -1, 0, 1, 87 },
-  { 0x0, 0x0, 149, -1, -1, 0, 1, 87 },
-  { 0x0, 0x0, 149, -1, -1, 0, 1, 92 },
-  { 0x0, 0x0, 149, -1, -1, 0, 1, 41 },
-  { 0x1, 0x1, 150, -1, 593, 12, 1, 6 },
-  { 0x1, 0x1, 150, -1, 596, 12, 1, 6 },
-  { 0x200001, 0x200001, 150, -1, 598, 12, 1, 6 },
-  { 0x400001, 0x400001, 150, -1, 600, 12, 1, 6 },
-  { 0x600001, 0x600001, 150, -1, 602, 12, 1, 6 },
-  { 0x1, 0x1, 150, -1, 604, 12, 1, 6 },
-  { 0x200001, 0x200001, 150, -1, 606, 12, 1, 6 },
-  { 0x400001, 0x400001, 150, -1, 608, 12, 1, 6 },
-  { 0x600001, 0x600001, 150, -1, 610, 12, 1, 6 },
-  { 0x41, 0x41, 150, -1, 612, 6, 1, 7 },
-  { 0x8000041, 0x8000041, 150, -1, 614, 6, 1, 7 },
-  { 0x10000041, 0x10000041, 150, -1, 616, 6, 1, 7 },
-  { 0x18000041, 0x18000041, 150, -1, 618, 6, 1, 7 },
-  { 0x1, 0x1, 150, -1, 632, 12, 1, 8 },
-  { 0x200001, 0x200001, 150, -1, 634, 12, 1, 8 },
-  { 0x400001, 0x400001, 150, -1, 636, 12, 1, 8 },
-  { 0x600001, 0x600001, 150, -1, 638, 12, 1, 8 },
-  { 0x1, 0x1, 150, -1, 644, 12, 1, 16 },
-  { 0x200001, 0x200001, 150, -1, 646, 12, 1, 16 },
-  { 0x400001, 0x400001, 150, -1, 648, 12, 1, 16 },
-  { 0x600001, 0x600001, 150, -1, 650, 12, 1, 16 },
-  { 0x1, 0x1, 150, -1, 656, 12, 1, 18 },
-  { 0x1, 0x1, 150, -1, 659, 12, 1, 18 },
-  { 0x200001, 0x200001, 150, -1, 661, 12, 1, 18 },
-  { 0x400001, 0x400001, 150, -1, 663, 12, 1, 18 },
-  { 0x600001, 0x600001, 150, -1, 665, 12, 1, 18 },
-  { 0x1, 0x1, 150, -1, 667, 12, 1, 18 },
-  { 0x200001, 0x200001, 150, -1, 669, 12, 1, 18 },
-  { 0x400001, 0x400001, 150, -1, 671, 12, 1, 18 },
-  { 0x600001, 0x600001, 150, -1, 673, 12, 1, 18 },
-  { 0x1, 0x1, 150, -1, 683, 12, 1, 19 },
-  { 0x200001, 0x200001, 150, -1, 685, 12, 1, 19 },
-  { 0x400001, 0x400001, 150, -1, 687, 12, 1, 19 },
-  { 0x600001, 0x600001, 150, -1, 689, 12, 1, 19 },
-  { 0x41, 0x41, 150, -1, 691, 6, 1, 19 },
-  { 0x8000041, 0x8000041, 150, -1, 693, 6, 1, 19 },
-  { 0x10000041, 0x10000041, 150, -1, 695, 6, 1, 19 },
-  { 0x18000041, 0x18000041, 150, -1, 697, 6, 1, 19 },
-  { 0x1, 0x1, 150, -1, 707, 12, 1, 20 },
-  { 0x200001, 0x200001, 150, -1, 709, 12, 1, 20 },
-  { 0x400001, 0x400001, 150, -1, 711, 12, 1, 20 },
-  { 0x600001, 0x600001, 150, -1, 713, 12, 1, 20 },
-  { 0x1, 0x1, 150, -1, 719, 12, 1, 21 },
-  { 0x200001, 0x200001, 150, -1, 721, 12, 1, 21 },
-  { 0x400001, 0x400001, 150, -1, 723, 12, 1, 21 },
-  { 0x600001, 0x600001, 150, -1, 725, 12, 1, 21 },
-  { 0x41, 0x41, 150, -1, 727, 6, 1, 21 },
-  { 0x8000041, 0x8000041, 150, -1, 729, 6, 1, 21 },
-  { 0x10000041, 0x10000041, 150, -1, 731, 6, 1, 21 },
-  { 0x18000041, 0x18000041, 150, -1, 733, 6, 1, 21 },
-  { 0x1, 0x1, 150, -1, 743, 12, 1, 22 },
-  { 0x200001, 0x200001, 150, -1, 745, 12, 1, 22 },
-  { 0x400001, 0x400001, 150, -1, 747, 12, 1, 22 },
-  { 0x600001, 0x600001, 150, -1, 749, 12, 1, 22 },
-  { 0x1, 0x1, 150, -1, 755, 12, 1, 18 },
-  { 0x1, 0x1, 150, -1, 758, 12, 1, 18 },
-  { 0x200001, 0x200001, 150, -1, 760, 12, 1, 18 },
-  { 0x400001, 0x400001, 150, -1, 762, 12, 1, 18 },
-  { 0x600001, 0x600001, 150, -1, 764, 12, 1, 18 },
-  { 0x1, 0x1, 150, -1, 766, 12, 1, 18 },
-  { 0x200001, 0x200001, 150, -1, 768, 12, 1, 18 },
-  { 0x400001, 0x400001, 150, -1, 770, 12, 1, 18 },
-  { 0x600001, 0x600001, 150, -1, 772, 12, 1, 18 },
-  { 0x1, 0x1, 150, -1, 782, 12, 1, 22 },
-  { 0x200001, 0x200001, 150, -1, 784, 12, 1, 22 },
-  { 0x400001, 0x400001, 150, -1, 786, 12, 1, 22 },
-  { 0x600001, 0x600001, 150, -1, 788, 12, 1, 22 },
-  { 0x0, 0x0, 155, -1, -1, 0, 1, 131 },
-  { 0x0, 0x0, 159, 793, -1, 0, 1, 81 },
-  { 0x0, 0x0, 159, 794, -1, 0, 1, 81 },
-  { 0x9, 0x9, 159, -1, 1456, 32, 1, 137 },
-  { 0x9, 0x9, 159, -1, 1465, 32, 1, 137 },
-  { 0x9, 0x9, 159, -1, 1474, 32, 1, 137 },
-  { 0x9, 0x9, 159, -1, 1487, 32, 1, 137 },
-  { 0x9, 0x9, 159, -1, 1496, 32, 1, 137 },
-  { 0x9, 0x9, 159, -1, 1505, 32, 1, 137 },
-  { 0x9, 0x9, 159, -1, 1514, 32, 1, 137 },
-  { 0x9, 0x9, 159, -1, 1523, 32, 1, 137 },
-  { 0x9, 0x9, 159, -1, 1532, 32, 1, 137 },
-  { 0x9, 0x9, 159, -1, 1542, 32, 1, 137 },
-  { 0x9, 0x9, 159, -1, 1552, 32, 1, 137 },
-  { 0x9, 0x9, 159, -1, 1562, 32, 1, 137 },
-  { 0x9, 0x9, 159, -1, 1571, 32, 1, 151 },
-  { 0x9, 0x9, 159, -1, 1577, 32, 1, 156 },
-  { 0x9, 0x9, 159, -1, 1583, 32, 1, 156 },
-  { 0x9, 0x9, 159, -1, 1589, 32, 1, 151 },
-  { 0x9, 0x9, 159, -1, 1595, 32, 1, 156 },
-  { 0x9, 0x9, 159, -1, 1601, 32, 1, 156 },
-  { 0x9, 0x9, 159, -1, 1607, 32, 1, 151 },
-  { 0x9, 0x9, 159, -1, 1613, 32, 1, 156 },
-  { 0x9, 0x9, 159, -1, 1619, 32, 1, 156 },
-  { 0x9, 0x9, 159, -1, 1625, 32, 1, 151 },
-  { 0x9, 0x9, 159, -1, 1631, 32, 1, 156 },
-  { 0x9, 0x9, 159, -1, 1637, 32, 1, 151 },
-  { 0x9, 0x9, 159, -1, 1643, 32, 1, 156 },
-  { 0x9, 0x9, 159, -1, 1649, 32, 1, 151 },
-  { 0x9, 0x9, 159, -1, 1655, 32, 1, 156 },
-  { 0x9, 0x9, 159, -1, 1661, 32, 1, 151 },
-  { 0x9, 0x9, 159, -1, 1667, 32, 1, 156 },
-  { 0x9, 0x9, 159, -1, 1673, 32, 1, 156 },
-  { 0x0, 0x0, 160, 1253, 298, 0, 0, -1 },
-  { 0x0, 0x0, 160, 1254, 422, 0, 0, -1 },
-  { 0x1, 0x1, 160, -1, 2896, 38, 1, 1 },
-  { 0x1, 0x1, 160, 925, 2899, 38, 1, 1 },
-  { 0x0, 0x0, 160, 926, 423, 0, 0, -1 },
-  { 0x0, 0x0, 160, 1255, 320, 0, 0, -1 },
-  { 0x0, 0x0, 160, 1256, 462, 0, 0, -1 },
-  { 0x1, 0x1, 160, -1, 2912, 38, 1, 1 },
-  { 0x1, 0x1, 160, 929, 2915, 38, 1, 1 },
-  { 0x0, 0x0, 160, 930, 463, 0, 0, -1 },
-  { 0x0, 0x0, 160, 931, 325, 0, 0, -1 },
-  { 0x0, 0x0, 160, 932, 343, 0, 0, -1 },
-  { 0x0, 0x0, 160, 1257, 346, 0, 0, -1 },
-  { 0x0, 0x0, 160, 1258, 470, 0, 0, -1 },
-  { 0x1, 0x1, 160, -1, 2936, 38, 1, 1 },
-  { 0x1, 0x1, 160, 935, 2939, 38, 1, 1 },
-  { 0x0, 0x0, 160, 936, 471, 0, 0, -1 },
-  { 0x0, 0x0, 160, -1, 368, 0, 0, -1 },
-  { 0x0, 0x0, 160, -1, 510, 0, 0, -1 },
-  { 0x1, 0x1, 160, -1, 2949, 38, 1, 1 },
-  { 0x1, 0x1, 160, 939, 2951, 38, 1, 1 },
-  { 0x0, 0x0, 160, 940, 511, 0, 0, -1 },
-  { 0x0, 0x0, 160, 941, 373, 0, 0, -1 },
-  { 0x0, 0x0, 160, 942, 391, 0, 0, -1 },
-  { 0x0, 0x0, 161, 1415, 2321, 0, 0, -1 },
-  { 0x0, 0x0, 161, 1416, 2329, 0, 1, 55 },
-  { 0x0, 0x0, 161, 1417, 2990, 0, 1, 55 },
-  { 0x0, 0x0, 161, 1418, 2377, 0, 0, -1 },
-  { 0x1, 0x1, 161, 1419, -1, 29, 1, 50 },
-  { 0x0, 0x0, 162, -1, 2339, 0, 0, -1 },
-  { 0x1, 0x9, 162, -1, 2343, 33, 1, 55 },
-  { 0x1, 0x9, 162, -1, 2999, 33, 1, 55 },
-  { 0x6, 0x7, 162, -1, 2384, 27, 1, 50 },
-  { 0x0, 0x0, 163, 1401, 2337, 0, 0, -1 },
-  { 0x0, 0x0, 163, 1402, 2341, 0, 1, 55 },
-  { 0x0, 0x0, 163, 1403, 2998, 0, 1, 55 },
-  { 0x1, 0x1, 163, 1404, 2383, 29, 1, 50 },
-  { 0x1, 0x1, 164, 1422, -1, 27, 1, 34 },
-  { 0x0, 0x0, 165, 2193, 2325, 0, 0, -1 },
-  { 0x1, 0x1, 165, 2194, 2333, 33, 1, 55 },
-  { 0x1, 0x1, 165, 2195, 2992, 33, 1, 55 },
-  { 0x0, 0x0, 165, 2196, 2379, 0, 0, -1 },
-  { 0x3, 0x3, 165, 2197, -1, 28, 1, 50 },
-  { 0x0, 0x0, 166, 1410, 2323, 0, 0, -1 },
-  { 0x1, 0x1, 166, 1411, 2331, 36, 1, 55 },
-  { 0x1, 0x1, 166, 1412, 2991, 36, 1, 55 },
-  { 0x0, 0x0, 166, 1413, 2378, 0, 0, -1 },
-  { 0x5, 0x5, 166, 1414, -1, 27, 1, 50 },
-  { 0x0, 0x0, 167, -1, 2962, 0, 1, 64 },
-  { 0x0, 0x0, 167, -1, 2963, 0, 1, 64 },
-  { 0x1, 0x1, 169, -1, -1, 28, 1, 34 },
-  { 0x1, 0x1, 170, 2779, -1, 27, 1, 34 },
-  { 0x1, 0x1, 170, 2780, -1, 27, 1, 34 },
-  { 0x1, 0x1, 171, 1703, -1, 28, 1, 142 },
-  { 0x1, 0x1, 171, 1704, -1, 28, 1, 142 },
-  { 0x1, 0x1, 171, 1705, -1, 28, 1, 142 },
-  { 0x1, 0x1, 171, 1706, -1, 28, 1, 142 },
-  { 0x1, 0x1, 171, 1707, -1, 28, 1, 141 },
-  { 0x1, 0x1, 171, 1708, -1, 28, 1, 141 },
-  { 0x1, 0x1, 171, 1709, -1, 28, 1, 141 },
-  { 0x1, 0x1, 171, 1710, -1, 28, 1, 141 },
-  { 0x1, 0x1, 171, 1711, -1, 28, 1, 141 },
-  { 0x1, 0x1, 171, 1712, -1, 28, 1, 141 },
-  { 0x1, 0x1, 171, 1713, -1, 28, 1, 141 },
-  { 0x1, 0x1, 171, 1714, -1, 28, 1, 141 },
-  { 0x1, 0x1, 171, 1715, -1, 28, 1, 141 },
-  { 0x1, 0x1, 171, 1716, -1, 28, 1, 141 },
-  { 0x1, 0x1, 171, 1717, -1, 28, 1, 141 },
-  { 0x1, 0x1, 171, 1718, -1, 28, 1, 141 },
-  { 0x1, 0x1, 171, 1719, -1, 28, 1, 141 },
-  { 0x1, 0x1, 171, 1720, -1, 28, 1, 141 },
-  { 0x1, 0x1, 171, 1721, -1, 28, 1, 141 },
-  { 0x1, 0x1, 171, 1722, -1, 28, 1, 141 },
-  { 0x1, 0x1, 171, 1723, -1, 28, 1, 143 },
-  { 0x1, 0x1, 171, 1724, -1, 28, 1, 143 },
-  { 0x1, 0x1, 171, 1725, -1, 28, 1, 143 },
-  { 0x1, 0x1, 171, 1726, -1, 28, 1, 143 },
-  { 0x1, 0x1, 171, 1727, -1, 28, 1, 133 },
-  { 0x1, 0x1, 171, 1728, -1, 28, 1, 134 },
-  { 0x1, 0x1, 171, 1729, -1, 28, 1, 135 },
-  { 0x1, 0x1, 171, 1730, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1731, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1732, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1733, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1734, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1735, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1736, -1, 28, 1, 133 },
-  { 0x1, 0x1, 171, 1737, -1, 28, 1, 134 },
-  { 0x1, 0x1, 171, 1738, -1, 28, 1, 135 },
-  { 0x1, 0x1, 171, 1739, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1740, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1741, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1742, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1743, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1744, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1745, -1, 28, 1, 133 },
-  { 0x1, 0x1, 171, 1746, -1, 28, 1, 134 },
-  { 0x1, 0x1, 171, 1747, -1, 28, 1, 135 },
-  { 0x1, 0x1, 171, 1748, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1749, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1750, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1751, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1752, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1753, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1754, -1, 28, 1, 132 },
-  { 0x1, 0x1, 171, 1755, -1, 28, 1, 132 },
-  { 0x1, 0x1, 171, 1756, -1, 28, 1, 132 },
-  { 0x1, 0x1, 171, 1757, -1, 28, 1, 132 },
-  { 0x1, 0x1, 171, 1758, -1, 28, 1, 133 },
-  { 0x1, 0x1, 171, 1759, -1, 28, 1, 134 },
-  { 0x1, 0x1, 171, 1760, -1, 28, 1, 135 },
-  { 0x1, 0x1, 171, 1761, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1762, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1763, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1764, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1765, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1766, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1767, -1, 28, 1, 133 },
-  { 0x1, 0x1, 171, 1768, -1, 28, 1, 134 },
-  { 0x1, 0x1, 171, 1769, -1, 28, 1, 135 },
-  { 0x1, 0x1, 171, 1770, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1771, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1772, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1773, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1774, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1775, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1776, -1, 28, 1, 133 },
-  { 0x1, 0x1, 171, 1777, -1, 28, 1, 134 },
-  { 0x1, 0x1, 171, 1778, -1, 28, 1, 135 },
-  { 0x1, 0x1, 171, 1779, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1780, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1781, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1782, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1783, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1784, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1785, -1, 28, 1, 133 },
-  { 0x1, 0x1, 171, 1786, -1, 28, 1, 134 },
-  { 0x1, 0x1, 171, 1787, -1, 28, 1, 135 },
-  { 0x1, 0x1, 171, 1788, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1789, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1790, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1791, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1792, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1793, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1794, -1, 28, 1, 133 },
-  { 0x1, 0x1, 171, 1795, -1, 28, 1, 134 },
-  { 0x1, 0x1, 171, 1796, -1, 28, 1, 135 },
-  { 0x1, 0x1, 171, 1797, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1798, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1799, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1800, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1801, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1802, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1803, -1, 28, 1, 133 },
-  { 0x1, 0x1, 171, 1804, -1, 28, 1, 134 },
-  { 0x1, 0x1, 171, 1805, -1, 28, 1, 135 },
-  { 0x1, 0x1, 171, 1806, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1807, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1808, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1809, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1810, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1811, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1812, -1, 28, 1, 133 },
-  { 0x1, 0x1, 171, 1813, -1, 28, 1, 134 },
-  { 0x1, 0x1, 171, 1814, -1, 28, 1, 135 },
-  { 0x1, 0x1, 171, 1815, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1816, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1817, -1, 28, 1, 136 },
-  { 0x1, 0x1, 171, 1818, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1819, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1820, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1821, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1822, -1, 28, 1, 133 },
-  { 0x1, 0x1, 171, 1823, -1, 28, 1, 134 },
-  { 0x1, 0x1, 171, 1824, -1, 28, 1, 135 },
-  { 0x1, 0x1, 171, 1825, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1826, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1827, -1, 28, 1, 136 },
-  { 0x1, 0x1, 171, 1828, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1829, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1830, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1831, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1832, -1, 28, 1, 133 },
-  { 0x1, 0x1, 171, 1833, -1, 28, 1, 134 },
-  { 0x1, 0x1, 171, 1834, -1, 28, 1, 135 },
-  { 0x1, 0x1, 171, 1835, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1836, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1837, -1, 28, 1, 136 },
-  { 0x1, 0x1, 171, 1838, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1839, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1840, -1, 28, 1, 137 },
-  { 0x1, 0x1, 171, 1841, -1, 28, 1, 131 },
-  { 0x1, 0x1, 171, 1842, -1, 28, 1, 147 },
-  { 0x1, 0x1, 171, 1843, -1, 28, 1, 152 },
-  { 0x1, 0x1, 171, 1844, -1, 28, 1, 152 },
-  { 0x1, 0x1, 171, 1845, -1, 28, 1, 148 },
-  { 0x1, 0x1, 171, 1846, -1, 28, 1, 149 },
-  { 0x1, 0x1, 171, 1847, -1, 28, 1, 150 },
-  { 0x1, 0x1, 171, 1848, -1, 28, 1, 151 },
-  { 0x1, 0x1, 171, 1849, -1, 28, 1, 151 },
-  { 0x1, 0x1, 171, 1850, -1, 28, 1, 147 },
-  { 0x1, 0x1, 171, 1851, -1, 28, 1, 153 },
-  { 0x1, 0x1, 171, 1852, -1, 28, 1, 154 },
-  { 0x1, 0x1, 171, 1853, -1, 28, 1, 155 },
-  { 0x1, 0x1, 171, 1854, -1, 28, 1, 156 },
-  { 0x1, 0x1, 171, 1855, -1, 28, 1, 156 },
-  { 0x1, 0x1, 171, 1856, -1, 28, 1, 152 },
-  { 0x1, 0x1, 171, 1857, -1, 28, 1, 153 },
-  { 0x1, 0x1, 171, 1858, -1, 28, 1, 154 },
-  { 0x1, 0x1, 171, 1859, -1, 28, 1, 155 },
-  { 0x1, 0x1, 171, 1860, -1, 28, 1, 156 },
-  { 0x1, 0x1, 171, 1861, -1, 28, 1, 156 },
-  { 0x1, 0x1, 171, 1862, -1, 28, 1, 152 },
-  { 0x1, 0x1, 171, 1863, -1, 28, 1, 148 },
-  { 0x1, 0x1, 171, 1864, -1, 28, 1, 149 },
-  { 0x1, 0x1, 171, 1865, -1, 28, 1, 150 },
-  { 0x1, 0x1, 171, 1866, -1, 28, 1, 151 },
-  { 0x1, 0x1, 171, 1867, -1, 28, 1, 151 },
-  { 0x1, 0x1, 171, 1868, -1, 28, 1, 147 },
-  { 0x1, 0x1, 171, 1869, -1, 28, 1, 153 },
-  { 0x1, 0x1, 171, 1870, -1, 28, 1, 154 },
-  { 0x1, 0x1, 171, 1871, -1, 28, 1, 155 },
-  { 0x1, 0x1, 171, 1872, -1, 28, 1, 156 },
-  { 0x1, 0x1, 171, 1873, -1, 28, 1, 156 },
-  { 0x1, 0x1, 171, 1874, -1, 28, 1, 152 },
-  { 0x1, 0x1, 171, 1875, -1, 28, 1, 153 },
-  { 0x1, 0x1, 171, 1876, -1, 28, 1, 154 },
-  { 0x1, 0x1, 171, 1877, -1, 28, 1, 155 },
-  { 0x1, 0x1, 171, 1878, -1, 28, 1, 156 },
-  { 0x1, 0x1, 171, 1879, -1, 28, 1, 156 },
-  { 0x1, 0x1, 171, 1880, -1, 28, 1, 152 },
-  { 0x1, 0x1, 171, 1881, -1, 28, 1, 148 },
-  { 0x1, 0x1, 171, 1882, -1, 28, 1, 149 },
-  { 0x1, 0x1, 171, 1883, -1, 28, 1, 150 },
-  { 0x1, 0x1, 171, 1884, -1, 28, 1, 151 },
-  { 0x1, 0x1, 171, 1885, -1, 28, 1, 151 },
-  { 0x1, 0x1, 171, 1886, -1, 28, 1, 147 },
-  { 0x1, 0x1, 171, 1887, -1, 28, 1, 153 },
-  { 0x1, 0x1, 171, 1888, -1, 28, 1, 154 },
-  { 0x1, 0x1, 171, 1889, -1, 28, 1, 155 },
-  { 0x1, 0x1, 171, 1890, -1, 28, 1, 156 },
-  { 0x1, 0x1, 171, 1891, -1, 28, 1, 156 },
-  { 0x1, 0x1, 171, 1892, -1, 28, 1, 152 },
-  { 0x1, 0x1, 171, 1893, -1, 28, 1, 153 },
-  { 0x1, 0x1, 171, 1894, -1, 28, 1, 154 },
-  { 0x1, 0x1, 171, 1895, -1, 28, 1, 155 },
-  { 0x1, 0x1, 171, 1896, -1, 28, 1, 156 },
-  { 0x1, 0x1, 171, 1897, -1, 28, 1, 156 },
-  { 0x1, 0x1, 171, 1898, -1, 28, 1, 152 },
-  { 0x1, 0x1, 171, 1899, -1, 28, 1, 148 },
-  { 0x1, 0x1, 171, 1900, -1, 28, 1, 149 },
-  { 0x1, 0x1, 171, 1901, -1, 28, 1, 150 },
-  { 0x1, 0x1, 171, 1902, -1, 28, 1, 151 },
-  { 0x1, 0x1, 171, 1903, -1, 28, 1, 151 },
-  { 0x1, 0x1, 171, 1904, -1, 28, 1, 147 },
-  { 0x1, 0x1, 171, 1905, -1, 28, 1, 153 },
-  { 0x1, 0x1, 171, 1906, -1, 28, 1, 154 },
-  { 0x1, 0x1, 171, 1907, -1, 28, 1, 155 },
-  { 0x1, 0x1, 171, 1908, -1, 28, 1, 156 },
-  { 0x1, 0x1, 171, 1909, -1, 28, 1, 156 },
-  { 0x1, 0x1, 171, 1910, -1, 28, 1, 152 },
-  { 0x1, 0x1, 171, 1911, -1, 28, 1, 148 },
-  { 0x1, 0x1, 171, 1912, -1, 28, 1, 149 },
-  { 0x1, 0x1, 171, 1913, -1, 28, 1, 150 },
-  { 0x1, 0x1, 171, 1914, -1, 28, 1, 151 },
-  { 0x1, 0x1, 171, 1915, -1, 28, 1, 151 },
-  { 0x1, 0x1, 171, 1916, -1, 28, 1, 147 },
-  { 0x1, 0x1, 171, 1917, -1, 28, 1, 153 },
-  { 0x1, 0x1, 171, 1918, -1, 28, 1, 154 },
-  { 0x1, 0x1, 171, 1919, -1, 28, 1, 155 },
-  { 0x1, 0x1, 171, 1920, -1, 28, 1, 156 },
-  { 0x1, 0x1, 171, 1921, -1, 28, 1, 156 },
-  { 0x1, 0x1, 171, 1922, -1, 28, 1, 152 },
-  { 0x1, 0x1, 171, 1923, -1, 28, 1, 148 },
-  { 0x1, 0x1, 171, 1924, -1, 28, 1, 149 },
-  { 0x1, 0x1, 171, 1925, -1, 28, 1, 150 },
-  { 0x1, 0x1, 171, 1926, -1, 28, 1, 151 },
-  { 0x1, 0x1, 171, 1927, -1, 28, 1, 151 },
-  { 0x1, 0x1, 171, 1928, -1, 28, 1, 147 },
-  { 0x1, 0x1, 171, 1929, -1, 28, 1, 153 },
-  { 0x1, 0x1, 171, 1930, -1, 28, 1, 154 },
-  { 0x1, 0x1, 171, 1931, -1, 28, 1, 155 },
-  { 0x1, 0x1, 171, 1932, -1, 28, 1, 156 },
-  { 0x1, 0x1, 171, 1933, -1, 28, 1, 156 },
-  { 0x1, 0x1, 171, 1934, -1, 28, 1, 152 },
-  { 0x1, 0x1, 171, 1935, -1, 28, 1, 148 },
-  { 0x1, 0x1, 171, 1936, -1, 28, 1, 149 },
-  { 0x1, 0x1, 171, 1937, -1, 28, 1, 150 },
-  { 0x1, 0x1, 171, 1938, -1, 28, 1, 151 },
-  { 0x1, 0x1, 171, 1939, -1, 28, 1, 151 },
-  { 0x1, 0x1, 171, 1940, -1, 28, 1, 147 },
-  { 0x1, 0x1, 171, 1941, -1, 28, 1, 153 },
-  { 0x1, 0x1, 171, 1942, -1, 28, 1, 154 },
-  { 0x1, 0x1, 171, 1943, -1, 28, 1, 155 },
-  { 0x1, 0x1, 171, 1944, -1, 28, 1, 156 },
-  { 0x1, 0x1, 171, 1945, -1, 28, 1, 156 },
-  { 0x1, 0x1, 171, 1946, -1, 28, 1, 152 },
-  { 0x1, 0x1, 171, 1947, -1, 28, 1, 153 },
-  { 0x1, 0x1, 171, 1948, -1, 28, 1, 154 },
-  { 0x1, 0x1, 171, 1949, -1, 28, 1, 155 },
-  { 0x1, 0x1, 171, 1950, -1, 28, 1, 156 },
-  { 0x1, 0x1, 171, 1951, -1, 28, 1, 156 },
-  { 0x1, 0x1, 171, 1952, -1, 28, 1, 152 },
-  { 0x1, 0x1, 171, 1691, -1, 28, 1, 158 },
-  { 0x1, 0x1, 171, 1692, -1, 28, 1, 158 },
-  { 0x1, 0x1, 171, 1693, -1, 28, 1, 158 },
-  { 0x1, 0x1, 171, 1694, -1, 28, 1, 158 },
-  { 0x1, 0x1, 171, 1695, -1, 28, 1, 159 },
-  { 0x1, 0x1, 171, 1696, -1, 28, 1, 159 },
-  { 0x1, 0x1, 171, 1697, -1, 28, 1, 159 },
-  { 0x1, 0x1, 171, 1698, -1, 28, 1, 159 },
-  { 0x1, 0x1, 171, 1699, -1, 28, 1, 159 },
-  { 0x1, 0x1, 171, 1700, -1, 28, 1, 159 },
-  { 0x1, 0x1, 171, 1701, -1, 28, 1, 159 },
-  { 0x1, 0x1, 171, 1702, -1, 28, 1, 159 },
-  { 0x1, 0x1, 171, 1997, -1, 28, 1, 143 },
-  { 0x1, 0x1, 171, 1998, -1, 28, 1, 143 },
-  { 0x1, 0x1, 171, 1999, -1, 28, 1, 143 },
-  { 0x1, 0x1, 171, 2000, -1, 28, 1, 143 },
-  { 0x1, 0x1, 172, 1953, -1, 29, 1, 158 },
-  { 0x1, 0x1, 172, 1954, -1, 29, 1, 158 },
-  { 0x1, 0x1, 172, 1955, -1, 29, 1, 158 },
-  { 0x1, 0x1, 172, 1956, -1, 29, 1, 158 },
-  { 0x1, 0x1, 172, 1957, -1, 29, 1, 159 },
-  { 0x1, 0x1, 172, 1958, -1, 29, 1, 159 },
-  { 0x1, 0x1, 172, 1959, -1, 29, 1, 159 },
-  { 0x1, 0x1, 172, 1960, -1, 29, 1, 159 },
-  { 0x1, 0x1, 172, 1961, -1, 29, 1, 159 },
-  { 0x1, 0x1, 172, 1962, -1, 29, 1, 159 },
-  { 0x1, 0x1, 172, 1963, -1, 29, 1, 159 },
-  { 0x1, 0x1, 172, 1964, -1, 29, 1, 159 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 142 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 142 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 142 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 142 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 141 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 141 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 141 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 141 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 141 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 141 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 141 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 141 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 141 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 141 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 141 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 141 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 141 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 141 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 141 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 141 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 143 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 143 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 143 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 143 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 133 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 134 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 135 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, 271, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, 2258, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 133 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 134 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 135 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, 273, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, 2259, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 133 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 134 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 135 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, 275, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, 2260, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 132 },
-  { 0x3, 0x3, 173, 277, -1, 28, 1, 132 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 132 },
-  { 0x3, 0x3, 173, 278, -1, 28, 1, 132 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 133 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 134 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 135 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, 279, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, 2261, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 133 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 134 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 135 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, 281, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, 2262, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 133 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 134 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 135 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, 283, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, 2263, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 133 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 134 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 135 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, 285, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, 2264, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 133 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 134 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 135 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, 287, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, 2265, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 133 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 134 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 135 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, 289, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, 2266, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 133 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 134 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 135 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 136 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, 291, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, 2267, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 133 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 134 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 135 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 136 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, 293, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, 2268, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 133 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 134 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 135 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 136 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, 295, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 137 },
-  { 0x3, 0x3, 173, 2269, -1, 28, 1, 131 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 147 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 152 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 152 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 148 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 149 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 150 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 151 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 151 },
-  { 0x3, 0x3, 173, 2270, -1, 28, 1, 147 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 153 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 154 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 155 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 156 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 156 },
-  { 0x3, 0x3, 173, 2271, -1, 28, 1, 152 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 153 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 154 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 155 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 156 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 156 },
-  { 0x3, 0x3, 173, 2272, -1, 28, 1, 152 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 148 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 149 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 150 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 151 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 151 },
-  { 0x3, 0x3, 173, 2273, -1, 28, 1, 147 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 153 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 154 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 155 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 156 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 156 },
-  { 0x3, 0x3, 173, 2274, -1, 28, 1, 152 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 153 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 154 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 155 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 156 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 156 },
-  { 0x3, 0x3, 173, 2275, -1, 28, 1, 152 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 148 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 149 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 150 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 151 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 151 },
-  { 0x3, 0x3, 173, 2276, -1, 28, 1, 147 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 153 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 154 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 155 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 156 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 156 },
-  { 0x3, 0x3, 173, 2277, -1, 28, 1, 152 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 153 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 154 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 155 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 156 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 156 },
-  { 0x3, 0x3, 173, 2278, -1, 28, 1, 152 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 148 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 149 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 150 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 151 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 151 },
-  { 0x3, 0x3, 173, 2279, -1, 28, 1, 147 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 153 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 154 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 155 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 156 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 156 },
-  { 0x3, 0x3, 173, 2280, -1, 28, 1, 152 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 148 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 149 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 150 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 151 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 151 },
-  { 0x3, 0x3, 173, 2281, -1, 28, 1, 147 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 153 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 154 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 155 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 156 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 156 },
-  { 0x3, 0x3, 173, 2282, -1, 28, 1, 152 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 148 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 149 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 150 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 151 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 151 },
-  { 0x3, 0x3, 173, 2283, -1, 28, 1, 147 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 153 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 154 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 155 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 156 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 156 },
-  { 0x3, 0x3, 173, 2284, -1, 28, 1, 152 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 148 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 149 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 150 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 151 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 151 },
-  { 0x3, 0x3, 173, 2285, -1, 28, 1, 147 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 153 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 154 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 155 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 156 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 156 },
-  { 0x3, 0x3, 173, 2286, -1, 28, 1, 152 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 153 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 154 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 155 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 156 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 156 },
-  { 0x3, 0x3, 173, 2287, -1, 28, 1, 152 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 158 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 158 },
-  { 0x3, 0x3, 173, 951, -1, 28, 1, 158 },
-  { 0x3, 0x3, 173, 952, -1, 28, 1, 158 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 159 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 159 },
-  { 0x3, 0x3, 173, 953, -1, 28, 1, 159 },
-  { 0x3, 0x3, 173, 954, -1, 28, 1, 159 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 159 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 159 },
-  { 0x3, 0x3, 173, 955, -1, 28, 1, 159 },
-  { 0x3, 0x3, 173, 956, -1, 28, 1, 159 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 138 },
-  { 0x3, 0x3, 173, 2224, -1, 28, 1, 138 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 145 },
-  { 0x3, 0x3, 173, 2225, -1, 28, 1, 145 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 139 },
-  { 0x3, 0x3, 173, 2226, -1, 28, 1, 139 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 139 },
-  { 0x3, 0x3, 173, 2227, -1, 28, 1, 139 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 138 },
-  { 0x3, 0x3, 173, 2228, -1, 28, 1, 138 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 145 },
-  { 0x3, 0x3, 173, 2229, -1, 28, 1, 145 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 138 },
-  { 0x3, 0x3, 173, 2230, -1, 28, 1, 138 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 145 },
-  { 0x3, 0x3, 173, 2231, -1, 28, 1, 145 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 138 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 140 },
-  { 0x3, 0x3, 173, 2232, -1, 28, 1, 138 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 145 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 146 },
-  { 0x3, 0x3, 173, 2233, -1, 28, 1, 145 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 157 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 161 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 157 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 161 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 157 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 161 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 157 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 161 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 157 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 161 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 143 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 143 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 143 },
-  { 0x3, 0x3, 173, -1, -1, 28, 1, 143 },
-  { 0x0, 0x0, 174, -1, 394, 0, 0, -1 },
-  { 0x0, 0x0, 174, -1, 396, 0, 0, -1 },
-  { 0x0, 0x0, 174, 3042, 3002, 0, 1, 1 },
-  { 0x0, 0x0, 174, 3043, 3003, 0, 1, 1 },
-  { 0x0, 0x0, 174, -1, 402, 0, 0, -1 },
-  { 0x0, 0x0, 174, -1, 404, 0, 0, -1 },
-  { 0x0, 0x0, 174, 3046, 3006, 0, 1, 76 },
-  { 0x0, 0x0, 174, 3047, 3007, 0, 1, 76 },
-  { 0x0, 0x0, 174, -1, 410, 0, 0, -1 },
-  { 0x0, 0x0, 174, -1, 412, 0, 0, -1 },
-  { 0x0, 0x0, 174, 3050, 3010, 0, 1, 1 },
-  { 0x0, 0x0, 174, 3051, 3011, 0, 1, 1 },
-  { 0x11, 0x31, 175, 2881, 417, 33, 1, 4 },
-  { 0x2200001, 0x2200001, 175, -1, 418, 12, 1, 4 },
-  { 0x11, 0x31, 175, 2073, 419, 33, 1, 4 },
-  { 0x2200001, 0x2200001, 175, -1, 421, 12, 1, 4 },
-  { 0x1, 0x1, 175, -1, 425, 37, 1, 4 },
-  { 0x2000001, 0x2000001, 175, -1, 426, 12, 1, 4 },
-  { 0x11, 0x11, 175, -1, 427, 33, 1, 4 },
-  { 0x2200001, 0x2200001, 175, -1, 428, 12, 1, 4 },
-  { 0x1, 0x1, 175, 2079, 429, 37, 1, 4 },
-  { 0x2000001, 0x2000001, 175, -1, 431, 12, 1, 4 },
-  { 0x11, 0x11, 175, 2081, 433, 33, 1, 4 },
-  { 0x2200001, 0x2200001, 175, -1, 435, 12, 1, 4 },
-  { 0x1, 0x1, 175, 2083, 437, 37, 1, 4 },
-  { 0x2000001, 0x2000001, 175, -1, 439, 12, 1, 4 },
-  { 0x11, 0x11, 175, 2085, 441, 33, 1, 4 },
-  { 0x2200001, 0x2200001, 175, -1, 443, 12, 1, 4 },
-  { 0x1, 0x1, 175, 2087, 445, 37, 1, 4 },
-  { 0x2000001, 0x2000001, 175, -1, 447, 12, 1, 4 },
-  { 0x11, 0x11, 175, 2089, 449, 33, 1, 4 },
-  { 0x2200001, 0x2200001, 175, -1, 451, 12, 1, 4 },
-  { 0x11, 0x31, 175, 2901, 457, 33, 1, 4 },
-  { 0x2200001, 0x2200001, 175, -1, 458, 12, 1, 4 },
-  { 0x11, 0x31, 175, 2095, 459, 33, 1, 4 },
-  { 0x2200001, 0x2200001, 175, -1, 461, 12, 1, 4 },
-  { 0x11, 0x31, 175, 2921, 465, 33, 1, 4 },
-  { 0x2200001, 0x2200001, 175, -1, 466, 12, 1, 4 },
-  { 0x11, 0x31, 175, 2121, 467, 33, 1, 4 },
-  { 0x2200001, 0x2200001, 175, -1, 469, 12, 1, 4 },
-  { 0x1, 0x1, 175, -1, 473, 37, 1, 4 },
-  { 0x2000001, 0x2000001, 175, -1, 474, 12, 1, 4 },
-  { 0x11, 0x11, 175, -1, 475, 33, 1, 4 },
-  { 0x2200001, 0x2200001, 175, -1, 476, 12, 1, 4 },
-  { 0x1, 0x1, 175, 2127, 477, 37, 1, 4 },
-  { 0x2000001, 0x2000001, 175, -1, 479, 12, 1, 4 },
-  { 0x11, 0x11, 175, 2129, 481, 33, 1, 4 },
-  { 0x2200001, 0x2200001, 175, -1, 483, 12, 1, 4 },
-  { 0x1, 0x1, 175, 2131, 485, 37, 1, 4 },
-  { 0x2000001, 0x2000001, 175, -1, 487, 12, 1, 4 },
-  { 0x11, 0x11, 175, 2133, 489, 33, 1, 4 },
-  { 0x2200001, 0x2200001, 175, -1, 491, 12, 1, 4 },
-  { 0x1, 0x1, 175, 2135, 493, 37, 1, 4 },
-  { 0x2000001, 0x2000001, 175, -1, 495, 12, 1, 4 },
-  { 0x11, 0x11, 175, 2137, 497, 33, 1, 4 },
-  { 0x2200001, 0x2200001, 175, -1, 499, 12, 1, 4 },
-  { 0x11, 0x31, 175, 2941, 505, 33, 1, 4 },
-  { 0x2200001, 0x2200001, 175, -1, 506, 12, 1, 4 },
-  { 0x11, 0x31, 175, 2143, 507, 33, 1, 4 },
-  { 0x2200001, 0x2200001, 175, -1, 509, 12, 1, 4 },
-  { 0x1, 0x1, 175, -1, 513, 33, 1, 4 },
-  { 0x200001, 0x200001, 175, -1, 514, 12, 1, 4 },
-  { 0x1, 0x1, 175, -1, 515, 33, 1, 4 },
-  { 0x200001, 0x200001, 175, -1, 516, 12, 1, 4 },
-  { 0x1, 0x1, 175, -1, 521, 33, 1, 79 },
-  { 0x200001, 0x200001, 175, -1, 522, 12, 1, 79 },
-  { 0x1, 0x1, 175, -1, 523, 33, 1, 79 },
-  { 0x200001, 0x200001, 175, -1, 524, 12, 1, 79 },
-  { 0x1, 0x1, 175, -1, 529, 33, 1, 4 },
-  { 0x200001, 0x200001, 175, -1, 530, 12, 1, 4 },
-  { 0x1, 0x1, 175, -1, 531, 33, 1, 4 },
-  { 0x200001, 0x200001, 175, -1, 532, 12, 1, 4 },
-  { 0x2200001, 0x6200001, 176, 2884, -1, 12, 1, 4 },
-  { 0x11, 0x11, 176, 2016, -1, 33, 1, 4 },
-  { 0x1, 0x1, 176, -1, -1, 33, 1, 5 },
-  { 0x4200001, 0x4200001, 176, -1, -1, 12, 1, 5 },
-  { 0x1, 0x1, 176, -1, -1, 37, 1, 4 },
-  { 0x2000001, 0x2000001, 176, -1, -1, 12, 1, 4 },
-  { 0x2000001, 0x2000001, 176, -1, -1, 12, 1, 4 },
-  { 0x1, 0x1, 176, 2022, -1, 37, 1, 4 },
-  { 0x2200001, 0x2200001, 176, -1, -1, 12, 1, 4 },
-  { 0x11, 0x11, 176, 2024, -1, 33, 1, 4 },
-  { 0x2000001, 0x2000001, 176, -1, -1, 12, 1, 4 },
-  { 0x1, 0x1, 176, 2026, -1, 37, 1, 4 },
-  { 0x2200001, 0x2200001, 176, -1, -1, 12, 1, 4 },
-  { 0x11, 0x11, 176, 2028, -1, 33, 1, 4 },
-  { 0x2000001, 0x2000001, 176, -1, -1, 12, 1, 4 },
-  { 0x1, 0x1, 176, 2030, -1, 37, 1, 4 },
-  { 0x2200001, 0x2200001, 176, -1, -1, 12, 1, 4 },
-  { 0x11, 0x11, 176, 2032, -1, 33, 1, 4 },
-  { 0x1, 0x1, 176, -1, -1, 37, 1, 4 },
-  { 0x2000001, 0x2000001, 176, -1, -1, 12, 1, 4 },
-  { 0x11, 0x11, 176, -1, -1, 33, 1, 4 },
-  { 0x2200001, 0x2200001, 176, -1, -1, 12, 1, 4 },
-  { 0x2200001, 0x6200001, 176, 2904, -1, 12, 1, 4 },
-  { 0x11, 0x11, 176, 2036, -1, 33, 1, 4 },
-  { 0x1, 0x1, 176, -1, -1, 33, 1, 5 },
-  { 0x4200001, 0x4200001, 176, -1, -1, 12, 1, 5 },
-  { 0x1, 0x1, 176, -1, -1, 37, 1, 4 },
-  { 0x2000001, 0x2000001, 176, -1, -1, 12, 1, 4 },
-  { 0x0, 0x0, 176, -1, -1, 0, 1, 5 },
-  { 0x1, 0x1, 176, -1, -1, 12, 1, 5 },
-  { 0x0, 0x0, 176, -1, -1, 0, 1, 5 },
-  { 0x1, 0x1, 176, -1, -1, 12, 1, 5 },
-  { 0x1, 0x1, 176, -1, -1, 33, 1, 5 },
-  { 0x200001, 0x200001, 176, -1, -1, 12, 1, 5 },
-  { 0x0, 0x0, 176, -1, -1, 0, 1, 5 },
-  { 0x1, 0x1, 176, -1, -1, 12, 1, 5 },
-  { 0x1, 0x1, 176, -1, -1, 33, 1, 5 },
-  { 0x200001, 0x200001, 176, -1, -1, 12, 1, 5 },
-  { 0x0, 0x0, 176, -1, -1, 0, 1, 5 },
-  { 0x1, 0x1, 176, -1, -1, 12, 1, 5 },
-  { 0x1, 0x1, 176, -1, -1, 33, 1, 5 },
-  { 0x200001, 0x200001, 176, -1, -1, 12, 1, 5 },
-  { 0x0, 0x0, 176, -1, -1, 0, 1, 5 },
-  { 0x1, 0x1, 176, -1, -1, 12, 1, 5 },
-  { 0x1, 0x1, 176, -1, -1, 33, 1, 5 },
-  { 0x200001, 0x200001, 176, -1, -1, 12, 1, 5 },
-  { 0x0, 0x0, 176, -1, -1, 0, 1, 5 },
-  { 0x1, 0x1, 176, -1, -1, 12, 1, 5 },
-  { 0x2200001, 0x6200001, 176, 2924, -1, 12, 1, 4 },
-  { 0x11, 0x11, 176, 2040, -1, 33, 1, 4 },
-  { 0x1, 0x1, 176, -1, -1, 33, 1, 5 },
-  { 0x4200001, 0x4200001, 176, -1, -1, 12, 1, 5 },
-  { 0x1, 0x1, 176, -1, -1, 37, 1, 4 },
-  { 0x2000001, 0x2000001, 176, -1, -1, 12, 1, 4 },
-  { 0x2000001, 0x2000001, 176, -1, -1, 12, 1, 4 },
-  { 0x1, 0x1, 176, 2046, -1, 37, 1, 4 },
-  { 0x2200001, 0x2200001, 176, -1, -1, 12, 1, 4 },
-  { 0x11, 0x11, 176, 2048, -1, 33, 1, 4 },
-  { 0x2000001, 0x2000001, 176, -1, -1, 12, 1, 4 },
-  { 0x1, 0x1, 176, 2050, -1, 37, 1, 4 },
-  { 0x2200001, 0x2200001, 176, -1, -1, 12, 1, 4 },
-  { 0x11, 0x11, 176, 2052, -1, 33, 1, 4 },
-  { 0x2000001, 0x2000001, 176, -1, -1, 12, 1, 4 },
-  { 0x1, 0x1, 176, 2054, -1, 37, 1, 4 },
-  { 0x2200001, 0x2200001, 176, -1, -1, 12, 1, 4 },
-  { 0x11, 0x11, 176, 2056, -1, 33, 1, 4 },
-  { 0x1, 0x1, 176, -1, -1, 37, 1, 4 },
-  { 0x2000001, 0x2000001, 176, -1, -1, 12, 1, 4 },
-  { 0x11, 0x11, 176, -1, -1, 33, 1, 4 },
-  { 0x2200001, 0x2200001, 176, -1, -1, 12, 1, 4 },
-  { 0x2200001, 0x6200001, 176, 2943, -1, 12, 1, 4 },
-  { 0x11, 0x11, 176, 2060, -1, 33, 1, 4 },
-  { 0x1, 0x1, 176, -1, -1, 33, 1, 5 },
-  { 0x4200001, 0x4200001, 176, -1, -1, 12, 1, 5 },
-  { 0x1, 0x1, 176, -1, -1, 37, 1, 4 },
-  { 0x2000001, 0x2000001, 176, -1, -1, 12, 1, 4 },
-  { 0x0, 0x0, 176, -1, -1, 0, 1, 5 },
-  { 0x1, 0x1, 176, -1, -1, 12, 1, 5 },
-  { 0x0, 0x0, 176, -1, -1, 0, 1, 5 },
-  { 0x1, 0x1, 176, -1, -1, 12, 1, 5 },
-  { 0x1, 0x1, 176, -1, -1, 33, 1, 5 },
-  { 0x200001, 0x200001, 176, -1, -1, 12, 1, 5 },
-  { 0x0, 0x0, 176, -1, -1, 0, 1, 5 },
-  { 0x1, 0x1, 176, -1, -1, 12, 1, 5 },
-  { 0x1, 0x1, 176, -1, -1, 33, 1, 5 },
-  { 0x200001, 0x200001, 176, -1, -1, 12, 1, 5 },
-  { 0x0, 0x0, 176, -1, -1, 0, 1, 5 },
-  { 0x1, 0x1, 176, -1, -1, 12, 1, 5 },
-  { 0x1, 0x1, 176, -1, -1, 33, 1, 5 },
-  { 0x200001, 0x200001, 176, -1, -1, 12, 1, 5 },
-  { 0x0, 0x0, 176, -1, -1, 0, 1, 5 },
-  { 0x1, 0x1, 176, -1, -1, 12, 1, 5 },
-  { 0x1, 0x1, 176, -1, -1, 33, 1, 5 },
-  { 0x200001, 0x200001, 176, -1, -1, 12, 1, 5 },
-  { 0x0, 0x0, 176, -1, -1, 0, 1, 5 },
-  { 0x1, 0x1, 176, -1, -1, 12, 1, 5 },
-  { 0x9, 0x9, 176, -1, -1, 33, 1, 5 },
-  { 0x1, 0x1, 176, 397, -1, 33, 1, 4 },
-  { 0x1200001, 0x1200001, 176, -1, -1, 12, 1, 5 },
-  { 0x200001, 0x200001, 176, 398, -1, 12, 1, 4 },
-  { 0x9, 0x9, 176, -1, -1, 33, 1, 5 },
-  { 0x1, 0x1, 176, 399, -1, 33, 1, 4 },
-  { 0x1200001, 0x1200001, 176, -1, -1, 12, 1, 5 },
-  { 0x200001, 0x200001, 176, 400, -1, 12, 1, 4 },
-  { 0x9, 0x9, 176, -1, -1, 33, 1, 80 },
-  { 0x1, 0x1, 176, 405, -1, 33, 1, 79 },
-  { 0x1200001, 0x1200001, 176, -1, -1, 12, 1, 80 },
-  { 0x200001, 0x200001, 176, 406, -1, 12, 1, 79 },
-  { 0x9, 0x9, 176, -1, -1, 33, 1, 80 },
-  { 0x1, 0x1, 176, 407, -1, 33, 1, 79 },
-  { 0x1200001, 0x1200001, 176, -1, -1, 12, 1, 80 },
-  { 0x200001, 0x200001, 176, 408, -1, 12, 1, 79 },
-  { 0x9, 0x9, 176, -1, -1, 33, 1, 5 },
-  { 0x1, 0x1, 176, 413, -1, 33, 1, 4 },
-  { 0x1200001, 0x1200001, 176, -1, -1, 12, 1, 5 },
-  { 0x200001, 0x200001, 176, 414, -1, 12, 1, 4 },
-  { 0x9, 0x9, 176, -1, -1, 33, 1, 5 },
-  { 0x1, 0x1, 176, 415, -1, 33, 1, 4 },
-  { 0x1200001, 0x1200001, 176, -1, -1, 12, 1, 5 },
-  { 0x200001, 0x200001, 176, 416, -1, 12, 1, 4 },
-  { 0x0, 0x0, 177, -1, 2327, 0, 0, -1 },
-  { 0x9, 0x9, 177, -1, 2335, 33, 1, 50 },
-  { 0x9, 0x9, 177, -1, 2993, 33, 1, 50 },
-  { 0x0, 0x0, 177, -1, 2380, 0, 0, -1 },
-  { 0x7, 0x7, 177, -1, -1, 27, 1, 50 },
-  { 0x1, 0x1, 197, -1, -1, 27, 1, 10 },
-  { 0x1, 0x1, 211, -1, -1, 29, 1, 0 },
-  { 0x1, 0x1, 211, -1, -1, 29, 1, 0 },
-  { 0x2, 0x3, 211, 1169, -1, 27, 1, 34 },
-  { 0x0, 0x0, 211, 1170, -1, 0, 1, 34 },
-  { 0x0, 0x0, 211, 1171, -1, 0, 1, 0 },
-  { 0x0, 0x0, 211, 1172, -1, 0, 1, 0 },
-  { 0x0, 0x0, 211, 1173, -1, 0, 1, 0 },
-  { 0x0, 0x0, 211, 1174, -1, 0, 1, 0 },
-  { 0x0, 0x0, 211, 3026, -1, 0, 1, 100 },
-  { 0x0, 0x0, 211, 3027, -1, 0, 1, 100 },
-  { 0x0, 0x0, 211, 3028, 967, 0, 0, -1 },
-  { 0x1, 0x1, 212, -1, -1, 27, 1, 0 },
-  { 0x1, 0x1, 212, -1, -1, 27, 1, 0 },
-  { 0x1, 0x1, 213, -1, 1426, 32, 1, 142 },
-  { 0x1, 0x1, 213, -1, 1428, 32, 1, 142 },
-  { 0x1, 0x1, 213, -1, 1430, 32, 1, 141 },
-  { 0x1, 0x1, 213, -1, 1432, 32, 1, 141 },
-  { 0x1, 0x1, 213, -1, 1434, 32, 1, 141 },
-  { 0x1, 0x1, 213, -1, 1436, 32, 1, 141 },
-  { 0x1, 0x1, 213, -1, 1438, 32, 1, 141 },
-  { 0x1, 0x1, 213, -1, 1440, 32, 1, 141 },
-  { 0x1, 0x1, 213, -1, 1442, 32, 1, 141 },
-  { 0x1, 0x1, 213, -1, 1444, 32, 1, 141 },
-  { 0x1, 0x1, 213, -1, 1446, 32, 1, 143 },
-  { 0x1, 0x1, 213, -1, 1448, 32, 1, 143 },
-  { 0x1, 0x1, 213, -1, 1965, 32, 1, 138 },
-  { 0x1, 0x1, 213, -1, 1967, 32, 1, 145 },
-  { 0x1, 0x1, 213, -1, 1969, 32, 1, 139 },
-  { 0x1, 0x1, 213, -1, 1971, 32, 1, 139 },
-  { 0x1, 0x1, 213, -1, 1973, 32, 1, 138 },
-  { 0x1, 0x1, 213, -1, 1975, 32, 1, 145 },
-  { 0x1, 0x1, 213, -1, 1977, 32, 1, 138 },
-  { 0x1, 0x1, 213, -1, 1979, 32, 1, 145 },
-  { 0x1, 0x1, 213, 2783, 1981, 32, 1, 138 },
-  { 0x1, 0x1, 213, 2784, 1984, 32, 1, 145 },
-  { 0x0, 0x0, 214, -1, 2825, 0, 0, -1 },
-  { 0x0, 0x0, 214, -1, 2826, 0, 0, -1 },
-  { 0x0, 0x0, 214, -1, 2851, 0, 0, -1 },
-  { 0x5, 0x5, 214, -1, 2854, 20, 1, 68 },
-  { 0x0, 0x0, 218, 2209, 966, 0, 0, -1 },
-  { 0x0, 0x0, 219, -1, 1139, 0, 0, -1 },
-  { 0x0, 0x0, 219, -1, 1264, 0, 0, -1 },
-  { 0x0, 0x0, 219, -1, -1, 0, 1, 128 },
-  { 0x0, 0x0, 219, -1, -1, 0, 1, 67 },
-  { 0x1, 0x1, 219, 833, 2289, 36, 1, 66 },
-  { 0x1, 0x1, 219, 834, 2348, 36, 1, 66 },
-  { 0x0, 0x0, 219, 835, 2351, 0, 0, -1 },
-  { 0x1, 0x1, 219, 836, -1, 36, 1, 66 },
-  { 0x0, 0x0, 219, 1423, -1, 0, 1, 34 },
-  { 0x1, 0x1, 219, 837, 2356, 36, 1, 66 },
-  { 0x0, 0x0, 219, 838, 2359, 0, 0, -1 },
-  { 0x1, 0x1, 219, 839, -1, 36, 1, 66 },
-  { 0x0, 0x0, 219, 840, 2362, 0, 0, -1 },
-  { 0x1, 0x1, 219, 841, -1, 36, 1, 66 },
-  { 0x1, 0x1, 219, 842, 2365, 36, 1, 66 },
-  { 0x1, 0x1, 219, 843, 2368, 36, 1, 66 },
-  { 0x0, 0x0, 219, 1424, -1, 0, 1, 34 },
-  { 0x1, 0x1, 219, 844, 2401, 36, 1, 66 },
-  { 0x1, 0x1, 219, 845, -1, 31, 1, 144 },
-  { 0x1, 0x1, 219, 228, 1449, 32, 1, 133 },
-  { 0x1, 0x1, 219, 229, 1458, 32, 1, 133 },
-  { 0x1, 0x1, 219, 230, 1467, 32, 1, 133 },
-  { 0x1, 0x1, 219, 231, 1480, 32, 1, 133 },
-  { 0x1, 0x1, 219, 232, 1489, 32, 1, 133 },
-  { 0x1, 0x1, 219, 233, 1498, 32, 1, 133 },
-  { 0x1, 0x1, 219, 234, 1507, 32, 1, 133 },
-  { 0x1, 0x1, 219, 235, 1516, 32, 1, 133 },
-  { 0x1, 0x1, 219, 236, 1525, 32, 1, 133 },
-  { 0x1, 0x1, 219, 237, 1534, 32, 1, 133 },
-  { 0x1, 0x1, 219, 238, 1544, 32, 1, 133 },
-  { 0x1, 0x1, 219, 239, 1554, 32, 1, 133 },
-  { 0x1, 0x1, 219, 240, 1567, 32, 1, 148 },
-  { 0x1, 0x1, 219, 241, 1573, 32, 1, 153 },
-  { 0x1, 0x1, 219, 242, 1579, 32, 1, 153 },
-  { 0x1, 0x1, 219, 243, 1585, 32, 1, 148 },
-  { 0x1, 0x1, 219, 244, 1591, 32, 1, 153 },
-  { 0x1, 0x1, 219, 245, 1597, 32, 1, 153 },
-  { 0x1, 0x1, 219, 246, 1603, 32, 1, 148 },
-  { 0x1, 0x1, 219, 247, 1609, 32, 1, 153 },
-  { 0x1, 0x1, 219, 248, 1615, 32, 1, 153 },
-  { 0x1, 0x1, 219, 249, 1621, 32, 1, 148 },
-  { 0x1, 0x1, 219, 250, 1627, 32, 1, 153 },
-  { 0x1, 0x1, 219, 251, 1633, 32, 1, 148 },
-  { 0x1, 0x1, 219, 252, 1639, 32, 1, 153 },
-  { 0x1, 0x1, 219, 253, 1645, 32, 1, 148 },
-  { 0x1, 0x1, 219, 254, 1651, 32, 1, 153 },
-  { 0x1, 0x1, 219, 255, 1657, 32, 1, 148 },
-  { 0x1, 0x1, 219, 256, 1663, 32, 1, 153 },
-  { 0x1, 0x1, 219, 257, 1669, 32, 1, 153 },
-  { 0x1, 0x1, 219, 849, -1, 31, 1, 160 },
-  { 0x0, 0x0, 220, 2404, -1, 0, 1, 66 },
-  { 0x0, 0x0, 220, 2405, -1, 0, 1, 29 },
-  { 0x0, 0x0, 220, 25, -1, 0, 1, 29 },
-  { 0x0, 0x0, 220, 2407, -1, 0, 1, 29 },
-  { 0x0, 0x0, 220, 2408, -1, 0, 1, 29 },
-  { 0x0, 0x0, 220, 2409, -1, 0, 1, 45 },
-  { 0x0, 0x0, 220, 2410, -1, 0, 1, 40 },
-  { 0x1, 0x1, 220, 2411, -1, 12, 1, 59 },
-  { 0x0, 0x0, 220, 2412, -1, 0, 1, 54 },
-  { 0x1000001, 0x1000001, 220, 2413, -1, 12, 1, 59 },
-  { 0x1, 0x1, 220, 2414, -1, 36, 1, 54 },
-  { 0x200001, 0x200001, 220, 2415, -1, 12, 1, 59 },
-  { 0x1, 0x1, 220, 2416, -1, 33, 1, 54 },
-  { 0x1200001, 0x1200001, 220, 2417, -1, 12, 1, 49 },
-  { 0x9, 0x9, 220, 2418, -1, 33, 1, 49 },
-  { 0x0, 0x0, 220, 2419, -1, 0, 1, 59 },
-  { 0x0, 0x0, 220, 2420, -1, 0, 1, 54 },
-  { 0x0, 0x0, 220, 2421, -1, 0, 1, 59 },
-  { 0x0, 0x0, 220, 2422, -1, 0, 1, 54 },
-  { 0x0, 0x0, 220, 2423, -1, 0, 1, 59 },
-  { 0x0, 0x0, 220, 2424, -1, 0, 1, 54 },
-  { 0x0, 0x0, 220, 2425, -1, 0, 1, 49 },
-  { 0x0, 0x0, 220, 2426, -1, 0, 1, 49 },
-  { 0x1, 0x1, 220, 2427, -1, 12, 1, 59 },
-  { 0x0, 0x0, 220, 2428, -1, 0, 1, 54 },
-  { 0x200001, 0x1200001, 220, 2429, -1, 12, 1, 59 },
-  { 0x1, 0x9, 220, 2430, -1, 33, 1, 54 },
-  { 0x0, 0x0, 220, 2431, -1, 0, 1, 59 },
-  { 0x0, 0x0, 220, 2432, -1, 0, 1, 54 },
-  { 0x0, 0x0, 220, 2433, -1, 0, 1, 59 },
-  { 0x0, 0x0, 220, 2434, -1, 0, 1, 54 },
-  { 0x1, 0x1, 220, 2435, -1, 12, 1, 59 },
-  { 0x0, 0x0, 220, 2436, -1, 0, 1, 54 },
-  { 0x1000001, 0x1000001, 220, 2437, -1, 12, 1, 59 },
-  { 0x1, 0x1, 220, 2438, -1, 36, 1, 54 },
-  { 0x200001, 0x200001, 220, 2439, -1, 12, 1, 59 },
-  { 0x1, 0x1, 220, 2440, -1, 33, 1, 54 },
-  { 0x1200001, 0x1200001, 220, 2441, -1, 12, 1, 49 },
-  { 0x9, 0x9, 220, 2442, -1, 33, 1, 49 },
-  { 0x0, 0x0, 220, 2443, -1, 0, 1, 59 },
-  { 0x0, 0x0, 220, 2444, -1, 0, 1, 54 },
-  { 0x0, 0x0, 220, 2445, -1, 0, 1, 59 },
-  { 0x0, 0x0, 220, 2446, -1, 0, 1, 54 },
-  { 0x0, 0x0, 220, 2447, -1, 0, 1, 59 },
-  { 0x0, 0x0, 220, 2448, -1, 0, 1, 54 },
-  { 0x0, 0x0, 220, 2449, -1, 0, 1, 49 },
-  { 0x0, 0x0, 220, 2450, -1, 0, 1, 49 },
-  { 0x1, 0x1, 220, 2451, -1, 12, 1, 59 },
-  { 0x0, 0x0, 220, 2452, -1, 0, 1, 54 },
-  { 0x200001, 0x1200001, 220, 2453, -1, 12, 1, 59 },
-  { 0x1, 0x9, 220, 2454, -1, 33, 1, 54 },
-  { 0x0, 0x0, 220, 2455, -1, 0, 1, 59 },
-  { 0x0, 0x0, 220, 2456, -1, 0, 1, 54 },
-  { 0x0, 0x0, 220, 2457, -1, 0, 1, 59 },
-  { 0x0, 0x0, 220, 2458, -1, 0, 1, 54 },
-  { 0x1, 0x1, 220, 2459, -1, 28, 1, 29 },
-  { 0x0, 0x0, 220, 2460, -1, 0, 1, 29 },
-  { 0x3, 0x3, 220, 2461, -1, 27, 1, 29 },
-  { 0x1, 0x1, 220, 2462, -1, 27, 1, 29 },
-  { 0x0, 0x0, 220, 2463, -1, 0, 1, 66 },
-  { 0x0, 0x0, 220, 2464, -1, 0, 1, 29 },
-  { 0x0, 0x0, 220, 2465, -1, 0, 1, 29 },
-  { 0x1, 0x1, 220, 2466, -1, 36, 1, 66 },
-  { 0x1, 0x1, 220, 2467, -1, 37, 1, 29 },
-  { 0x0, 0x0, 220, 2468, -1, 0, 1, 29 },
-  { 0x0, 0x0, 220, 2469, -1, 0, 1, 29 },
-  { 0x0, 0x0, 220, 2470, -1, 0, 1, 29 },
-  { 0x0, 0x0, 220, 2471, -1, 0, 1, 66 },
-  { 0x0, 0x0, 220, 2472, -1, 0, 1, 29 },
-  { 0x0, 0x0, 220, 37, -1, 0, 1, 29 },
-  { 0x1, 0x1, 220, 2474, -1, 36, 1, 66 },
-  { 0x1, 0x1, 220, 2475, -1, 37, 1, 29 },
-  { 0x0, 0x0, 220, 2476, -1, 0, 1, 29 },
-  { 0x1, 0x1, 220, 2477, -1, 36, 1, 66 },
-  { 0x1, 0x1, 220, 2478, -1, 37, 1, 29 },
-  { 0x0, 0x0, 220, 2479, -1, 0, 1, 29 },
-  { 0x0, 0x0, 220, 2480, -1, 0, 1, 66 },
-  { 0x0, 0x0, 220, 2481, -1, 0, 1, 29 },
-  { 0x0, 0x0, 220, 42, -1, 0, 1, 29 },
-  { 0x0, 0x0, 220, 2483, -1, 0, 1, 66 },
-  { 0x0, 0x0, 220, 2484, -1, 0, 1, 29 },
-  { 0x0, 0x0, 220, 43, -1, 0, 1, 29 },
-  { 0x0, 0x0, 220, 2486, -1, 0, 1, 29 },
-  { 0x0, 0x0, 220, 2487, -1, 0, 1, 29 },
-  { 0x0, 0x0, 220, 2488, -1, 0, 1, 49 },
-  { 0x1, 0x1, 220, 2489, -1, 27, 1, 49 },
-  { 0x1, 0x1, 220, 2490, -1, 28, 1, 49 },
-  { 0x3, 0x3, 220, 2491, -1, 27, 1, 49 },
-  { 0x1, 0x1, 220, 2492, -1, 29, 1, 49 },
-  { 0x5, 0x5, 220, 2493, -1, 27, 1, 49 },
-  { 0x3, 0x3, 220, 2494, -1, 28, 1, 49 },
-  { 0x7, 0x7, 220, 2495, -1, 27, 1, 49 },
-  { 0x0, 0x0, 220, 2496, -1, 0, 1, 49 },
-  { 0x0, 0x0, 220, 2497, -1, 0, 1, 49 },
-  { 0x0, 0x0, 220, 2498, -1, 0, 1, 49 },
-  { 0x0, 0x0, 220, 2499, -1, 0, 1, 49 },
-  { 0x1, 0x1, 220, 2500, -1, 28, 1, 29 },
-  { 0x0, 0x0, 220, 2501, -1, 0, 1, 29 },
-  { 0x3, 0x3, 220, 2502, -1, 27, 1, 29 },
-  { 0x1, 0x1, 220, 2503, -1, 27, 1, 29 },
-  { 0x0, 0x0, 220, 2504, -1, 0, 1, 29 },
-  { 0x0, 0x0, 220, 2505, -1, 0, 1, 29 },
-  { 0x0, 0x0, 220, 2506, -1, 0, 1, 29 },
-  { 0x0, 0x0, 220, 52, -1, 0, 1, 29 },
-  { 0x0, 0x0, 220, 2508, -1, 0, 1, 29 },
-  { 0x0, 0x0, 220, 2509, -1, 0, 1, 29 },
-  { 0x0, 0x0, 220, 57, -1, 0, 1, 29 },
-  { 0x0, 0x0, 220, 2511, -1, 0, 1, 24 },
-  { 0x0, 0x0, 220, 2512, -1, 0, 1, 24 },
-  { 0x0, 0x0, 220, 2513, -1, 0, 1, 24 },
-  { 0x0, 0x0, 220, 2514, -1, 0, 1, 24 },
-  { 0x0, 0x0, 220, 2515, -1, 0, 1, 35 },
-  { 0x0, 0x0, 220, 2516, -1, 0, 1, 66 },
-  { 0x0, 0x0, 220, 2517, -1, 0, 1, 29 },
-  { 0x0, 0x0, 220, 64, -1, 0, 1, 29 },
-  { 0x1, 0x1, 221, 2519, -1, 34, 1, 66 },
-  { 0x1, 0x1, 221, 2520, -1, 34, 1, 31 },
-  { 0x1, 0x1, 221, 2521, -1, 34, 1, 31 },
-  { 0x1, 0x1, 221, 2522, -1, 34, 1, 31 },
-  { 0x1, 0x1, 221, 2523, -1, 34, 1, 31 },
-  { 0x1, 0x1, 221, 2524, -1, 34, 1, 46 },
-  { 0x1, 0x1, 221, 2525, -1, 34, 1, 42 },
-  { 0x400001, 0x400001, 221, 2526, -1, 12, 1, 61 },
-  { 0x1, 0x1, 221, 2527, -1, 34, 1, 56 },
-  { 0x1400001, 0x1400001, 221, 2528, -1, 12, 1, 61 },
-  { 0x5, 0x5, 221, 2529, -1, 34, 1, 56 },
-  { 0x600001, 0x600001, 221, 2530, -1, 12, 1, 61 },
-  { 0x3, 0x3, 221, 2531, -1, 33, 1, 56 },
-  { 0x1600001, 0x1600001, 221, 2532, -1, 12, 1, 51 },
-  { 0xb, 0xb, 221, 2533, -1, 33, 1, 51 },
-  { 0x1, 0x1, 221, 2534, -1, 34, 1, 61 },
-  { 0x1, 0x1, 221, 2535, -1, 34, 1, 56 },
-  { 0x1, 0x1, 221, 2536, -1, 34, 1, 61 },
-  { 0x1, 0x1, 221, 2537, -1, 34, 1, 56 },
-  { 0x1, 0x1, 221, 2538, -1, 34, 1, 61 },
-  { 0x1, 0x1, 221, 2539, -1, 34, 1, 56 },
-  { 0x1, 0x1, 221, 2540, -1, 34, 1, 51 },
-  { 0x1, 0x1, 221, 2541, -1, 34, 1, 51 },
-  { 0x400001, 0x400001, 221, 2542, -1, 12, 1, 61 },
-  { 0x1, 0x1, 221, 2543, -1, 34, 1, 56 },
-  { 0x600001, 0x1600001, 221, 2544, -1, 12, 1, 61 },
-  { 0x3, 0xb, 221, 2545, -1, 33, 1, 56 },
-  { 0x1, 0x1, 221, 2546, -1, 34, 1, 61 },
-  { 0x1, 0x1, 221, 2547, -1, 34, 1, 56 },
-  { 0x1, 0x1, 221, 2548, -1, 34, 1, 61 },
-  { 0x1, 0x1, 221, 2549, -1, 34, 1, 56 },
-  { 0x400001, 0x400001, 221, 2550, -1, 12, 1, 61 },
-  { 0x1, 0x1, 221, 2551, -1, 34, 1, 56 },
-  { 0x1400001, 0x1400001, 221, 2552, -1, 12, 1, 61 },
-  { 0x5, 0x5, 221, 2553, -1, 34, 1, 56 },
-  { 0x600001, 0x600001, 221, 2554, -1, 12, 1, 61 },
-  { 0x3, 0x3, 221, 2555, -1, 33, 1, 56 },
-  { 0x1600001, 0x1600001, 221, 2556, -1, 12, 1, 51 },
-  { 0xb, 0xb, 221, 2557, -1, 33, 1, 51 },
-  { 0x1, 0x1, 221, 2558, -1, 34, 1, 61 },
-  { 0x1, 0x1, 221, 2559, -1, 34, 1, 56 },
-  { 0x1, 0x1, 221, 2560, -1, 34, 1, 61 },
-  { 0x1, 0x1, 221, 2561, -1, 34, 1, 56 },
-  { 0x1, 0x1, 221, 2562, -1, 34, 1, 61 },
-  { 0x1, 0x1, 221, 2563, -1, 34, 1, 56 },
-  { 0x1, 0x1, 221, 2564, -1, 34, 1, 51 },
-  { 0x1, 0x1, 221, 2565, -1, 34, 1, 51 },
-  { 0x400001, 0x400001, 221, 2566, -1, 12, 1, 61 },
-  { 0x1, 0x1, 221, 2567, -1, 34, 1, 56 },
-  { 0x600001, 0x1600001, 221, 2568, -1, 12, 1, 61 },
-  { 0x3, 0xb, 221, 2569, -1, 33, 1, 56 },
-  { 0x1, 0x1, 221, 2570, -1, 34, 1, 61 },
-  { 0x1, 0x1, 221, 2571, -1, 34, 1, 56 },
-  { 0x1, 0x1, 221, 2572, -1, 34, 1, 61 },
-  { 0x1, 0x1, 221, 2573, -1, 34, 1, 56 },
-  { 0x41, 0x41, 221, 2574, -1, 28, 1, 31 },
-  { 0x1, 0x1, 221, 2575, -1, 34, 1, 31 },
-  { 0x83, 0x83, 221, 2576, -1, 27, 1, 31 },
-  { 0x81, 0x81, 221, 2577, -1, 27, 1, 31 },
-  { 0x1, 0x1, 221, 2578, -1, 34, 1, 66 },
-  { 0x1, 0x1, 221, 2579, -1, 34, 1, 31 },
-  { 0x1, 0x1, 221, 2580, -1, 34, 1, 31 },
-  { 0x5, 0x5, 221, 2581, -1, 34, 1, 66 },
-  { 0x9, 0x9, 221, 2582, -1, 34, 1, 31 },
-  { 0x1, 0x1, 221, 2583, -1, 34, 1, 31 },
-  { 0x1, 0x1, 221, 2584, -1, 34, 1, 31 },
-  { 0x1, 0x1, 221, 2585, -1, 34, 1, 31 },
-  { 0x1, 0x1, 221, 2586, -1, 34, 1, 66 },
-  { 0x1, 0x1, 221, 2587, -1, 34, 1, 31 },
-  { 0x1, 0x1, 221, 2588, -1, 34, 1, 31 },
-  { 0x5, 0x5, 221, 2589, -1, 34, 1, 66 },
-  { 0x9, 0x9, 221, 2590, -1, 34, 1, 31 },
-  { 0x1, 0x1, 221, 2591, -1, 34, 1, 31 },
-  { 0x5, 0x5, 221, 2592, -1, 34, 1, 66 },
-  { 0x9, 0x9, 221, 2593, -1, 34, 1, 31 },
-  { 0x1, 0x1, 221, 2594, -1, 34, 1, 31 },
-  { 0x1, 0x1, 221, 2595, -1, 34, 1, 66 },
-  { 0x1, 0x1, 221, 2596, -1, 34, 1, 31 },
-  { 0x1, 0x1, 221, 2597, -1, 34, 1, 31 },
-  { 0x1, 0x1, 221, 2598, -1, 34, 1, 66 },
-  { 0x1, 0x1, 221, 2599, -1, 34, 1, 31 },
-  { 0x1, 0x1, 221, 2600, -1, 34, 1, 31 },
-  { 0x1, 0x1, 221, 2601, -1, 34, 1, 31 },
-  { 0x1, 0x1, 221, 2602, -1, 34, 1, 31 },
-  { 0x1, 0x1, 221, 2603, -1, 34, 1, 51 },
-  { 0x81, 0x81, 221, 2604, -1, 27, 1, 51 },
-  { 0x41, 0x41, 221, 2605, -1, 28, 1, 51 },
-  { 0x83, 0x83, 221, 2606, -1, 27, 1, 51 },
-  { 0x21, 0x21, 221, 2607, -1, 29, 1, 51 },
-  { 0x85, 0x85, 221, 2608, -1, 27, 1, 51 },
-  { 0x43, 0x43, 221, 2609, -1, 28, 1, 51 },
-  { 0x87, 0x87, 221, 2610, -1, 27, 1, 51 },
-  { 0x1, 0x1, 221, 2611, -1, 34, 1, 51 },
-  { 0x1, 0x1, 221, 2612, -1, 34, 1, 51 },
-  { 0x1, 0x1, 221, 2613, -1, 34, 1, 51 },
-  { 0x1, 0x1, 221, 2614, -1, 34, 1, 51 },
-  { 0x41, 0x41, 221, 2615, -1, 28, 1, 31 },
-  { 0x1, 0x1, 221, 2616, -1, 34, 1, 31 },
-  { 0x83, 0x83, 221, 2617, -1, 27, 1, 31 },
-  { 0x81, 0x81, 221, 2618, -1, 27, 1, 31 },
-  { 0x1, 0x1, 221, 2619, -1, 34, 1, 31 },
-  { 0x1, 0x1, 221, 2620, -1, 34, 1, 31 },
-  { 0x1, 0x1, 221, 2621, -1, 34, 1, 31 },
-  { 0x1, 0x1, 221, 2622, -1, 34, 1, 31 },
-  { 0x1, 0x1, 221, 2623, -1, 34, 1, 31 },
-  { 0x1, 0x1, 221, 2624, -1, 34, 1, 31 },
-  { 0x1, 0x1, 221, 2625, -1, 34, 1, 31 },
-  { 0x1, 0x1, 221, 2626, -1, 34, 1, 26 },
-  { 0x1, 0x1, 221, 2627, -1, 34, 1, 26 },
-  { 0x1, 0x1, 221, 2628, -1, 34, 1, 26 },
-  { 0x1, 0x1, 221, 2629, -1, 34, 1, 26 },
-  { 0x1, 0x1, 221, 2630, -1, 34, 1, 37 },
-  { 0x1, 0x1, 221, 2631, -1, 34, 1, 66 },
-  { 0x1, 0x1, 221, 2632, -1, 34, 1, 31 },
-  { 0x1, 0x1, 221, 2633, -1, 34, 1, 31 },
-  { 0x1, 0x1, 222, 2634, -1, 35, 1, 66 },
-  { 0x1, 0x1, 222, 2635, -1, 35, 1, 32 },
-  { 0x1, 0x1, 222, 2636, -1, 35, 1, 32 },
-  { 0x1, 0x1, 222, 2637, -1, 35, 1, 32 },
-  { 0x1, 0x1, 222, 2638, -1, 35, 1, 32 },
-  { 0x1, 0x1, 222, 2639, -1, 35, 1, 47 },
-  { 0x1, 0x1, 222, 2640, -1, 35, 1, 43 },
-  { 0x800001, 0x800001, 222, 2641, -1, 12, 1, 62 },
-  { 0x1, 0x1, 222, 2642, -1, 35, 1, 57 },
-  { 0x1800001, 0x1800001, 222, 2643, -1, 12, 1, 62 },
-  { 0x3, 0x3, 222, 2644, -1, 35, 1, 57 },
-  { 0xa00001, 0xa00001, 222, 2645, -1, 12, 1, 62 },
-  { 0x5, 0x5, 222, 2646, -1, 33, 1, 57 },
-  { 0x1a00001, 0x1a00001, 222, 2647, -1, 12, 1, 52 },
-  { 0xd, 0xd, 222, 2648, -1, 33, 1, 52 },
-  { 0x1, 0x1, 222, 2649, -1, 35, 1, 62 },
-  { 0x1, 0x1, 222, 2650, -1, 35, 1, 57 },
-  { 0x1, 0x1, 222, 2651, -1, 35, 1, 62 },
-  { 0x1, 0x1, 222, 2652, -1, 35, 1, 57 },
-  { 0x1, 0x1, 222, 2653, -1, 35, 1, 62 },
-  { 0x1, 0x1, 222, 2654, -1, 35, 1, 57 },
-  { 0x1, 0x1, 222, 2655, -1, 35, 1, 52 },
-  { 0x1, 0x1, 222, 2656, -1, 35, 1, 52 },
-  { 0x800001, 0x800001, 222, 2657, -1, 12, 1, 62 },
-  { 0x1, 0x1, 222, 2658, -1, 35, 1, 57 },
-  { 0xa00001, 0x1a00001, 222, 2659, -1, 12, 1, 62 },
-  { 0x5, 0xd, 222, 2660, -1, 33, 1, 57 },
-  { 0x1, 0x1, 222, 2661, -1, 35, 1, 62 },
-  { 0x1, 0x1, 222, 2662, -1, 35, 1, 57 },
-  { 0x1, 0x1, 222, 2663, -1, 35, 1, 62 },
-  { 0x1, 0x1, 222, 2664, -1, 35, 1, 57 },
-  { 0x800001, 0x800001, 222, 2665, -1, 12, 1, 62 },
-  { 0x1, 0x1, 222, 2666, -1, 35, 1, 57 },
-  { 0x1800001, 0x1800001, 222, 2667, -1, 12, 1, 62 },
-  { 0x3, 0x3, 222, 2668, -1, 35, 1, 57 },
-  { 0xa00001, 0xa00001, 222, 2669, -1, 12, 1, 62 },
-  { 0x5, 0x5, 222, 2670, -1, 33, 1, 57 },
-  { 0x1a00001, 0x1a00001, 222, 2671, -1, 12, 1, 52 },
-  { 0xd, 0xd, 222, 2672, -1, 33, 1, 52 },
-  { 0x1, 0x1, 222, 2673, -1, 35, 1, 62 },
-  { 0x1, 0x1, 222, 2674, -1, 35, 1, 57 },
-  { 0x1, 0x1, 222, 2675, -1, 35, 1, 62 },
-  { 0x1, 0x1, 222, 2676, -1, 35, 1, 57 },
-  { 0x1, 0x1, 222, 2677, -1, 35, 1, 62 },
-  { 0x1, 0x1, 222, 2678, -1, 35, 1, 57 },
-  { 0x1, 0x1, 222, 2679, -1, 35, 1, 52 },
-  { 0x1, 0x1, 222, 2680, -1, 35, 1, 52 },
-  { 0x800001, 0x800001, 222, 2681, -1, 12, 1, 62 },
-  { 0x1, 0x1, 222, 2682, -1, 35, 1, 57 },
-  { 0xa00001, 0x1a00001, 222, 2683, -1, 12, 1, 62 },
-  { 0x5, 0xd, 222, 2684, -1, 33, 1, 57 },
-  { 0x1, 0x1, 222, 2685, -1, 35, 1, 62 },
-  { 0x1, 0x1, 222, 2686, -1, 35, 1, 57 },
-  { 0x1, 0x1, 222, 2687, -1, 35, 1, 62 },
-  { 0x1, 0x1, 222, 2688, -1, 35, 1, 57 },
-  { 0x81, 0x81, 222, 2689, -1, 28, 1, 32 },
-  { 0x1, 0x1, 222, 2690, -1, 35, 1, 32 },
-  { 0x103, 0x103, 222, 2691, -1, 27, 1, 32 },
-  { 0x101, 0x101, 222, 2692, -1, 27, 1, 32 },
-  { 0x1, 0x1, 222, 2693, -1, 35, 1, 66 },
-  { 0x1, 0x1, 222, 2694, -1, 35, 1, 32 },
-  { 0x1, 0x1, 222, 2695, -1, 35, 1, 32 },
-  { 0x3, 0x3, 222, 2696, -1, 35, 1, 66 },
-  { 0x5, 0x5, 222, 2697, -1, 35, 1, 32 },
-  { 0x1, 0x1, 222, 2698, -1, 35, 1, 32 },
-  { 0x1, 0x1, 222, 2699, -1, 35, 1, 32 },
-  { 0x1, 0x1, 222, 2700, -1, 35, 1, 32 },
-  { 0x1, 0x1, 222, 2701, -1, 35, 1, 66 },
-  { 0x1, 0x1, 222, 2702, -1, 35, 1, 32 },
-  { 0x1, 0x1, 222, 2703, -1, 35, 1, 32 },
-  { 0x3, 0x3, 222, 2704, -1, 35, 1, 66 },
-  { 0x5, 0x5, 222, 2705, -1, 35, 1, 32 },
-  { 0x1, 0x1, 222, 2706, -1, 35, 1, 32 },
-  { 0x3, 0x3, 222, 2707, -1, 35, 1, 66 },
-  { 0x5, 0x5, 222, 2708, -1, 35, 1, 32 },
-  { 0x1, 0x1, 222, 2709, -1, 35, 1, 32 },
-  { 0x1, 0x1, 222, 2710, -1, 35, 1, 66 },
-  { 0x1, 0x1, 222, 2711, -1, 35, 1, 32 },
-  { 0x1, 0x1, 222, 2712, -1, 35, 1, 32 },
-  { 0x1, 0x1, 222, 2713, -1, 35, 1, 66 },
-  { 0x1, 0x1, 222, 2714, -1, 35, 1, 32 },
-  { 0x1, 0x1, 222, 2715, -1, 35, 1, 32 },
-  { 0x1, 0x1, 222, 2716, -1, 35, 1, 32 },
-  { 0x1, 0x1, 222, 2717, -1, 35, 1, 32 },
-  { 0x1, 0x1, 222, 2718, -1, 35, 1, 52 },
-  { 0x101, 0x101, 222, 2719, -1, 27, 1, 52 },
-  { 0x81, 0x81, 222, 2720, -1, 28, 1, 52 },
-  { 0x103, 0x103, 222, 2721, -1, 27, 1, 52 },
-  { 0x41, 0x41, 222, 2722, -1, 29, 1, 52 },
-  { 0x105, 0x105, 222, 2723, -1, 27, 1, 52 },
-  { 0x83, 0x83, 222, 2724, -1, 28, 1, 52 },
-  { 0x107, 0x107, 222, 2725, -1, 27, 1, 52 },
-  { 0x1, 0x1, 222, 2726, -1, 35, 1, 52 },
-  { 0x1, 0x1, 222, 2727, -1, 35, 1, 52 },
-  { 0x1, 0x1, 222, 2728, -1, 35, 1, 52 },
-  { 0x1, 0x1, 222, 2729, -1, 35, 1, 52 },
-  { 0x81, 0x81, 222, 2730, -1, 28, 1, 32 },
-  { 0x1, 0x1, 222, 2731, -1, 35, 1, 32 },
-  { 0x103, 0x103, 222, 2732, -1, 27, 1, 32 },
-  { 0x101, 0x101, 222, 2733, -1, 27, 1, 32 },
-  { 0x1, 0x1, 222, 2734, -1, 35, 1, 32 },
-  { 0x1, 0x1, 222, 2735, -1, 35, 1, 32 },
-  { 0x1, 0x1, 222, 2736, -1, 35, 1, 32 },
-  { 0x1, 0x1, 222, 2737, -1, 35, 1, 32 },
-  { 0x1, 0x1, 222, 2738, -1, 35, 1, 32 },
-  { 0x1, 0x1, 222, 2739, -1, 35, 1, 32 },
-  { 0x1, 0x1, 222, 2740, -1, 35, 1, 32 },
-  { 0x1, 0x1, 222, 2741, -1, 35, 1, 27 },
-  { 0x1, 0x1, 222, 2742, -1, 35, 1, 27 },
-  { 0x1, 0x1, 222, 2743, -1, 35, 1, 27 },
-  { 0x1, 0x1, 222, 2744, -1, 35, 1, 27 },
-  { 0x1, 0x1, 222, 2745, -1, 35, 1, 38 },
-  { 0x1, 0x1, 222, 2746, -1, 35, 1, 66 },
-  { 0x1, 0x1, 222, 2747, -1, 35, 1, 32 },
-  { 0x1, 0x1, 222, 2748, -1, 35, 1, 32 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 66 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 33 },
-  { 0x3, 0x3, 223, 2243, -1, 34, 1, 33 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 33 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 33 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 48 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 44 },
-  { 0xc00001, 0xc00001, 223, -1, -1, 12, 1, 63 },
-  { 0x3, 0x3, 223, 2964, -1, 34, 1, 58 },
-  { 0x1c00001, 0x1c00001, 223, -1, -1, 12, 1, 63 },
-  { 0x7, 0x7, 223, 2965, -1, 34, 1, 58 },
-  { 0xe00001, 0xe00001, 223, -1, -1, 12, 1, 63 },
-  { 0x7, 0x7, 223, 2966, -1, 33, 1, 58 },
-  { 0x1e00001, 0x1e00001, 223, -1, -1, 12, 1, 53 },
-  { 0xf, 0xf, 223, 2967, -1, 33, 1, 53 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 63 },
-  { 0x3, 0x3, 223, 2968, -1, 34, 1, 58 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 63 },
-  { 0x3, 0x3, 223, 2969, -1, 34, 1, 58 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 63 },
-  { 0x3, 0x3, 223, 2970, -1, 34, 1, 58 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 53 },
-  { 0x3, 0x3, 223, 2971, -1, 34, 1, 53 },
-  { 0xc00001, 0xc00001, 223, -1, -1, 12, 1, 63 },
-  { 0x3, 0x3, 223, 2976, -1, 34, 1, 58 },
-  { 0xe00001, 0x1e00001, 223, -1, -1, 12, 1, 63 },
-  { 0x7, 0xf, 223, 2977, -1, 33, 1, 58 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 63 },
-  { 0x3, 0x3, 223, 2978, -1, 34, 1, 58 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 63 },
-  { 0x3, 0x3, 223, 2979, -1, 34, 1, 58 },
-  { 0xc00001, 0xc00001, 223, -1, -1, 12, 1, 63 },
-  { 0x3, 0x3, 223, 2982, -1, 34, 1, 58 },
-  { 0x1c00001, 0x1c00001, 223, -1, -1, 12, 1, 63 },
-  { 0x7, 0x7, 223, 2983, -1, 34, 1, 58 },
-  { 0xe00001, 0xe00001, 223, -1, -1, 12, 1, 63 },
-  { 0x7, 0x7, 223, 2984, -1, 33, 1, 58 },
-  { 0x1e00001, 0x1e00001, 223, -1, -1, 12, 1, 53 },
-  { 0xf, 0xf, 223, 2985, -1, 33, 1, 53 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 63 },
-  { 0x3, 0x3, 223, 2986, -1, 34, 1, 58 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 63 },
-  { 0x3, 0x3, 223, 2987, -1, 34, 1, 58 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 63 },
-  { 0x3, 0x3, 223, 2988, -1, 34, 1, 58 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 53 },
-  { 0x3, 0x3, 223, 2989, -1, 34, 1, 53 },
-  { 0xc00001, 0xc00001, 223, -1, -1, 12, 1, 63 },
-  { 0x3, 0x3, 223, 2994, -1, 34, 1, 58 },
-  { 0xe00001, 0x1e00001, 223, -1, -1, 12, 1, 63 },
-  { 0x7, 0xf, 223, 2995, -1, 33, 1, 58 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 63 },
-  { 0x3, 0x3, 223, 2996, -1, 34, 1, 58 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 63 },
-  { 0x3, 0x3, 223, 2997, -1, 34, 1, 58 },
-  { 0xc1, 0xc1, 223, -1, -1, 28, 1, 33 },
-  { 0x3, 0x3, 223, 2862, -1, 34, 1, 33 },
-  { 0x183, 0x183, 223, -1, -1, 27, 1, 33 },
-  { 0x181, 0x181, 223, 2863, -1, 27, 1, 33 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 66 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 33 },
-  { 0x3, 0x3, 223, 2244, -1, 34, 1, 33 },
-  { 0x7, 0x7, 223, -1, -1, 34, 1, 66 },
-  { 0xb, 0xb, 223, -1, -1, 34, 1, 33 },
-  { 0x3, 0x3, 223, 2245, -1, 34, 1, 33 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 33 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 33 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 66 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 33 },
-  { 0x3, 0x3, 223, 2248, -1, 34, 1, 33 },
-  { 0x7, 0x7, 223, -1, -1, 34, 1, 66 },
-  { 0xb, 0xb, 223, -1, -1, 34, 1, 33 },
-  { 0x3, 0x3, 223, 2249, -1, 34, 1, 33 },
-  { 0x7, 0x7, 223, -1, -1, 34, 1, 66 },
-  { 0xb, 0xb, 223, -1, -1, 34, 1, 33 },
-  { 0x3, 0x3, 223, 2251, -1, 34, 1, 33 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 66 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 33 },
-  { 0x3, 0x3, 223, 2253, -1, 34, 1, 33 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 66 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 33 },
-  { 0x3, 0x3, 223, 2254, -1, 34, 1, 33 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 33 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 33 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 53 },
-  { 0x181, 0x181, 223, -1, -1, 27, 1, 53 },
-  { 0xc1, 0xc1, 223, -1, -1, 28, 1, 53 },
-  { 0x183, 0x183, 223, -1, -1, 27, 1, 53 },
-  { 0x61, 0x61, 223, -1, -1, 29, 1, 53 },
-  { 0x185, 0x185, 223, -1, -1, 27, 1, 53 },
-  { 0xc3, 0xc3, 223, -1, -1, 28, 1, 53 },
-  { 0x187, 0x187, 223, -1, -1, 27, 1, 53 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 53 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 53 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 53 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 53 },
-  { 0xc1, 0xc1, 223, -1, -1, 28, 1, 33 },
-  { 0x3, 0x3, 223, 2866, -1, 34, 1, 33 },
-  { 0x183, 0x183, 223, -1, -1, 27, 1, 33 },
-  { 0x181, 0x181, 223, 2867, -1, 27, 1, 33 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 33 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 33 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 33 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 33 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 33 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 33 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 33 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 28 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 28 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 28 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 28 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 39 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 66 },
-  { 0x3, 0x3, 223, -1, -1, 34, 1, 33 },
-  { 0x3, 0x3, 223, 2256, -1, 34, 1, 33 },
-  { 0x3, 0x3, 224, 540, 1451, 32, 1, 135 },
-  { 0x3, 0x3, 224, 541, 1460, 32, 1, 135 },
-  { 0x3, 0x3, 224, 542, 1469, 32, 1, 135 },
-  { 0x3, 0x3, 224, 543, 1482, 32, 1, 135 },
-  { 0x3, 0x3, 224, 544, 1491, 32, 1, 135 },
-  { 0x3, 0x3, 224, 545, 1500, 32, 1, 135 },
-  { 0x3, 0x3, 224, 546, 1509, 32, 1, 135 },
-  { 0x3, 0x3, 224, 547, 1518, 32, 1, 135 },
-  { 0x3, 0x3, 224, 548, 1527, 32, 1, 135 },
-  { 0x3, 0x3, 224, 549, 1536, 32, 1, 135 },
-  { 0x3, 0x3, 224, 550, 1546, 32, 1, 135 },
-  { 0x3, 0x3, 224, 551, 1556, 32, 1, 135 },
-  { 0x3, 0x3, 224, 564, 1569, 32, 1, 150 },
-  { 0x3, 0x3, 224, 565, 1575, 32, 1, 155 },
-  { 0x3, 0x3, 224, 566, 1581, 32, 1, 155 },
-  { 0x3, 0x3, 224, 567, 1587, 32, 1, 150 },
-  { 0x3, 0x3, 224, 568, 1593, 32, 1, 155 },
-  { 0x3, 0x3, 224, 569, 1599, 32, 1, 155 },
-  { 0x3, 0x3, 224, 570, 1605, 32, 1, 150 },
-  { 0x3, 0x3, 224, 571, 1611, 32, 1, 155 },
-  { 0x3, 0x3, 224, 572, 1617, 32, 1, 155 },
-  { 0x3, 0x3, 224, 573, 1623, 32, 1, 150 },
-  { 0x3, 0x3, 224, 574, 1629, 32, 1, 155 },
-  { 0x3, 0x3, 224, 575, 1635, 32, 1, 150 },
-  { 0x3, 0x3, 224, 576, 1641, 32, 1, 155 },
-  { 0x3, 0x3, 224, 577, 1647, 32, 1, 150 },
-  { 0x3, 0x3, 224, 578, 1653, 32, 1, 155 },
-  { 0x3, 0x3, 224, 579, 1659, 32, 1, 150 },
-  { 0x3, 0x3, 224, 580, 1665, 32, 1, 155 },
-  { 0x3, 0x3, 224, 581, 1671, 32, 1, 155 },
-  { 0x1, 0x1, 225, -1, -1, 28, 1, 34 },
-  { 0x1, 0x1, 225, -1, -1, 28, 1, 34 },
-  { 0x0, 0x0, 232, 958, -1, 0, 1, 144 },
-  { 0x0, 0x0, 232, 959, -1, 0, 1, 160 },
-  { 0x1, 0x1, 233, -1, 1982, 33, 1, 140 },
-  { 0x1, 0x1, 233, -1, 1985, 33, 1, 146 },
-  { 0x0, 0x0, 233, -1, 1987, 0, 1, 157 },
-  { 0x0, 0x0, 233, -1, 1988, 0, 1, 161 },
-  { 0x0, 0x0, 234, 883, 971, 0, 0, -1 },
-  { 0x0, 0x0, 234, 884, 979, 0, 0, -1 },
-  { 0x0, 0x0, 234, 885, 975, 0, 0, -1 },
-  { 0x1, 0x1, 234, 886, 620, 33, 1, 6 },
-  { 0x8000001, 0x8000001, 234, 887, 628, 6, 1, 7 },
-  { 0x1, 0x1, 234, 888, 624, 33, 1, 6 },
-  { 0x0, 0x0, 234, 889, 983, 0, 0, -1 },
-  { 0x1, 0x1, 234, 890, 640, 33, 1, 8 },
-  { 0x0, 0x0, 234, 891, 987, 0, 0, -1 },
-  { 0x1, 0x1, 234, 892, 652, 33, 1, 16 },
-  { 0x0, 0x0, 234, 893, 992, 0, 0, -1 },
-  { 0x0, 0x0, 234, 894, 996, 0, 0, -1 },
-  { 0x1, 0x1, 234, 895, 675, 33, 1, 18 },
-  { 0x1, 0x1, 234, 896, 679, 33, 1, 18 },
-  { 0x0, 0x0, 234, 897, 1000, 0, 0, -1 },
-  { 0x0, 0x0, 234, 898, 1004, 0, 0, -1 },
-  { 0x1, 0x1, 234, 899, 699, 33, 1, 19 },
-  { 0x8000001, 0x8000001, 234, 900, 703, 6, 1, 19 },
-  { 0x0, 0x0, 234, 901, 1008, 0, 0, -1 },
-  { 0x1, 0x1, 234, 902, 715, 33, 1, 20 },
-  { 0x0, 0x0, 234, 903, 1012, 0, 0, -1 },
-  { 0x0, 0x0, 234, 904, 1016, 0, 0, -1 },
-  { 0x1, 0x1, 234, 905, 735, 33, 1, 21 },
-  { 0x8000001, 0x8000001, 234, 906, 739, 6, 1, 21 },
-  { 0x0, 0x0, 234, 907, 1020, 0, 0, -1 },
-  { 0x1, 0x1, 234, 908, 751, 33, 1, 22 },
-  { 0x0, 0x0, 234, 909, 1025, 0, 0, -1 },
-  { 0x0, 0x0, 234, 910, 1029, 0, 0, -1 },
-  { 0x1, 0x1, 234, 911, 774, 33, 1, 18 },
-  { 0x1, 0x1, 234, 912, 778, 33, 1, 18 },
-  { 0x0, 0x0, 234, 913, 1033, 0, 0, -1 },
-  { 0x1, 0x1, 234, 914, 790, 33, 1, 22 },
-  { 0x0, 0x0, 235, 2787, 970, 0, 0, -1 },
-  { 0x0, 0x0, 235, 2788, 978, 0, 0, -1 },
-  { 0x0, 0x0, 235, 2789, 974, 0, 0, -1 },
-  { 0x0, 0x0, 235, 2790, 619, 0, 1, 6 },
-  { 0x1, 0x1, 235, 2791, 627, 6, 1, 7 },
-  { 0x0, 0x0, 235, 2792, 623, 0, 1, 6 },
-  { 0x0, 0x0, 235, 2793, 982, 0, 0, -1 },
-  { 0x0, 0x0, 235, 2794, 639, 0, 1, 8 },
-  { 0x0, 0x0, 235, 2795, 986, 0, 0, -1 },
-  { 0x0, 0x0, 235, 2796, 651, 0, 1, 16 },
-  { 0x0, 0x0, 235, 2797, 991, 0, 0, -1 },
-  { 0x0, 0x0, 235, 2798, 995, 0, 0, -1 },
-  { 0x0, 0x0, 235, 2799, 674, 0, 1, 18 },
-  { 0x0, 0x0, 235, 2800, 678, 0, 1, 18 },
-  { 0x0, 0x0, 235, 2801, 999, 0, 0, -1 },
-  { 0x0, 0x0, 235, 2802, 1003, 0, 0, -1 },
-  { 0x0, 0x0, 235, 2803, 698, 0, 1, 19 },
-  { 0x1, 0x1, 235, 2804, 702, 6, 1, 19 },
-  { 0x0, 0x0, 235, 2805, 1007, 0, 0, -1 },
-  { 0x0, 0x0, 235, 2806, 714, 0, 1, 20 },
-  { 0x0, 0x0, 235, 2807, 1011, 0, 0, -1 },
-  { 0x0, 0x0, 235, 2808, 1015, 0, 0, -1 },
-  { 0x0, 0x0, 235, 2809, 734, 0, 1, 21 },
-  { 0x1, 0x1, 235, 2810, 738, 6, 1, 21 },
-  { 0x0, 0x0, 235, 2811, 1019, 0, 0, -1 },
-  { 0x0, 0x0, 235, 2812, 750, 0, 1, 22 },
-  { 0x0, 0x0, 235, 2813, 1024, 0, 0, -1 },
-  { 0x0, 0x0, 235, 2814, 1028, 0, 0, -1 },
-  { 0x0, 0x0, 235, 2815, 773, 0, 1, 18 },
-  { 0x0, 0x0, 235, 2816, 777, 0, 1, 18 },
-  { 0x0, 0x0, 235, 2817, 1032, 0, 0, -1 },
-  { 0x0, 0x0, 235, 2818, 789, 0, 1, 22 },
-  { 0x1, 0x1, 235, 915, 1155, 27, 1, 17 },
-  { 0x0, 0x0, 235, 916, 1153, 0, 1, 17 },
-  { 0x0, 0x0, 235, 1220, 1157, 0, 1, 23 },
-  { 0x0, 0x1, 235, 1165, 1163, 20, 1, 68 },
-  { 0x0, 0x0, 235, 111, 1161, 0, 1, 68 },
-  { 0x1, 0x1, 238, -1, -1, 29, 1, 0 },
-  { 0x0, 0x0, 238, -1, -1, 0, 1, 0 },
-  { 0x1, 0x1, 238, 3022, -1, 27, 1, 0 },
-  { 0x1, 0x1, 238, 3023, -1, 27, 1, 0 },
-  { 0x1, 0x1, 238, 3024, -1, 27, 1, 0 },
-  { 0x1, 0x1, 238, 3025, -1, 27, 1, 0 },
-  { 0x0, 0x0, 261, -1, 2344, 0, 0, -1 },
-  { 0x0, 0x0, 261, -1, 2346, 0, 0, -1 },
-  { 0x1, 0x1, 261, -1, -1, 28, 1, 30 },
-  { 0x1, 0x1, 261, -1, -1, 28, 1, 30 },
-  { 0x0, 0x0, 261, -1, 2385, 0, 0, -1 },
-  { 0x0, 0x0, 261, -1, 2387, 0, 0, -1 },
-  { 0x1, 0x1, 261, -1, -1, 28, 1, 30 },
-  { 0x1, 0x1, 261, -1, -1, 28, 1, 30 },
-  { 0x0, 0x0, 263, 23, -1, 0, 1, 0 },
-  { 0x0, 0x0, 263, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 263, -1, -1, 0, 1, 0 },
-  { 0x0, 0x1, 263, -1, -1, 29, 1, 0 },
-  { 0x0, 0x1, 263, -1, -1, 29, 1, 0 },
-  { 0x0, 0x1, 263, -1, -1, 29, 1, 0 },
-  { 0x0, 0x1, 263, -1, -1, 29, 1, 0 },
-  { 0x0, 0x1, 263, -1, -1, 29, 1, 0 },
-  { 0x0, 0x0, 263, 180, -1, 0, 1, 0 },
-  { 0x0, 0x1, 263, -1, -1, 29, 1, 0 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, 301, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, 323, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, 349, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, 371, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 65 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 65 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 65 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 65 },
-  { 0x0, 0x0, 264, -1, 2296, 0, 0, -1 },
-  { 0x0, 0x0, 264, -1, 2298, 0, 0, -1 },
-  { 0x0, 0x0, 264, -1, 2300, 0, 0, -1 },
-  { 0x0, 0x0, 264, -1, 2302, 0, 0, -1 },
-  { 0x1, 0x1, 264, -1, 2304, 12, 1, 60 },
-  { 0x1, 0x1, 264, -1, 2306, 12, 1, 60 },
-  { 0x1, 0x1, 264, -1, 2308, 12, 1, 60 },
-  { 0x1, 0x1, 264, -1, 2310, 12, 1, 50 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 60 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 60 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 60 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 50 },
-  { 0x0, 0x0, 264, -1, 2312, 0, 0, -1 },
-  { 0x0, 0x0, 264, -1, 2314, 0, 0, -1 },
-  { 0x1, 0x1, 264, -1, 2316, 12, 1, 60 },
-  { 0x1, 0x1, 264, -1, 2318, 12, 1, 60 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 60 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 60 },
-  { 0x0, 0x0, 264, -1, 2320, 0, 0, -1 },
-  { 0x0, 0x0, 264, -1, 2322, 0, 0, -1 },
-  { 0x0, 0x0, 264, -1, 2324, 0, 0, -1 },
-  { 0x0, 0x0, 264, -1, 2326, 0, 0, -1 },
-  { 0x1, 0x1, 264, -1, 2328, 12, 1, 60 },
-  { 0x1, 0x1, 264, -1, 2330, 12, 1, 60 },
-  { 0x1, 0x1, 264, -1, 2332, 12, 1, 60 },
-  { 0x1, 0x1, 264, -1, 2334, 12, 1, 50 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 60 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 60 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 60 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 50 },
-  { 0x0, 0x0, 264, -1, 2336, 0, 0, -1 },
-  { 0x0, 0x0, 264, -1, 2338, 0, 0, -1 },
-  { 0x1, 0x1, 264, -1, 2340, 12, 1, 60 },
-  { 0x1, 0x1, 264, -1, 2342, 12, 1, 60 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 60 },
-  { 0x1, 0x1, 264, -1, -1, 12, 1, 60 },
-  { 0x1, 0x1, 264, 393, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, 395, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, 517, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, 519, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, 401, -1, 12, 1, 77 },
-  { 0x1, 0x1, 264, 403, -1, 12, 1, 77 },
-  { 0x1, 0x1, 264, 525, -1, 12, 1, 77 },
-  { 0x1, 0x1, 264, 527, -1, 12, 1, 77 },
-  { 0x1, 0x1, 264, 409, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, 411, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, 533, -1, 12, 1, 2 },
-  { 0x1, 0x1, 264, 535, -1, 12, 1, 2 },
-  { 0x0, 0x0, 265, -1, 2303, 0, 0, -1 },
-  { 0x9, 0x9, 265, -1, 2311, 33, 1, 50 },
-  { 0x9, 0x9, 265, -1, 2975, 33, 1, 50 },
-  { 0x0, 0x0, 265, 1399, 2376, 0, 0, -1 },
-  { 0x3, 0x3, 265, 1400, -1, 27, 1, 50 },
-  { 0x0, 0x0, 269, 2856, -1, 0, 1, 0 },
-  { 0x3, 0x3, 270, -1, -1, 27, 1, 0 },
-  { 0x3, 0x3, 270, -1, -1, 27, 1, 0 },
-  { 0x3, 0x3, 270, -1, -1, 27, 1, 0 },
-  { 0x3, 0x3, 270, -1, -1, 27, 1, 0 },
-  { 0x1, 0x1, 271, 3018, -1, 28, 1, 0 },
-  { 0x1, 0x1, 271, 3019, -1, 28, 1, 0 },
-  { 0x1, 0x1, 271, 3020, -1, 28, 1, 0 },
-  { 0x1, 0x1, 271, 3021, -1, 28, 1, 0 },
-  { 0x1, 0x1, 273, -1, -1, 27, 1, 100 },
-  { 0x1, 0x1, 273, -1, -1, 27, 1, 100 },
-  { 0x0, 0x0, 273, -1, 968, 0, 0, -1 },
-  { 0x0, 0x0, 274, 3031, 2833, 0, 0, -1 },
-  { 0x0, 0x0, 274, 3032, 2835, 0, 0, -1 },
-  { 0x0, 0x0, 275, -1, 2834, 0, 0, -1 },
-  { 0x0, 0x0, 275, -1, 2836, 0, 0, -1 },
-  { 0x0, 0x0, 276, -1, -1, 0, 1, 41 },
-  { 0x0, 0x0, 276, -1, -1, 0, 1, 41 },
-  { 0x0, 0x0, 276, -1, -1, 0, 1, 41 },
-  { 0x0, 0x0, 281, -1, -1, 0, 1, 34 },
-  { 0x0, 0x0, 285, -1, 2350, 0, 1, 30 },
-  { 0x0, 0x0, 286, -1, -1, 0, 1, 0 },
-  { 0x0, 0x0, 286, -1, -1, 0, 1, 72 },
-  { 0x0, 0x0, 286, 2001, 3000, 0, 1, 1 },
-  { 0x0, 0x0, 286, 2002, 3001, 0, 1, 1 },
-  { 0x0, 0x0, 286, -1, 518, 0, 0, -1 },
-  { 0x0, 0x0, 286, -1, 520, 0, 0, -1 },
-  { 0x0, 0x0, 286, 2005, 3004, 0, 1, 76 },
-  { 0x0, 0x0, 286, 2006, 3005, 0, 1, 76 },
-  { 0x0, 0x0, 286, -1, 526, 0, 0, -1 },
-  { 0x0, 0x0, 286, -1, 528, 0, 0, -1 },
-  { 0x0, 0x0, 286, 2009, 3008, 0, 1, 1 },
-  { 0x0, 0x0, 286, 2010, 3009, 0, 1, 1 },
-  { 0x0, 0x0, 286, -1, 534, 0, 0, -1 },
-  { 0x0, 0x0, 286, -1, 536, 0, 0, -1 },
-};
-
-static const struct ia64_main_table
-main_table[] = {
-  { 5, 1, 1, 0x0000010000000000ull, 0x000001eff8000000ull, { 24, 25, 26, 0, 0 }, 0x0, 0, },
-  { 5, 1, 1, 0x0000010008000000ull, 0x000001eff8000000ull, { 24, 25, 26, 4, 0 }, 0x0, 1, },
-  { 5, 7, 1, 0x0000000000000000ull, 0x0000000000000000ull, { 24, 67, 27, 0, 0 }, 0x0, 2, },
-  { 5, 7, 1, 0x0000000000000000ull, 0x0000000000000000ull, { 24, 64, 26, 0, 0 }, 0x0, 3, },
-  { 6, 1, 1, 0x0000012000000000ull, 0x000001e000000000ull, { 24, 67, 27, 0, 0 }, 0x0, 4, },
-  { 7, 1, 1, 0x0000010040000000ull, 0x000001eff8000000ull, { 24, 25, 26, 0, 0 }, 0x0, 5, },
-  { 7, 1, 1, 0x0000010c00000000ull, 0x000001ee00000000ull, { 24, 64, 26, 0, 0 }, 0x0, 6, },
-  { 8, 1, 1, 0x0000010800000000ull, 0x000001ee00000000ull, { 24, 64, 26, 0, 0 }, 0x0, 7, },
-  { 9, 3, 1, 0x0000002c00000000ull, 0x000001ee00000000ull, { 24, 3, 53, 54, 55 }, 0x221, 8, },
-  { 9, 3, 1, 0x0000002c00000000ull, 0x000001ee00000000ull, { 24, 53, 54, 55, 0 }, 0x261, 9, },
-  { 10, 1, 1, 0x0000010060000000ull, 0x000001eff8000000ull, { 24, 25, 26, 0, 0 }, 0x0, 10, },
-  { 10, 1, 1, 0x0000010160000000ull, 0x000001eff8000000ull, { 24, 56, 26, 0, 0 }, 0x0, 11, },
-  { 11, 1, 1, 0x0000010068000000ull, 0x000001eff8000000ull, { 24, 25, 26, 0, 0 }, 0x0, 12, },
-  { 11, 1, 1, 0x0000010168000000ull, 0x000001eff8000000ull, { 24, 56, 26, 0, 0 }, 0x0, 13, },
-  { 14, 4, 0, 0x0000000100000000ull, 0x000001eff80011ffull, { 16, 0, 0, 0, 0 }, 0x40, 969, },
-  { 14, 4, 0, 0x0000000100000000ull, 0x000001eff80011c0ull, { 16, 0, 0, 0, 0 }, 0x0, 825, },
-  { 14, 4, 0, 0x0000000100000000ull, 0x000001eff80011c0ull, { 16, 0, 0, 0, 0 }, 0x40, 826, },
-  { 14, 4, 0, 0x0000000108000100ull, 0x000001eff80011c0ull, { 16, 0, 0, 0, 0 }, 0x200, 2234, },
-  { 14, 4, 0, 0x0000000108000100ull, 0x000001eff80011c0ull, { 16, 0, 0, 0, 0 }, 0x240, 2235, },
-  { 14, 4, 1, 0x0000002100000000ull, 0x000001ef00001000ull, { 15, 16, 0, 0, 0 }, 0x0, 582, },
-  { 14, 4, 1, 0x0000002100000000ull, 0x000001ef00001000ull, { 15, 16, 0, 0, 0 }, 0x40, 583, },
-  { 14, 4, 0, 0x0000008000000000ull, 0x000001ee000011ffull, { 82, 0, 0, 0, 0 }, 0x40, 990, },
-  { 14, 4, 0, 0x0000008000000000ull, 0x000001ee000011c0ull, { 82, 0, 0, 0, 0 }, 0x0, 827, },
-  { 14, 4, 0, 0x0000008000000000ull, 0x000001ee000011c0ull, { 82, 0, 0, 0, 0 }, 0x40, 828, },
-  { 14, 4, 0, 0x0000008000000080ull, 0x000001ee000011c0ull, { 82, 0, 0, 0, 0 }, 0x210, 3029, },
-  { 14, 4, 0, 0x0000008000000080ull, 0x000001ee000011c0ull, { 82, 0, 0, 0, 0 }, 0x250, 3030, },
-  { 14, 4, 0, 0x0000008000000140ull, 0x000001ee000011c0ull, { 82, 0, 0, 0, 0 }, 0x30, 590, },
-  { 14, 4, 0, 0x0000008000000140ull, 0x000001ee000011c0ull, { 82, 0, 0, 0, 0 }, 0x70, 591, },
-  { 14, 4, 0, 0x0000008000000180ull, 0x000001ee000011c0ull, { 82, 0, 0, 0, 0 }, 0x230, 588, },
-  { 14, 4, 0, 0x0000008000000180ull, 0x000001ee000011c0ull, { 82, 0, 0, 0, 0 }, 0x270, 589, },
-  { 14, 4, 1, 0x000000a000000000ull, 0x000001ee00001000ull, { 15, 82, 0, 0, 0 }, 0x0, 584, },
-  { 14, 4, 1, 0x000000a000000000ull, 0x000001ee00001000ull, { 15, 82, 0, 0, 0 }, 0x40, 585, },
-  { 15, 4, 0, 0x0000000000000000ull, 0x000001e1f8000000ull, { 66, 0, 0, 0, 0 }, 0x0, 537, },
-  { 15, 5, 0, 0x0000000000000000ull, 0x000001e3f8000000ull, { 66, 0, 0, 0, 0 }, 0x0, 960, },
-  { 15, 2, 0, 0x0000000000000000ull, 0x000001eff8000000ull, { 66, 0, 0, 0, 0 }, 0x2, 1138, },
-  { 15, 3, 0, 0x0000000000000000ull, 0x000001eff8000000ull, { 66, 0, 0, 0, 0 }, 0x0, 1263, },
-  { 15, 6, 0, 0x0000000000000000ull, 0x000001eff8000000ull, { 70, 0, 0, 0, 0 }, 0x0, 3033, },
-  { 15, 7, 0, 0x0000000000000000ull, 0x0000000000000000ull, { 66, 0, 0, 0, 0 }, 0x0, 16, },
-  { 16, 6, 0, 0x0000018000000000ull, 0x000001ee000011ffull, { 83, 0, 0, 0, 0 }, 0x40, 1023, },
-  { 16, 6, 0, 0x0000018000000000ull, 0x000001ee000011c0ull, { 83, 0, 0, 0, 0 }, 0x0, 829, },
-  { 16, 6, 0, 0x0000018000000000ull, 0x000001ee000011c0ull, { 83, 0, 0, 0, 0 }, 0x40, 830, },
-  { 16, 6, 1, 0x000001a000000000ull, 0x000001ee00001000ull, { 15, 83, 0, 0, 0 }, 0x0, 586, },
-  { 16, 6, 1, 0x000001a000000000ull, 0x000001ee00001000ull, { 15, 83, 0, 0, 0 }, 0x40, 587, },
-  { 17, 4, 0, 0x0000004080000000ull, 0x000001e9f8000018ull, { 16, 78, 0, 0, 0 }, 0x20, 2852, },
-  { 17, 4, 0, 0x000000e000000000ull, 0x000001e800000018ull, { 82, 78, 0, 0, 0 }, 0x20, 2853, },
-  { 18, 4, 0, 0x0000000060000000ull, 0x000001e1f8000000ull, { 0, 0, 0, 0, 0 }, 0x2c, 222, },
-  { 22, 2, 0, 0x0000000200000000ull, 0x000001ee00000000ull, { 25, 81, 0, 0, 0 }, 0x0, 2239, },
-  { 22, 3, 0, 0x0000000800000000ull, 0x000001ee00000000ull, { 24, 82, 0, 0, 0 }, 0x0, 226, },
-  { 22, 3, 0, 0x0000000c00000000ull, 0x000001ee00000000ull, { 18, 82, 0, 0, 0 }, 0x0, 227, },
-  { 22, 3, 0, 0x0000002200000000ull, 0x000001ee00000000ull, { 25, 81, 0, 0, 0 }, 0x0, 2240, },
-  { 22, 3, 0, 0x0000002600000000ull, 0x000001ee00000000ull, { 19, 81, 0, 0, 0 }, 0x0, 2241, },
-  { 22, 7, 0, 0x0000000000000000ull, 0x0000000000000000ull, { 25, 81, 0, 0, 0 }, 0x0, 2242, },
-  { 25, 4, 0, 0x0000000020000000ull, 0x000001e1f8000000ull, { 0, 0, 0, 0, 0 }, 0x224, 18, },
-  { 26, 1, 2, 0x0000018000000000ull, 0x000001fe00001000ull, { 22, 23, 25, 26, 0 }, 0x0, 1222, },
-  { 26, 1, 1, 0x0000018000000000ull, 0x000001fe00001000ull, { 22, 25, 26, 0, 0 }, 0x40, 1223, },
-  { 26, 1, 2, 0x0000018000000000ull, 0x000001fe00001000ull, { 23, 22, 26, 25, 0 }, 0x0, 1181, },
-  { 26, 1, 1, 0x0000018000000000ull, 0x000001fe00001000ull, { 23, 26, 25, 0, 0 }, 0x40, 1182, },
-  { 26, 1, 2, 0x0000018000000000ull, 0x000001fe00001000ull, { 22, 23, 26, 25, 0 }, 0x0, 1090, },
-  { 26, 1, 1, 0x0000018000000000ull, 0x000001fe00001000ull, { 22, 26, 25, 0, 0 }, 0x40, 1091, },
-  { 26, 1, 2, 0x0000018000000000ull, 0x000001fe00001000ull, { 23, 22, 25, 26, 0 }, 0x0, 1052, },
-  { 26, 1, 1, 0x0000018000000000ull, 0x000001fe00001000ull, { 23, 25, 26, 0, 0 }, 0x40, 1053, },
-  { 26, 1, 2, 0x0000018200000000ull, 0x000001fe00001000ull, { 22, 23, 25, 26, 0 }, 0x40, 1376, },
-  { 26, 1, 2, 0x0000019000000000ull, 0x000001fe00001000ull, { 22, 23, 7, 26, 0 }, 0x0, 1092, },
-  { 26, 1, 1, 0x0000019000000000ull, 0x000001fe00001000ull, { 22, 7, 26, 0, 0 }, 0x40, 1093, },
-  { 26, 1, 2, 0x0000019000000000ull, 0x000001fe00001000ull, { 22, 23, 26, 7, 0 }, 0x40, 1226, },
-  { 26, 1, 1, 0x0000019000000000ull, 0x000001fe00001000ull, { 22, 26, 7, 0, 0 }, 0x40, 1227, },
-  { 26, 1, 2, 0x0000019000000000ull, 0x000001fe00001000ull, { 22, 23, 7, 26, 0 }, 0x40, 1187, },
-  { 26, 1, 2, 0x0000018800000000ull, 0x000001ee00001000ull, { 22, 23, 56, 26, 0 }, 0x0, 1229, },
-  { 26, 1, 1, 0x0000018800000000ull, 0x000001ee00001000ull, { 22, 56, 26, 0, 0 }, 0x40, 1230, },
-  { 26, 1, 2, 0x0000018800000000ull, 0x000001ee00001000ull, { 22, 23, 58, 26, 0 }, 0x0, 1188, },
-  { 26, 1, 1, 0x0000018800000000ull, 0x000001ee00001000ull, { 22, 58, 26, 0, 0 }, 0x40, 1189, },
-  { 26, 1, 2, 0x0000018800000000ull, 0x000001ee00001000ull, { 23, 22, 58, 26, 0 }, 0x0, 1097, },
-  { 26, 1, 1, 0x0000018800000000ull, 0x000001ee00001000ull, { 23, 58, 26, 0, 0 }, 0x40, 1098, },
-  { 26, 1, 2, 0x0000018800000000ull, 0x000001ee00001000ull, { 23, 22, 56, 26, 0 }, 0x0, 1059, },
-  { 26, 1, 1, 0x0000018800000000ull, 0x000001ee00001000ull, { 23, 56, 26, 0, 0 }, 0x40, 1060, },
-  { 26, 1, 2, 0x0000018a00000000ull, 0x000001ee00001000ull, { 22, 23, 56, 26, 0 }, 0x40, 1381, },
-  { 26, 1, 2, 0x000001a800000000ull, 0x000001ee00001000ull, { 22, 23, 60, 26, 0 }, 0x0, 1214, },
-  { 26, 1, 1, 0x000001a800000000ull, 0x000001ee00001000ull, { 22, 60, 26, 0, 0 }, 0x40, 1215, },
-  { 26, 1, 2, 0x000001a800000000ull, 0x000001ee00001000ull, { 23, 22, 60, 26, 0 }, 0x0, 1125, },
-  { 26, 1, 1, 0x000001a800000000ull, 0x000001ee00001000ull, { 23, 60, 26, 0, 0 }, 0x40, 1126, },
-  { 26, 1, 2, 0x000001c200000000ull, 0x000001fe00001000ull, { 23, 22, 25, 26, 0 }, 0x40, 1382, },
-  { 26, 1, 2, 0x000001d000000000ull, 0x000001fe00001000ull, { 23, 22, 7, 26, 0 }, 0x40, 1190, },
-  { 26, 1, 1, 0x000001d000000000ull, 0x000001fe00001000ull, { 23, 7, 26, 0, 0 }, 0x40, 1191, },
-  { 26, 1, 2, 0x000001d000000000ull, 0x000001fe00001000ull, { 23, 22, 26, 7, 0 }, 0x40, 1063, },
-  { 26, 1, 1, 0x000001d000000000ull, 0x000001fe00001000ull, { 23, 26, 7, 0, 0 }, 0x40, 1064, },
-  { 26, 1, 2, 0x000001ca00000000ull, 0x000001ee00001000ull, { 23, 22, 56, 26, 0 }, 0x40, 1383, },
-  { 27, 1, 2, 0x0000018400000000ull, 0x000001fe00001000ull, { 22, 23, 25, 26, 0 }, 0x0, 1235, },
-  { 27, 1, 1, 0x0000018400000000ull, 0x000001fe00001000ull, { 22, 25, 26, 0, 0 }, 0x40, 1236, },
-  { 27, 1, 2, 0x0000018400000000ull, 0x000001fe00001000ull, { 23, 22, 26, 25, 0 }, 0x0, 1194, },
-  { 27, 1, 1, 0x0000018400000000ull, 0x000001fe00001000ull, { 23, 26, 25, 0, 0 }, 0x40, 1195, },
-  { 27, 1, 2, 0x0000018400000000ull, 0x000001fe00001000ull, { 22, 23, 26, 25, 0 }, 0x0, 1103, },
-  { 27, 1, 1, 0x0000018400000000ull, 0x000001fe00001000ull, { 22, 26, 25, 0, 0 }, 0x40, 1104, },
-  { 27, 1, 2, 0x0000018400000000ull, 0x000001fe00001000ull, { 23, 22, 25, 26, 0 }, 0x0, 1065, },
-  { 27, 1, 1, 0x0000018400000000ull, 0x000001fe00001000ull, { 23, 25, 26, 0, 0 }, 0x40, 1066, },
-  { 27, 1, 2, 0x0000018600000000ull, 0x000001fe00001000ull, { 22, 23, 25, 26, 0 }, 0x40, 1388, },
-  { 27, 1, 2, 0x0000019400000000ull, 0x000001fe00001000ull, { 22, 23, 7, 26, 0 }, 0x0, 1105, },
-  { 27, 1, 1, 0x0000019400000000ull, 0x000001fe00001000ull, { 22, 7, 26, 0, 0 }, 0x40, 1106, },
-  { 27, 1, 2, 0x0000019400000000ull, 0x000001fe00001000ull, { 22, 23, 26, 7, 0 }, 0x40, 1239, },
-  { 27, 1, 1, 0x0000019400000000ull, 0x000001fe00001000ull, { 22, 26, 7, 0, 0 }, 0x40, 1240, },
-  { 27, 1, 2, 0x0000019400000000ull, 0x000001fe00001000ull, { 22, 23, 7, 26, 0 }, 0x40, 1200, },
-  { 27, 1, 2, 0x0000018c00000000ull, 0x000001ee00001000ull, { 22, 23, 56, 26, 0 }, 0x0, 1242, },
-  { 27, 1, 1, 0x0000018c00000000ull, 0x000001ee00001000ull, { 22, 56, 26, 0, 0 }, 0x40, 1243, },
-  { 27, 1, 2, 0x0000018c00000000ull, 0x000001ee00001000ull, { 22, 23, 58, 26, 0 }, 0x0, 1201, },
-  { 27, 1, 1, 0x0000018c00000000ull, 0x000001ee00001000ull, { 22, 58, 26, 0, 0 }, 0x40, 1202, },
-  { 27, 1, 2, 0x0000018c00000000ull, 0x000001ee00001000ull, { 23, 22, 58, 26, 0 }, 0x0, 1110, },
-  { 27, 1, 1, 0x0000018c00000000ull, 0x000001ee00001000ull, { 23, 58, 26, 0, 0 }, 0x40, 1111, },
-  { 27, 1, 2, 0x0000018c00000000ull, 0x000001ee00001000ull, { 23, 22, 56, 26, 0 }, 0x0, 1072, },
-  { 27, 1, 1, 0x0000018c00000000ull, 0x000001ee00001000ull, { 23, 56, 26, 0, 0 }, 0x40, 1073, },
-  { 27, 1, 2, 0x0000018e00000000ull, 0x000001ee00001000ull, { 22, 23, 56, 26, 0 }, 0x40, 1393, },
-  { 27, 1, 2, 0x000001ac00000000ull, 0x000001ee00001000ull, { 22, 23, 57, 26, 0 }, 0x0, 1259, },
-  { 27, 1, 1, 0x000001ac00000000ull, 0x000001ee00001000ull, { 22, 57, 26, 0, 0 }, 0x40, 1260, },
-  { 27, 1, 2, 0x000001ac00000000ull, 0x000001ee00001000ull, { 22, 23, 59, 26, 0 }, 0x0, 1218, },
-  { 27, 1, 1, 0x000001ac00000000ull, 0x000001ee00001000ull, { 22, 59, 26, 0, 0 }, 0x40, 1219, },
-  { 27, 1, 2, 0x000001ac00000000ull, 0x000001ee00001000ull, { 23, 22, 59, 26, 0 }, 0x0, 1129, },
-  { 27, 1, 1, 0x000001ac00000000ull, 0x000001ee00001000ull, { 23, 59, 26, 0, 0 }, 0x40, 1130, },
-  { 27, 1, 2, 0x000001ac00000000ull, 0x000001ee00001000ull, { 23, 22, 57, 26, 0 }, 0x0, 1088, },
-  { 27, 1, 1, 0x000001ac00000000ull, 0x000001ee00001000ull, { 23, 57, 26, 0, 0 }, 0x40, 1089, },
-  { 27, 1, 2, 0x000001c600000000ull, 0x000001fe00001000ull, { 23, 22, 25, 26, 0 }, 0x40, 1394, },
-  { 27, 1, 2, 0x000001d400000000ull, 0x000001fe00001000ull, { 23, 22, 7, 26, 0 }, 0x40, 1203, },
-  { 27, 1, 1, 0x000001d400000000ull, 0x000001fe00001000ull, { 23, 7, 26, 0, 0 }, 0x40, 1204, },
-  { 27, 1, 2, 0x000001d400000000ull, 0x000001fe00001000ull, { 23, 22, 26, 7, 0 }, 0x40, 1076, },
-  { 27, 1, 1, 0x000001d400000000ull, 0x000001fe00001000ull, { 23, 26, 7, 0, 0 }, 0x40, 1077, },
-  { 27, 1, 2, 0x000001ce00000000ull, 0x000001ee00001000ull, { 23, 22, 56, 26, 0 }, 0x40, 1395, },
-  { 28, 3, 1, 0x0000008808000000ull, 0x000001fff8000000ull, { 24, 28, 25, 1, 2 }, 0x0, 259, },
-  { 28, 3, 1, 0x0000008808000000ull, 0x000001fff8000000ull, { 24, 28, 25, 0, 0 }, 0x40, 260, },
-  { 29, 3, 1, 0x0000008008000000ull, 0x000001fff8000000ull, { 24, 28, 25, 2, 0 }, 0x0, 261, },
-  { 29, 3, 1, 0x0000008008000000ull, 0x000001fff8000000ull, { 24, 28, 25, 0, 0 }, 0x40, 262, },
-  { 30, 3, 1, 0x0000008048000000ull, 0x000001fff8000000ull, { 24, 28, 25, 2, 0 }, 0x0, 263, },
-  { 30, 3, 1, 0x0000008048000000ull, 0x000001fff8000000ull, { 24, 28, 25, 0, 0 }, 0x40, 264, },
-  { 31, 3, 1, 0x0000008088000000ull, 0x000001fff8000000ull, { 24, 28, 25, 2, 0 }, 0x0, 265, },
-  { 31, 3, 1, 0x0000008088000000ull, 0x000001fff8000000ull, { 24, 28, 25, 0, 0 }, 0x40, 266, },
-  { 32, 3, 1, 0x00000080c8000000ull, 0x000001fff8000000ull, { 24, 28, 25, 2, 0 }, 0x0, 267, },
-  { 32, 3, 1, 0x00000080c8000000ull, 0x000001fff8000000ull, { 24, 28, 25, 0, 0 }, 0x40, 268, },
-  { 34, 4, 0, 0x0000000010000000ull, 0x000001e1f8000000ull, { 0, 0, 0, 0, 0 }, 0x224, 19, },
-  { 36, 2, 1, 0x00000000c0000000ull, 0x000001eff8000000ull, { 24, 26, 0, 0, 0 }, 0x0, 1167, },
-  { 37, 2, 1, 0x00000000c8000000ull, 0x000001eff8000000ull, { 24, 26, 0, 0, 0 }, 0x0, 1168, },
-  { 39, 2, 1, 0x0000008000000000ull, 0x000001e000000000ull, { 24, 25, 26, 47, 73 }, 0x0, 20, },
-  { 39, 2, 1, 0x000000a600000000ull, 0x000001ee04000000ull, { 24, 25, 45, 74, 0 }, 0x0, 3038, },
-  { 39, 2, 1, 0x000000a604000000ull, 0x000001ee04000000ull, { 24, 56, 45, 74, 0 }, 0x0, 3039, },
-  { 39, 2, 1, 0x000000ae00000000ull, 0x000001ee00000000ull, { 24, 48, 26, 46, 74 }, 0x0, 21, },
-  { 43, 4, 0, 0x0000000080000000ull, 0x000001e1f8000000ull, { 0, 0, 0, 0, 0 }, 0x20, 22, },
-  { 48, 2, 1, 0x000000a400000000ull, 0x000001ee00002000ull, { 24, 26, 77, 74, 0 }, 0x0, 2870, },
-  { 50, 5, 1, 0x0000000080000000ull, 0x000001e3f80fe000ull, { 18, 20, 0, 0, 0 }, 0x40, 24, },
-  { 51, 5, 1, 0x0000010008000000ull, 0x000001fff8000000ull, { 18, 20, 19, 0, 0 }, 0x40, 2291, },
-  { 52, 5, 1, 0x00000000b8000000ull, 0x000001eff8000000ull, { 18, 19, 20, 0, 0 }, 0x0, 2292, },
-  { 52, 5, 1, 0x00000000b8000000ull, 0x000001eff8000000ull, { 18, 19, 20, 0, 0 }, 0x40, 26, },
-  { 53, 5, 1, 0x00000000b0000000ull, 0x000001eff8000000ull, { 18, 19, 20, 0, 0 }, 0x0, 2293, },
-  { 53, 5, 1, 0x00000000b0000000ull, 0x000001eff8000000ull, { 18, 19, 20, 0, 0 }, 0x40, 27, },
-  { 54, 5, 1, 0x0000000160000000ull, 0x000001e3f8000000ull, { 18, 19, 20, 0, 0 }, 0x0, 28, },
-  { 55, 5, 1, 0x0000000168000000ull, 0x000001e3f8000000ull, { 18, 19, 20, 0, 0 }, 0x0, 29, },
-  { 57, 3, 0, 0x0000002180000000ull, 0x000001fff8000000ull, { 26, 0, 0, 0, 0 }, 0x0, 30, },
-  { 58, 5, 0, 0x0000000040000000ull, 0x000001eff8000000ull, { 80, 0, 0, 0, 0 }, 0x0, 2294, },
-  { 58, 5, 0, 0x0000000040000000ull, 0x000001eff8000000ull, { 80, 0, 0, 0, 0 }, 0x40, 31, },
-  { 59, 5, 2, 0x000000a000000000ull, 0x000001e000001000ull, { 22, 23, 19, 61, 0 }, 0x0, 1265, },
-  { 59, 5, 1, 0x000000a000000000ull, 0x000001e000001000ull, { 22, 19, 61, 0, 0 }, 0x40, 1266, },
-  { 59, 5, 2, 0x000000a000000000ull, 0x000001e000001000ull, { 23, 22, 19, 61, 0 }, 0x40, 1420, },
-  { 59, 5, 1, 0x000000a000000000ull, 0x000001e000001000ull, { 23, 19, 61, 0, 0 }, 0x40, 1421, },
-  { 60, 5, 0, 0x0000000028000000ull, 0x000001eff8000000ull, { 0, 0, 0, 0, 0 }, 0x0, 2295, },
-  { 60, 5, 0, 0x0000000028000000ull, 0x000001eff8000000ull, { 0, 0, 0, 0, 0 }, 0x40, 32, },
-  { 61, 5, 2, 0x0000008000000000ull, 0x000001fe00001000ull, { 22, 23, 19, 20, 0 }, 0x0, 943, },
-  { 61, 5, 1, 0x0000008000000000ull, 0x000001fe00001000ull, { 22, 19, 20, 0, 0 }, 0x40, 944, },
-  { 61, 5, 2, 0x0000008000000000ull, 0x000001fe00001000ull, { 22, 23, 19, 20, 0 }, 0x40, 945, },
-  { 61, 5, 2, 0x0000009000000000ull, 0x000001fe00001000ull, { 22, 23, 20, 19, 0 }, 0x0, 1116, },
-  { 61, 5, 1, 0x0000009000000000ull, 0x000001fe00001000ull, { 22, 20, 19, 0, 0 }, 0x40, 1117, },
-  { 61, 5, 2, 0x0000009000000000ull, 0x000001fe00001000ull, { 22, 23, 20, 19, 0 }, 0x40, 1118, },
-  { 61, 5, 2, 0x0000008000000000ull, 0x000001fe00001000ull, { 23, 22, 19, 20, 0 }, 0x0, 1396, },
-  { 61, 5, 1, 0x0000008000000000ull, 0x000001fe00001000ull, { 23, 19, 20, 0, 0 }, 0x40, 1397, },
-  { 61, 5, 2, 0x0000008000000000ull, 0x000001fe00001000ull, { 23, 22, 19, 20, 0 }, 0x40, 1398, },
-  { 61, 5, 2, 0x0000009000000000ull, 0x000001fe00001000ull, { 23, 22, 20, 19, 0 }, 0x0, 1405, },
-  { 61, 5, 1, 0x0000009000000000ull, 0x000001fe00001000ull, { 23, 20, 19, 0, 0 }, 0x40, 1406, },
-  { 61, 5, 2, 0x0000009000000000ull, 0x000001fe00001000ull, { 23, 22, 20, 19, 0 }, 0x40, 1407, },
-  { 62, 5, 1, 0x00000000c0000000ull, 0x000001eff8000000ull, { 18, 19, 0, 0, 0 }, 0x0, 1042, },
-  { 62, 5, 1, 0x00000000c0000000ull, 0x000001eff8000000ull, { 18, 19, 0, 0, 0 }, 0x40, 1043, },
-  { 62, 5, 1, 0x00000000e0000000ull, 0x000001e3f8000000ull, { 18, 19, 0, 0, 0 }, 0x0, 3036, },
-  { 62, 5, 1, 0x0000010008000000ull, 0x000001fff80fe000ull, { 18, 20, 0, 0, 0 }, 0x40, 3037, },
-  { 63, 3, 1, 0x0000008488000000ull, 0x000001fff8000000ull, { 24, 28, 72, 0, 0 }, 0x0, 269, },
-  { 64, 3, 1, 0x00000084c8000000ull, 0x000001fff8000000ull, { 24, 28, 72, 0, 0 }, 0x0, 270, },
-  { 67, 3, 0, 0x0000000060000000ull, 0x000001eff8000000ull, { 0, 0, 0, 0, 0 }, 0x21, 33, },
-  { 68, 5, 1, 0x0000010000000000ull, 0x000001fc00000000ull, { 18, 20, 21, 19, 0 }, 0x0, 2353, },
-  { 68, 5, 1, 0x0000010000000000ull, 0x000001fc00000000ull, { 18, 20, 21, 19, 0 }, 0x40, 34, },
-  { 69, 5, 1, 0x00000000a8000000ull, 0x000001eff8000000ull, { 18, 19, 20, 0, 0 }, 0x0, 2354, },
-  { 69, 5, 1, 0x00000000a8000000ull, 0x000001eff8000000ull, { 18, 19, 20, 0, 0 }, 0x40, 35, },
-  { 70, 5, 1, 0x0000000080000000ull, 0x000001e3f8000000ull, { 18, 19, 20, 0, 0 }, 0x0, 2247, },
-  { 71, 5, 1, 0x00000000a0000000ull, 0x000001eff8000000ull, { 18, 19, 20, 0, 0 }, 0x0, 2355, },
-  { 71, 5, 1, 0x00000000a0000000ull, 0x000001eff8000000ull, { 18, 19, 20, 0, 0 }, 0x40, 36, },
-  { 72, 5, 1, 0x00000001c8000000ull, 0x000001e3f8000000ull, { 18, 19, 20, 0, 0 }, 0x0, 1221, },
-  { 73, 5, 1, 0x0000010000000000ull, 0x000001fc000fe000ull, { 18, 20, 21, 0, 0 }, 0x40, 2358, },
-  { 74, 5, 1, 0x0000014000000000ull, 0x000001fc00000000ull, { 18, 20, 21, 19, 0 }, 0x0, 2361, },
-  { 74, 5, 1, 0x0000014000000000ull, 0x000001fc00000000ull, { 18, 20, 21, 19, 0 }, 0x40, 38, },
-  { 75, 5, 1, 0x0000000088000000ull, 0x000001e3f8000000ull, { 18, 20, 0, 0, 0 }, 0xc0, 39, },
-  { 76, 5, 1, 0x0000000088000000ull, 0x000001e3f80fe000ull, { 18, 20, 0, 0, 0 }, 0x40, 40, },
-  { 77, 5, 1, 0x0000018000000000ull, 0x000001fc00000000ull, { 18, 20, 21, 19, 0 }, 0x0, 2364, },
-  { 77, 5, 1, 0x0000018000000000ull, 0x000001fc00000000ull, { 18, 20, 21, 19, 0 }, 0x40, 41, },
-  { 78, 5, 1, 0x0000018000000000ull, 0x000001fc000fe000ull, { 18, 20, 21, 0, 0 }, 0x40, 2367, },
-  { 79, 5, 1, 0x0000010008000000ull, 0x000001fff80fe000ull, { 18, 20, 0, 0, 0 }, 0x40, 2370, },
-  { 80, 5, 1, 0x0000000170000000ull, 0x000001e3f8000000ull, { 18, 19, 20, 0, 0 }, 0x0, 44, },
-  { 81, 5, 1, 0x0000002080000000ull, 0x000001e3f80fe000ull, { 18, 20, 0, 0, 0 }, 0x40, 45, },
-  { 82, 5, 1, 0x0000000140000000ull, 0x000001e3f8000000ull, { 18, 19, 20, 0, 0 }, 0x0, 46, },
-  { 83, 5, 1, 0x00000020b8000000ull, 0x000001eff8000000ull, { 18, 19, 20, 0, 0 }, 0x0, 2371, },
-  { 83, 5, 1, 0x00000020b8000000ull, 0x000001eff8000000ull, { 18, 19, 20, 0, 0 }, 0x40, 47, },
-  { 84, 5, 1, 0x00000020b0000000ull, 0x000001eff8000000ull, { 18, 19, 20, 0, 0 }, 0x0, 2372, },
-  { 84, 5, 1, 0x00000020b0000000ull, 0x000001eff8000000ull, { 18, 19, 20, 0, 0 }, 0x40, 48, },
-  { 85, 5, 1, 0x0000002180000000ull, 0x000001eff8000000ull, { 18, 19, 20, 0, 0 }, 0x0, 946, },
-  { 85, 5, 1, 0x0000002180000000ull, 0x000001eff8000000ull, { 18, 19, 20, 0, 0 }, 0x40, 947, },
-  { 85, 5, 1, 0x0000002188000000ull, 0x000001eff8000000ull, { 18, 20, 19, 0, 0 }, 0x40, 1119, },
-  { 86, 5, 1, 0x00000020c0000000ull, 0x000001eff8000000ull, { 18, 19, 0, 0, 0 }, 0x0, 1044, },
-  { 86, 5, 1, 0x00000020c0000000ull, 0x000001eff8000000ull, { 18, 19, 0, 0, 0 }, 0x40, 1045, },
-  { 87, 5, 1, 0x0000013000000000ull, 0x000001fc00000000ull, { 18, 20, 21, 19, 0 }, 0x0, 2389, },
-  { 87, 5, 1, 0x0000013000000000ull, 0x000001fc00000000ull, { 18, 20, 21, 19, 0 }, 0x40, 49, },
-  { 88, 5, 1, 0x00000020a8000000ull, 0x000001eff8000000ull, { 18, 19, 20, 0, 0 }, 0x0, 2390, },
-  { 88, 5, 1, 0x00000020a8000000ull, 0x000001eff8000000ull, { 18, 19, 20, 0, 0 }, 0x40, 50, },
-  { 89, 5, 1, 0x0000002080000000ull, 0x000001e3f8000000ull, { 18, 19, 20, 0, 0 }, 0x0, 2255, },
-  { 90, 5, 1, 0x00000020a0000000ull, 0x000001eff8000000ull, { 18, 19, 20, 0, 0 }, 0x0, 2391, },
-  { 90, 5, 1, 0x00000020a0000000ull, 0x000001eff8000000ull, { 18, 19, 20, 0, 0 }, 0x40, 51, },
-  { 91, 5, 1, 0x0000013000000000ull, 0x000001fc000fe000ull, { 18, 20, 21, 0, 0 }, 0x40, 2392, },
-  { 92, 5, 1, 0x0000017000000000ull, 0x000001fc00000000ull, { 18, 20, 21, 19, 0 }, 0x0, 2393, },
-  { 92, 5, 1, 0x0000017000000000ull, 0x000001fc00000000ull, { 18, 20, 21, 19, 0 }, 0x40, 53, },
-  { 93, 5, 1, 0x0000002088000000ull, 0x000001e3f8000000ull, { 18, 20, 0, 0, 0 }, 0xc0, 54, },
-  { 94, 5, 1, 0x0000002088000000ull, 0x000001e3f80fe000ull, { 18, 20, 0, 0, 0 }, 0x40, 55, },
-  { 95, 5, 1, 0x000001b000000000ull, 0x000001fc00000000ull, { 18, 20, 21, 19, 0 }, 0x0, 2394, },
-  { 95, 5, 1, 0x000001b000000000ull, 0x000001fc00000000ull, { 18, 20, 21, 19, 0 }, 0x40, 56, },
-  { 96, 5, 1, 0x000001b000000000ull, 0x000001fc000fe000ull, { 18, 20, 21, 0, 0 }, 0x40, 2395, },
-  { 97, 5, 2, 0x0000002200000000ull, 0x000001fe00000000ull, { 18, 23, 19, 20, 0 }, 0x0, 2396, },
-  { 97, 5, 2, 0x0000002200000000ull, 0x000001fe00000000ull, { 18, 23, 19, 20, 0 }, 0x40, 58, },
-  { 98, 5, 2, 0x0000003200000000ull, 0x000001fe00000000ull, { 18, 23, 20, 0, 0 }, 0x0, 2397, },
-  { 98, 5, 2, 0x0000003200000000ull, 0x000001fe00000000ull, { 18, 23, 20, 0, 0 }, 0x40, 59, },
-  { 99, 5, 2, 0x0000000200000000ull, 0x000001fe00000000ull, { 18, 23, 19, 20, 0 }, 0x0, 2398, },
-  { 99, 5, 2, 0x0000000200000000ull, 0x000001fe00000000ull, { 18, 23, 19, 20, 0 }, 0x40, 60, },
-  { 100, 5, 2, 0x0000001200000000ull, 0x000001fe00000000ull, { 18, 23, 20, 0, 0 }, 0x0, 2399, },
-  { 100, 5, 2, 0x0000001200000000ull, 0x000001fe00000000ull, { 18, 23, 20, 0, 0 }, 0x40, 61, },
-  { 101, 5, 1, 0x000001c000000000ull, 0x000001f000000000ull, { 18, 20, 21, 19, 0 }, 0x0, 62, },
-  { 102, 5, 0, 0x0000000020000000ull, 0x000001eff8000000ull, { 51, 52, 0, 0, 0 }, 0x0, 2400, },
-  { 102, 5, 0, 0x0000000020000000ull, 0x000001eff8000000ull, { 51, 52, 0, 0, 0 }, 0x40, 63, },
-  { 103, 5, 1, 0x0000014008000000ull, 0x000001fff8000000ull, { 18, 20, 19, 0, 0 }, 0x40, 2403, },
-  { 104, 5, 1, 0x00000001a0000000ull, 0x000001e3f8000000ull, { 18, 19, 20, 0, 0 }, 0x0, 65, },
-  { 105, 5, 1, 0x00000001e0000000ull, 0x000001e3f8000000ull, { 18, 19, 20, 0, 0 }, 0x0, 2202, },
-  { 106, 3, 0, 0x0000000100000000ull, 0x000001eff8000000ull, { 0, 0, 0, 0, 0 }, 0x0, 66, },
-  { 108, 5, 1, 0x0000000178000000ull, 0x000001e3f8000000ull, { 18, 19, 20, 0, 0 }, 0x0, 67, },
-  { 113, 3, 1, 0x0000008708000000ull, 0x000001ffc8000000ull, { 24, 19, 0, 0, 0 }, 0x0, 2781, },
-  { 118, 4, 0, 0x0000004008000000ull, 0x000001e1f8000000ull, { 66, 0, 0, 0, 0 }, 0x0, 538, },
-  { 118, 5, 0, 0x000000000c000000ull, 0x000001e3fc000000ull, { 66, 0, 0, 0, 0 }, 0x0, 961, },
-  { 118, 2, 0, 0x000000000c000000ull, 0x000001effc000000ull, { 66, 0, 0, 0, 0 }, 0x2, 1141, },
-  { 118, 3, 0, 0x000000000c000000ull, 0x000001effc000000ull, { 66, 0, 0, 0, 0 }, 0x0, 1267, },
-  { 118, 6, 0, 0x000000000c000000ull, 0x000001effc000000ull, { 70, 0, 0, 0, 0 }, 0x0, 3034, },
-  { 118, 7, 0, 0x0000000000000000ull, 0x0000000000000000ull, { 66, 0, 0, 0, 0 }, 0x0, 68, },
-  { 123, 3, 0, 0x0000000080000000ull, 0x000001eff8000000ull, { 0, 0, 0, 0, 0 }, 0x0, 69, },
-  { 123, 3, 0, 0x0000000090000000ull, 0x000001eff8000000ull, { 24, 0, 0, 0, 0 }, 0x0, 920, },
-  { 123, 3, 0, 0x0000000098000000ull, 0x000001eff8000000ull, { 18, 0, 0, 0, 0 }, 0x0, 921, },
-  { 124, 3, 0, 0x0000002170000000ull, 0x000001eff8000000ull, { 25, 0, 0, 0, 0 }, 0xc, 846, },
-  { 125, 3, 1, 0x0000002070000000ull, 0x000001eff8000000ull, { 31, 25, 0, 0, 0 }, 0x8, 847, },
-  { 125, 3, 1, 0x0000002078000000ull, 0x000001eff8000000ull, { 32, 25, 0, 0, 0 }, 0x8, 1143, },
-  { 127, 3, 1, 0x0000008000000000ull, 0x000001fff8000000ull, { 24, 28, 0, 0, 0 }, 0x0, 70, },
-  { 127, 3, 1, 0x0000009000000000ull, 0x000001fff8000000ull, { 24, 28, 25, 0, 0 }, 0x400, 71, },
-  { 127, 3, 1, 0x000000a000000000ull, 0x000001eff0000000ull, { 24, 28, 63, 0, 0 }, 0x400, 72, },
-  { 128, 3, 2, 0x0000008a08000000ull, 0x000001fff8000000ull, { 24, 1, 28, 0, 0 }, 0x0, 73, },
-  { 128, 3, 1, 0x0000008a08000000ull, 0x000001fff8000000ull, { 24, 28, 0, 0, 0 }, 0x40, 74, },
-  { 129, 3, 1, 0x0000008040000000ull, 0x000001fff8000000ull, { 24, 28, 0, 0, 0 }, 0x0, 75, },
-  { 129, 3, 1, 0x0000009040000000ull, 0x000001fff8000000ull, { 24, 28, 25, 0, 0 }, 0x400, 76, },
-  { 129, 3, 1, 0x000000a040000000ull, 0x000001eff0000000ull, { 24, 28, 63, 0, 0 }, 0x400, 77, },
-  { 130, 3, 1, 0x0000008080000000ull, 0x000001fff8000000ull, { 24, 28, 0, 0, 0 }, 0x0, 78, },
-  { 130, 3, 1, 0x0000009080000000ull, 0x000001fff8000000ull, { 24, 28, 25, 0, 0 }, 0x400, 79, },
-  { 130, 3, 1, 0x000000a080000000ull, 0x000001eff0000000ull, { 24, 28, 63, 0, 0 }, 0x400, 80, },
-  { 131, 3, 1, 0x00000080c0000000ull, 0x000001fff8000000ull, { 24, 28, 0, 0, 0 }, 0x0, 81, },
-  { 131, 3, 1, 0x00000080c0000000ull, 0x000001fff8000000ull, { 24, 28, 84, 0, 0 }, 0x0, 1339, },
-  { 131, 3, 1, 0x00000090c0000000ull, 0x000001fff8000000ull, { 24, 28, 25, 0, 0 }, 0x400, 82, },
-  { 131, 3, 1, 0x000000a0c0000000ull, 0x000001eff0000000ull, { 24, 28, 63, 0, 0 }, 0x400, 83, },
-  { 132, 3, 1, 0x000000c6c0000000ull, 0x000001fff8000000ull, { 18, 28, 0, 0, 0 }, 0x0, 1039, },
-  { 132, 3, 1, 0x000000d6c0000000ull, 0x000001fff8000000ull, { 18, 28, 25, 0, 0 }, 0x400, 1040, },
-  { 132, 3, 1, 0x000000e6c0000000ull, 0x000001eff0000000ull, { 18, 28, 63, 0, 0 }, 0x400, 1041, },
-  { 133, 3, 1, 0x000000c040000000ull, 0x000001fff8000000ull, { 18, 28, 0, 0, 0 }, 0x0, 84, },
-  { 133, 3, 1, 0x000000d040000000ull, 0x000001fff8000000ull, { 18, 28, 25, 0, 0 }, 0x400, 85, },
-  { 133, 3, 1, 0x000000e040000000ull, 0x000001eff0000000ull, { 18, 28, 63, 0, 0 }, 0x400, 86, },
-  { 134, 3, 1, 0x000000c0c0000000ull, 0x000001fff8000000ull, { 18, 28, 0, 0, 0 }, 0x0, 87, },
-  { 134, 3, 1, 0x000000d0c0000000ull, 0x000001fff8000000ull, { 18, 28, 25, 0, 0 }, 0x400, 88, },
-  { 134, 3, 1, 0x000000e0c0000000ull, 0x000001eff0000000ull, { 18, 28, 63, 0, 0 }, 0x400, 89, },
-  { 135, 3, 1, 0x000000c000000000ull, 0x000001fff8000000ull, { 18, 28, 0, 0, 0 }, 0x0, 90, },
-  { 135, 3, 1, 0x000000d000000000ull, 0x000001fff8000000ull, { 18, 28, 25, 0, 0 }, 0x400, 91, },
-  { 135, 3, 1, 0x000000e000000000ull, 0x000001eff0000000ull, { 18, 28, 63, 0, 0 }, 0x400, 92, },
-  { 136, 3, 2, 0x000000c048000000ull, 0x000001fff8000000ull, { 18, 19, 28, 0, 0 }, 0x0, 93, },
-  { 136, 3, 2, 0x000000d048000000ull, 0x000001fff8000000ull, { 18, 19, 28, 6, 0 }, 0x400, 94, },
-  { 137, 3, 2, 0x000000c0c8000000ull, 0x000001fff8000000ull, { 18, 19, 28, 0, 0 }, 0x0, 95, },
-  { 137, 3, 2, 0x000000d0c8000000ull, 0x000001fff8000000ull, { 18, 19, 28, 6, 0 }, 0x400, 96, },
-  { 138, 3, 2, 0x000000c088000000ull, 0x000001fff8000000ull, { 18, 19, 28, 0, 0 }, 0x0, 97, },
-  { 138, 3, 2, 0x000000d088000000ull, 0x000001fff8000000ull, { 18, 19, 28, 5, 0 }, 0x400, 98, },
-  { 139, 3, 1, 0x000000c080000000ull, 0x000001fff8000000ull, { 18, 28, 0, 0, 0 }, 0x0, 99, },
-  { 139, 3, 1, 0x000000d080000000ull, 0x000001fff8000000ull, { 18, 28, 25, 0, 0 }, 0x400, 100, },
-  { 139, 3, 1, 0x000000e080000000ull, 0x000001eff0000000ull, { 18, 28, 63, 0, 0 }, 0x400, 101, },
-  { 142, 3, 0, 0x000000cb00000000ull, 0x000001fff8000000ull, { 28, 0, 0, 0, 0 }, 0x0, 102, },
-  { 142, 3, 0, 0x000000db00000000ull, 0x000001fff8000000ull, { 28, 25, 0, 0, 0 }, 0x400, 103, },
-  { 142, 3, 0, 0x000000eb00000000ull, 0x000001eff0000000ull, { 28, 63, 0, 0, 0 }, 0x400, 104, },
-  { 143, 3, 0, 0x0000000050000000ull, 0x000001eff8000000ull, { 0, 0, 0, 0, 0 }, 0x21, 105, },
-  { 151, 3, 0, 0x0000000110000000ull, 0x000001eff8000000ull, { 0, 0, 0, 0, 0 }, 0x0, 106, },
-  { 152, 2, 1, 0x000000e880000000ull, 0x000001fff0000000ull, { 24, 25, 26, 0, 0 }, 0x0, 2203, },
-  { 153, 2, 1, 0x000000ea80000000ull, 0x000001fff0000000ull, { 24, 25, 26, 0, 0 }, 0x0, 2204, },
-  { 154, 2, 1, 0x000000f880000000ull, 0x000001fff0000000ull, { 24, 25, 26, 0, 0 }, 0x0, 2205, },
-  { 155, 1, 1, 0x0000010800000000ull, 0x000001fff80fe000ull, { 24, 26, 0, 0, 0 }, 0x0, 107, },
-  { 155, 1, 1, 0x0000012000000000ull, 0x000001e000300000ull, { 24, 67, 0, 0, 0 }, 0x40, 108, },
-  { 155, 5, 1, 0x0000000080000000ull, 0x000001e3f8000000ull, { 18, 20, 0, 0, 0 }, 0xc0, 109, },
-  { 155, 2, 1, 0x0000000e00100000ull, 0x000001ee00f00000ull, { 15, 25, 0, 0, 0 }, 0x40, 110, },
-  { 155, 2, 1, 0x0000000e00000000ull, 0x000001ee00f00000ull, { 15, 25, 79, 0, 0 }, 0x0, 2855, },
-  { 155, 2, 1, 0x0000000188000000ull, 0x000001eff8000000ull, { 24, 16, 0, 0, 0 }, 0x0, 112, },
-  { 155, 2, 1, 0x0000000600000000ull, 0x000001ee00000000ull, { 9, 25, 65, 0, 0 }, 0x0, 113, },
-  { 155, 2, 1, 0x00000016ff001fc0ull, 0x000001feff001fc0ull, { 9, 25, 0, 0, 0 }, 0x40, 114, },
-  { 155, 2, 1, 0x0000000400000000ull, 0x000001ee00000000ull, { 10, 69, 0, 0, 0 }, 0x0, 115, },
-  { 155, 2, 1, 0x0000000180000000ull, 0x000001eff8000000ull, { 24, 8, 0, 0, 0 }, 0x0, 116, },
-  { 155, 2, 1, 0x0000000198000000ull, 0x000001eff8000000ull, { 24, 9, 0, 0, 0 }, 0x0, 117, },
-  { 155, 2, 1, 0x0000000150000000ull, 0x000001eff8000000ull, { 14, 25, 0, 0, 0 }, 0x0, 1144, },
-  { 155, 2, 1, 0x0000000050000000ull, 0x000001eff8000000ull, { 14, 56, 0, 0, 0 }, 0x0, 1145, },
-  { 155, 2, 1, 0x0000000190000000ull, 0x000001eff8000000ull, { 24, 14, 0, 0, 0 }, 0x0, 1146, },
-  { 155, 3, 1, 0x0000000140000000ull, 0x000001eff8000000ull, { 14, 56, 0, 0, 0 }, 0x0, 1268, },
-  { 155, 3, 1, 0x0000002150000000ull, 0x000001eff8000000ull, { 14, 25, 0, 0, 0 }, 0x0, 1269, },
-  { 155, 3, 1, 0x0000002110000000ull, 0x000001eff8000000ull, { 24, 14, 0, 0, 0 }, 0x0, 1270, },
-  { 155, 3, 1, 0x0000002160000000ull, 0x000001eff8000000ull, { 17, 25, 0, 0, 0 }, 0x8, 118, },
-  { 155, 3, 1, 0x0000002120000000ull, 0x000001eff8000000ull, { 24, 17, 0, 0, 0 }, 0x8, 119, },
-  { 155, 3, 1, 0x0000002168000000ull, 0x000001eff8000000ull, { 12, 25, 0, 0, 0 }, 0x8, 120, },
-  { 155, 3, 1, 0x0000002148000000ull, 0x000001eff8000000ull, { 13, 25, 0, 0, 0 }, 0x0, 121, },
-  { 155, 3, 1, 0x0000002128000000ull, 0x000001eff8000000ull, { 24, 11, 0, 0, 0 }, 0x8, 122, },
-  { 155, 3, 1, 0x0000002108000000ull, 0x000001eff8000000ull, { 24, 13, 0, 0, 0 }, 0x0, 123, },
-  { 155, 3, 1, 0x0000002000000000ull, 0x000001eff8000000ull, { 38, 25, 0, 0, 0 }, 0x8, 124, },
-  { 155, 3, 1, 0x0000002008000000ull, 0x000001eff8000000ull, { 30, 25, 0, 0, 0 }, 0x8, 125, },
-  { 155, 3, 1, 0x0000002010000000ull, 0x000001eff8000000ull, { 33, 25, 0, 0, 0 }, 0x8, 126, },
-  { 155, 3, 1, 0x0000002018000000ull, 0x000001eff8000000ull, { 35, 25, 0, 0, 0 }, 0x8, 127, },
-  { 155, 3, 1, 0x0000002020000000ull, 0x000001eff8000000ull, { 36, 25, 0, 0, 0 }, 0x8, 128, },
-  { 155, 3, 1, 0x0000002028000000ull, 0x000001eff8000000ull, { 37, 25, 0, 0, 0 }, 0x8, 129, },
-  { 155, 3, 1, 0x0000002030000000ull, 0x000001eff8000000ull, { 34, 25, 0, 0, 0 }, 0x8, 130, },
-  { 155, 3, 1, 0x0000002080000000ull, 0x000001eff8000000ull, { 24, 38, 0, 0, 0 }, 0x8, 131, },
-  { 155, 3, 1, 0x0000002088000000ull, 0x000001eff8000000ull, { 24, 30, 0, 0, 0 }, 0x8, 132, },
-  { 155, 3, 1, 0x0000002090000000ull, 0x000001eff8000000ull, { 24, 33, 0, 0, 0 }, 0x8, 133, },
-  { 155, 3, 1, 0x0000002098000000ull, 0x000001eff8000000ull, { 24, 35, 0, 0, 0 }, 0x8, 134, },
-  { 155, 3, 1, 0x00000020a0000000ull, 0x000001eff8000000ull, { 24, 36, 0, 0, 0 }, 0x8, 135, },
-  { 155, 3, 1, 0x00000020a8000000ull, 0x000001eff8000000ull, { 24, 37, 0, 0, 0 }, 0x0, 136, },
-  { 155, 3, 1, 0x00000020b0000000ull, 0x000001eff8000000ull, { 24, 34, 0, 0, 0 }, 0x8, 137, },
-  { 155, 3, 1, 0x00000020b8000000ull, 0x000001eff8000000ull, { 24, 29, 0, 0, 0 }, 0x0, 138, },
-  { 155, 7, 1, 0x0000000000000000ull, 0x0000000000000000ull, { 24, 14, 0, 0, 0 }, 0x0, 139, },
-  { 155, 7, 1, 0x0000000000000000ull, 0x0000000000000000ull, { 14, 56, 0, 0, 0 }, 0x0, 140, },
-  { 155, 7, 1, 0x0000000000000000ull, 0x0000000000000000ull, { 14, 25, 0, 0, 0 }, 0x0, 141, },
-  { 156, 6, 1, 0x000000c000000000ull, 0x000001e000100000ull, { 24, 71, 0, 0, 0 }, 0x0, 142, },
-  { 157, 2, 1, 0x000000eca0000000ull, 0x000001fff0000000ull, { 24, 25, 75, 0, 0 }, 0x0, 143, },
-  { 158, 2, 1, 0x000000eea0000000ull, 0x000001fff0000000ull, { 24, 25, 76, 0, 0 }, 0x0, 144, },
-  { 168, 4, 0, 0x0000004000000000ull, 0x000001e1f8000000ull, { 66, 0, 0, 0, 0 }, 0x0, 539, },
-  { 168, 5, 0, 0x0000000008000000ull, 0x000001e3fc000000ull, { 66, 0, 0, 0, 0 }, 0x0, 962, },
-  { 168, 2, 0, 0x0000000008000000ull, 0x000001effc000000ull, { 66, 0, 0, 0, 0 }, 0x2, 1147, },
-  { 168, 3, 0, 0x0000000008000000ull, 0x000001effc000000ull, { 66, 0, 0, 0, 0 }, 0x0, 1271, },
-  { 168, 6, 0, 0x0000000008000000ull, 0x000001effc000000ull, { 70, 0, 0, 0, 0 }, 0x0, 3035, },
-  { 168, 7, 0, 0x0000000000000000ull, 0x0000000000000000ull, { 66, 0, 0, 0, 0 }, 0x0, 145, },
-  { 175, 1, 1, 0x0000010070000000ull, 0x000001eff8000000ull, { 24, 25, 26, 0, 0 }, 0x0, 146, },
-  { 175, 1, 1, 0x0000010170000000ull, 0x000001eff8000000ull, { 24, 56, 26, 0, 0 }, 0x0, 147, },
-  { 178, 2, 1, 0x000000ea00000000ull, 0x000001fff0000000ull, { 24, 25, 26, 0, 0 }, 0x0, 3017, },
-  { 179, 2, 1, 0x000000f820000000ull, 0x000001fff0000000ull, { 24, 25, 26, 0, 0 }, 0x0, 2857, },
-  { 180, 1, 1, 0x0000010400000000ull, 0x000001fff8000000ull, { 24, 25, 26, 0, 0 }, 0x0, 148, },
-  { 181, 1, 1, 0x0000010600000000ull, 0x000001fff8000000ull, { 24, 25, 26, 0, 0 }, 0x0, 149, },
-  { 182, 1, 1, 0x0000011400000000ull, 0x000001fff8000000ull, { 24, 25, 26, 0, 0 }, 0x0, 150, },
-  { 183, 1, 1, 0x0000010450000000ull, 0x000001fff8000000ull, { 24, 25, 26, 0, 0 }, 0x0, 151, },
-  { 184, 1, 1, 0x0000010650000000ull, 0x000001fff8000000ull, { 24, 25, 26, 0, 0 }, 0x0, 152, },
-  { 185, 1, 1, 0x0000010470000000ull, 0x000001fff8000000ull, { 24, 25, 26, 0, 0 }, 0x0, 153, },
-  { 186, 1, 1, 0x0000010670000000ull, 0x000001fff8000000ull, { 24, 25, 26, 0, 0 }, 0x0, 154, },
-  { 187, 1, 1, 0x0000010520000000ull, 0x000001fff8000000ull, { 24, 25, 26, 0, 0 }, 0x0, 948, },
-  { 188, 1, 1, 0x0000010720000000ull, 0x000001fff8000000ull, { 24, 25, 26, 0, 0 }, 0x0, 949, },
-  { 189, 1, 1, 0x0000011520000000ull, 0x000001fff8000000ull, { 24, 25, 26, 0, 0 }, 0x0, 950, },
-  { 190, 2, 1, 0x000000e850000000ull, 0x000001fff0000000ull, { 24, 25, 26, 0, 0 }, 0x0, 2871, },
-  { 191, 2, 1, 0x000000ea70000000ull, 0x000001fff0000000ull, { 24, 25, 26, 0, 0 }, 0x0, 155, },
-  { 192, 2, 1, 0x000000e810000000ull, 0x000001fff0000000ull, { 24, 25, 26, 0, 0 }, 0x0, 2872, },
-  { 193, 2, 1, 0x000000ea30000000ull, 0x000001fff0000000ull, { 24, 25, 26, 0, 0 }, 0x0, 156, },
-  { 194, 2, 1, 0x000000ead0000000ull, 0x000001fff0000000ull, { 24, 25, 26, 0, 0 }, 0x0, 2206, },
-  { 195, 2, 1, 0x000000e230000000ull, 0x000001ff30000000ull, { 24, 25, 26, 42, 0 }, 0x0, 157, },
-  { 196, 2, 1, 0x000000e690000000ull, 0x000001fff0000000ull, { 24, 26, 0, 0, 0 }, 0x0, 158, },
-  { 198, 3, 1, 0x00000021c0000000ull, 0x000001eff8000000ull, { 24, 26, 25, 0, 0 }, 0x0, 2207, },
-  { 198, 3, 1, 0x00000020c0000000ull, 0x000001eff8000000ull, { 24, 26, 49, 0, 0 }, 0x0, 2208, },
-  { 198, 3, 0, 0x0000002188000000ull, 0x000001eff8000000ull, { 26, 49, 0, 0, 0 }, 0x0, 2238, },
-  { 199, 2, 1, 0x000000e8b0000000ull, 0x000001fff0000000ull, { 24, 25, 26, 0, 0 }, 0x0, 159, },
-  { 200, 2, 1, 0x000000e240000000ull, 0x000001fff0000000ull, { 24, 25, 26, 0, 0 }, 0x0, 160, },
-  { 200, 2, 1, 0x000000ee50000000ull, 0x000001fff0000000ull, { 24, 25, 39, 0, 0 }, 0x0, 161, },
-  { 201, 2, 1, 0x000000f040000000ull, 0x000001fff0000000ull, { 24, 25, 26, 0, 0 }, 0x0, 162, },
-  { 201, 2, 1, 0x000000fc50000000ull, 0x000001fff0000000ull, { 24, 25, 39, 0, 0 }, 0x0, 163, },
-  { 202, 1, 1, 0x0000010680000000ull, 0x000001ffe0000000ull, { 24, 25, 41, 26, 0 }, 0x0, 164, },
-  { 203, 2, 1, 0x000000e220000000ull, 0x000001fff0000000ull, { 24, 26, 25, 0, 0 }, 0x0, 165, },
-  { 203, 2, 1, 0x000000e630000000ull, 0x000001fff0000000ull, { 24, 26, 43, 0, 0 }, 0x0, 166, },
-  { 204, 2, 1, 0x000000f020000000ull, 0x000001fff0000000ull, { 24, 26, 25, 0, 0 }, 0x0, 167, },
-  { 204, 2, 1, 0x000000f430000000ull, 0x000001fff0000000ull, { 24, 26, 43, 0, 0 }, 0x0, 168, },
-  { 205, 1, 1, 0x00000106c0000000ull, 0x000001ffe0000000ull, { 24, 25, 41, 26, 0 }, 0x0, 169, },
-  { 206, 1, 1, 0x0000010420000000ull, 0x000001fff8000000ull, { 24, 25, 26, 0, 0 }, 0x0, 170, },
-  { 207, 1, 1, 0x0000010620000000ull, 0x000001fff8000000ull, { 24, 25, 26, 0, 0 }, 0x0, 171, },
-  { 208, 1, 1, 0x0000011420000000ull, 0x000001fff8000000ull, { 24, 25, 26, 0, 0 }, 0x0, 172, },
-  { 209, 3, 0, 0x0000002048000000ull, 0x000001eff8000000ull, { 26, 25, 0, 0, 0 }, 0x8, 1175, },
-  { 209, 3, 0, 0x0000002050000000ull, 0x000001eff8000000ull, { 26, 25, 0, 0, 0 }, 0xc, 1050, },
-  { 209, 3, 0, 0x00000021a0000000ull, 0x000001eff8000000ull, { 26, 0, 0, 0, 0 }, 0x8, 922, },
-  { 210, 3, 0, 0x0000002060000000ull, 0x000001eff8000000ull, { 26, 25, 0, 0, 0 }, 0x8, 848, },
-  { 215, 4, 0, 0x0000000040000000ull, 0x000001e1f8000000ull, { 0, 0, 0, 0, 0 }, 0x22c, 173, },
-  { 216, 3, 0, 0x0000000038000000ull, 0x000001ee78000000ull, { 68, 0, 0, 0, 0 }, 0x8, 174, },
-  { 217, 3, 0, 0x0000000028000000ull, 0x000001ee78000000ull, { 68, 0, 0, 0, 0 }, 0x0, 175, },
-  { 226, 3, 1, 0x000000c708000000ull, 0x000001ffc8000000ull, { 18, 25, 0, 0, 0 }, 0x0, 2782, },
-  { 227, 2, 1, 0x000000a600000000ull, 0x000001ee04000000ull, { 24, 25, 45, 0, 0 }, 0x140, 176, },
-  { 227, 2, 1, 0x000000f240000000ull, 0x000001fff0000000ull, { 24, 25, 26, 0, 0 }, 0x0, 177, },
-  { 228, 1, 1, 0x0000010080000000ull, 0x000001efe0000000ull, { 24, 25, 40, 26, 0 }, 0x0, 178, },
-  { 229, 1, 1, 0x00000100c0000000ull, 0x000001efe0000000ull, { 24, 25, 40, 26, 0 }, 0x0, 179, },
-  { 230, 2, 1, 0x000000a400000000ull, 0x000001ee00002000ull, { 24, 26, 77, 0, 0 }, 0x140, 2878, },
-  { 230, 2, 1, 0x000000f220000000ull, 0x000001fff0000000ull, { 24, 26, 25, 0, 0 }, 0x0, 181, },
-  { 231, 2, 1, 0x000000ac00000000ull, 0x000001ee00000000ull, { 24, 25, 26, 44, 0 }, 0x0, 182, },
-  { 236, 3, 0, 0x0000000180000000ull, 0x000001eff8000000ull, { 0, 0, 0, 0, 0 }, 0x0, 850, },
-  { 237, 3, 0, 0x0000000030000000ull, 0x000001ee78000000ull, { 68, 0, 0, 0, 0 }, 0x8, 183, },
-  { 239, 3, 1, 0x0000008c00000000ull, 0x000001fff8000000ull, { 28, 25, 0, 0, 0 }, 0x0, 184, },
-  { 239, 3, 1, 0x000000ac00000000ull, 0x000001eff0000000ull, { 28, 25, 62, 0, 0 }, 0x400, 185, },
-  { 240, 3, 1, 0x0000008c08000000ull, 0x000001fff8000000ull, { 28, 25, 1, 0, 0 }, 0x0, 186, },
-  { 240, 3, 1, 0x0000008c08000000ull, 0x000001fff8000000ull, { 28, 25, 0, 0, 0 }, 0x40, 187, },
-  { 241, 3, 1, 0x0000008c40000000ull, 0x000001fff8000000ull, { 28, 25, 0, 0, 0 }, 0x0, 188, },
-  { 241, 3, 1, 0x000000ac40000000ull, 0x000001eff0000000ull, { 28, 25, 62, 0, 0 }, 0x400, 189, },
-  { 242, 3, 1, 0x0000008c80000000ull, 0x000001fff8000000ull, { 28, 25, 0, 0, 0 }, 0x0, 190, },
-  { 242, 3, 1, 0x000000ac80000000ull, 0x000001eff0000000ull, { 28, 25, 62, 0, 0 }, 0x400, 191, },
-  { 243, 3, 1, 0x0000008cc0000000ull, 0x000001fff8000000ull, { 28, 25, 0, 0, 0 }, 0x0, 192, },
-  { 243, 3, 1, 0x000000acc0000000ull, 0x000001eff0000000ull, { 28, 25, 62, 0, 0 }, 0x400, 193, },
-  { 244, 3, 1, 0x000000cec0000000ull, 0x000001fff8000000ull, { 28, 19, 0, 0, 0 }, 0x0, 2785, },
-  { 244, 3, 1, 0x000000eec0000000ull, 0x000001eff0000000ull, { 28, 19, 62, 0, 0 }, 0x400, 2786, },
-  { 245, 3, 1, 0x000000cc40000000ull, 0x000001fff8000000ull, { 28, 19, 0, 0, 0 }, 0x0, 194, },
-  { 245, 3, 1, 0x000000ec40000000ull, 0x000001eff0000000ull, { 28, 19, 62, 0, 0 }, 0x400, 195, },
-  { 246, 3, 1, 0x000000ccc0000000ull, 0x000001fff8000000ull, { 28, 19, 0, 0, 0 }, 0x0, 196, },
-  { 246, 3, 1, 0x000000ecc0000000ull, 0x000001eff0000000ull, { 28, 19, 62, 0, 0 }, 0x400, 197, },
-  { 247, 3, 1, 0x000000cc00000000ull, 0x000001fff8000000ull, { 28, 19, 0, 0, 0 }, 0x0, 198, },
-  { 247, 3, 1, 0x000000ec00000000ull, 0x000001eff0000000ull, { 28, 19, 62, 0, 0 }, 0x400, 199, },
-  { 248, 3, 1, 0x000000cc80000000ull, 0x000001fff8000000ull, { 28, 19, 0, 0, 0 }, 0x0, 200, },
-  { 248, 3, 1, 0x000000ec80000000ull, 0x000001eff0000000ull, { 28, 19, 62, 0, 0 }, 0x400, 201, },
-  { 249, 1, 1, 0x0000010028000000ull, 0x000001eff8000000ull, { 24, 25, 26, 0, 0 }, 0x0, 202, },
-  { 249, 1, 1, 0x0000010020000000ull, 0x000001eff8000000ull, { 24, 25, 26, 4, 0 }, 0x0, 203, },
-  { 249, 1, 1, 0x0000010128000000ull, 0x000001eff8000000ull, { 24, 56, 26, 0, 0 }, 0x0, 204, },
-  { 250, 3, 0, 0x0000000020000000ull, 0x000001ee78000000ull, { 68, 0, 0, 0, 0 }, 0x0, 205, },
-  { 251, 2, 1, 0x00000000a0000000ull, 0x000001eff8000000ull, { 24, 26, 0, 0, 0 }, 0x0, 206, },
-  { 252, 2, 1, 0x00000000a8000000ull, 0x000001eff8000000ull, { 24, 26, 0, 0, 0 }, 0x0, 207, },
-  { 253, 2, 1, 0x00000000b0000000ull, 0x000001eff8000000ull, { 24, 26, 0, 0, 0 }, 0x0, 208, },
-  { 254, 3, 0, 0x0000000198000000ull, 0x000001eff8000000ull, { 0, 0, 0, 0, 0 }, 0x0, 1150, },
-  { 255, 3, 1, 0x00000020f8000000ull, 0x000001eff8000000ull, { 24, 26, 0, 0, 0 }, 0x8, 209, },
-  { 256, 2, 2, 0x000000a000000000ull, 0x000001fe00003000ull, { 22, 23, 26, 77, 0 }, 0x0, 3040, },
-  { 256, 2, 1, 0x000000a000000000ull, 0x000001fe00003000ull, { 22, 26, 77, 0, 0 }, 0x40, 3041, },
-  { 256, 2, 2, 0x000000a000000000ull, 0x000001fe00003000ull, { 23, 22, 26, 77, 0 }, 0x40, 2003, },
-  { 256, 2, 1, 0x000000a000000000ull, 0x000001fe00003000ull, { 23, 26, 77, 0, 0 }, 0x40, 2004, },
-  { 257, 2, 2, 0x000000a000082000ull, 0x000001fe00083000ull, { 22, 23, 50, 0, 0 }, 0x0, 3044, },
-  { 257, 2, 1, 0x000000a000082000ull, 0x000001fe00083000ull, { 22, 50, 0, 0, 0 }, 0x40, 3045, },
-  { 257, 2, 2, 0x000000a000082000ull, 0x000001fe00083000ull, { 23, 22, 50, 0, 0 }, 0x40, 2007, },
-  { 257, 2, 1, 0x000000a000082000ull, 0x000001fe00083000ull, { 23, 50, 0, 0, 0 }, 0x40, 2008, },
-  { 258, 3, 1, 0x00000020d0000000ull, 0x000001eff8000000ull, { 24, 26, 0, 0, 0 }, 0x0, 210, },
-  { 259, 2, 2, 0x000000a000002000ull, 0x000001fe00003000ull, { 22, 23, 26, 0, 0 }, 0x0, 3048, },
-  { 259, 2, 1, 0x000000a000002000ull, 0x000001fe00003000ull, { 22, 26, 0, 0, 0 }, 0x40, 3049, },
-  { 259, 2, 2, 0x000000a000002000ull, 0x000001fe00003000ull, { 23, 22, 26, 0, 0 }, 0x40, 2011, },
-  { 259, 2, 1, 0x000000a000002000ull, 0x000001fe00003000ull, { 23, 26, 0, 0, 0 }, 0x40, 2012, },
-  { 260, 3, 1, 0x00000020f0000000ull, 0x000001eff8000000ull, { 24, 26, 0, 0, 0 }, 0x8, 211, },
-  { 262, 3, 1, 0x00000020d8000000ull, 0x000001eff8000000ull, { 24, 26, 0, 0, 0 }, 0x0, 212, },
-  { 266, 2, 1, 0x000000e840000000ull, 0x000001fff0000000ull, { 24, 25, 26, 0, 0 }, 0x0, 1131, },
-  { 267, 2, 1, 0x000000ea40000000ull, 0x000001fff0000000ull, { 24, 25, 26, 0, 0 }, 0x0, 1132, },
-  { 268, 2, 1, 0x000000f840000000ull, 0x000001fff0000000ull, { 24, 25, 26, 0, 0 }, 0x0, 1133, },
-  { 272, 4, 0, 0x00000000c0000000ull, 0x000001e1f8000000ull, { 0, 0, 0, 0, 0 }, 0x28, 223, },
-  { 277, 3, 1, 0x0000008208000000ull, 0x000001fff8000000ull, { 24, 28, 25, 0, 0 }, 0x0, 213, },
-  { 278, 3, 1, 0x0000008248000000ull, 0x000001fff8000000ull, { 24, 28, 25, 0, 0 }, 0x0, 214, },
-  { 279, 3, 1, 0x0000008288000000ull, 0x000001fff8000000ull, { 24, 28, 25, 0, 0 }, 0x0, 215, },
-  { 280, 3, 1, 0x00000082c8000000ull, 0x000001fff8000000ull, { 24, 28, 25, 0, 0 }, 0x0, 216, },
-  { 282, 5, 1, 0x000001d000000000ull, 0x000001fc00000000ull, { 18, 20, 21, 19, 0 }, 0x0, 1179, },
-  { 282, 5, 1, 0x000001d000000000ull, 0x000001fc00000000ull, { 18, 20, 21, 19, 0 }, 0x40, 1261, },
-  { 283, 5, 1, 0x000001d000000000ull, 0x000001fc000fe000ull, { 18, 20, 21, 0, 0 }, 0x40, 1180, },
-  { 284, 1, 1, 0x0000010078000000ull, 0x000001eff8000000ull, { 24, 25, 26, 0, 0 }, 0x0, 217, },
-  { 284, 1, 1, 0x0000010178000000ull, 0x000001eff8000000ull, { 24, 56, 26, 0, 0 }, 0x0, 218, },
-  { 287, 2, 1, 0x0000000080000000ull, 0x000001eff8000000ull, { 24, 26, 0, 0, 0 }, 0x0, 219, },
-  { 288, 2, 1, 0x0000000088000000ull, 0x000001eff8000000ull, { 24, 26, 0, 0, 0 }, 0x0, 220, },
-  { 289, 2, 1, 0x0000000090000000ull, 0x000001eff8000000ull, { 24, 26, 0, 0, 0 }, 0x0, 221, },
-};
-
-static const char dis_table[] = {
-0xa0, 0xc7, 0xc8, 0xa0, 0x2e, 0xd8, 0xa0, 0x2c, 0xc0, 0xa0, 0x1c, 0x00, 
-0x98, 0xb0, 0x02, 0x50, 0x90, 0x50, 0x90, 0x28, 0x24, 0x39, 0x28, 0x24, 
-0x39, 0x20, 0x90, 0x28, 0x24, 0x39, 0x18, 0x24, 0x39, 0x10, 0x91, 0x60, 
-0x90, 0x28, 0x24, 0x39, 0x00, 0x10, 0x10, 0x58, 0x41, 0x61, 0xc7, 0xc0, 
-0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 
-0x10, 0x10, 0x52, 0xc0, 0xc0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 
-0x10, 0x10, 0x10, 0x24, 0x24, 0x70, 0x90, 0x28, 0x24, 0x38, 0xf0, 0x24, 
-0x38, 0xe8, 0xa8, 0x0b, 0x48, 0x15, 0x20, 0x97, 0x20, 0x95, 0xc8, 0x9a, 
-0xb8, 0x05, 0x38, 0x91, 0x18, 0x90, 0xa0, 0x90, 0x60, 0x80, 0x90, 0x20, 
-0x34, 0xa6, 0xa4, 0x25, 0x00, 0x34, 0xa3, 0x80, 0xa4, 0x36, 0xa0, 0x36, 
-0xd9, 0x90, 0x50, 0x90, 0x28, 0x80, 0x36, 0xcf, 0x80, 0x34, 0x86, 0x81, 
-0x33, 0xe2, 0x90, 0xe0, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x24, 0x10, 0x34, 
-0x83, 0xa4, 0x1f, 0x08, 0x34, 0x80, 0x90, 0x38, 0xa4, 0x38, 0xa0, 0x37, 
-0x1a, 0xa4, 0x38, 0x48, 0x37, 0x0e, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x37, 
-0x20, 0x36, 0xef, 0xa4, 0x36, 0xf8, 0x36, 0xea, 0x80, 0xa4, 0x23, 0xf0, 
-0x34, 0x7f, 0x92, 0x18, 0x91, 0xc0, 0x80, 0x91, 0x80, 0x90, 0xf8, 0xdb, 
-0x84, 0x60, 0xf9, 0x40, 0xc0, 0xc0, 0x80, 0xa4, 0x42, 0x68, 0x8c, 0x43, 
-0xc8, 0x84, 0x38, 0x83, 0xc0, 0xc0, 0x80, 0xa4, 0x42, 0x58, 0x8c, 0x43, 
-0xa8, 0x84, 0x38, 0x81, 0xd3, 0x82, 0x40, 0x50, 0xc0, 0xc0, 0x81, 0x38, 
-0x35, 0x50, 0xc0, 0xc0, 0x81, 0x38, 0x33, 0xa4, 0x1f, 0x18, 0x33, 0xe4, 
-0x80, 0x90, 0x28, 0x80, 0x33, 0xe0, 0x80, 0x34, 0x88, 0x81, 0x90, 0x38, 
-0xa4, 0x24, 0x80, 0x34, 0x8b, 0xa4, 0x24, 0x48, 0x34, 0x85, 0xc0, 0x40, 
-0x10, 0x10, 0x90, 0x38, 0xa4, 0x1e, 0xf0, 0x33, 0xdf, 0xa4, 0x1e, 0xe0, 
-0x33, 0xdd, 0x18, 0x24, 0x24, 0xf8, 0x83, 0x90, 0xa8, 0xd3, 0x82, 0xc0, 
-0xc0, 0xc0, 0x80, 0xa4, 0x42, 0x38, 0x38, 0x6d, 0xc0, 0xc0, 0x80, 0xa4, 
-0x42, 0x28, 0x38, 0x69, 0xd3, 0x82, 0x40, 0x50, 0xc0, 0xc0, 0x81, 0x38, 
-0x2f, 0x50, 0xc0, 0xc0, 0x81, 0x38, 0x2d, 0x92, 0xb8, 0x99, 0x84, 0x24, 
-0x68, 0x90, 0x78, 0x90, 0x50, 0x10, 0x10, 0x80, 0xa4, 0x36, 0x98, 0x36, 
-0xd8, 0x82, 0x36, 0xce, 0x90, 0x80, 0x10, 0x10, 0x90, 0x38, 0xa4, 0x38, 
-0x98, 0x37, 0x19, 0xa4, 0x38, 0x40, 0x37, 0x0d, 0x80, 0x90, 0x38, 0xa4, 
-0x37, 0x18, 0x36, 0xee, 0xa4, 0x36, 0xf0, 0x36, 0xe9, 0x83, 0x90, 0xa8, 
-0xd3, 0x82, 0xc0, 0xc0, 0xc0, 0x80, 0xa4, 0x42, 0x08, 0x38, 0x61, 0xc0, 
-0xc0, 0x80, 0xa4, 0x41, 0xf8, 0x38, 0x5d, 0xd3, 0x82, 0x40, 0x50, 0xc0, 
-0xc0, 0x81, 0x38, 0x29, 0x50, 0xc0, 0xc0, 0x81, 0x38, 0x27, 0x18, 0x24, 
-0x24, 0x78, 0x83, 0x90, 0xa8, 0xd3, 0x82, 0xc0, 0xc0, 0xc0, 0x80, 0xa4, 
-0x41, 0xd8, 0x38, 0x55, 0xc0, 0xc0, 0x80, 0xa4, 0x41, 0xc8, 0x38, 0x51, 
-0xd3, 0x82, 0x40, 0x50, 0xc0, 0xc0, 0x81, 0x38, 0x23, 0x50, 0xc0, 0xc0, 
-0x81, 0x38, 0x21, 0x94, 0x50, 0x92, 0xf8, 0x99, 0x84, 0x1f, 0x48, 0x90, 
-0x78, 0x90, 0x50, 0x10, 0x10, 0x80, 0xa4, 0x36, 0x90, 0x36, 0xd7, 0x82, 
-0x36, 0xcd, 0x90, 0x80, 0x10, 0x10, 0x90, 0x38, 0xa4, 0x38, 0x90, 0x37, 
-0x18, 0xa4, 0x38, 0x38, 0x37, 0x0c, 0x80, 0x90, 0x38, 0xa4, 0x37, 0x10, 
-0x36, 0xed, 0xa4, 0x36, 0xe8, 0x36, 0xe8, 0x83, 0x90, 0xe8, 0xd3, 0x83, 
-0xc0, 0xc0, 0xc0, 0x80, 0xa4, 0x42, 0x78, 0x8c, 0x43, 0xe8, 0x84, 0x38, 
-0x85, 0xc0, 0xc0, 0x80, 0xa4, 0x42, 0x60, 0x8c, 0x43, 0xb8, 0x84, 0x38, 
-0x82, 0xd3, 0x82, 0x40, 0x50, 0xc0, 0xc0, 0x81, 0x38, 0x37, 0x50, 0xc0, 
-0xc0, 0x81, 0x38, 0x34, 0x18, 0x24, 0x1f, 0x40, 0x83, 0x90, 0xa8, 0xd3, 
-0x82, 0xc0, 0xc0, 0xc0, 0x80, 0xa4, 0x42, 0x48, 0x38, 0x71, 0xc0, 0xc0, 
-0x80, 0xa4, 0x42, 0x30, 0x38, 0x6b, 0xd3, 0x82, 0x40, 0x50, 0xc0, 0xc0, 
-0x81, 0x38, 0x31, 0x50, 0xc0, 0xc0, 0x81, 0x38, 0x2e, 0x92, 0xb8, 0x99, 
-0x84, 0x1f, 0x38, 0x90, 0x78, 0x90, 0x50, 0x10, 0x10, 0x80, 0xa4, 0x36, 
-0x88, 0x36, 0xd6, 0x82, 0x36, 0xcc, 0x90, 0x80, 0x10, 0x10, 0x90, 0x38, 
-0xa4, 0x38, 0x88, 0x37, 0x17, 0xa4, 0x38, 0x30, 0x37, 0x0b, 0x80, 0x90, 
-0x38, 0xa4, 0x37, 0x08, 0x36, 0xec, 0xa4, 0x36, 0xe0, 0x36, 0xe7, 0x83, 
-0x90, 0xa8, 0xd3, 0x82, 0xc0, 0xc0, 0xc0, 0x80, 0xa4, 0x42, 0x18, 0x38, 
-0x65, 0xc0, 0xc0, 0x80, 0xa4, 0x42, 0x00, 0x38, 0x5f, 0xd3, 0x82, 0x40, 
-0x50, 0xc0, 0xc0, 0x81, 0x38, 0x2b, 0x50, 0xc0, 0xc0, 0x81, 0x38, 0x28, 
-0x18, 0x20, 0x01, 0x48, 0x83, 0x90, 0xa8, 0xd3, 0x82, 0xc0, 0xc0, 0xc0, 
-0x80, 0xa4, 0x41, 0xe8, 0x38, 0x59, 0xc0, 0xc0, 0x80, 0xa4, 0x41, 0xd0, 
-0x38, 0x53, 0xd3, 0x82, 0x40, 0x50, 0xc0, 0xc0, 0x81, 0x38, 0x25, 0x50, 
-0xc0, 0xc0, 0x81, 0x38, 0x22, 0xda, 0x06, 0xe0, 0xf9, 0x80, 0x90, 0x60, 
-0x90, 0x38, 0xa4, 0x24, 0xe8, 0x34, 0x9b, 0x80, 0x34, 0x98, 0x90, 0x38, 
-0xa4, 0x24, 0x90, 0x34, 0x96, 0x80, 0x34, 0x93, 0x90, 0x60, 0x90, 0x38, 
-0xa4, 0x24, 0xd0, 0x34, 0x9c, 0x80, 0x34, 0x99, 0x90, 0x38, 0xa4, 0x24, 
-0xa8, 0x34, 0x97, 0x80, 0x34, 0x94, 0xc8, 0x40, 0x19, 0x00, 0x91, 0x58, 
-0x90, 0x60, 0x82, 0x90, 0x20, 0x36, 0xcb, 0xa4, 0x36, 0x48, 0x36, 0xca, 
-0x90, 0xc0, 0x80, 0x90, 0x90, 0x90, 0x48, 0xc9, 0xe1, 0xc1, 0x00, 0x85, 
-0x37, 0x03, 0xc9, 0xe1, 0xc0, 0x40, 0x85, 0x37, 0x00, 0x80, 0x36, 0xff, 
-0x10, 0x10, 0x81, 0x36, 0xdb, 0x90, 0xa8, 0x10, 0x10, 0x90, 0x28, 0x81, 
-0x36, 0xf9, 0x90, 0x38, 0xa4, 0x37, 0xa0, 0x36, 0xf5, 0xa4, 0x37, 0x90, 
-0x36, 0xf3, 0x90, 0x70, 0x10, 0x10, 0x90, 0x38, 0xa4, 0x37, 0xb8, 0x36, 
-0xf8, 0x80, 0x36, 0xf6, 0x90, 0x60, 0x90, 0x28, 0x24, 0x37, 0xf0, 0xa4, 
-0x37, 0xe0, 0x36, 0xfd, 0x80, 0xa4, 0x37, 0xd0, 0x36, 0xfb, 0x80, 0x90, 
-0xf8, 0x90, 0x90, 0x90, 0x50, 0x90, 0x28, 0x80, 0x38, 0x17, 0x80, 0x38, 
-0x20, 0x80, 0xa4, 0x40, 0xf0, 0x38, 0x1f, 0x90, 0x28, 0x81, 0x38, 0x1d, 
-0x80, 0xa4, 0x40, 0xd8, 0x38, 0x1c, 0x90, 0x28, 0x82, 0x38, 0x1a, 0x81, 
-0xa4, 0x40, 0xc0, 0x38, 0x19, 0x98, 0xe8, 0x01, 0xb0, 0x90, 0x88, 0x90, 
-0x60, 0xa4, 0x36, 0x38, 0x10, 0x10, 0x10, 0x10, 0x83, 0x33, 0xb7, 0x24, 
-0x36, 0x30, 0x90, 0x28, 0x24, 0x36, 0x28, 0x24, 0x36, 0x20, 0x90, 0x88, 
-0x90, 0x60, 0xa4, 0x36, 0x10, 0x10, 0x10, 0x10, 0x10, 0x83, 0x33, 0xb6, 
-0x24, 0x36, 0x08, 0x90, 0x28, 0x24, 0x36, 0x00, 0x24, 0x35, 0xf8, 0xa8, 
-0x09, 0x00, 0x0e, 0x20, 0x96, 0x48, 0x95, 0xe8, 0x93, 0x38, 0x91, 0xa0, 
-0x90, 0xd0, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x1e, 0x60, 0x33, 0xcd, 0xa4, 
-0x1e, 0x50, 0x33, 0xcb, 0x90, 0x38, 0xa4, 0x1e, 0x40, 0x33, 0xc9, 0x80, 
-0x33, 0xc7, 0x90, 0x60, 0x90, 0x28, 0x24, 0x1e, 0x00, 0xa4, 0x1d, 0xf0, 
-0x33, 0xbf, 0x90, 0x38, 0xa4, 0x1d, 0xe0, 0x33, 0xbd, 0xa4, 0x1e, 0x28, 
-0x33, 0xc6, 0x90, 0xe0, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x1e, 0x18, 0x33, 
-0xc4, 0xa4, 0x1e, 0x08, 0x33, 0xc2, 0x90, 0x38, 0xa4, 0x35, 0xb0, 0x36, 
-0xbc, 0xa4, 0x35, 0x50, 0x36, 0xb0, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x32, 
-0x90, 0x36, 0x5e, 0xa4, 0x32, 0x60, 0x36, 0x58, 0x10, 0x10, 0xa4, 0x1d, 
-0xd0, 0x33, 0xbb, 0x99, 0x60, 0x02, 0x70, 0x90, 0x90, 0x90, 0x50, 0x90, 
-0x28, 0x24, 0x1e, 0x90, 0x80, 0x33, 0xda, 0x80, 0xa4, 0x1e, 0x98, 0x33, 
-0xd8, 0x90, 0x50, 0x90, 0x28, 0x24, 0x1e, 0xa0, 0x80, 0x33, 0xdb, 0x90, 
-0x38, 0xa4, 0x1e, 0xa8, 0x33, 0xd9, 0xa4, 0x1e, 0x70, 0x33, 0xcf, 0x90, 
-0xe0, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x34, 0xe8, 0x36, 0xa5, 0xa4, 0x34, 
-0x48, 0x36, 0x92, 0x90, 0x38, 0xa4, 0x33, 0xe0, 0x36, 0x83, 0xa4, 0x33, 
-0x50, 0x36, 0x72, 0x81, 0xa4, 0x1e, 0x80, 0x33, 0xd1, 0xe4, 0xa2, 0x04, 
-0x40, 0x38, 0x13, 0x18, 0x24, 0x1d, 0xc8, 0xe4, 0xe2, 0x02, 0xc0, 0x38, 
-0x0d, 0x92, 0x40, 0x91, 0x08, 0x10, 0x10, 0x90, 0x80, 0x10, 0x10, 0x90, 
-0x38, 0xa4, 0x35, 0xa8, 0x36, 0xbb, 0xa4, 0x35, 0x48, 0x36, 0xaf, 0x80, 
-0x90, 0x38, 0xa4, 0x32, 0x88, 0x36, 0x5d, 0xa4, 0x32, 0x58, 0x36, 0x57, 
-0x18, 0x20, 0x00, 0xf8, 0x80, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x34, 0xd8, 
-0x36, 0xa4, 0xa4, 0x34, 0x40, 0x36, 0x90, 0x90, 0x38, 0xa4, 0x33, 0xd0, 
-0x36, 0x82, 0xa4, 0x33, 0x48, 0x36, 0x70, 0xe4, 0xa2, 0x01, 0x40, 0x38, 
-0x07, 0x18, 0x24, 0x1d, 0xc0, 0xe4, 0xe1, 0xff, 0xc0, 0x38, 0x01, 0x92, 
-0x90, 0x92, 0x40, 0x91, 0x08, 0x10, 0x10, 0x90, 0x80, 0x10, 0x10, 0x90, 
-0x38, 0xa4, 0x35, 0xa0, 0x36, 0xba, 0xa4, 0x35, 0x40, 0x36, 0xae, 0x80, 
-0x90, 0x38, 0xa4, 0x32, 0x80, 0x36, 0x5c, 0xa4, 0x32, 0x50, 0x36, 0x56, 
-0x18, 0x20, 0x00, 0xf8, 0x80, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x34, 0xc8, 
-0x36, 0xa3, 0xa4, 0x34, 0x38, 0x36, 0x8e, 0x90, 0x38, 0xa4, 0x33, 0xc0, 
-0x36, 0x81, 0xa4, 0x33, 0x40, 0x36, 0x6e, 0xe4, 0xa2, 0x04, 0x80, 0x38, 
-0x15, 0x10, 0x10, 0xe4, 0xe2, 0x03, 0x00, 0x38, 0x0f, 0x92, 0x50, 0x99, 
-0x1c, 0x1e, 0xb0, 0x10, 0x10, 0x90, 0x80, 0x10, 0x10, 0x90, 0x38, 0xa4, 
-0x35, 0x98, 0x36, 0xb9, 0xa4, 0x35, 0x38, 0x36, 0xad, 0x80, 0x90, 0x38, 
-0xa4, 0x32, 0x78, 0x36, 0x5b, 0xa4, 0x32, 0x48, 0x36, 0x55, 0x18, 0x20, 
-0x00, 0xf8, 0x80, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x34, 0xb8, 0x36, 0xa2, 
-0xa4, 0x34, 0x30, 0x36, 0x8c, 0x90, 0x38, 0xa4, 0x33, 0xb0, 0x36, 0x80, 
-0xa4, 0x33, 0x38, 0x36, 0x6c, 0xe4, 0xa2, 0x01, 0x80, 0x38, 0x09, 0x10, 
-0x10, 0xe4, 0xe2, 0x00, 0x00, 0x38, 0x03, 0xc0, 0x40, 0x80, 0x10, 0x10, 
-0x81, 0x90, 0x90, 0x90, 0x48, 0xc9, 0xe1, 0x98, 0x80, 0x85, 0x36, 0x66, 
-0xc9, 0xe1, 0x99, 0x00, 0x85, 0x36, 0x63, 0x80, 0x36, 0x61, 0x80, 0xd8, 
-0x47, 0x80, 0x0d, 0xc0, 0xc0, 0x80, 0x10, 0x10, 0x82, 0x90, 0x58, 0xd5, 
-0x81, 0x80, 0x80, 0x37, 0xfd, 0x80, 0x37, 0xfb, 0xd5, 0x81, 0x80, 0x80, 
-0x37, 0xf9, 0x80, 0x37, 0xf7, 0xc0, 0x80, 0x10, 0x10, 0x82, 0x90, 0x58, 
-0xd5, 0x81, 0x80, 0x80, 0x37, 0xfe, 0x80, 0x37, 0xfc, 0xd5, 0x81, 0x80, 
-0x80, 0x37, 0xfa, 0x80, 0x37, 0xf8, 0xc0, 0x80, 0x83, 0xa4, 0x3f, 0xa8, 
-0x37, 0xf6, 0xa0, 0x59, 0x60, 0xa0, 0x41, 0xe0, 0xa8, 0x1e, 0xb0, 0x34, 
-0x88, 0xa0, 0x12, 0x38, 0xa0, 0x0b, 0x48, 0x96, 0x00, 0x9a, 0xf0, 0x05, 
-0xc0, 0x91, 0x70, 0x90, 0xb8, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x15, 0x58, 
-0x33, 0xb5, 0xa4, 0x15, 0x78, 0x33, 0xb4, 0x10, 0x10, 0xa4, 0x15, 0x68, 
-0x33, 0xb3, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x14, 0xf8, 0x33, 0x9a, 0xa4, 
-0x15, 0x18, 0x33, 0x99, 0x10, 0x10, 0xa4, 0x15, 0x08, 0x33, 0x98, 0x90, 
-0xb8, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x14, 0x98, 0x33, 0x7f, 0xa4, 0x14, 
-0xb8, 0x33, 0x7e, 0x10, 0x10, 0xa4, 0x14, 0xa8, 0x33, 0x7d, 0x90, 0x70, 
-0x90, 0x38, 0xa4, 0x14, 0x38, 0x33, 0x63, 0xa4, 0x14, 0x58, 0x33, 0x62, 
-0x10, 0x10, 0xa4, 0x14, 0x48, 0x33, 0x61, 0x91, 0x70, 0x90, 0xb8, 0x90, 
-0x70, 0x90, 0x38, 0xa4, 0x15, 0x28, 0x33, 0xb0, 0xa4, 0x15, 0x48, 0x33, 
-0xb2, 0x10, 0x10, 0xa4, 0x15, 0x38, 0x33, 0xb1, 0x90, 0x70, 0x90, 0x38, 
-0xa4, 0x14, 0xc8, 0x33, 0x95, 0xa4, 0x14, 0xe8, 0x33, 0x97, 0x10, 0x10, 
-0xa4, 0x14, 0xd8, 0x33, 0x96, 0x90, 0xb8, 0x90, 0x70, 0x90, 0x38, 0xa4, 
-0x14, 0x68, 0x33, 0x7a, 0xa4, 0x14, 0x88, 0x33, 0x7c, 0x10, 0x10, 0xa4, 
-0x14, 0x78, 0x33, 0x7b, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x14, 0x08, 0x33, 
-0x5e, 0xa4, 0x14, 0x28, 0x33, 0x60, 0x10, 0x10, 0xa4, 0x14, 0x18, 0x33, 
-0x5f, 0xe4, 0xe1, 0x8b, 0x40, 0x36, 0x41, 0x9a, 0xf0, 0x05, 0x00, 0x91, 
-0x70, 0x90, 0xb8, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x13, 0xa0, 0x33, 0xad, 
-0xa4, 0x13, 0x98, 0x33, 0xaf, 0x10, 0x10, 0xa4, 0x13, 0x90, 0x33, 0xae, 
-0x90, 0x70, 0x90, 0x38, 0xa4, 0x13, 0x88, 0x33, 0x92, 0xa4, 0x13, 0x80, 
-0x33, 0x94, 0x10, 0x10, 0xa4, 0x13, 0x78, 0x33, 0x93, 0x90, 0xb8, 0x90, 
-0x70, 0x90, 0x38, 0xa4, 0x13, 0x70, 0x33, 0x77, 0xa4, 0x13, 0x68, 0x33, 
-0x79, 0x10, 0x10, 0xa4, 0x13, 0x60, 0x33, 0x78, 0x90, 0x70, 0x90, 0x38, 
-0xa4, 0x13, 0x58, 0x33, 0x5b, 0xa4, 0x13, 0x50, 0x33, 0x5d, 0x10, 0x10, 
-0xa4, 0x13, 0x48, 0x33, 0x5c, 0x91, 0x10, 0x90, 0x88, 0x90, 0x50, 0x90, 
-0x28, 0x80, 0x33, 0xaa, 0x80, 0x33, 0xac, 0x10, 0x10, 0x80, 0x33, 0xab, 
-0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x8f, 0x80, 0x33, 0x91, 0x10, 0x10, 
-0x80, 0x33, 0x90, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x74, 
-0x80, 0x33, 0x76, 0x10, 0x10, 0x80, 0x33, 0x75, 0x90, 0x50, 0x90, 0x28, 
-0x80, 0x33, 0x58, 0x80, 0x33, 0x5a, 0x10, 0x10, 0x80, 0x33, 0x59, 0xe4, 
-0xe1, 0x66, 0x40, 0x35, 0xc1, 0x95, 0x40, 0x9a, 0x90, 0x05, 0x00, 0x91, 
-0x10, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0xa7, 0x80, 0x33, 
-0xa9, 0x10, 0x10, 0x80, 0x33, 0xa8, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 
-0x8c, 0x80, 0x33, 0x8e, 0x10, 0x10, 0x80, 0x33, 0x8d, 0x90, 0xb8, 0x90, 
-0x70, 0x90, 0x38, 0xa4, 0x13, 0x30, 0x33, 0x71, 0xa4, 0x13, 0x40, 0x33, 
-0x73, 0x10, 0x10, 0xa4, 0x13, 0x38, 0x33, 0x72, 0x90, 0x70, 0x90, 0x38, 
-0xa4, 0x13, 0x00, 0x33, 0x55, 0xa4, 0x13, 0x10, 0x33, 0x57, 0x10, 0x10, 
-0xa4, 0x13, 0x08, 0x33, 0x56, 0x91, 0x10, 0x90, 0x88, 0x90, 0x50, 0x90, 
-0x28, 0x80, 0x33, 0xa4, 0x80, 0x33, 0xa6, 0x10, 0x10, 0x80, 0x33, 0xa5, 
-0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x89, 0x80, 0x33, 0x8b, 0x10, 0x10, 
-0x80, 0x33, 0x8a, 0x90, 0xb8, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x13, 0x18, 
-0x33, 0x6e, 0xa4, 0x13, 0x28, 0x33, 0x70, 0x10, 0x10, 0xa4, 0x13, 0x20, 
-0x33, 0x6f, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x12, 0xe8, 0x33, 0x52, 0xa4, 
-0x12, 0xf8, 0x33, 0x54, 0x10, 0x10, 0xa4, 0x12, 0xf0, 0x33, 0x53, 0xe4, 
-0xe1, 0x8a, 0x40, 0x36, 0x3d, 0x98, 0xb8, 0x01, 0x68, 0x10, 0x10, 0x10, 
-0x10, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x4f, 0x80, 0x33, 0x51, 0x10, 
-0x10, 0x80, 0x33, 0x50, 0x90, 0x60, 0x90, 0x30, 0x60, 0xa0, 0x97, 0x00, 
-0x60, 0xa0, 0x96, 0xc0, 0x90, 0x30, 0x60, 0xa0, 0x96, 0x80, 0x60, 0xa0, 
-0x96, 0x40, 0xe4, 0xe1, 0x64, 0x40, 0x35, 0xb9, 0xa0, 0x08, 0x08, 0x94, 
-0xe0, 0x9a, 0x60, 0x04, 0xa0, 0x91, 0x40, 0x90, 0xb8, 0x90, 0x70, 0x90, 
-0x38, 0xa4, 0x13, 0xd8, 0x33, 0x9e, 0xa4, 0x13, 0xf8, 0x33, 0xa3, 0x10, 
-0x10, 0xa4, 0x13, 0xe8, 0x33, 0xa2, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 
-0x83, 0x80, 0x33, 0x88, 0x10, 0x10, 0x80, 0x33, 0x87, 0x90, 0x88, 0x90, 
-0x50, 0x90, 0x28, 0x80, 0x33, 0x68, 0x80, 0x33, 0x6d, 0x10, 0x10, 0x80, 
-0x33, 0x6c, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x49, 0x80, 0x33, 0x4e, 
-0x10, 0x10, 0x80, 0x33, 0x4d, 0x91, 0x40, 0x90, 0xb8, 0x90, 0x70, 0x90, 
-0x38, 0xa4, 0x13, 0xa8, 0x33, 0x9b, 0xa4, 0x13, 0xc8, 0x33, 0x9d, 0x10, 
-0x10, 0xa4, 0x13, 0xb8, 0x33, 0x9c, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 
-0x80, 0x80, 0x33, 0x82, 0x10, 0x10, 0x80, 0x33, 0x81, 0x90, 0x88, 0x90, 
-0x50, 0x90, 0x28, 0x80, 0x33, 0x65, 0x80, 0x33, 0x67, 0x10, 0x10, 0x80, 
-0x33, 0x66, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x46, 0x80, 0x33, 0x48, 
-0x10, 0x10, 0x80, 0x33, 0x47, 0xe4, 0xe1, 0x89, 0x40, 0x36, 0x39, 0x9a, 
-0x60, 0x02, 0xe0, 0x91, 0x40, 0x90, 0xb8, 0x90, 0x70, 0x90, 0x38, 0xa4, 
-0x1a, 0x20, 0x33, 0x9f, 0xa4, 0x1a, 0x10, 0x33, 0xa1, 0x10, 0x10, 0xa4, 
-0x1a, 0x00, 0x33, 0xa0, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x84, 0x80, 
-0x33, 0x86, 0x10, 0x10, 0x80, 0x33, 0x85, 0x90, 0x88, 0x90, 0x50, 0x90, 
-0x28, 0x80, 0x33, 0x69, 0x80, 0x33, 0x6b, 0x10, 0x10, 0x80, 0x33, 0x6a, 
-0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x4a, 0x80, 0x33, 0x4c, 0x10, 0x10, 
-0x80, 0x33, 0x4b, 0x81, 0x90, 0x50, 0x90, 0x28, 0x24, 0x19, 0xd0, 0x24, 
-0x19, 0xf0, 0x10, 0x10, 0x24, 0x19, 0xe0, 0xe4, 0xe1, 0x62, 0x40, 0x35, 
-0xb1, 0x93, 0x90, 0x99, 0xb8, 0x03, 0x50, 0x90, 0xe8, 0x90, 0x88, 0x90, 
-0x40, 0x80, 0xa4, 0x15, 0xb8, 0x32, 0xca, 0x10, 0x10, 0xa4, 0x15, 0xa8, 
-0x32, 0xc9, 0x90, 0x28, 0x81, 0x32, 0xc6, 0x10, 0x10, 0x80, 0x32, 0xc5, 
-0x90, 0x60, 0x90, 0x28, 0x81, 0x32, 0xc2, 0x10, 0x10, 0x80, 0x32, 0xc1, 
-0x90, 0x28, 0x81, 0x32, 0xbe, 0x10, 0x10, 0x80, 0x32, 0xbd, 0x90, 0xe8, 
-0x90, 0x88, 0x90, 0x40, 0x80, 0xa4, 0x15, 0x88, 0x32, 0xc7, 0x10, 0x10, 
-0xa4, 0x15, 0x98, 0x32, 0xc8, 0x90, 0x28, 0x81, 0x32, 0xc3, 0x10, 0x10, 
-0x80, 0x32, 0xc4, 0x90, 0x60, 0x90, 0x28, 0x81, 0x32, 0xbf, 0x10, 0x10, 
-0x80, 0x32, 0xc0, 0x90, 0x28, 0x81, 0x32, 0xbb, 0x10, 0x10, 0x80, 0x32, 
-0xbc, 0xe4, 0xe1, 0x88, 0x40, 0x36, 0x35, 0x88, 0x00, 0x88, 0x10, 0x10, 
-0x10, 0x10, 0x90, 0x28, 0x81, 0x32, 0xb9, 0x10, 0x10, 0x80, 0x32, 0xba, 
-0xe4, 0xe1, 0x60, 0x40, 0x35, 0xa9, 0xa0, 0x0e, 0x80, 0xa0, 0x09, 0x08, 
-0x94, 0x80, 0x9a, 0x30, 0x04, 0x40, 0x91, 0x10, 0x90, 0x88, 0x90, 0x50, 
-0x90, 0x28, 0x80, 0x33, 0x39, 0x80, 0x33, 0x38, 0x10, 0x10, 0x80, 0x33, 
-0x37, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x1e, 0x80, 0x33, 0x1d, 0x10, 
-0x10, 0x80, 0x33, 0x1c, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 
-0x03, 0x80, 0x33, 0x02, 0x10, 0x10, 0x80, 0x33, 0x01, 0x90, 0x50, 0x90, 
-0x28, 0x80, 0x32, 0xe8, 0x80, 0x32, 0xe7, 0x10, 0x10, 0x80, 0x32, 0xe6, 
-0x91, 0x10, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x34, 0x80, 
-0x33, 0x36, 0x10, 0x10, 0x80, 0x33, 0x35, 0x90, 0x50, 0x90, 0x28, 0x80, 
-0x33, 0x19, 0x80, 0x33, 0x1b, 0x10, 0x10, 0x80, 0x33, 0x1a, 0x90, 0x88, 
-0x90, 0x50, 0x90, 0x28, 0x80, 0x32, 0xfe, 0x80, 0x33, 0x00, 0x10, 0x10, 
-0x80, 0x32, 0xff, 0x90, 0x50, 0x90, 0x28, 0x80, 0x32, 0xe3, 0x80, 0x32, 
-0xe5, 0x10, 0x10, 0x80, 0x32, 0xe4, 0xe4, 0xe1, 0x7a, 0x40, 0x36, 0x11, 
-0x9a, 0x30, 0x04, 0x40, 0x91, 0x10, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 
-0x80, 0x33, 0x31, 0x80, 0x33, 0x33, 0x10, 0x10, 0x80, 0x33, 0x32, 0x90, 
-0x50, 0x90, 0x28, 0x80, 0x33, 0x16, 0x80, 0x33, 0x18, 0x10, 0x10, 0x80, 
-0x33, 0x17, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x32, 0xfb, 0x80, 
-0x32, 0xfd, 0x10, 0x10, 0x80, 0x32, 0xfc, 0x90, 0x50, 0x90, 0x28, 0x80, 
-0x32, 0xe0, 0x80, 0x32, 0xe2, 0x10, 0x10, 0x80, 0x32, 0xe1, 0x91, 0x10, 
-0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x2e, 0x80, 0x33, 0x30, 
-0x10, 0x10, 0x80, 0x33, 0x2f, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x13, 
-0x80, 0x33, 0x15, 0x10, 0x10, 0x80, 0x33, 0x14, 0x90, 0x88, 0x90, 0x50, 
-0x90, 0x28, 0x80, 0x32, 0xf8, 0x80, 0x32, 0xfa, 0x10, 0x10, 0x80, 0x32, 
-0xf9, 0x90, 0x50, 0x90, 0x28, 0x80, 0x32, 0xdd, 0x80, 0x32, 0xdf, 0x10, 
-0x10, 0x80, 0x32, 0xde, 0xe4, 0xe1, 0x59, 0x40, 0x35, 0x79, 0x94, 0x80, 
-0x9a, 0x30, 0x04, 0x40, 0x91, 0x10, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 
-0x80, 0x33, 0x2b, 0x80, 0x33, 0x2d, 0x10, 0x10, 0x80, 0x33, 0x2c, 0x90, 
-0x50, 0x90, 0x28, 0x80, 0x33, 0x10, 0x80, 0x33, 0x12, 0x10, 0x10, 0x80, 
-0x33, 0x11, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x32, 0xf5, 0x80, 
-0x32, 0xf7, 0x10, 0x10, 0x80, 0x32, 0xf6, 0x90, 0x50, 0x90, 0x28, 0x80, 
-0x32, 0xda, 0x80, 0x32, 0xdc, 0x10, 0x10, 0x80, 0x32, 0xdb, 0x91, 0x10, 
-0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x28, 0x80, 0x33, 0x2a, 
-0x10, 0x10, 0x80, 0x33, 0x29, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x0d, 
-0x80, 0x33, 0x0f, 0x10, 0x10, 0x80, 0x33, 0x0e, 0x90, 0x88, 0x90, 0x50, 
-0x90, 0x28, 0x80, 0x32, 0xf2, 0x80, 0x32, 0xf4, 0x10, 0x10, 0x80, 0x32, 
-0xf3, 0x90, 0x50, 0x90, 0x28, 0x80, 0x32, 0xd7, 0x80, 0x32, 0xd9, 0x10, 
-0x10, 0x80, 0x32, 0xd8, 0xe4, 0xe1, 0x78, 0x40, 0x36, 0x09, 0x88, 0x00, 
-0xb0, 0x10, 0x10, 0x10, 0x10, 0x90, 0x50, 0x90, 0x28, 0x80, 0x32, 0xd4, 
-0x80, 0x32, 0xd6, 0x10, 0x10, 0x80, 0x32, 0xd5, 0xe4, 0xe1, 0x58, 0x40, 
-0x35, 0x75, 0x96, 0xe8, 0x94, 0x80, 0x9a, 0x30, 0x04, 0x40, 0x91, 0x10, 
-0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x22, 0x80, 0x33, 0x27, 
-0x10, 0x10, 0x80, 0x33, 0x26, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x07, 
-0x80, 0x33, 0x0c, 0x10, 0x10, 0x80, 0x33, 0x0b, 0x90, 0x88, 0x90, 0x50, 
-0x90, 0x28, 0x80, 0x32, 0xec, 0x80, 0x32, 0xf1, 0x10, 0x10, 0x80, 0x32, 
-0xf0, 0x90, 0x50, 0x90, 0x28, 0x80, 0x32, 0xce, 0x80, 0x32, 0xd3, 0x10, 
-0x10, 0x80, 0x32, 0xd2, 0x91, 0x10, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 
-0x80, 0x33, 0x1f, 0x80, 0x33, 0x21, 0x10, 0x10, 0x80, 0x33, 0x20, 0x90, 
-0x50, 0x90, 0x28, 0x80, 0x33, 0x04, 0x80, 0x33, 0x06, 0x10, 0x10, 0x80, 
-0x33, 0x05, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x32, 0xe9, 0x80, 
-0x32, 0xeb, 0x10, 0x10, 0x80, 0x32, 0xea, 0x90, 0x50, 0x90, 0x28, 0x80, 
-0x32, 0xcb, 0x80, 0x32, 0xcd, 0x10, 0x10, 0x80, 0x32, 0xcc, 0xe4, 0xe1, 
-0x76, 0x40, 0x36, 0x01, 0x88, 0x02, 0x28, 0x91, 0x10, 0x90, 0x88, 0x90, 
-0x50, 0x90, 0x28, 0x80, 0x33, 0x23, 0x80, 0x33, 0x25, 0x10, 0x10, 0x80, 
-0x33, 0x24, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0x08, 0x80, 0x33, 0x0a, 
-0x10, 0x10, 0x80, 0x33, 0x09, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 
-0x32, 0xed, 0x80, 0x32, 0xef, 0x10, 0x10, 0x80, 0x32, 0xee, 0x90, 0x50, 
-0x90, 0x28, 0x80, 0x32, 0xcf, 0x80, 0x32, 0xd1, 0x10, 0x10, 0x80, 0x32, 
-0xd0, 0xe4, 0xe1, 0x57, 0x40, 0x35, 0x71, 0x90, 0x40, 0xe5, 0x21, 0x74, 
-0x40, 0x35, 0xf9, 0xe5, 0x21, 0x56, 0x40, 0x35, 0x6d, 0x9e, 0xb4, 0x23, 
-0xe8, 0x93, 0x70, 0x91, 0xd8, 0xd5, 0x07, 0x80, 0xd0, 0xc4, 0x40, 0x90, 
-0x48, 0x80, 0x8c, 0x3f, 0x38, 0x84, 0x37, 0xf1, 0xa4, 0x3d, 0x18, 0x37, 
-0xbb, 0x90, 0x28, 0x24, 0x3c, 0x58, 0xa4, 0x3a, 0xd8, 0x37, 0x73, 0xd0, 
-0xc4, 0x40, 0x90, 0x48, 0x80, 0x8c, 0x3f, 0x18, 0x84, 0x37, 0xef, 0xa4, 
-0x3d, 0x08, 0x37, 0xb9, 0x90, 0x28, 0x24, 0x3c, 0x48, 0xa4, 0x3a, 0xc8, 
-0x37, 0x71, 0xd5, 0x06, 0x80, 0xd0, 0xc3, 0x40, 0x90, 0x28, 0x80, 0x37, 
-0xdb, 0xa4, 0x3c, 0xe8, 0x37, 0xb5, 0x90, 0x28, 0x24, 0x3c, 0x28, 0xa4, 
-0x3a, 0xa8, 0x37, 0x6d, 0xd0, 0xc3, 0x40, 0x90, 0x28, 0x80, 0x37, 0xd7, 
-0xa4, 0x3c, 0xd8, 0x37, 0xb3, 0x90, 0x28, 0x24, 0x3c, 0x18, 0xa4, 0x3a, 
-0x98, 0x37, 0x6b, 0x91, 0x98, 0xd5, 0x06, 0x80, 0xd0, 0xc3, 0x40, 0x90, 
-0x28, 0x80, 0x37, 0xcf, 0xa4, 0x3c, 0xb8, 0x37, 0xaf, 0x90, 0x28, 0x24, 
-0x3b, 0xf8, 0xa4, 0x3a, 0x78, 0x37, 0x67, 0xd0, 0xc3, 0x40, 0x90, 0x28, 
-0x80, 0x37, 0xcb, 0xa4, 0x3c, 0xa8, 0x37, 0xad, 0x90, 0x28, 0x24, 0x3b, 
-0xe8, 0xa4, 0x3a, 0x68, 0x37, 0x65, 0xd5, 0x06, 0x80, 0xd0, 0xc3, 0x40, 
-0x90, 0x28, 0x80, 0x37, 0xc3, 0xa4, 0x3c, 0x88, 0x37, 0xa9, 0x90, 0x28, 
-0x24, 0x3b, 0xc8, 0xa4, 0x3a, 0x48, 0x37, 0x61, 0xd0, 0xc3, 0x40, 0x90, 
-0x28, 0x80, 0x37, 0xbf, 0xa4, 0x3c, 0x78, 0x37, 0xa7, 0x90, 0x28, 0x24, 
-0x3b, 0xb8, 0xa4, 0x3a, 0x38, 0x37, 0x5f, 0x93, 0x70, 0x91, 0xd8, 0xd5, 
-0x07, 0x80, 0xd0, 0xc4, 0x40, 0x90, 0x48, 0x80, 0x8c, 0x3f, 0x58, 0x84, 
-0x37, 0xf3, 0xa4, 0x3d, 0x28, 0x37, 0xbd, 0x90, 0x28, 0x24, 0x3c, 0x68, 
-0xa4, 0x3a, 0xe8, 0x37, 0x75, 0xd0, 0xc4, 0x40, 0x90, 0x48, 0x80, 0x8c, 
-0x3f, 0x28, 0x84, 0x37, 0xf0, 0xa4, 0x3d, 0x10, 0x37, 0xba, 0x90, 0x28, 
-0x24, 0x3c, 0x50, 0xa4, 0x3a, 0xd0, 0x37, 0x72, 0xd5, 0x06, 0x80, 0xd0, 
-0xc3, 0x40, 0x90, 0x28, 0x80, 0x37, 0xdf, 0xa4, 0x3c, 0xf8, 0x37, 0xb7, 
-0x90, 0x28, 0x24, 0x3c, 0x38, 0xa4, 0x3a, 0xb8, 0x37, 0x6f, 0xd0, 0xc3, 
-0x40, 0x90, 0x28, 0x80, 0x37, 0xd9, 0xa4, 0x3c, 0xe0, 0x37, 0xb4, 0x90, 
-0x28, 0x24, 0x3c, 0x20, 0xa4, 0x3a, 0xa0, 0x37, 0x6c, 0x91, 0x98, 0xd5, 
-0x06, 0x80, 0xd0, 0xc3, 0x40, 0x90, 0x28, 0x80, 0x37, 0xd3, 0xa4, 0x3c, 
-0xc8, 0x37, 0xb1, 0x90, 0x28, 0x24, 0x3c, 0x08, 0xa4, 0x3a, 0x88, 0x37, 
-0x69, 0xd0, 0xc3, 0x40, 0x90, 0x28, 0x80, 0x37, 0xcd, 0xa4, 0x3c, 0xb0, 
-0x37, 0xae, 0x90, 0x28, 0x24, 0x3b, 0xf0, 0xa4, 0x3a, 0x70, 0x37, 0x66, 
-0xd5, 0x06, 0x80, 0xd0, 0xc3, 0x40, 0x90, 0x28, 0x80, 0x37, 0xc7, 0xa4, 
-0x3c, 0x98, 0x37, 0xab, 0x90, 0x28, 0x24, 0x3b, 0xd8, 0xa4, 0x3a, 0x58, 
-0x37, 0x63, 0xd0, 0xc3, 0x40, 0x90, 0x28, 0x80, 0x37, 0xc1, 0xa4, 0x3c, 
-0x80, 0x37, 0xa8, 0x90, 0x28, 0x24, 0x3b, 0xc0, 0xa4, 0x3a, 0x40, 0x37, 
-0x60, 0x99, 0xd8, 0x03, 0x90, 0x81, 0x90, 0xe0, 0x5b, 0x41, 0x40, 0x03, 
-0x40, 0x51, 0x40, 0xc0, 0xa4, 0x23, 0x80, 0x34, 0x60, 0xd1, 0x42, 0x00, 
-0xa4, 0x22, 0x80, 0x34, 0x40, 0xa4, 0x21, 0x80, 0x34, 0x20, 0x5b, 0x41, 
-0x40, 0x03, 0x40, 0x51, 0x40, 0xc0, 0xa4, 0x22, 0xa0, 0x34, 0x64, 0xd1, 
-0x42, 0x00, 0xa4, 0x21, 0xa0, 0x34, 0x44, 0xa4, 0x20, 0xa0, 0x34, 0x24, 
-0x81, 0x90, 0xe0, 0x5b, 0x41, 0x40, 0x03, 0x40, 0x51, 0x40, 0xc0, 0xa4, 
-0x22, 0xe0, 0x34, 0x6c, 0xd1, 0x42, 0x00, 0xa4, 0x21, 0xe0, 0x34, 0x4c, 
-0xa4, 0x20, 0xe0, 0x34, 0x2c, 0x5b, 0x41, 0x40, 0x03, 0x40, 0x51, 0x40, 
-0xc0, 0xa4, 0x22, 0xc0, 0x34, 0x68, 0xd1, 0x42, 0x00, 0xa4, 0x21, 0xc0, 
-0x34, 0x48, 0xa4, 0x20, 0xc0, 0x34, 0x28, 0xa8, 0x0b, 0x18, 0x13, 0xa8, 
-0x96, 0x80, 0x93, 0x40, 0x99, 0x90, 0x03, 0x00, 0x90, 0xc0, 0x90, 0x60, 
-0x90, 0x38, 0xa4, 0x12, 0xb8, 0x32, 0x58, 0x24, 0x12, 0xb0, 0x90, 0x38, 
-0xa4, 0x11, 0xe0, 0x32, 0x3d, 0x24, 0x11, 0xd8, 0x90, 0x60, 0x90, 0x38, 
-0xa4, 0x11, 0x08, 0x32, 0x22, 0x24, 0x11, 0x00, 0x90, 0x38, 0xa4, 0x10, 
-0x30, 0x32, 0x07, 0x24, 0x10, 0x28, 0x90, 0xc0, 0x90, 0x60, 0x90, 0x38, 
-0xa4, 0x12, 0xa8, 0x32, 0x53, 0x24, 0x12, 0xa0, 0x90, 0x38, 0xa4, 0x11, 
-0xd0, 0x32, 0x38, 0x24, 0x11, 0xc8, 0x90, 0x60, 0x90, 0x38, 0xa4, 0x10, 
-0xf8, 0x32, 0x1d, 0x24, 0x10, 0xf0, 0x90, 0x38, 0xa4, 0x10, 0x20, 0x32, 
-0x02, 0x24, 0x10, 0x18, 0xe4, 0xe1, 0xd0, 0x40, 0x37, 0x43, 0x99, 0x90, 
-0x03, 0x00, 0x90, 0xc0, 0x90, 0x60, 0x90, 0x38, 0xa4, 0x12, 0x90, 0x32, 
-0x50, 0x24, 0x12, 0x88, 0x90, 0x38, 0xa4, 0x11, 0xb8, 0x32, 0x35, 0x24, 
-0x11, 0xb0, 0x90, 0x60, 0x90, 0x38, 0xa4, 0x10, 0xe0, 0x32, 0x1a, 0x24, 
-0x10, 0xd8, 0x90, 0x38, 0xa4, 0x10, 0x08, 0x31, 0xff, 0x24, 0x10, 0x00, 
-0x90, 0xc0, 0x90, 0x60, 0x90, 0x38, 0xa4, 0x12, 0x78, 0x32, 0x4d, 0x24, 
-0x12, 0x70, 0x90, 0x38, 0xa4, 0x11, 0xa0, 0x32, 0x32, 0x24, 0x11, 0x98, 
-0x90, 0x60, 0x90, 0x38, 0xa4, 0x10, 0xc8, 0x32, 0x17, 0x24, 0x10, 0xc0, 
-0x90, 0x38, 0xa4, 0x0f, 0xf0, 0x31, 0xfc, 0x24, 0x0f, 0xe8, 0xe4, 0xe1, 
-0xce, 0xc0, 0x37, 0x3d, 0x93, 0x78, 0x99, 0x90, 0x03, 0x00, 0x90, 0xc0, 
-0x90, 0x60, 0x90, 0x38, 0xa4, 0x12, 0x60, 0x32, 0x4a, 0x24, 0x12, 0x58, 
-0x90, 0x38, 0xa4, 0x11, 0x88, 0x32, 0x2f, 0x24, 0x11, 0x80, 0x90, 0x60, 
-0x90, 0x38, 0xa4, 0x10, 0xb0, 0x32, 0x14, 0x24, 0x10, 0xa8, 0x90, 0x38, 
-0xa4, 0x0f, 0xd8, 0x31, 0xf9, 0x24, 0x0f, 0xd0, 0x90, 0xc0, 0x90, 0x60, 
-0x90, 0x38, 0xa4, 0x12, 0x48, 0x32, 0x47, 0x24, 0x12, 0x40, 0x90, 0x38, 
-0xa4, 0x11, 0x70, 0x32, 0x2c, 0x24, 0x11, 0x68, 0x90, 0x60, 0x90, 0x38, 
-0xa4, 0x10, 0x98, 0x32, 0x11, 0x24, 0x10, 0x90, 0x90, 0x38, 0xa4, 0x0f, 
-0xc0, 0x31, 0xf6, 0x24, 0x0f, 0xb8, 0xec, 0xa1, 0x1e, 0x00, 0x02, 0x00, 
-0x34, 0x7a, 0xa4, 0x39, 0xa8, 0x37, 0x37, 0x88, 0x00, 0x88, 0x10, 0x10, 
-0x10, 0x10, 0x90, 0x38, 0xa4, 0x0f, 0xa8, 0x31, 0xf3, 0x24, 0x0f, 0xa0, 
-0xe9, 0x61, 0x1d, 0x40, 0x02, 0x00, 0x34, 0x76, 0xe3, 0x61, 0xcb, 0xc0, 
-0x37, 0x31, 0x95, 0x08, 0x93, 0x40, 0x99, 0x90, 0x03, 0x00, 0x90, 0xc0, 
-0x90, 0x60, 0x90, 0x38, 0xa4, 0x12, 0x30, 0x32, 0x41, 0x24, 0x12, 0x28, 
-0x90, 0x38, 0xa4, 0x11, 0x58, 0x32, 0x26, 0x24, 0x11, 0x50, 0x90, 0x60, 
-0x90, 0x38, 0xa4, 0x10, 0x80, 0x32, 0x0b, 0x24, 0x10, 0x78, 0x90, 0x38, 
-0xa4, 0x0f, 0x90, 0x31, 0xed, 0x24, 0x0f, 0x88, 0x90, 0xc0, 0x90, 0x60, 
-0x90, 0x38, 0xa4, 0x12, 0x00, 0x32, 0x3e, 0x24, 0x11, 0xf8, 0x90, 0x38, 
-0xa4, 0x11, 0x28, 0x32, 0x23, 0x24, 0x11, 0x20, 0x90, 0x60, 0x90, 0x38, 
-0xa4, 0x10, 0x50, 0x32, 0x08, 0x24, 0x10, 0x48, 0x90, 0x38, 0xa4, 0x0f, 
-0x60, 0x31, 0xea, 0x24, 0x0f, 0x58, 0xe4, 0xe1, 0xd0, 0x80, 0x37, 0x45, 
-0x88, 0x01, 0x88, 0x90, 0xc0, 0x90, 0x60, 0x90, 0x38, 0xa4, 0x12, 0x20, 
-0x32, 0x42, 0x24, 0x12, 0x18, 0x90, 0x38, 0xa4, 0x11, 0x48, 0x32, 0x27, 
-0x24, 0x11, 0x40, 0x90, 0x60, 0x90, 0x38, 0xa4, 0x10, 0x70, 0x32, 0x0c, 
-0x24, 0x10, 0x68, 0x90, 0x38, 0xa4, 0x0f, 0x80, 0x31, 0xee, 0x24, 0x0f, 
-0x78, 0xe4, 0xe1, 0xcf, 0x00, 0x37, 0x3f, 0x92, 0xd0, 0x99, 0x50, 0x02, 
-0x80, 0x90, 0xa0, 0x90, 0x50, 0x90, 0x28, 0x80, 0x31, 0xe9, 0x24, 0x0f, 
-0x40, 0x90, 0x28, 0x80, 0x31, 0xe5, 0x24, 0x0f, 0x20, 0x90, 0x50, 0x90, 
-0x28, 0x80, 0x31, 0xe1, 0x24, 0x0f, 0x00, 0x90, 0x28, 0x80, 0x31, 0xdd, 
-0x24, 0x0e, 0xe0, 0x90, 0xa0, 0x90, 0x50, 0x90, 0x28, 0x80, 0x31, 0xe6, 
-0x24, 0x0f, 0x38, 0x90, 0x28, 0x80, 0x31, 0xe2, 0x24, 0x0f, 0x18, 0x90, 
-0x50, 0x90, 0x28, 0x80, 0x31, 0xde, 0x24, 0x0e, 0xf8, 0x90, 0x28, 0x80, 
-0x31, 0xda, 0x24, 0x0e, 0xd8, 0xec, 0xe1, 0xcd, 0xa1, 0x1f, 0x00, 0x37, 
-0x39, 0x88, 0x00, 0x78, 0x10, 0x10, 0x10, 0x10, 0x90, 0x28, 0x80, 0x31, 
-0xd8, 0x24, 0x0e, 0xc8, 0xec, 0xe1, 0xcc, 0x21, 0x1d, 0x00, 0x37, 0x33, 
-0xe5, 0xa1, 0x55, 0x40, 0x35, 0x51, 0xa0, 0x2a, 0x10, 0xa8, 0x16, 0x60, 
-0x29, 0xd8, 0xa0, 0x0c, 0x48, 0xa0, 0x0a, 0xc8, 0x95, 0x60, 0x92, 0xb0, 
-0x91, 0x40, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x31, 0xa1, 0x80, 
-0x31, 0xa0, 0x10, 0x10, 0x80, 0x31, 0x9f, 0x90, 0x70, 0x90, 0x38, 0xa4, 
-0x08, 0x98, 0x31, 0xb3, 0xa4, 0x08, 0x90, 0x31, 0xb2, 0x10, 0x10, 0xa4, 
-0x08, 0x88, 0x31, 0xb1, 0x90, 0xb8, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x09, 
-0xb8, 0x31, 0xd7, 0xa4, 0x09, 0xb0, 0x31, 0xd6, 0x10, 0x10, 0xa4, 0x09, 
-0xa8, 0x31, 0xd5, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x09, 0x28, 0x31, 0xc5, 
-0xa4, 0x09, 0x20, 0x31, 0xc4, 0x10, 0x10, 0xa4, 0x09, 0x18, 0x31, 0xc3, 
-0x91, 0x40, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x31, 0x9c, 0x80, 
-0x31, 0x9e, 0x10, 0x10, 0x80, 0x31, 0x9d, 0x90, 0x70, 0x90, 0x38, 0xa4, 
-0x08, 0x70, 0x31, 0xae, 0xa4, 0x08, 0x80, 0x31, 0xb0, 0x10, 0x10, 0xa4, 
-0x08, 0x78, 0x31, 0xaf, 0x90, 0xb8, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x09, 
-0x90, 0x31, 0xd2, 0xa4, 0x09, 0xa0, 0x31, 0xd4, 0x10, 0x10, 0xa4, 0x09, 
-0x98, 0x31, 0xd3, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x09, 0x00, 0x31, 0xc0, 
-0xa4, 0x09, 0x10, 0x31, 0xc2, 0x10, 0x10, 0xa4, 0x09, 0x08, 0x31, 0xc1, 
-0x92, 0xb0, 0x91, 0x40, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x31, 
-0x99, 0x80, 0x31, 0x9b, 0x10, 0x10, 0x80, 0x31, 0x9a, 0x90, 0x70, 0x90, 
-0x38, 0xa4, 0x08, 0x58, 0x31, 0xab, 0xa4, 0x08, 0x68, 0x31, 0xad, 0x10, 
-0x10, 0xa4, 0x08, 0x60, 0x31, 0xac, 0x90, 0xb8, 0x90, 0x70, 0x90, 0x38, 
-0xa4, 0x09, 0x78, 0x31, 0xcf, 0xa4, 0x09, 0x88, 0x31, 0xd1, 0x10, 0x10, 
-0xa4, 0x09, 0x80, 0x31, 0xd0, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x08, 0xe8, 
-0x31, 0xbd, 0xa4, 0x08, 0xf8, 0x31, 0xbf, 0x10, 0x10, 0xa4, 0x08, 0xf0, 
-0x31, 0xbe, 0x91, 0x40, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 0x31, 
-0x96, 0x80, 0x31, 0x98, 0x10, 0x10, 0x80, 0x31, 0x97, 0x90, 0x70, 0x90, 
-0x38, 0xa4, 0x08, 0x40, 0x31, 0xa8, 0xa4, 0x08, 0x50, 0x31, 0xaa, 0x10, 
-0x10, 0xa4, 0x08, 0x48, 0x31, 0xa9, 0x90, 0xb8, 0x90, 0x70, 0x90, 0x38, 
-0xa4, 0x09, 0x60, 0x31, 0xcc, 0xa4, 0x09, 0x70, 0x31, 0xce, 0x10, 0x10, 
-0xa4, 0x09, 0x68, 0x31, 0xcd, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x08, 0xd0, 
-0x31, 0xba, 0xa4, 0x08, 0xe0, 0x31, 0xbc, 0x10, 0x10, 0xa4, 0x08, 0xd8, 
-0x31, 0xbb, 0x10, 0x10, 0x90, 0xa8, 0x10, 0x10, 0x10, 0x10, 0x90, 0x50, 
-0x90, 0x28, 0x80, 0x31, 0x8d, 0x80, 0x31, 0x8f, 0x10, 0x10, 0x80, 0x31, 
-0x8e, 0x90, 0x60, 0x90, 0x30, 0x60, 0xa0, 0x2a, 0xc0, 0x60, 0xa0, 0x2a, 
-0x80, 0x90, 0x30, 0x60, 0xa0, 0x2a, 0x40, 0x60, 0xa0, 0x2a, 0x00, 0x97, 
-0xf0, 0x95, 0x60, 0x92, 0xb0, 0x91, 0x40, 0x90, 0x88, 0x90, 0x50, 0x90, 
-0x28, 0x80, 0x31, 0x93, 0x80, 0x31, 0x95, 0x10, 0x10, 0x80, 0x31, 0x94, 
-0x90, 0x70, 0x90, 0x38, 0xa4, 0x08, 0x28, 0x31, 0xa5, 0xa4, 0x08, 0x38, 
-0x31, 0xa7, 0x10, 0x10, 0xa4, 0x08, 0x30, 0x31, 0xa6, 0x90, 0xb8, 0x90, 
-0x70, 0x90, 0x38, 0xa4, 0x09, 0x48, 0x31, 0xc9, 0xa4, 0x09, 0x58, 0x31, 
-0xcb, 0x10, 0x10, 0xa4, 0x09, 0x50, 0x31, 0xca, 0x90, 0x70, 0x90, 0x38, 
-0xa4, 0x08, 0xb8, 0x31, 0xb7, 0xa4, 0x08, 0xc8, 0x31, 0xb9, 0x10, 0x10, 
-0xa4, 0x08, 0xc0, 0x31, 0xb8, 0x91, 0x40, 0x90, 0x88, 0x90, 0x50, 0x90, 
-0x28, 0x80, 0x31, 0x90, 0x80, 0x31, 0x92, 0x10, 0x10, 0x80, 0x31, 0x91, 
-0x90, 0x70, 0x90, 0x38, 0xa4, 0x08, 0x10, 0x31, 0xa2, 0xa4, 0x08, 0x20, 
-0x31, 0xa4, 0x10, 0x10, 0xa4, 0x08, 0x18, 0x31, 0xa3, 0x90, 0xb8, 0x90, 
-0x70, 0x90, 0x38, 0xa4, 0x09, 0x30, 0x31, 0xc6, 0xa4, 0x09, 0x40, 0x31, 
-0xc8, 0x10, 0x10, 0xa4, 0x09, 0x38, 0x31, 0xc7, 0x90, 0x70, 0x90, 0x38, 
-0xa4, 0x08, 0xa0, 0x31, 0xb4, 0xa4, 0x08, 0xb0, 0x31, 0xb6, 0x10, 0x10, 
-0xa4, 0x08, 0xa8, 0x31, 0xb5, 0x10, 0x10, 0x91, 0x40, 0x90, 0xa0, 0x90, 
-0x50, 0x90, 0x28, 0x80, 0x30, 0xcb, 0x80, 0x30, 0xca, 0x90, 0x28, 0x80, 
-0x30, 0xc9, 0x80, 0x30, 0xc8, 0x90, 0x50, 0x90, 0x28, 0x80, 0x30, 0xc4, 
-0x80, 0x30, 0xc7, 0x90, 0x28, 0x80, 0x30, 0xc6, 0x80, 0x30, 0xc5, 0x90, 
-0xa0, 0x90, 0x50, 0x90, 0x28, 0x80, 0x30, 0xbc, 0x80, 0x30, 0xc3, 0x90, 
-0x28, 0x80, 0x30, 0xc2, 0x80, 0x30, 0xc1, 0x90, 0x50, 0x90, 0x28, 0x80, 
-0x30, 0xbd, 0x80, 0x30, 0xc0, 0x90, 0x28, 0x80, 0x30, 0xbf, 0x80, 0x30, 
-0xbe, 0x91, 0x88, 0x80, 0x90, 0xc0, 0x90, 0x60, 0x90, 0x28, 0x81, 0x31, 
-0x3b, 0x10, 0x10, 0x80, 0x31, 0x3a, 0x90, 0x28, 0x81, 0x31, 0x3d, 0x10, 
-0x10, 0x80, 0x31, 0x3c, 0x90, 0x60, 0x90, 0x28, 0x81, 0x31, 0x41, 0x10, 
-0x10, 0x80, 0x31, 0x40, 0x90, 0x28, 0x81, 0x31, 0x3f, 0x10, 0x10, 0x80, 
-0x31, 0x3e, 0x80, 0x10, 0x10, 0x10, 0x10, 0x90, 0x28, 0x81, 0x31, 0x38, 
-0x10, 0x10, 0x80, 0x31, 0x39, 0xa0, 0x0b, 0x90, 0xa0, 0x0a, 0xc8, 0x95, 
-0x60, 0x92, 0xb0, 0x91, 0x40, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 
-0x31, 0x56, 0x80, 0x31, 0x55, 0x10, 0x10, 0x80, 0x31, 0x54, 0x90, 0x70, 
-0x90, 0x38, 0xa4, 0x06, 0xe8, 0x31, 0x68, 0xa4, 0x06, 0xe0, 0x31, 0x67, 
-0x10, 0x10, 0xa4, 0x06, 0xd8, 0x31, 0x66, 0x90, 0xb8, 0x90, 0x70, 0x90, 
-0x38, 0xa4, 0x08, 0x08, 0x31, 0x8c, 0xa4, 0x08, 0x00, 0x31, 0x8b, 0x10, 
-0x10, 0xa4, 0x07, 0xf8, 0x31, 0x8a, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x07, 
-0x78, 0x31, 0x7a, 0xa4, 0x07, 0x70, 0x31, 0x79, 0x10, 0x10, 0xa4, 0x07, 
-0x68, 0x31, 0x78, 0x91, 0x40, 0x90, 0x88, 0x90, 0x50, 0x90, 0x28, 0x80, 
-0x31, 0x51, 0x80, 0x31, 0x53, 0x10, 0x10, 0x80, 0x31, 0x52, 0x90, 0x70, 
-0x90, 0x38, 0xa4, 0x06, 0xc0, 0x31, 0x63, 0xa4, 0x06, 0xd0, 0x31, 0x65, 
-0x10, 0x10, 0xa4, 0x06, 0xc8, 0x31, 0x64, 0x90, 0xb8, 0x90, 0x70, 0x90, 
-0x38, 0xa4, 0x07, 0xe0, 0x31, 0x87, 0xa4, 0x07, 0xf0, 0x31, 0x89, 0x10, 
-0x10, 0xa4, 0x07, 0xe8, 0x31, 0x88, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x07, 
-0x50, 0x31, 0x75, 0xa4, 0x07, 0x60, 0x31, 0x77, 0x10, 0x10, 0xa4, 0x07, 
-0x58, 0x31, 0x76, 0x92, 0xb0, 0x91, 0x40, 0x90, 0x88, 0x90, 0x50, 0x90, 
-0x28, 0x80, 0x31, 0x4e, 0x80, 0x31, 0x50, 0x10, 0x10, 0x80, 0x31, 0x4f, 
-0x90, 0x70, 0x90, 0x38, 0xa4, 0x06, 0xa8, 0x31, 0x60, 0xa4, 0x06, 0xb8, 
-0x31, 0x62, 0x10, 0x10, 0xa4, 0x06, 0xb0, 0x31, 0x61, 0x90, 0xb8, 0x90, 
-0x70, 0x90, 0x38, 0xa4, 0x07, 0xc8, 0x31, 0x84, 0xa4, 0x07, 0xd8, 0x31, 
-0x86, 0x10, 0x10, 0xa4, 0x07, 0xd0, 0x31, 0x85, 0x90, 0x70, 0x90, 0x38, 
-0xa4, 0x07, 0x38, 0x31, 0x72, 0xa4, 0x07, 0x48, 0x31, 0x74, 0x10, 0x10, 
-0xa4, 0x07, 0x40, 0x31, 0x73, 0x91, 0x40, 0x90, 0x88, 0x90, 0x50, 0x90, 
-0x28, 0x80, 0x31, 0x4b, 0x80, 0x31, 0x4d, 0x10, 0x10, 0x80, 0x31, 0x4c, 
-0x90, 0x70, 0x90, 0x38, 0xa4, 0x06, 0x90, 0x31, 0x5d, 0xa4, 0x06, 0xa0, 
-0x31, 0x5f, 0x10, 0x10, 0xa4, 0x06, 0x98, 0x31, 0x5e, 0x90, 0xb8, 0x90, 
-0x70, 0x90, 0x38, 0xa4, 0x07, 0xb0, 0x31, 0x81, 0xa4, 0x07, 0xc0, 0x31, 
-0x83, 0x10, 0x10, 0xa4, 0x07, 0xb8, 0x31, 0x82, 0x90, 0x70, 0x90, 0x38, 
-0xa4, 0x07, 0x20, 0x31, 0x6f, 0xa4, 0x07, 0x30, 0x31, 0x71, 0x10, 0x10, 
-0xa4, 0x07, 0x28, 0x31, 0x70, 0x10, 0x10, 0x80, 0x10, 0x10, 0x10, 0x10, 
-0x90, 0x50, 0x90, 0x28, 0x80, 0x31, 0x42, 0x80, 0x31, 0x44, 0x10, 0x10, 
-0x80, 0x31, 0x43, 0x80, 0x95, 0x60, 0x92, 0xb0, 0x91, 0x40, 0x90, 0x88, 
-0x90, 0x50, 0x90, 0x28, 0x80, 0x31, 0x48, 0x80, 0x31, 0x4a, 0x10, 0x10, 
-0x80, 0x31, 0x49, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x06, 0x78, 0x31, 0x5a, 
-0xa4, 0x06, 0x88, 0x31, 0x5c, 0x10, 0x10, 0xa4, 0x06, 0x80, 0x31, 0x5b, 
-0x90, 0xb8, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x07, 0x98, 0x31, 0x7e, 0xa4, 
-0x07, 0xa8, 0x31, 0x80, 0x10, 0x10, 0xa4, 0x07, 0xa0, 0x31, 0x7f, 0x90, 
-0x70, 0x90, 0x38, 0xa4, 0x07, 0x08, 0x31, 0x6c, 0xa4, 0x07, 0x18, 0x31, 
-0x6e, 0x10, 0x10, 0xa4, 0x07, 0x10, 0x31, 0x6d, 0x91, 0x40, 0x90, 0x88, 
-0x90, 0x50, 0x90, 0x28, 0x80, 0x31, 0x45, 0x80, 0x31, 0x47, 0x10, 0x10, 
-0x80, 0x31, 0x46, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x06, 0x60, 0x31, 0x57, 
-0xa4, 0x06, 0x70, 0x31, 0x59, 0x10, 0x10, 0xa4, 0x06, 0x68, 0x31, 0x58, 
-0x90, 0xb8, 0x90, 0x70, 0x90, 0x38, 0xa4, 0x07, 0x80, 0x31, 0x7b, 0xa4, 
-0x07, 0x90, 0x31, 0x7d, 0x10, 0x10, 0xa4, 0x07, 0x88, 0x31, 0x7c, 0x90, 
-0x70, 0x90, 0x38, 0xa4, 0x06, 0xf0, 0x31, 0x69, 0xa4, 0x07, 0x00, 0x31, 
-0x6b, 0x10, 0x10, 0xa4, 0x06, 0xf8, 0x31, 0x6a, 0x10, 0x10, 0x91, 0x40, 
-0x90, 0xa0, 0x90, 0x50, 0x90, 0x28, 0x80, 0x30, 0xbb, 0x80, 0x30, 0xba, 
-0x90, 0x28, 0x80, 0x30, 0xb9, 0x80, 0x30, 0xb8, 0x90, 0x50, 0x90, 0x28, 
-0x80, 0x30, 0xb4, 0x80, 0x30, 0xb7, 0x90, 0x28, 0x80, 0x30, 0xb6, 0x80, 
-0x30, 0xb5, 0x90, 0xa0, 0x90, 0x50, 0x90, 0x28, 0x80, 0x30, 0xac, 0x80, 
-0x30, 0xb3, 0x90, 0x28, 0x80, 0x30, 0xb2, 0x80, 0x30, 0xb1, 0x90, 0x50, 
-0x90, 0x28, 0x80, 0x30, 0xad, 0x80, 0x30, 0xb0, 0x90, 0x28, 0x80, 0x30, 
-0xaf, 0x80, 0x30, 0xae, 0xc3, 0xc0, 0x30, 0x42, 0x9c, 0xe8, 0x07, 0x60, 
-0x91, 0x90, 0x90, 0xf0, 0x10, 0x10, 0x80, 0x88, 0x00, 0x80, 0x90, 0x50, 
-0x90, 0x28, 0x80, 0x33, 0xf8, 0x80, 0x33, 0xf9, 0x81, 0x33, 0xef, 0xd0, 
-0x41, 0x80, 0x24, 0x20, 0x90, 0x24, 0x20, 0x98, 0x10, 0x10, 0x80, 0x90, 
-0x58, 0x80, 0x90, 0x28, 0x24, 0x1f, 0x90, 0x24, 0x1f, 0x98, 0x81, 0x24, 
-0x1f, 0x50, 0x92, 0x68, 0x91, 0x00, 0x80, 0x90, 0x90, 0x90, 0x30, 0x80, 
-0x24, 0x20, 0x00, 0x90, 0x38, 0xa4, 0x1f, 0xf8, 0x34, 0x06, 0x80, 0x34, 
-0x05, 0x80, 0x90, 0x28, 0x80, 0x34, 0x0f, 0xa4, 0x1f, 0xe0, 0x34, 0x0e, 
-0x80, 0x90, 0xc0, 0x90, 0x60, 0x90, 0x28, 0x80, 0x34, 0x09, 0xa4, 0x1f, 
-0xf0, 0x34, 0x08, 0x90, 0x28, 0x80, 0x34, 0x04, 0xa4, 0x1f, 0xe8, 0x34, 
-0x03, 0x90, 0x50, 0x90, 0x28, 0x80, 0x34, 0x0d, 0x80, 0x34, 0x0c, 0x90, 
-0x28, 0x24, 0x20, 0x88, 0x24, 0x20, 0x80, 0x90, 0x58, 0x80, 0x10, 0x10, 
-0x80, 0x10, 0x10, 0x80, 0x33, 0xfb, 0x80, 0x90, 0x40, 0x10, 0x10, 0x80, 
-0x24, 0x1f, 0x60, 0x80, 0x10, 0x10, 0x80, 0x33, 0xfa, 0x91, 0x58, 0x91, 
-0x00, 0x90, 0x80, 0x81, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 0xf6, 0x80, 
-0x33, 0xf7, 0x81, 0x33, 0xee, 0x81, 0x90, 0x50, 0x90, 0x28, 0x80, 0x33, 
-0xf4, 0x80, 0x33, 0xf5, 0x81, 0x33, 0xed, 0x83, 0x90, 0x28, 0x24, 0x1f, 
-0x80, 0x24, 0x1f, 0x88, 0x90, 0xe8, 0x81, 0x90, 0x88, 0x90, 0x38, 0x10, 
-0x10, 0x80, 0x34, 0x07, 0x90, 0x28, 0x80, 0x34, 0x02, 0x80, 0x34, 0x01, 
-0x80, 0x90, 0x28, 0x80, 0x34, 0x0b, 0x80, 0x34, 0x0a, 0x82, 0x10, 0x10, 
-0x80, 0x24, 0x1f, 0x58, 0x97, 0x10, 0x9e, 0x10, 0x06, 0x98, 0x93, 0x00, 
-0x91, 0x80, 0x90, 0xc0, 0x90, 0x60, 0x90, 0x38, 0xa4, 0x03, 0x80, 0x30, 
-0x71, 0x24, 0x03, 0x78, 0x90, 0x38, 0xa4, 0x04, 0x10, 0x30, 0x83, 0x24, 
-0x04, 0x08, 0x90, 0x60, 0x90, 0x38, 0xa4, 0x05, 0x30, 0x30, 0xa7, 0x24, 
-0x05, 0x28, 0x90, 0x38, 0xa4, 0x04, 0xa0, 0x30, 0x95, 0x24, 0x04, 0x98, 
-0x90, 0xc0, 0x90, 0x60, 0x90, 0x38, 0xa4, 0x03, 0x70, 0x30, 0x6c, 0x24, 
-0x03, 0x68, 0x90, 0x38, 0xa4, 0x04, 0x00, 0x30, 0x7e, 0x24, 0x03, 0xf8, 
-0x90, 0x60, 0x90, 0x38, 0xa4, 0x05, 0x20, 0x30, 0xa2, 0x24, 0x05, 0x18, 
-0x90, 0x38, 0xa4, 0x04, 0x90, 0x30, 0x90, 0x24, 0x04, 0x88, 0x91, 0x80, 
-0x90, 0xc0, 0x90, 0x60, 0x90, 0x38, 0xa4, 0x03, 0x58, 0x30, 0x69, 0x24, 
-0x03, 0x50, 0x90, 0x38, 0xa4, 0x03, 0xe8, 0x30, 0x7b, 0x24, 0x03, 0xe0, 
-0x90, 0x60, 0x90, 0x38, 0xa4, 0x05, 0x08, 0x30, 0x9f, 0x24, 0x05, 0x00, 
-0x90, 0x38, 0xa4, 0x04, 0x78, 0x30, 0x8d, 0x24, 0x04, 0x70, 0x90, 0xc0, 
-0x90, 0x60, 0x90, 0x38, 0xa4, 0x03, 0x40, 0x30, 0x66, 0x24, 0x03, 0x38, 
-0x90, 0x38, 0xa4, 0x03, 0xd0, 0x30, 0x78, 0x24, 0x03, 0xc8, 0x90, 0x60, 
-0x90, 0x38, 0xa4, 0x04, 0xf0, 0x30, 0x9c, 0x24, 0x04, 0xe8, 0x90, 0x38, 
-0xa4, 0x04, 0x60, 0x30, 0x8a, 0x24, 0x04, 0x58, 0x10, 0x10, 0x80, 0x10, 
-0x10, 0x10, 0x10, 0x90, 0x38, 0xa4, 0x02, 0xf8, 0x30, 0x5d, 0x24, 0x02, 
-0xf0, 0xd7, 0x42, 0x00, 0xa4, 0x39, 0x58, 0x37, 0x2d, 0xa4, 0x39, 0x38, 
-0x37, 0x29, 0x9c, 0xe0, 0x06, 0x90, 0x93, 0x00, 0x91, 0x80, 0x90, 0xc0, 
-0x90, 0x60, 0x90, 0x38, 0xa4, 0x03, 0x28, 0x30, 0x63, 0x24, 0x03, 0x20, 
-0x90, 0x38, 0xa4, 0x03, 0xb8, 0x30, 0x75, 0x24, 0x03, 0xb0, 0x90, 0x60, 
-0x90, 0x38, 0xa4, 0x04, 0xd8, 0x30, 0x99, 0x24, 0x04, 0xd0, 0x90, 0x38, 
-0xa4, 0x04, 0x48, 0x30, 0x87, 0x24, 0x04, 0x40, 0x90, 0xc0, 0x90, 0x60, 
-0x90, 0x38, 0xa4, 0x03, 0x10, 0x30, 0x60, 0x24, 0x03, 0x08, 0x90, 0x38, 
-0xa4, 0x03, 0xa0, 0x30, 0x72, 0x24, 0x03, 0x98, 0x90, 0x60, 0x90, 0x38, 
-0xa4, 0x04, 0xc0, 0x30, 0x96, 0x24, 0x04, 0xb8, 0x90, 0x38, 0xa4, 0x04, 
-0x30, 0x30, 0x84, 0x24, 0x04, 0x28, 0x10, 0x10, 0x90, 0xe0, 0x90, 0x70, 
-0x90, 0x38, 0xa4, 0x02, 0x88, 0x30, 0x52, 0xa4, 0x02, 0x78, 0x30, 0x50, 
-0x90, 0x38, 0xa4, 0x02, 0x70, 0x30, 0x4b, 0xa4, 0x02, 0x60, 0x30, 0x4d, 
-0x90, 0x70, 0x90, 0x38, 0xa4, 0x02, 0x50, 0x30, 0x43, 0xa4, 0x02, 0x40, 
-0x30, 0x49, 0x90, 0x38, 0xa4, 0x02, 0x38, 0x30, 0x44, 0xa4, 0x02, 0x28, 
-0x30, 0x46, 0x91, 0x48, 0x80, 0x90, 0xa0, 0x90, 0x50, 0x90, 0x28, 0x80, 
-0x30, 0x56, 0x24, 0x02, 0xa8, 0x90, 0x28, 0x80, 0x30, 0x58, 0x24, 0x02, 
-0xb8, 0x90, 0x50, 0x90, 0x28, 0x80, 0x30, 0x5c, 0x24, 0x02, 0xd8, 0x90, 
-0x28, 0x80, 0x30, 0x5a, 0x24, 0x02, 0xc8, 0x80, 0x10, 0x10, 0x10, 0x10, 
-0x90, 0x28, 0x80, 0x30, 0x53, 0x24, 0x02, 0xa0, 0xd7, 0x42, 0x00, 0xa4, 
-0x39, 0x60, 0x37, 0x2e, 0xa4, 0x39, 0x40, 0x37, 0x2a, 0xa0, 0x14, 0x68, 
-0xa0, 0x10, 0x90, 0xa0, 0x0c, 0x60, 0x9e, 0x88, 0x09, 0xd0, 0x94, 0xf0, 
-0x90, 0xb0, 0x88, 0x00, 0x68, 0x84, 0x10, 0x10, 0xc9, 0xe1, 0x4c, 0x40, 
-0x85, 0x35, 0x4d, 0xcb, 0x61, 0x45, 0x00, 0x85, 0x35, 0x23, 0x9a, 0x00, 
-0x03, 0xf8, 0x91, 0x98, 0x80, 0x91, 0x10, 0x90, 0xa0, 0x90, 0x68, 0x90, 
-0x20, 0x3a, 0x75, 0xc9, 0xe2, 0x9c, 0xc0, 0x85, 0x35, 0x4b, 0xa4, 0x53, 
-0x88, 0x3a, 0x72, 0x90, 0x38, 0xa4, 0x53, 0x50, 0x3a, 0x6b, 0xa4, 0x53, 
-0x40, 0x3a, 0x69, 0x90, 0x48, 0x10, 0x10, 0xa4, 0x53, 0x08, 0x3a, 0x62, 
-0x10, 0x10, 0x80, 0x3a, 0x5e, 0x81, 0x10, 0x10, 0x80, 0xa4, 0x52, 0xd8, 
-0x3a, 0x5c, 0x91, 0xb0, 0x91, 0x60, 0x90, 0xe0, 0x90, 0x70, 0x90, 0x38, 
-0xa4, 0x53, 0x78, 0x3a, 0x70, 0xa4, 0x53, 0x68, 0x3a, 0x6e, 0x90, 0x38, 
-0xa4, 0x53, 0x30, 0x3a, 0x67, 0xa4, 0x53, 0x20, 0x3a, 0x65, 0x90, 0x48, 
-0x10, 0x10, 0xa4, 0x52, 0xf8, 0x3a, 0x60, 0x10, 0x10, 0x80, 0x3a, 0x5d, 
-0x90, 0x28, 0x80, 0x3a, 0x56, 0x80, 0x3a, 0x55, 0x81, 0x10, 0x10, 0x80, 
-0xa4, 0x52, 0xc8, 0x3a, 0x5a, 0xcb, 0x61, 0x44, 0xc0, 0x85, 0x35, 0x22, 
-0x90, 0xd8, 0x88, 0x00, 0x90, 0x84, 0x90, 0x38, 0xc1, 0xc0, 0x85, 0x3a, 
-0x78, 0xc9, 0xe1, 0x4c, 0x00, 0x85, 0x35, 0x49, 0xcb, 0x61, 0x44, 0x80, 
-0x85, 0x35, 0x21, 0x88, 0x00, 0x68, 0x84, 0x10, 0x10, 0xc9, 0xe1, 0x4b, 
-0xc0, 0x85, 0x35, 0x47, 0xcb, 0x61, 0x44, 0x40, 0x85, 0x35, 0x20, 0x91, 
-0xf8, 0x90, 0xb0, 0x88, 0x00, 0x68, 0x84, 0x10, 0x10, 0xc9, 0xe1, 0x4b, 
-0x40, 0x85, 0x35, 0x43, 0xcb, 0x61, 0x43, 0xc0, 0x85, 0x35, 0x1e, 0x88, 
-0x01, 0x00, 0x90, 0xa0, 0x81, 0x90, 0x70, 0x80, 0x90, 0x20, 0x3a, 0x6c, 
-0xc9, 0xe1, 0x4b, 0x00, 0x85, 0x35, 0x41, 0x81, 0x3a, 0x63, 0x81, 0x10, 
-0x10, 0x80, 0xa4, 0x52, 0xb8, 0x3a, 0x58, 0xcb, 0x61, 0x43, 0x80, 0x85, 
-0x35, 0x1d, 0x90, 0xb0, 0x88, 0x00, 0x68, 0x84, 0x10, 0x10, 0xc9, 0xe1, 
-0x4a, 0xc0, 0x85, 0x35, 0x3f, 0xcb, 0x61, 0x43, 0x40, 0x85, 0x35, 0x1c, 
-0x88, 0x00, 0x68, 0x84, 0x10, 0x10, 0xc9, 0xe1, 0x4a, 0x80, 0x85, 0x35, 
-0x3d, 0xcb, 0x61, 0x43, 0x00, 0x85, 0x35, 0x1b, 0x92, 0x38, 0x81, 0x91, 
-0x68, 0x91, 0x18, 0x90, 0x80, 0x90, 0x40, 0x80, 0xa4, 0x54, 0x38, 0x3a, 
-0x88, 0x80, 0xa4, 0x54, 0x30, 0x3a, 0x85, 0x90, 0x28, 0x81, 0x3a, 0x84, 
-0x90, 0x38, 0xa4, 0x54, 0x10, 0x3a, 0x83, 0xa4, 0x54, 0x00, 0x3a, 0x81, 
-0x90, 0x28, 0x80, 0x3a, 0x7f, 0x80, 0x3a, 0x7e, 0x80, 0x90, 0x40, 0x10, 
-0x10, 0x80, 0x24, 0x53, 0xe8, 0x10, 0x10, 0x90, 0x38, 0xa4, 0x53, 0xd8, 
-0x3a, 0x7c, 0xa4, 0x53, 0xc8, 0x3a, 0x7a, 0x90, 0x28, 0x80, 0x3a, 0x77, 
-0x80, 0x3a, 0x76, 0x9a, 0xd0, 0x03, 0xe0, 0x91, 0x60, 0x90, 0xb0, 0x88, 
-0x00, 0x68, 0x84, 0x10, 0x10, 0xc9, 0xe1, 0x4a, 0x00, 0x85, 0x35, 0x39, 
-0xcb, 0x61, 0x42, 0x80, 0x85, 0x35, 0x19, 0x88, 0x00, 0x68, 0x84, 0x10, 
-0x10, 0xc9, 0xe1, 0x49, 0xc0, 0x85, 0x35, 0x37, 0xcb, 0x61, 0x42, 0x40, 
-0x85, 0x35, 0x18, 0x90, 0xb0, 0x88, 0x00, 0x68, 0x84, 0x10, 0x10, 0xc9, 
-0xe1, 0x49, 0x80, 0x85, 0x35, 0x35, 0xcb, 0x61, 0x42, 0x00, 0x85, 0x35, 
-0x17, 0x88, 0x00, 0x68, 0x84, 0x10, 0x10, 0xc9, 0xe1, 0x49, 0x40, 0x85, 
-0x35, 0x33, 0xcb, 0x61, 0x41, 0xc0, 0x85, 0x35, 0x16, 0x90, 0x90, 0x90, 
-0x48, 0xcb, 0xa1, 0x40, 0x00, 0x85, 0x35, 0x05, 0xcb, 0xa1, 0x3f, 0xc0, 
-0x85, 0x35, 0x04, 0x90, 0x48, 0xcb, 0xa1, 0x3f, 0x80, 0x85, 0x35, 0x03, 
-0xcb, 0xa1, 0x3f, 0x40, 0x85, 0x35, 0x02, 0xcb, 0xa2, 0x94, 0xc0, 0x80, 
-0x3a, 0x54, 0x92, 0x40, 0x91, 0x20, 0x90, 0x90, 0x90, 0x48, 0x8c, 0x27, 
-0x60, 0x84, 0x24, 0x27, 0xd8, 0x8c, 0x27, 0x58, 0x84, 0x24, 0x27, 0xd0, 
-0x90, 0x48, 0x8c, 0x27, 0x50, 0x84, 0x24, 0x27, 0xc8, 0x8c, 0x27, 0x48, 
-0x84, 0x24, 0x27, 0xc0, 0x90, 0x90, 0x90, 0x48, 0x8c, 0x27, 0x38, 0x84, 
-0x24, 0x27, 0xb0, 0x8c, 0x27, 0x30, 0x84, 0x24, 0x27, 0xa8, 0x90, 0x48, 
-0x8c, 0x27, 0x28, 0x84, 0x24, 0x27, 0xa0, 0x8c, 0x27, 0x20, 0x84, 0x24, 
-0x27, 0x98, 0x91, 0x20, 0x90, 0x90, 0x90, 0x48, 0x8c, 0x27, 0x10, 0x84, 
-0x24, 0x27, 0x88, 0x8c, 0x27, 0x08, 0x84, 0x24, 0x27, 0x80, 0x90, 0x48, 
-0x8c, 0x27, 0x00, 0x84, 0x24, 0x27, 0x78, 0x8c, 0x26, 0xf8, 0x84, 0x24, 
-0x27, 0x70, 0x90, 0x38, 0xa4, 0x26, 0xe0, 0x34, 0xdd, 0xa4, 0x26, 0xd0, 
-0x34, 0xdb, 0xa0, 0x0f, 0x50, 0xa0, 0x09, 0x08, 0x9a, 0x30, 0x04, 0x40, 
-0x91, 0x90, 0x90, 0xc8, 0x98, 0x50, 0x00, 0x80, 0xe5, 0x22, 0x92, 0xc0, 
-0x3a, 0x43, 0xe5, 0x22, 0x8a, 0xc0, 0x3a, 0x3f, 0xcb, 0x61, 0x32, 0x40, 
-0x85, 0x34, 0xd8, 0x98, 0x50, 0x00, 0x80, 0xe5, 0x22, 0x82, 0xc0, 0x3a, 
-0x03, 0xe5, 0x22, 0x7a, 0xc0, 0x39, 0xff, 0xcb, 0x61, 0x32, 0x00, 0x85, 
-0x34, 0xd7, 0x90, 0x48, 0xcb, 0xa1, 0x31, 0xc0, 0x85, 0x34, 0xd6, 0xcb, 
-0xa1, 0x31, 0x80, 0x85, 0x34, 0xd5, 0x91, 0x90, 0x90, 0xc8, 0x98, 0x50, 
-0x00, 0x80, 0xe5, 0x22, 0x6c, 0xc0, 0x39, 0xcb, 0xe5, 0x22, 0x60, 0xc0, 
-0x39, 0x9b, 0xcb, 0x61, 0x31, 0x00, 0x85, 0x34, 0xd3, 0x98, 0x50, 0x00, 
-0x80, 0xe5, 0x22, 0x54, 0xc0, 0x39, 0x6b, 0xe5, 0x22, 0x48, 0xc0, 0x39, 
-0x3b, 0xcb, 0x61, 0x30, 0xc0, 0x85, 0x34, 0xd2, 0x90, 0x48, 0xcb, 0xa1, 
-0x30, 0x80, 0x85, 0x34, 0xd1, 0xcb, 0xa1, 0x30, 0x40, 0x85, 0x34, 0xd0, 
-0x92, 0x20, 0x91, 0x30, 0x90, 0xb8, 0xd5, 0x03, 0x00, 0xc0, 0xc0, 0x81, 
-0x8c, 0x01, 0xa0, 0x84, 0x30, 0x3e, 0xc0, 0xc0, 0x81, 0x8c, 0x01, 0x80, 
-0x84, 0x30, 0x3c, 0xd5, 0x02, 0x00, 0xc0, 0xc0, 0x81, 0x30, 0x28, 0xc0, 
-0xc0, 0x81, 0x30, 0x24, 0x90, 0x78, 0xd5, 0x02, 0x00, 0xc0, 0xc0, 0x81, 
-0x30, 0x1c, 0xc0, 0xc0, 0x81, 0x30, 0x18, 0xd5, 0x02, 0x00, 0xc0, 0xc0, 
-0x81, 0x30, 0x10, 0xc0, 0xc0, 0x81, 0x30, 0x0c, 0x91, 0x70, 0x90, 0xd8, 
-0xd5, 0x03, 0x80, 0xc8, 0xe2, 0x40, 0xc0, 0x81, 0x8c, 0x01, 0xc0, 0x84, 
-0x30, 0x40, 0xc8, 0xe2, 0x42, 0xc0, 0x81, 0x8c, 0x01, 0x90, 0x84, 0x30, 
-0x3d, 0xd5, 0x02, 0x80, 0xc8, 0xe2, 0x3f, 0xc0, 0x81, 0x30, 0x2c, 0xc8, 
-0xe2, 0x3a, 0x40, 0x81, 0x30, 0x26, 0x90, 0x98, 0xd5, 0x02, 0x80, 0xc8, 
-0xe2, 0x2f, 0x40, 0x81, 0x30, 0x20, 0xc8, 0xe2, 0x31, 0x40, 0x81, 0x30, 
-0x1a, 0xd5, 0x02, 0x80, 0xc8, 0xe2, 0x2e, 0x40, 0x81, 0x30, 0x14, 0xc8, 
-0xe2, 0x28, 0xc0, 0x81, 0x30, 0x0e, 0x9a, 0x30, 0x04, 0x40, 0x91, 0x90, 
-0x90, 0xc8, 0x98, 0x50, 0x00, 0x80, 0xe5, 0x22, 0x86, 0xc0, 0x3a, 0x13, 
-0xe5, 0x22, 0x88, 0xc0, 0x3a, 0x37, 0xcb, 0x61, 0x2f, 0xc0, 0x85, 0x34, 
-0xce, 0x98, 0x50, 0x00, 0x80, 0xe5, 0x22, 0x76, 0xc0, 0x39, 0xd3, 0xe5, 
-0x22, 0x78, 0xc0, 0x39, 0xf7, 0xcb, 0x61, 0x2f, 0x80, 0x85, 0x34, 0xcd, 
-0x90, 0x48, 0xcb, 0xa1, 0x2f, 0x40, 0x85, 0x34, 0xcc, 0xcb, 0xa1, 0x2f, 
-0x00, 0x85, 0x34, 0xcb, 0x91, 0x90, 0x90, 0xc8, 0x98, 0x50, 0x00, 0x80, 
-0xe5, 0x22, 0x68, 0xc0, 0x39, 0xbb, 0xe5, 0x22, 0x5c, 0xc0, 0x39, 0x8b, 
-0xcb, 0x61, 0x2d, 0x40, 0x85, 0x34, 0xba, 0x98, 0x50, 0x00, 0x80, 0xe5, 
-0x22, 0x50, 0xc0, 0x39, 0x5b, 0xe5, 0x22, 0x44, 0xc0, 0x39, 0x2b, 0xcb, 
-0x61, 0x2d, 0x00, 0x85, 0x34, 0xb9, 0x90, 0x48, 0xcb, 0xa1, 0x2c, 0xc0, 
-0x85, 0x34, 0xb8, 0xcb, 0xa1, 0x2c, 0x80, 0x85, 0x34, 0xb7, 0x91, 0x00, 
-0x90, 0x80, 0x90, 0x40, 0xe5, 0x20, 0x02, 0x40, 0x30, 0x0a, 0xe5, 0x20, 
-0x01, 0x80, 0x30, 0x07, 0x90, 0x40, 0xe5, 0x20, 0x00, 0xc0, 0x30, 0x04, 
-0xe5, 0x20, 0x00, 0x00, 0x30, 0x01, 0x90, 0x80, 0x90, 0x40, 0xe5, 0x22, 
-0x35, 0xc0, 0x38, 0xcd, 0xe5, 0x22, 0x38, 0x00, 0x38, 0xf5, 0x90, 0x40, 
-0xe5, 0x22, 0x24, 0x40, 0x38, 0x87, 0xe5, 0x22, 0x26, 0x80, 0x38, 0xaf, 
-0x80, 0x99, 0x28, 0x02, 0xf0, 0x8c, 0x25, 0x48, 0x90, 0x80, 0x90, 0x40, 
-0xe5, 0x22, 0x8c, 0xc0, 0x3a, 0x2f, 0xe5, 0x22, 0x89, 0xc0, 0x3a, 0x3b, 
-0x90, 0x40, 0xe5, 0x22, 0x7c, 0xc0, 0x39, 0xef, 0xe5, 0x22, 0x79, 0xc0, 
-0x39, 0xfb, 0x91, 0x48, 0x90, 0xc8, 0x98, 0x50, 0x00, 0x80, 0xe5, 0x22, 
-0x6a, 0xc0, 0x39, 0xc3, 0xe5, 0x22, 0x5e, 0xc0, 0x39, 0x93, 0xcb, 0x61, 
-0x2b, 0x00, 0x85, 0x34, 0xb0, 0x90, 0x40, 0xe5, 0x22, 0x52, 0xc0, 0x39, 
-0x63, 0xe5, 0x22, 0x46, 0xc0, 0x39, 0x33, 0x90, 0x48, 0xcb, 0xa1, 0x2a, 
-0x80, 0x85, 0x34, 0xae, 0xcb, 0xa1, 0x2a, 0xc0, 0x85, 0x34, 0xaf, 0x10, 
-0x10, 0x90, 0x80, 0x90, 0x40, 0xe5, 0x22, 0x3c, 0x40, 0x38, 0xed, 0xe5, 
-0x22, 0x39, 0x40, 0x38, 0xfb, 0x90, 0x40, 0xe5, 0x22, 0x2a, 0xc0, 0x38, 
-0xa7, 0xe5, 0x22, 0x27, 0xc0, 0x38, 0xb5, 
-};
-
-static const struct ia64_dis_names ia64_dis_names[] = {
-{ 0x51, 41, 0, 10 },
-{ 0x31, 41, 1, 20 },
-{ 0x11, 42, 0, 19 },
-{ 0x29, 41, 0, 12 },
-{ 0x19, 41, 1, 24 },
-{ 0x9, 42, 0, 23 },
-{ 0x15, 41, 0, 14 },
-{ 0xd, 41, 1, 28 },
-{ 0x5, 42, 0, 27 },
-{ 0xb, 41, 0, 16 },
-{ 0x7, 41, 1, 32 },
-{ 0x3, 42, 0, 31 },
-{ 0x51, 39, 1, 58 },
-{ 0x50, 39, 0, 34 },
-{ 0xd1, 39, 1, 57 },
-{ 0xd0, 39, 0, 33 },
-{ 0x31, 39, 1, 68 },
-{ 0x30, 39, 1, 44 },
-{ 0x11, 40, 1, 67 },
-{ 0x10, 40, 0, 43 },
-{ 0x71, 39, 1, 66 },
-{ 0x70, 39, 1, 42 },
-{ 0x31, 40, 1, 65 },
-{ 0x30, 40, 0, 41 },
-{ 0x29, 39, 1, 60 },
-{ 0x28, 39, 0, 36 },
-{ 0x69, 39, 1, 59 },
-{ 0x68, 39, 0, 35 },
-{ 0x19, 39, 1, 72 },
-{ 0x18, 39, 1, 48 },
-{ 0x9, 40, 1, 71 },
-{ 0x8, 40, 0, 47 },
-{ 0x39, 39, 1, 70 },
-{ 0x38, 39, 1, 46 },
-{ 0x19, 40, 1, 69 },
-{ 0x18, 40, 0, 45 },
-{ 0x15, 39, 1, 62 },
-{ 0x14, 39, 0, 38 },
-{ 0x35, 39, 1, 61 },
-{ 0x34, 39, 0, 37 },
-{ 0xd, 39, 1, 76 },
-{ 0xc, 39, 1, 52 },
-{ 0x5, 40, 1, 75 },
-{ 0x4, 40, 0, 51 },
-{ 0x1d, 39, 1, 74 },
-{ 0x1c, 39, 1, 50 },
-{ 0xd, 40, 1, 73 },
-{ 0xc, 40, 0, 49 },
-{ 0xb, 39, 1, 64 },
-{ 0xa, 39, 0, 40 },
-{ 0x1b, 39, 1, 63 },
-{ 0x1a, 39, 0, 39 },
-{ 0x7, 39, 1, 80 },
-{ 0x6, 39, 1, 56 },
-{ 0x3, 40, 1, 79 },
-{ 0x2, 40, 0, 55 },
-{ 0xf, 39, 1, 78 },
-{ 0xe, 39, 1, 54 },
-{ 0x7, 40, 1, 77 },
-{ 0x6, 40, 0, 53 },
-{ 0x8, 38, 0, 82 },
-{ 0x18, 38, 0, 81 },
-{ 0x1, 38, 1, 86 },
-{ 0x2, 38, 0, 85 },
-{ 0x3, 38, 1, 84 },
-{ 0x4, 38, 0, 83 },
-{ 0x1, 336, 0, 87 },
-{ 0x20, 289, 0, 98 },
-{ 0x220, 289, 0, 94 },
-{ 0x1220, 289, 0, 91 },
-{ 0xa20, 289, 0, 92 },
-{ 0x620, 289, 0, 93 },
-{ 0x120, 289, 0, 95 },
-{ 0xa0, 289, 0, 96 },
-{ 0x60, 289, 0, 97 },
-{ 0x10, 289, 0, 102 },
-{ 0x90, 289, 0, 99 },
-{ 0x50, 289, 0, 100 },
-{ 0x30, 289, 0, 101 },
-{ 0x8, 289, 0, 103 },
-{ 0x4, 289, 0, 104 },
-{ 0x2, 289, 0, 105 },
-{ 0x1, 289, 0, 106 },
-{ 0x1, 411, 0, 108 },
-{ 0x3, 411, 0, 107 },
-{ 0x2, 417, 0, 109 },
-{ 0x1, 417, 0, 110 },
-{ 0x2, 413, 0, 111 },
-{ 0x1, 413, 0, 112 },
-{ 0x2, 415, 0, 113 },
-{ 0x1, 415, 0, 114 },
-{ 0x2, 419, 0, 115 },
-{ 0x1, 419, 0, 116 },
-{ 0x1, 268, 0, 143 },
-{ 0x5, 268, 0, 141 },
-{ 0x3, 268, 0, 142 },
-{ 0x140, 277, 0, 119 },
-{ 0x540, 277, 0, 117 },
-{ 0x340, 277, 0, 118 },
-{ 0xc0, 277, 0, 131 },
-{ 0x2c0, 277, 0, 129 },
-{ 0x1c0, 277, 0, 130 },
-{ 0x20, 277, 0, 146 },
-{ 0xa0, 277, 0, 144 },
-{ 0x60, 277, 0, 145 },
-{ 0x10, 277, 0, 158 },
-{ 0x50, 277, 0, 156 },
-{ 0x30, 277, 0, 157 },
-{ 0x8, 277, 0, 170 },
-{ 0x28, 277, 0, 168 },
-{ 0x18, 277, 0, 169 },
-{ 0x4, 277, 0, 180 },
-{ 0x2, 277, 0, 181 },
-{ 0x1, 277, 0, 182 },
-{ 0x140, 271, 0, 122 },
-{ 0x540, 271, 0, 120 },
-{ 0x340, 271, 0, 121 },
-{ 0xc0, 271, 0, 134 },
-{ 0x2c0, 271, 0, 132 },
-{ 0x1c0, 271, 0, 133 },
-{ 0x20, 271, 0, 149 },
-{ 0xa0, 271, 0, 147 },
-{ 0x60, 271, 0, 148 },
-{ 0x10, 271, 0, 161 },
-{ 0x50, 271, 0, 159 },
-{ 0x30, 271, 0, 160 },
-{ 0x8, 271, 0, 173 },
-{ 0x28, 271, 0, 171 },
-{ 0x18, 271, 0, 172 },
-{ 0x4, 271, 0, 183 },
-{ 0x2, 271, 0, 184 },
-{ 0x1, 271, 0, 185 },
-{ 0x140, 274, 0, 125 },
-{ 0x540, 274, 0, 123 },
-{ 0x340, 274, 0, 124 },
-{ 0xc0, 274, 0, 137 },
-{ 0x2c0, 274, 0, 135 },
-{ 0x1c0, 274, 0, 136 },
-{ 0x20, 274, 0, 152 },
-{ 0xa0, 274, 0, 150 },
-{ 0x60, 274, 0, 151 },
-{ 0x10, 274, 0, 164 },
-{ 0x50, 274, 0, 162 },
-{ 0x30, 274, 0, 163 },
-{ 0x8, 274, 0, 176 },
-{ 0x28, 274, 0, 174 },
-{ 0x18, 274, 0, 175 },
-{ 0x4, 274, 0, 186 },
-{ 0x2, 274, 0, 187 },
-{ 0x1, 274, 0, 188 },
-{ 0x140, 286, 0, 128 },
-{ 0x540, 286, 0, 126 },
-{ 0x340, 286, 0, 127 },
-{ 0xc0, 286, 0, 140 },
-{ 0x2c0, 286, 0, 138 },
-{ 0x1c0, 286, 0, 139 },
-{ 0x20, 286, 0, 155 },
-{ 0xa0, 286, 0, 153 },
-{ 0x60, 286, 0, 154 },
-{ 0x10, 286, 0, 167 },
-{ 0x50, 286, 0, 165 },
-{ 0x30, 286, 0, 166 },
-{ 0x8, 286, 0, 179 },
-{ 0x28, 286, 0, 177 },
-{ 0x18, 286, 0, 178 },
-{ 0x4, 286, 0, 189 },
-{ 0x2, 286, 0, 190 },
-{ 0x1, 286, 0, 191 },
-{ 0x8, 390, 0, 192 },
-{ 0x4, 390, 0, 193 },
-{ 0x2, 390, 0, 194 },
-{ 0x1, 390, 0, 195 },
-{ 0x20, 288, 0, 203 },
-{ 0x220, 288, 0, 199 },
-{ 0x1220, 288, 0, 196 },
-{ 0xa20, 288, 0, 197 },
-{ 0x620, 288, 0, 198 },
-{ 0x120, 288, 0, 200 },
-{ 0xa0, 288, 0, 201 },
-{ 0x60, 288, 0, 202 },
-{ 0x10, 288, 0, 207 },
-{ 0x90, 288, 0, 204 },
-{ 0x50, 288, 0, 205 },
-{ 0x30, 288, 0, 206 },
-{ 0x8, 288, 0, 208 },
-{ 0x4, 288, 0, 209 },
-{ 0x2, 288, 0, 210 },
-{ 0x1, 288, 0, 211 },
-{ 0x20, 287, 0, 219 },
-{ 0x220, 287, 0, 215 },
-{ 0x1220, 287, 0, 212 },
-{ 0xa20, 287, 0, 213 },
-{ 0x620, 287, 0, 214 },
-{ 0x120, 287, 0, 216 },
-{ 0xa0, 287, 0, 217 },
-{ 0x60, 287, 0, 218 },
-{ 0x10, 287, 0, 223 },
-{ 0x90, 287, 0, 220 },
-{ 0x50, 287, 0, 221 },
-{ 0x30, 287, 0, 222 },
-{ 0x8, 287, 0, 224 },
-{ 0x4, 287, 0, 225 },
-{ 0x2, 287, 0, 226 },
-{ 0x1, 287, 0, 227 },
-{ 0x140, 279, 0, 230 },
-{ 0x540, 279, 0, 228 },
-{ 0x340, 279, 0, 229 },
-{ 0xc0, 279, 0, 239 },
-{ 0x2c0, 279, 0, 237 },
-{ 0x1c0, 279, 0, 238 },
-{ 0x20, 279, 0, 248 },
-{ 0xa0, 279, 0, 246 },
-{ 0x60, 279, 0, 247 },
-{ 0x10, 279, 0, 257 },
-{ 0x50, 279, 0, 255 },
-{ 0x30, 279, 0, 256 },
-{ 0x8, 279, 0, 266 },
-{ 0x28, 279, 0, 264 },
-{ 0x18, 279, 0, 265 },
-{ 0x4, 279, 0, 273 },
-{ 0x2, 279, 0, 274 },
-{ 0x1, 279, 0, 275 },
-{ 0x140, 281, 0, 233 },
-{ 0x540, 281, 0, 231 },
-{ 0x340, 281, 0, 232 },
-{ 0xc0, 281, 0, 242 },
-{ 0x2c0, 281, 0, 240 },
-{ 0x1c0, 281, 0, 241 },
-{ 0x20, 281, 0, 251 },
-{ 0xa0, 281, 0, 249 },
-{ 0x60, 281, 0, 250 },
-{ 0x10, 281, 0, 260 },
-{ 0x50, 281, 0, 258 },
-{ 0x30, 281, 0, 259 },
-{ 0x8, 281, 0, 269 },
-{ 0x28, 281, 0, 267 },
-{ 0x18, 281, 0, 268 },
-{ 0x4, 281, 0, 276 },
-{ 0x2, 281, 0, 277 },
-{ 0x1, 281, 0, 278 },
-{ 0x140, 283, 0, 236 },
-{ 0x540, 283, 0, 234 },
-{ 0x340, 283, 0, 235 },
-{ 0xc0, 283, 0, 245 },
-{ 0x2c0, 283, 0, 243 },
-{ 0x1c0, 283, 0, 244 },
-{ 0x20, 283, 0, 254 },
-{ 0xa0, 283, 0, 252 },
-{ 0x60, 283, 0, 253 },
-{ 0x10, 283, 0, 263 },
-{ 0x50, 283, 0, 261 },
-{ 0x30, 283, 0, 262 },
-{ 0x8, 283, 0, 272 },
-{ 0x28, 283, 0, 270 },
-{ 0x18, 283, 0, 271 },
-{ 0x4, 283, 0, 279 },
-{ 0x2, 283, 0, 280 },
-{ 0x1, 283, 0, 281 },
-{ 0x140, 278, 0, 284 },
-{ 0x540, 278, 0, 282 },
-{ 0x340, 278, 0, 283 },
-{ 0xc0, 278, 0, 293 },
-{ 0x2c0, 278, 0, 291 },
-{ 0x1c0, 278, 0, 292 },
-{ 0x20, 278, 0, 302 },
-{ 0xa0, 278, 0, 300 },
-{ 0x60, 278, 0, 301 },
-{ 0x10, 278, 0, 311 },
-{ 0x50, 278, 0, 309 },
-{ 0x30, 278, 0, 310 },
-{ 0x8, 278, 0, 320 },
-{ 0x28, 278, 0, 318 },
-{ 0x18, 278, 0, 319 },
-{ 0x4, 278, 0, 327 },
-{ 0x2, 278, 0, 328 },
-{ 0x1, 278, 0, 329 },
-{ 0x140, 280, 0, 287 },
-{ 0x540, 280, 0, 285 },
-{ 0x340, 280, 0, 286 },
-{ 0xc0, 280, 0, 296 },
-{ 0x2c0, 280, 0, 294 },
-{ 0x1c0, 280, 0, 295 },
-{ 0x20, 280, 0, 305 },
-{ 0xa0, 280, 0, 303 },
-{ 0x60, 280, 0, 304 },
-{ 0x10, 280, 0, 314 },
-{ 0x50, 280, 0, 312 },
-{ 0x30, 280, 0, 313 },
-{ 0x8, 280, 0, 323 },
-{ 0x28, 280, 0, 321 },
-{ 0x18, 280, 0, 322 },
-{ 0x4, 280, 0, 330 },
-{ 0x2, 280, 0, 331 },
-{ 0x1, 280, 0, 332 },
-{ 0x140, 282, 0, 290 },
-{ 0x540, 282, 0, 288 },
-{ 0x340, 282, 0, 289 },
-{ 0xc0, 282, 0, 299 },
-{ 0x2c0, 282, 0, 297 },
-{ 0x1c0, 282, 0, 298 },
-{ 0x20, 282, 0, 308 },
-{ 0xa0, 282, 0, 306 },
-{ 0x60, 282, 0, 307 },
-{ 0x10, 282, 0, 317 },
-{ 0x50, 282, 0, 315 },
-{ 0x30, 282, 0, 316 },
-{ 0x8, 282, 0, 326 },
-{ 0x28, 282, 0, 324 },
-{ 0x18, 282, 0, 325 },
-{ 0x4, 282, 0, 333 },
-{ 0x2, 282, 0, 334 },
-{ 0x1, 282, 0, 335 },
-{ 0x1, 410, 0, 337 },
-{ 0x3, 410, 0, 336 },
-{ 0x2, 416, 0, 338 },
-{ 0x1, 416, 0, 339 },
-{ 0x2, 412, 0, 340 },
-{ 0x1, 412, 0, 341 },
-{ 0x2, 414, 0, 342 },
-{ 0x1, 414, 0, 343 },
-{ 0x2, 418, 0, 344 },
-{ 0x1, 418, 0, 345 },
-{ 0x1, 267, 0, 372 },
-{ 0x5, 267, 0, 370 },
-{ 0x3, 267, 0, 371 },
-{ 0x140, 276, 0, 348 },
-{ 0x540, 276, 0, 346 },
-{ 0x340, 276, 0, 347 },
-{ 0xc0, 276, 0, 360 },
-{ 0x2c0, 276, 0, 358 },
-{ 0x1c0, 276, 0, 359 },
-{ 0x20, 276, 0, 375 },
-{ 0xa0, 276, 0, 373 },
-{ 0x60, 276, 0, 374 },
-{ 0x10, 276, 0, 387 },
-{ 0x50, 276, 0, 385 },
-{ 0x30, 276, 0, 386 },
-{ 0x8, 276, 0, 399 },
-{ 0x28, 276, 0, 397 },
-{ 0x18, 276, 0, 398 },
-{ 0x4, 276, 0, 409 },
-{ 0x2, 276, 0, 410 },
-{ 0x1, 276, 0, 411 },
-{ 0x140, 270, 0, 351 },
-{ 0x540, 270, 0, 349 },
-{ 0x340, 270, 0, 350 },
-{ 0xc0, 270, 0, 363 },
-{ 0x2c0, 270, 0, 361 },
-{ 0x1c0, 270, 0, 362 },
-{ 0x20, 270, 0, 378 },
-{ 0xa0, 270, 0, 376 },
-{ 0x60, 270, 0, 377 },
-{ 0x10, 270, 0, 390 },
-{ 0x50, 270, 0, 388 },
-{ 0x30, 270, 0, 389 },
-{ 0x8, 270, 0, 402 },
-{ 0x28, 270, 0, 400 },
-{ 0x18, 270, 0, 401 },
-{ 0x4, 270, 0, 412 },
-{ 0x2, 270, 0, 413 },
-{ 0x1, 270, 0, 414 },
-{ 0x140, 273, 0, 354 },
-{ 0x540, 273, 0, 352 },
-{ 0x340, 273, 0, 353 },
-{ 0xc0, 273, 0, 366 },
-{ 0x2c0, 273, 0, 364 },
-{ 0x1c0, 273, 0, 365 },
-{ 0x20, 273, 0, 381 },
-{ 0xa0, 273, 0, 379 },
-{ 0x60, 273, 0, 380 },
-{ 0x10, 273, 0, 393 },
-{ 0x50, 273, 0, 391 },
-{ 0x30, 273, 0, 392 },
-{ 0x8, 273, 0, 405 },
-{ 0x28, 273, 0, 403 },
-{ 0x18, 273, 0, 404 },
-{ 0x4, 273, 0, 415 },
-{ 0x2, 273, 0, 416 },
-{ 0x1, 273, 0, 417 },
-{ 0x140, 285, 0, 357 },
-{ 0x540, 285, 0, 355 },
-{ 0x340, 285, 0, 356 },
-{ 0xc0, 285, 0, 369 },
-{ 0x2c0, 285, 0, 367 },
-{ 0x1c0, 285, 0, 368 },
-{ 0x20, 285, 0, 384 },
-{ 0xa0, 285, 0, 382 },
-{ 0x60, 285, 0, 383 },
-{ 0x10, 285, 0, 396 },
-{ 0x50, 285, 0, 394 },
-{ 0x30, 285, 0, 395 },
-{ 0x8, 285, 0, 408 },
-{ 0x28, 285, 0, 406 },
-{ 0x18, 285, 0, 407 },
-{ 0x4, 285, 0, 418 },
-{ 0x2, 285, 0, 419 },
-{ 0x1, 285, 0, 420 },
-{ 0x1, 266, 0, 447 },
-{ 0x5, 266, 0, 445 },
-{ 0x3, 266, 0, 446 },
-{ 0x140, 275, 0, 423 },
-{ 0x540, 275, 0, 421 },
-{ 0x340, 275, 0, 422 },
-{ 0xc0, 275, 0, 435 },
-{ 0x2c0, 275, 0, 433 },
-{ 0x1c0, 275, 0, 434 },
-{ 0x20, 275, 0, 450 },
-{ 0xa0, 275, 0, 448 },
-{ 0x60, 275, 0, 449 },
-{ 0x10, 275, 0, 462 },
-{ 0x50, 275, 0, 460 },
-{ 0x30, 275, 0, 461 },
-{ 0x8, 275, 0, 474 },
-{ 0x28, 275, 0, 472 },
-{ 0x18, 275, 0, 473 },
-{ 0x4, 275, 0, 484 },
-{ 0x2, 275, 0, 485 },
-{ 0x1, 275, 0, 486 },
-{ 0x140, 269, 0, 426 },
-{ 0x540, 269, 0, 424 },
-{ 0x340, 269, 0, 425 },
-{ 0xc0, 269, 0, 438 },
-{ 0x2c0, 269, 0, 436 },
-{ 0x1c0, 269, 0, 437 },
-{ 0x20, 269, 0, 453 },
-{ 0xa0, 269, 0, 451 },
-{ 0x60, 269, 0, 452 },
-{ 0x10, 269, 0, 465 },
-{ 0x50, 269, 0, 463 },
-{ 0x30, 269, 0, 464 },
-{ 0x8, 269, 0, 477 },
-{ 0x28, 269, 0, 475 },
-{ 0x18, 269, 0, 476 },
-{ 0x4, 269, 0, 487 },
-{ 0x2, 269, 0, 488 },
-{ 0x1, 269, 0, 489 },
-{ 0x140, 272, 0, 429 },
-{ 0x540, 272, 0, 427 },
-{ 0x340, 272, 0, 428 },
-{ 0xc0, 272, 0, 441 },
-{ 0x2c0, 272, 0, 439 },
-{ 0x1c0, 272, 0, 440 },
-{ 0x20, 272, 0, 456 },
-{ 0xa0, 272, 0, 454 },
-{ 0x60, 272, 0, 455 },
-{ 0x10, 272, 0, 468 },
-{ 0x50, 272, 0, 466 },
-{ 0x30, 272, 0, 467 },
-{ 0x8, 272, 0, 480 },
-{ 0x28, 272, 0, 478 },
-{ 0x18, 272, 0, 479 },
-{ 0x4, 272, 0, 490 },
-{ 0x2, 272, 0, 491 },
-{ 0x1, 272, 0, 492 },
-{ 0x140, 284, 0, 432 },
-{ 0x540, 284, 0, 430 },
-{ 0x340, 284, 0, 431 },
-{ 0xc0, 284, 0, 444 },
-{ 0x2c0, 284, 0, 442 },
-{ 0x1c0, 284, 0, 443 },
-{ 0x20, 284, 0, 459 },
-{ 0xa0, 284, 0, 457 },
-{ 0x60, 284, 0, 458 },
-{ 0x10, 284, 0, 471 },
-{ 0x50, 284, 0, 469 },
-{ 0x30, 284, 0, 470 },
-{ 0x8, 284, 0, 483 },
-{ 0x28, 284, 0, 481 },
-{ 0x18, 284, 0, 482 },
-{ 0x4, 284, 0, 493 },
-{ 0x2, 284, 0, 494 },
-{ 0x1, 284, 0, 495 },
-{ 0x8, 409, 0, 497 },
-{ 0x18, 409, 0, 496 },
-{ 0x4, 409, 0, 499 },
-{ 0xc, 409, 0, 498 },
-{ 0x2, 409, 0, 506 },
-{ 0x1, 409, 0, 507 },
-{ 0x4, 407, 0, 501 },
-{ 0xc, 407, 0, 500 },
-{ 0x2, 407, 0, 508 },
-{ 0x1, 407, 0, 509 },
-{ 0x4, 405, 0, 503 },
-{ 0xc, 405, 0, 502 },
-{ 0x2, 405, 0, 510 },
-{ 0x1, 405, 0, 511 },
-{ 0x4, 401, 0, 505 },
-{ 0xc, 401, 0, 504 },
-{ 0x2, 401, 0, 512 },
-{ 0x1, 401, 0, 513 },
-{ 0xa00, 265, 0, 528 },
-{ 0x2a00, 265, 0, 526 },
-{ 0x1a00, 265, 0, 527 },
-{ 0x600, 265, 0, 540 },
-{ 0x2600, 265, 0, 516 },
-{ 0xa600, 265, 0, 514 },
-{ 0x6600, 265, 0, 515 },
-{ 0x1600, 265, 0, 538 },
-{ 0xe00, 265, 0, 539 },
-{ 0x100, 265, 0, 552 },
-{ 0x500, 265, 0, 550 },
-{ 0x300, 265, 0, 551 },
-{ 0x80, 265, 0, 555 },
-{ 0x280, 265, 0, 553 },
-{ 0x180, 265, 0, 554 },
-{ 0x40, 265, 0, 567 },
-{ 0x140, 265, 0, 565 },
-{ 0xc0, 265, 0, 566 },
-{ 0x20, 265, 0, 579 },
-{ 0xa0, 265, 0, 577 },
-{ 0x60, 265, 0, 578 },
-{ 0x10, 265, 0, 591 },
-{ 0x50, 265, 0, 589 },
-{ 0x30, 265, 0, 590 },
-{ 0x8, 265, 0, 603 },
-{ 0x28, 265, 0, 601 },
-{ 0x18, 265, 0, 602 },
-{ 0x4, 265, 0, 613 },
-{ 0x2, 265, 0, 614 },
-{ 0x1, 265, 0, 615 },
-{ 0x500, 261, 0, 531 },
-{ 0x1500, 261, 0, 529 },
-{ 0xd00, 261, 0, 530 },
-{ 0x300, 261, 0, 543 },
-{ 0x1300, 261, 0, 519 },
-{ 0x5300, 261, 0, 517 },
-{ 0x3300, 261, 0, 518 },
-{ 0xb00, 261, 0, 541 },
-{ 0x700, 261, 0, 542 },
-{ 0x80, 261, 0, 558 },
-{ 0x280, 261, 0, 556 },
-{ 0x180, 261, 0, 557 },
-{ 0x40, 261, 0, 570 },
-{ 0x140, 261, 0, 568 },
-{ 0xc0, 261, 0, 569 },
-{ 0x20, 261, 0, 582 },
-{ 0xa0, 261, 0, 580 },
-{ 0x60, 261, 0, 581 },
-{ 0x10, 261, 0, 594 },
-{ 0x50, 261, 0, 592 },
-{ 0x30, 261, 0, 593 },
-{ 0x8, 261, 0, 606 },
-{ 0x28, 261, 0, 604 },
-{ 0x18, 261, 0, 605 },
-{ 0x4, 261, 0, 616 },
-{ 0x2, 261, 0, 617 },
-{ 0x1, 261, 0, 618 },
-{ 0x500, 258, 0, 534 },
-{ 0x1500, 258, 0, 532 },
-{ 0xd00, 258, 0, 533 },
-{ 0x300, 258, 0, 546 },
-{ 0x1300, 258, 0, 522 },
-{ 0x5300, 258, 0, 520 },
-{ 0x3300, 258, 0, 521 },
-{ 0xb00, 258, 0, 544 },
-{ 0x700, 258, 0, 545 },
-{ 0x80, 258, 0, 561 },
-{ 0x280, 258, 0, 559 },
-{ 0x180, 258, 0, 560 },
-{ 0x40, 258, 0, 573 },
-{ 0x140, 258, 0, 571 },
-{ 0xc0, 258, 0, 572 },
-{ 0x20, 258, 0, 585 },
-{ 0xa0, 258, 0, 583 },
-{ 0x60, 258, 0, 584 },
-{ 0x10, 258, 0, 597 },
-{ 0x50, 258, 0, 595 },
-{ 0x30, 258, 0, 596 },
-{ 0x8, 258, 0, 609 },
-{ 0x28, 258, 0, 607 },
-{ 0x18, 258, 0, 608 },
-{ 0x4, 258, 0, 619 },
-{ 0x2, 258, 0, 620 },
-{ 0x1, 258, 0, 621 },
-{ 0x500, 253, 0, 537 },
-{ 0x1500, 253, 0, 535 },
-{ 0xd00, 253, 0, 536 },
-{ 0x300, 253, 0, 549 },
-{ 0x1300, 253, 0, 525 },
-{ 0x5300, 253, 0, 523 },
-{ 0x3300, 253, 0, 524 },
-{ 0xb00, 253, 0, 547 },
-{ 0x700, 253, 0, 548 },
-{ 0x80, 253, 0, 564 },
-{ 0x280, 253, 0, 562 },
-{ 0x180, 253, 0, 563 },
-{ 0x40, 253, 0, 576 },
-{ 0x140, 253, 0, 574 },
-{ 0xc0, 253, 0, 575 },
-{ 0x20, 253, 0, 588 },
-{ 0xa0, 253, 0, 586 },
-{ 0x60, 253, 0, 587 },
-{ 0x10, 253, 0, 600 },
-{ 0x50, 253, 0, 598 },
-{ 0x30, 253, 0, 599 },
-{ 0x8, 253, 0, 612 },
-{ 0x28, 253, 0, 610 },
-{ 0x18, 253, 0, 611 },
-{ 0x4, 253, 0, 622 },
-{ 0x2, 253, 0, 623 },
-{ 0x1, 253, 0, 624 },
-{ 0x8, 238, 0, 625 },
-{ 0x4, 238, 0, 626 },
-{ 0x2, 238, 0, 627 },
-{ 0x1, 238, 0, 628 },
-{ 0x2, 176, 0, 631 },
-{ 0xa, 176, 0, 629 },
-{ 0x6, 176, 0, 630 },
-{ 0x1, 176, 0, 637 },
-{ 0x5, 176, 0, 635 },
-{ 0x3, 176, 0, 636 },
-{ 0x2, 175, 0, 634 },
-{ 0xa, 175, 0, 632 },
-{ 0x6, 175, 0, 633 },
-{ 0x1, 175, 0, 640 },
-{ 0x5, 175, 0, 638 },
-{ 0x3, 175, 0, 639 },
-{ 0x4, 451, 0, 641 },
-{ 0x2, 451, 0, 642 },
-{ 0x1, 451, 0, 643 },
-{ 0x4, 450, 0, 644 },
-{ 0x2, 450, 0, 645 },
-{ 0x1, 450, 0, 646 },
-{ 0x4, 449, 0, 647 },
-{ 0x2, 449, 0, 648 },
-{ 0x1, 449, 0, 649 },
-{ 0x4, 448, 0, 650 },
-{ 0x2, 448, 0, 651 },
-{ 0x1, 448, 0, 652 },
-{ 0x2, 123, 1, 658 },
-{ 0x2, 124, 0, 657 },
-{ 0xa, 123, 1, 654 },
-{ 0xa, 124, 0, 653 },
-{ 0x6, 123, 1, 656 },
-{ 0x6, 124, 0, 655 },
-{ 0x1, 123, 1, 688 },
-{ 0x1, 124, 0, 687 },
-{ 0x5, 123, 1, 684 },
-{ 0x5, 124, 0, 683 },
-{ 0x3, 123, 1, 686 },
-{ 0x3, 124, 0, 685 },
-{ 0x2, 131, 1, 664 },
-{ 0x2, 132, 0, 663 },
-{ 0xa, 131, 1, 660 },
-{ 0xa, 132, 0, 659 },
-{ 0x6, 131, 1, 662 },
-{ 0x6, 132, 0, 661 },
-{ 0x1, 131, 1, 694 },
-{ 0x1, 132, 0, 693 },
-{ 0x5, 131, 1, 690 },
-{ 0x5, 132, 0, 689 },
-{ 0x3, 131, 1, 692 },
-{ 0x3, 132, 0, 691 },
-{ 0x2, 129, 1, 670 },
-{ 0x2, 130, 0, 669 },
-{ 0xa, 129, 1, 666 },
-{ 0xa, 130, 0, 665 },
-{ 0x6, 129, 1, 668 },
-{ 0x6, 130, 0, 667 },
-{ 0x1, 129, 1, 700 },
-{ 0x1, 130, 0, 699 },
-{ 0x5, 129, 1, 696 },
-{ 0x5, 130, 0, 695 },
-{ 0x3, 129, 1, 698 },
-{ 0x3, 130, 0, 697 },
-{ 0x2, 127, 1, 676 },
-{ 0x2, 128, 0, 675 },
-{ 0xa, 127, 1, 672 },
-{ 0xa, 128, 0, 671 },
-{ 0x6, 127, 1, 674 },
-{ 0x6, 128, 0, 673 },
-{ 0x1, 127, 1, 706 },
-{ 0x1, 128, 0, 705 },
-{ 0x5, 127, 1, 702 },
-{ 0x5, 128, 0, 701 },
-{ 0x3, 127, 1, 704 },
-{ 0x3, 128, 0, 703 },
-{ 0x2, 125, 1, 682 },
-{ 0x2, 126, 0, 681 },
-{ 0xa, 125, 1, 678 },
-{ 0xa, 126, 0, 677 },
-{ 0x6, 125, 1, 680 },
-{ 0x6, 126, 0, 679 },
-{ 0x1, 125, 1, 712 },
-{ 0x1, 126, 0, 711 },
-{ 0x5, 125, 1, 708 },
-{ 0x5, 126, 0, 707 },
-{ 0x3, 125, 1, 710 },
-{ 0x3, 126, 0, 709 },
-{ 0x4, 402, 1, 718 },
-{ 0x4, 403, 0, 717 },
-{ 0xc, 402, 1, 716 },
-{ 0xc, 403, 0, 715 },
-{ 0x2, 402, 1, 728 },
-{ 0x2, 403, 0, 727 },
-{ 0x1, 402, 1, 730 },
-{ 0x1, 403, 0, 729 },
-{ 0x8, 408, 0, 714 },
-{ 0x18, 408, 0, 713 },
-{ 0x4, 408, 0, 720 },
-{ 0xc, 408, 0, 719 },
-{ 0x2, 408, 0, 731 },
-{ 0x1, 408, 0, 732 },
-{ 0x4, 406, 0, 722 },
-{ 0xc, 406, 0, 721 },
-{ 0x2, 406, 0, 733 },
-{ 0x1, 406, 0, 734 },
-{ 0x4, 404, 0, 724 },
-{ 0xc, 404, 0, 723 },
-{ 0x2, 404, 0, 735 },
-{ 0x1, 404, 0, 736 },
-{ 0x4, 400, 0, 726 },
-{ 0xc, 400, 0, 725 },
-{ 0x2, 400, 0, 737 },
-{ 0x1, 400, 0, 738 },
-{ 0xa00, 264, 0, 753 },
-{ 0x2a00, 264, 0, 751 },
-{ 0x1a00, 264, 0, 752 },
-{ 0x600, 264, 0, 765 },
-{ 0x2600, 264, 0, 741 },
-{ 0xa600, 264, 0, 739 },
-{ 0x6600, 264, 0, 740 },
-{ 0x1600, 264, 0, 763 },
-{ 0xe00, 264, 0, 764 },
-{ 0x100, 264, 0, 777 },
-{ 0x500, 264, 0, 775 },
-{ 0x300, 264, 0, 776 },
-{ 0x80, 264, 0, 780 },
-{ 0x280, 264, 0, 778 },
-{ 0x180, 264, 0, 779 },
-{ 0x40, 264, 0, 792 },
-{ 0x140, 264, 0, 790 },
-{ 0xc0, 264, 0, 791 },
-{ 0x20, 264, 0, 804 },
-{ 0xa0, 264, 0, 802 },
-{ 0x60, 264, 0, 803 },
-{ 0x10, 264, 0, 816 },
-{ 0x50, 264, 0, 814 },
-{ 0x30, 264, 0, 815 },
-{ 0x8, 264, 0, 828 },
-{ 0x28, 264, 0, 826 },
-{ 0x18, 264, 0, 827 },
-{ 0x4, 264, 0, 838 },
-{ 0x2, 264, 0, 839 },
-{ 0x1, 264, 0, 840 },
-{ 0x500, 260, 0, 756 },
-{ 0x1500, 260, 0, 754 },
-{ 0xd00, 260, 0, 755 },
-{ 0x300, 260, 0, 768 },
-{ 0x1300, 260, 0, 744 },
-{ 0x5300, 260, 0, 742 },
-{ 0x3300, 260, 0, 743 },
-{ 0xb00, 260, 0, 766 },
-{ 0x700, 260, 0, 767 },
-{ 0x80, 260, 0, 783 },
-{ 0x280, 260, 0, 781 },
-{ 0x180, 260, 0, 782 },
-{ 0x40, 260, 0, 795 },
-{ 0x140, 260, 0, 793 },
-{ 0xc0, 260, 0, 794 },
-{ 0x20, 260, 0, 807 },
-{ 0xa0, 260, 0, 805 },
-{ 0x60, 260, 0, 806 },
-{ 0x10, 260, 0, 819 },
-{ 0x50, 260, 0, 817 },
-{ 0x30, 260, 0, 818 },
-{ 0x8, 260, 0, 831 },
-{ 0x28, 260, 0, 829 },
-{ 0x18, 260, 0, 830 },
-{ 0x4, 260, 0, 841 },
-{ 0x2, 260, 0, 842 },
-{ 0x1, 260, 0, 843 },
-{ 0x500, 257, 0, 759 },
-{ 0x1500, 257, 0, 757 },
-{ 0xd00, 257, 0, 758 },
-{ 0x300, 257, 0, 771 },
-{ 0x1300, 257, 0, 747 },
-{ 0x5300, 257, 0, 745 },
-{ 0x3300, 257, 0, 746 },
-{ 0xb00, 257, 0, 769 },
-{ 0x700, 257, 0, 770 },
-{ 0x80, 257, 0, 786 },
-{ 0x280, 257, 0, 784 },
-{ 0x180, 257, 0, 785 },
-{ 0x40, 257, 0, 798 },
-{ 0x140, 257, 0, 796 },
-{ 0xc0, 257, 0, 797 },
-{ 0x20, 257, 0, 810 },
-{ 0xa0, 257, 0, 808 },
-{ 0x60, 257, 0, 809 },
-{ 0x10, 257, 0, 822 },
-{ 0x50, 257, 0, 820 },
-{ 0x30, 257, 0, 821 },
-{ 0x8, 257, 0, 834 },
-{ 0x28, 257, 0, 832 },
-{ 0x18, 257, 0, 833 },
-{ 0x4, 257, 0, 844 },
-{ 0x2, 257, 0, 845 },
-{ 0x1, 257, 0, 846 },
-{ 0x500, 252, 0, 762 },
-{ 0x1500, 252, 0, 760 },
-{ 0xd00, 252, 0, 761 },
-{ 0x300, 252, 0, 774 },
-{ 0x1300, 252, 0, 750 },
-{ 0x5300, 252, 0, 748 },
-{ 0x3300, 252, 0, 749 },
-{ 0xb00, 252, 0, 772 },
-{ 0x700, 252, 0, 773 },
-{ 0x80, 252, 0, 789 },
-{ 0x280, 252, 0, 787 },
-{ 0x180, 252, 0, 788 },
-{ 0x40, 252, 0, 801 },
-{ 0x140, 252, 0, 799 },
-{ 0xc0, 252, 0, 800 },
-{ 0x20, 252, 0, 813 },
-{ 0xa0, 252, 0, 811 },
-{ 0x60, 252, 0, 812 },
-{ 0x10, 252, 0, 825 },
-{ 0x50, 252, 0, 823 },
-{ 0x30, 252, 0, 824 },
-{ 0x8, 252, 0, 837 },
-{ 0x28, 252, 0, 835 },
-{ 0x18, 252, 0, 836 },
-{ 0x4, 252, 0, 847 },
-{ 0x2, 252, 0, 848 },
-{ 0x1, 252, 0, 849 },
-{ 0x8, 254, 1, 895 },
-{ 0x8, 255, 0, 894 },
-{ 0x28, 254, 1, 891 },
-{ 0x28, 255, 0, 890 },
-{ 0x18, 254, 1, 893 },
-{ 0x18, 255, 0, 892 },
-{ 0x4, 254, 1, 957 },
-{ 0x4, 255, 0, 956 },
-{ 0x2, 254, 1, 959 },
-{ 0x2, 255, 0, 958 },
-{ 0x1, 254, 1, 961 },
-{ 0x1, 255, 0, 960 },
-{ 0xa00, 262, 0, 865 },
-{ 0x2a00, 262, 0, 863 },
-{ 0x1a00, 262, 0, 864 },
-{ 0x600, 262, 0, 877 },
-{ 0x2600, 262, 0, 853 },
-{ 0xa600, 262, 0, 851 },
-{ 0x6600, 262, 0, 852 },
-{ 0x1600, 262, 0, 875 },
-{ 0xe00, 262, 0, 876 },
-{ 0x100, 262, 0, 889 },
-{ 0x500, 262, 0, 887 },
-{ 0x300, 262, 0, 888 },
-{ 0x80, 262, 0, 898 },
-{ 0x280, 262, 0, 896 },
-{ 0x180, 262, 0, 897 },
-{ 0x40, 262, 0, 910 },
-{ 0x140, 262, 0, 908 },
-{ 0xc0, 262, 0, 909 },
-{ 0x20, 262, 0, 922 },
-{ 0xa0, 262, 0, 920 },
-{ 0x60, 262, 0, 921 },
-{ 0x10, 262, 0, 934 },
-{ 0x50, 262, 0, 932 },
-{ 0x30, 262, 0, 933 },
-{ 0x8, 262, 0, 946 },
-{ 0x28, 262, 0, 944 },
-{ 0x18, 262, 0, 945 },
-{ 0x4, 262, 0, 962 },
-{ 0x2, 262, 0, 963 },
-{ 0x1, 262, 1, 964 },
-{ 0x1, 263, 0, 850 },
-{ 0x500, 259, 0, 868 },
-{ 0x1500, 259, 0, 866 },
-{ 0xd00, 259, 0, 867 },
-{ 0x300, 259, 0, 880 },
-{ 0x1300, 259, 0, 856 },
-{ 0x5300, 259, 0, 854 },
-{ 0x3300, 259, 0, 855 },
-{ 0xb00, 259, 0, 878 },
-{ 0x700, 259, 0, 879 },
-{ 0x80, 259, 0, 901 },
-{ 0x280, 259, 0, 899 },
-{ 0x180, 259, 0, 900 },
-{ 0x40, 259, 0, 913 },
-{ 0x140, 259, 0, 911 },
-{ 0xc0, 259, 0, 912 },
-{ 0x20, 259, 0, 925 },
-{ 0xa0, 259, 0, 923 },
-{ 0x60, 259, 0, 924 },
-{ 0x10, 259, 0, 937 },
-{ 0x50, 259, 0, 935 },
-{ 0x30, 259, 0, 936 },
-{ 0x8, 259, 0, 949 },
-{ 0x28, 259, 0, 947 },
-{ 0x18, 259, 0, 948 },
-{ 0x4, 259, 0, 965 },
-{ 0x2, 259, 0, 966 },
-{ 0x1, 259, 0, 967 },
-{ 0x500, 256, 0, 871 },
-{ 0x1500, 256, 0, 869 },
-{ 0xd00, 256, 0, 870 },
-{ 0x300, 256, 0, 883 },
-{ 0x1300, 256, 0, 859 },
-{ 0x5300, 256, 0, 857 },
-{ 0x3300, 256, 0, 858 },
-{ 0xb00, 256, 0, 881 },
-{ 0x700, 256, 0, 882 },
-{ 0x80, 256, 0, 904 },
-{ 0x280, 256, 0, 902 },
-{ 0x180, 256, 0, 903 },
-{ 0x40, 256, 0, 916 },
-{ 0x140, 256, 0, 914 },
-{ 0xc0, 256, 0, 915 },
-{ 0x20, 256, 0, 928 },
-{ 0xa0, 256, 0, 926 },
-{ 0x60, 256, 0, 927 },
-{ 0x10, 256, 0, 940 },
-{ 0x50, 256, 0, 938 },
-{ 0x30, 256, 0, 939 },
-{ 0x8, 256, 0, 952 },
-{ 0x28, 256, 0, 950 },
-{ 0x18, 256, 0, 951 },
-{ 0x4, 256, 0, 968 },
-{ 0x2, 256, 0, 969 },
-{ 0x1, 256, 0, 970 },
-{ 0x500, 251, 0, 874 },
-{ 0x1500, 251, 0, 872 },
-{ 0xd00, 251, 0, 873 },
-{ 0x300, 251, 0, 886 },
-{ 0x1300, 251, 0, 862 },
-{ 0x5300, 251, 0, 860 },
-{ 0x3300, 251, 0, 861 },
-{ 0xb00, 251, 0, 884 },
-{ 0x700, 251, 0, 885 },
-{ 0x80, 251, 0, 907 },
-{ 0x280, 251, 0, 905 },
-{ 0x180, 251, 0, 906 },
-{ 0x40, 251, 0, 919 },
-{ 0x140, 251, 0, 917 },
-{ 0xc0, 251, 0, 918 },
-{ 0x20, 251, 0, 931 },
-{ 0xa0, 251, 0, 929 },
-{ 0x60, 251, 0, 930 },
-{ 0x10, 251, 0, 943 },
-{ 0x50, 251, 0, 941 },
-{ 0x30, 251, 0, 942 },
-{ 0x8, 251, 0, 955 },
-{ 0x28, 251, 0, 953 },
-{ 0x18, 251, 0, 954 },
-{ 0x4, 251, 0, 971 },
-{ 0x2, 251, 0, 972 },
-{ 0x1, 251, 0, 973 },
-{ 0x2, 150, 0, 975 },
-{ 0x1, 150, 0, 976 },
-{ 0x1, 50, 0, 977 },
-{ 0x3, 49, 0, 978 },
-{ 0x1, 428, 0, 979 },
-{ 0x1, 442, 0, 980 },
-{ 0x2, 386, 0, 983 },
-{ 0x1, 386, 0, 984 },
-{ 0x2, 384, 0, 985 },
-{ 0x1, 384, 0, 986 },
-{ 0x1, 383, 0, 987 },
-{ 0x1, 328, 0, 992 },
-{ 0x1, 327, 0, 993 },
-{ 0x1, 326, 0, 994 },
-{ 0x1, 325, 0, 995 },
-{ 0x1, 250, 0, 996 },
-{ 0x1, 249, 0, 997 },
-{ 0x1, 324, 0, 998 },
-{ 0x1, 323, 0, 999 },
-{ 0x1, 322, 0, 1000 },
-{ 0x1, 321, 0, 1001 },
-{ 0x1, 320, 0, 1002 },
-{ 0x1, 319, 0, 1003 },
-{ 0x1, 318, 0, 1004 },
-{ 0x2, 248, 0, 1005 },
-{ 0x1, 248, 0, 1006 },
-{ 0x2, 366, 0, 1012 },
-{ 0x1, 366, 0, 1013 },
-{ 0x1, 317, 0, 1014 },
-{ 0x1, 316, 0, 1015 },
-{ 0x1, 315, 0, 1016 },
-{ 0x1, 314, 0, 1017 },
-{ 0x1, 8, 1, 1019 },
-{ 0x1, 9, 0, 1018 },
-{ 0x1, 313, 0, 1020 },
-{ 0x1, 312, 0, 1021 },
-{ 0x1, 311, 0, 1022 },
-{ 0x1, 310, 0, 1023 },
-{ 0x1, 388, 0, 1024 },
-{ 0x1, 399, 0, 1025 },
-{ 0x1, 389, 0, 1026 },
-{ 0x1, 423, 0, 1027 },
-{ 0x1, 309, 0, 1031 },
-{ 0x1, 247, 0, 1032 },
-{ 0x1, 177, 0, 1035 },
-{ 0x2, 291, 0, 1039 },
-{ 0x1, 291, 0, 1040 },
-{ 0x1, 236, 0, 1041 },
-{ 0x5, 48, 0, 1043 },
-{ 0x3, 48, 0, 1044 },
-{ 0x5, 47, 0, 1045 },
-{ 0x3, 47, 0, 1046 },
-{ 0x1, 365, 0, 1047 },
-{ 0x1, 373, 0, 1048 },
-{ 0x1, 371, 0, 1049 },
-{ 0x1, 392, 0, 1050 },
-{ 0x1, 372, 0, 1051 },
-{ 0x1, 370, 0, 1052 },
-{ 0x2, 378, 0, 1053 },
-{ 0x1, 378, 0, 1055 },
-{ 0x2, 376, 0, 1054 },
-{ 0x1, 376, 0, 1056 },
-{ 0x2, 396, 0, 1057 },
-{ 0x1, 396, 0, 1060 },
-{ 0x2, 377, 0, 1058 },
-{ 0x1, 377, 0, 1061 },
-{ 0x2, 375, 0, 1059 },
-{ 0x1, 375, 0, 1062 },
-{ 0x1, 338, 0, 1063 },
-{ 0x1, 337, 0, 1064 },
-{ 0x1, 369, 0, 1065 },
-{ 0x1, 360, 0, 1066 },
-{ 0x1, 362, 0, 1067 },
-{ 0x1, 359, 0, 1068 },
-{ 0x1, 361, 0, 1069 },
-{ 0x2, 446, 0, 1070 },
-{ 0x1, 446, 0, 1073 },
-{ 0x2, 445, 0, 1071 },
-{ 0x1, 445, 0, 1074 },
-{ 0x2, 444, 0, 1072 },
-{ 0x1, 444, 0, 1075 },
-{ 0x1, 348, 0, 1076 },
-{ 0x2, 347, 0, 1077 },
-{ 0x1, 347, 0, 1078 },
-{ 0x2, 294, 0, 1079 },
-{ 0x1, 294, 0, 1082 },
-{ 0x2, 293, 0, 1080 },
-{ 0x1, 293, 0, 1083 },
-{ 0x2, 292, 0, 1081 },
-{ 0x1, 292, 0, 1084 },
-{ 0x2, 363, 0, 1085 },
-{ 0x1, 363, 0, 1086 },
-{ 0x2, 364, 0, 1087 },
-{ 0x1, 364, 0, 1088 },
-{ 0xa, 438, 1, 1100 },
-{ 0xa, 439, 1, 1099 },
-{ 0xa, 440, 1, 1098 },
-{ 0xa, 441, 0, 1097 },
-{ 0x1a, 438, 1, 1092 },
-{ 0x1a, 439, 1, 1091 },
-{ 0x32, 440, 1, 1090 },
-{ 0x32, 441, 0, 1089 },
-{ 0x6, 438, 1, 1108 },
-{ 0x6, 439, 1, 1107 },
-{ 0x6, 440, 1, 1106 },
-{ 0x6, 441, 0, 1105 },
-{ 0x1, 438, 1, 1120 },
-{ 0x1, 439, 1, 1119 },
-{ 0x1, 440, 1, 1118 },
-{ 0x1, 441, 0, 1117 },
-{ 0x9, 438, 1, 1104 },
-{ 0x9, 439, 1, 1103 },
-{ 0x9, 440, 1, 1102 },
-{ 0x9, 441, 0, 1101 },
-{ 0x19, 438, 1, 1096 },
-{ 0x19, 439, 1, 1095 },
-{ 0x31, 440, 1, 1094 },
-{ 0x31, 441, 0, 1093 },
-{ 0x5, 438, 1, 1112 },
-{ 0x5, 439, 1, 1111 },
-{ 0x5, 440, 1, 1110 },
-{ 0x5, 441, 0, 1109 },
-{ 0x3, 438, 1, 1116 },
-{ 0x3, 439, 1, 1115 },
-{ 0x3, 440, 1, 1114 },
-{ 0x3, 441, 0, 1113 },
-{ 0xa, 429, 1, 1132 },
-{ 0xa, 430, 1, 1131 },
-{ 0xa, 431, 1, 1130 },
-{ 0xa, 432, 0, 1129 },
-{ 0x1a, 429, 1, 1124 },
-{ 0x1a, 430, 1, 1123 },
-{ 0x32, 431, 1, 1122 },
-{ 0x32, 432, 0, 1121 },
-{ 0x6, 429, 1, 1140 },
-{ 0x6, 430, 1, 1139 },
-{ 0x6, 431, 1, 1138 },
-{ 0x6, 432, 0, 1137 },
-{ 0x1, 429, 1, 1152 },
-{ 0x1, 430, 1, 1151 },
-{ 0x1, 431, 1, 1150 },
-{ 0x1, 432, 0, 1149 },
-{ 0x9, 429, 1, 1136 },
-{ 0x9, 430, 1, 1135 },
-{ 0x9, 431, 1, 1134 },
-{ 0x9, 432, 0, 1133 },
-{ 0x19, 429, 1, 1128 },
-{ 0x19, 430, 1, 1127 },
-{ 0x31, 431, 1, 1126 },
-{ 0x31, 432, 0, 1125 },
-{ 0x5, 429, 1, 1144 },
-{ 0x5, 430, 1, 1143 },
-{ 0x5, 431, 1, 1142 },
-{ 0x5, 432, 0, 1141 },
-{ 0x3, 429, 1, 1148 },
-{ 0x3, 430, 1, 1147 },
-{ 0x3, 431, 1, 1146 },
-{ 0x3, 432, 0, 1145 },
-{ 0xa, 433, 1, 1164 },
-{ 0xa, 434, 1, 1163 },
-{ 0xa, 435, 1, 1162 },
-{ 0xa, 436, 0, 1161 },
-{ 0x1a, 433, 1, 1156 },
-{ 0x1a, 434, 1, 1155 },
-{ 0x32, 435, 1, 1154 },
-{ 0x32, 436, 0, 1153 },
-{ 0x6, 433, 1, 1172 },
-{ 0x6, 434, 1, 1171 },
-{ 0x6, 435, 1, 1170 },
-{ 0x6, 436, 0, 1169 },
-{ 0x1, 433, 1, 1184 },
-{ 0x1, 434, 1, 1183 },
-{ 0x1, 435, 1, 1182 },
-{ 0x1, 436, 0, 1181 },
-{ 0x9, 433, 1, 1168 },
-{ 0x9, 434, 1, 1167 },
-{ 0x9, 435, 1, 1166 },
-{ 0x9, 436, 0, 1165 },
-{ 0x19, 433, 1, 1160 },
-{ 0x19, 434, 1, 1159 },
-{ 0x31, 435, 1, 1158 },
-{ 0x31, 436, 0, 1157 },
-{ 0x5, 433, 1, 1176 },
-{ 0x5, 434, 1, 1175 },
-{ 0x5, 435, 1, 1174 },
-{ 0x5, 436, 0, 1173 },
-{ 0x3, 433, 1, 1180 },
-{ 0x3, 434, 1, 1179 },
-{ 0x3, 435, 1, 1178 },
-{ 0x3, 436, 0, 1177 },
-{ 0x1, 139, 0, 1185 },
-{ 0x1, 138, 0, 1186 },
-{ 0x1, 391, 1, 1188 },
-{ 0x1, 137, 0, 1187 },
-{ 0x2, 395, 1, 1190 },
-{ 0x2, 141, 0, 1189 },
-{ 0x1, 395, 1, 1192 },
-{ 0x1, 141, 0, 1191 },
-{ 0x1, 397, 0, 1193 },
-{ 0x1, 136, 0, 1194 },
-{ 0x2, 135, 0, 1195 },
-{ 0x2, 134, 0, 1196 },
-{ 0x1, 459, 1, 1202 },
-{ 0x1, 246, 0, 1033 },
-{ 0x1, 458, 0, 1203 },
-{ 0x1, 457, 1, 1204 },
-{ 0x1, 245, 0, 1042 },
-{ 0x1, 308, 0, 1205 },
-{ 0x1, 307, 1, 1206 },
-{ 0x1, 290, 0, 1034 },
-{ 0x1, 306, 0, 1207 },
-{ 0x1, 305, 1, 1208 },
-{ 0x1, 427, 0, 1036 },
-{ 0x1, 304, 1, 1209 },
-{ 0x1, 398, 0, 1038 },
-{ 0x1, 303, 0, 1210 },
-{ 0x1, 302, 0, 1211 },
-{ 0x1, 301, 0, 1212 },
-{ 0x1, 300, 1, 1213 },
-{ 0x2, 398, 0, 1037 },
-{ 0x10, 299, 0, 1217 },
-{ 0x90, 299, 0, 1215 },
-{ 0x190, 299, 0, 1214 },
-{ 0x50, 299, 0, 1216 },
-{ 0x30, 299, 0, 1219 },
-{ 0x70, 299, 0, 1218 },
-{ 0x8, 299, 0, 1221 },
-{ 0x18, 299, 0, 1220 },
-{ 0x4, 299, 0, 1222 },
-{ 0x1, 299, 0, 1225 },
-{ 0x3, 299, 0, 1224 },
-{ 0x1, 298, 1, 1226 },
-{ 0x2, 299, 0, 1223 },
-{ 0x3, 46, 0, 1227 },
-{ 0x1, 241, 1, 1228 },
-{ 0x1, 242, 1, 1028 },
-{ 0x1, 243, 0, 88 },
-{ 0x1, 341, 1, 1229 },
-{ 0x1, 342, 1, 1029 },
-{ 0x1, 343, 0, 89 },
-{ 0x1, 34, 1, 1230 },
-{ 0x1, 35, 1, 1030 },
-{ 0x1, 36, 0, 90 },
-{ 0x1, 230, 0, 1231 },
-{ 0x4, 452, 0, 1232 },
-{ 0x2, 452, 0, 1233 },
-{ 0x1, 452, 1, 1235 },
-{ 0x1, 453, 0, 1234 },
-{ 0x8, 454, 0, 1236 },
-{ 0x4, 454, 0, 1237 },
-{ 0x1, 454, 1, 1239 },
-{ 0x2, 454, 0, 1238 },
-{ 0x8, 219, 0, 1240 },
-{ 0x4, 219, 0, 1241 },
-{ 0x2, 219, 0, 1242 },
-{ 0x1, 219, 1, 1244 },
-{ 0x1, 220, 0, 1243 },
-{ 0x10, 221, 0, 1245 },
-{ 0x8, 221, 0, 1246 },
-{ 0x4, 221, 0, 1247 },
-{ 0x1, 221, 1, 1249 },
-{ 0x2, 221, 0, 1248 },
-{ 0x220, 191, 0, 1250 },
-{ 0x120, 191, 0, 1251 },
-{ 0xa0, 191, 0, 1252 },
-{ 0x60, 191, 1, 1254 },
-{ 0x4, 192, 0, 1253 },
-{ 0x110, 191, 0, 1260 },
-{ 0x90, 191, 0, 1261 },
-{ 0x50, 191, 0, 1262 },
-{ 0x30, 191, 1, 1264 },
-{ 0x2, 192, 0, 1263 },
-{ 0x8, 191, 0, 1265 },
-{ 0x4, 191, 0, 1266 },
-{ 0x2, 191, 0, 1267 },
-{ 0x1, 191, 1, 1269 },
-{ 0x1, 192, 0, 1268 },
-{ 0x440, 193, 0, 1255 },
-{ 0x240, 193, 0, 1256 },
-{ 0x140, 193, 0, 1257 },
-{ 0xc0, 193, 1, 1259 },
-{ 0x40, 193, 0, 1258 },
-{ 0x220, 193, 0, 1270 },
-{ 0x120, 193, 0, 1271 },
-{ 0xa0, 193, 0, 1272 },
-{ 0x60, 193, 1, 1274 },
-{ 0x20, 193, 0, 1273 },
-{ 0x10, 193, 0, 1275 },
-{ 0x8, 193, 0, 1276 },
-{ 0x4, 193, 0, 1277 },
-{ 0x1, 193, 1, 1279 },
-{ 0x2, 193, 0, 1278 },
-{ 0x8, 215, 0, 1280 },
-{ 0x4, 215, 0, 1281 },
-{ 0x2, 215, 0, 1282 },
-{ 0x1, 215, 1, 1284 },
-{ 0x1, 216, 0, 1283 },
-{ 0x220, 187, 0, 1285 },
-{ 0x120, 187, 0, 1286 },
-{ 0xa0, 187, 0, 1287 },
-{ 0x60, 187, 1, 1289 },
-{ 0x4, 188, 0, 1288 },
-{ 0x110, 187, 0, 1295 },
-{ 0x90, 187, 0, 1296 },
-{ 0x50, 187, 0, 1297 },
-{ 0x30, 187, 1, 1299 },
-{ 0x2, 188, 0, 1298 },
-{ 0x8, 187, 0, 1300 },
-{ 0x4, 187, 0, 1301 },
-{ 0x2, 187, 0, 1302 },
-{ 0x1, 187, 1, 1304 },
-{ 0x1, 188, 0, 1303 },
-{ 0x440, 233, 0, 1290 },
-{ 0x240, 233, 0, 1291 },
-{ 0x140, 233, 0, 1292 },
-{ 0xc0, 233, 1, 1294 },
-{ 0x40, 233, 0, 1293 },
-{ 0x220, 233, 0, 1305 },
-{ 0x120, 233, 0, 1306 },
-{ 0xa0, 233, 0, 1307 },
-{ 0x60, 233, 1, 1309 },
-{ 0x20, 233, 0, 1308 },
-{ 0x10, 233, 0, 1310 },
-{ 0x8, 233, 0, 1311 },
-{ 0x4, 233, 0, 1312 },
-{ 0x1, 233, 1, 1314 },
-{ 0x2, 233, 0, 1313 },
-{ 0x8, 207, 0, 1315 },
-{ 0x4, 207, 0, 1316 },
-{ 0x2, 207, 0, 1317 },
-{ 0x1, 207, 1, 1319 },
-{ 0x1, 208, 0, 1318 },
-{ 0x10, 214, 0, 1320 },
-{ 0x8, 214, 0, 1321 },
-{ 0x4, 214, 0, 1322 },
-{ 0x1, 214, 1, 1324 },
-{ 0x2, 214, 0, 1323 },
-{ 0x220, 178, 0, 1325 },
-{ 0x120, 178, 0, 1326 },
-{ 0xa0, 178, 0, 1327 },
-{ 0x60, 178, 1, 1329 },
-{ 0x4, 179, 0, 1328 },
-{ 0x110, 178, 0, 1350 },
-{ 0x90, 178, 0, 1351 },
-{ 0x50, 178, 0, 1352 },
-{ 0x30, 178, 1, 1354 },
-{ 0x2, 179, 0, 1353 },
-{ 0x8, 178, 0, 1355 },
-{ 0x4, 178, 0, 1356 },
-{ 0x2, 178, 0, 1357 },
-{ 0x1, 178, 1, 1359 },
-{ 0x1, 179, 0, 1358 },
-{ 0x440, 186, 0, 1330 },
-{ 0x240, 186, 0, 1331 },
-{ 0x140, 186, 0, 1332 },
-{ 0xc0, 186, 1, 1334 },
-{ 0x40, 186, 0, 1333 },
-{ 0x220, 186, 0, 1360 },
-{ 0x120, 186, 0, 1361 },
-{ 0xa0, 186, 0, 1362 },
-{ 0x60, 186, 1, 1364 },
-{ 0x20, 186, 0, 1363 },
-{ 0x10, 186, 0, 1365 },
-{ 0x8, 186, 0, 1366 },
-{ 0x4, 186, 0, 1367 },
-{ 0x1, 186, 1, 1369 },
-{ 0x2, 186, 0, 1368 },
-{ 0x440, 143, 0, 1335 },
-{ 0x240, 143, 0, 1336 },
-{ 0x140, 143, 0, 1337 },
-{ 0xc0, 143, 1, 1339 },
-{ 0x40, 143, 0, 1338 },
-{ 0x220, 143, 0, 1370 },
-{ 0x120, 143, 0, 1371 },
-{ 0xa0, 143, 0, 1372 },
-{ 0x60, 143, 1, 1374 },
-{ 0x20, 143, 0, 1373 },
-{ 0x10, 143, 0, 1375 },
-{ 0x8, 143, 0, 1376 },
-{ 0x1, 143, 1, 1379 },
-{ 0x2, 143, 0, 1378 },
-{ 0x440, 194, 1, 1345 },
-{ 0x441, 174, 0, 1340 },
-{ 0x240, 194, 1, 1346 },
-{ 0x241, 174, 0, 1341 },
-{ 0x140, 194, 1, 1347 },
-{ 0x141, 174, 0, 1342 },
-{ 0xc0, 194, 1, 1349 },
-{ 0x40, 194, 1, 1348 },
-{ 0xc1, 174, 1, 1344 },
-{ 0x41, 174, 0, 1343 },
-{ 0x220, 194, 1, 1390 },
-{ 0x221, 174, 0, 1380 },
-{ 0x120, 194, 1, 1391 },
-{ 0x121, 174, 0, 1381 },
-{ 0xa0, 194, 1, 1392 },
-{ 0xa1, 174, 0, 1382 },
-{ 0x60, 194, 1, 1394 },
-{ 0x20, 194, 1, 1393 },
-{ 0x61, 174, 1, 1384 },
-{ 0x21, 174, 0, 1383 },
-{ 0x10, 194, 1, 1395 },
-{ 0x11, 174, 0, 1385 },
-{ 0x8, 194, 1, 1396 },
-{ 0x9, 174, 0, 1386 },
-{ 0x4, 194, 1, 1397 },
-{ 0x5, 174, 0, 1387 },
-{ 0x1, 194, 1, 1399 },
-{ 0x2, 194, 1, 1398 },
-{ 0x3, 174, 1, 1389 },
-{ 0x1, 174, 0, 1388 },
-{ 0x1, 153, 1, 1407 },
-{ 0x1, 154, 1, 1406 },
-{ 0x1, 155, 1, 1405 },
-{ 0x1, 156, 0, 1404 },
-{ 0x3, 153, 1, 1403 },
-{ 0x3, 154, 1, 1402 },
-{ 0x3, 155, 1, 1401 },
-{ 0x3, 156, 0, 1400 },
-{ 0x1108, 159, 1, 1569 },
-{ 0x1108, 160, 1, 1568 },
-{ 0x1108, 165, 1, 1409 },
-{ 0x1108, 166, 0, 1408 },
-{ 0x908, 159, 1, 1571 },
-{ 0x908, 160, 1, 1570 },
-{ 0x908, 165, 1, 1411 },
-{ 0x908, 166, 0, 1410 },
-{ 0x508, 159, 1, 1573 },
-{ 0x508, 160, 1, 1572 },
-{ 0x508, 165, 1, 1413 },
-{ 0x508, 166, 0, 1412 },
-{ 0x308, 159, 1, 1577 },
-{ 0x308, 160, 1, 1576 },
-{ 0x108, 160, 1, 1574 },
-{ 0x18, 161, 1, 1575 },
-{ 0x308, 165, 1, 1417 },
-{ 0x308, 166, 1, 1416 },
-{ 0x108, 166, 1, 1414 },
-{ 0x18, 167, 0, 1415 },
-{ 0x88, 159, 1, 1609 },
-{ 0x88, 160, 1, 1608 },
-{ 0x88, 165, 1, 1489 },
-{ 0x88, 166, 0, 1488 },
-{ 0x48, 159, 1, 1611 },
-{ 0x48, 160, 1, 1610 },
-{ 0x48, 165, 1, 1491 },
-{ 0x48, 166, 0, 1490 },
-{ 0x28, 159, 1, 1613 },
-{ 0x28, 160, 1, 1612 },
-{ 0x28, 165, 1, 1493 },
-{ 0x28, 166, 0, 1492 },
-{ 0x18, 159, 1, 1617 },
-{ 0x18, 160, 1, 1616 },
-{ 0x8, 160, 1, 1614 },
-{ 0x8, 161, 1, 1615 },
-{ 0x18, 165, 1, 1497 },
-{ 0x18, 166, 1, 1496 },
-{ 0x8, 166, 1, 1494 },
-{ 0x8, 167, 0, 1495 },
-{ 0x884, 159, 1, 1579 },
-{ 0x884, 160, 1, 1578 },
-{ 0x442, 162, 1, 1469 },
-{ 0x442, 163, 1, 1468 },
-{ 0x884, 165, 1, 1439 },
-{ 0x884, 166, 1, 1438 },
-{ 0x442, 168, 1, 1419 },
-{ 0x442, 169, 0, 1418 },
-{ 0x484, 159, 1, 1581 },
-{ 0x484, 160, 1, 1580 },
-{ 0x242, 162, 1, 1471 },
-{ 0x242, 163, 1, 1470 },
-{ 0x484, 165, 1, 1441 },
-{ 0x484, 166, 1, 1440 },
-{ 0x242, 168, 1, 1421 },
-{ 0x242, 169, 0, 1420 },
-{ 0x284, 159, 1, 1583 },
-{ 0x284, 160, 1, 1582 },
-{ 0x142, 162, 1, 1473 },
-{ 0x142, 163, 1, 1472 },
-{ 0x284, 165, 1, 1443 },
-{ 0x284, 166, 1, 1442 },
-{ 0x142, 168, 1, 1423 },
-{ 0x142, 169, 0, 1422 },
-{ 0x184, 159, 1, 1587 },
-{ 0x184, 160, 1, 1586 },
-{ 0x84, 160, 1, 1584 },
-{ 0xc, 161, 1, 1585 },
-{ 0xc2, 162, 1, 1477 },
-{ 0xc2, 163, 1, 1476 },
-{ 0x42, 163, 1, 1474 },
-{ 0x6, 164, 1, 1475 },
-{ 0x184, 165, 1, 1447 },
-{ 0x184, 166, 1, 1446 },
-{ 0x84, 166, 1, 1444 },
-{ 0xc, 167, 1, 1445 },
-{ 0xc2, 168, 1, 1427 },
-{ 0xc2, 169, 1, 1426 },
-{ 0x42, 169, 1, 1424 },
-{ 0x6, 170, 0, 1425 },
-{ 0x44, 159, 1, 1619 },
-{ 0x44, 160, 1, 1618 },
-{ 0x22, 162, 1, 1549 },
-{ 0x22, 163, 1, 1548 },
-{ 0x44, 165, 1, 1519 },
-{ 0x44, 166, 1, 1518 },
-{ 0x22, 168, 1, 1499 },
-{ 0x22, 169, 0, 1498 },
-{ 0x24, 159, 1, 1621 },
-{ 0x24, 160, 1, 1620 },
-{ 0x12, 162, 1, 1551 },
-{ 0x12, 163, 1, 1550 },
-{ 0x24, 165, 1, 1521 },
-{ 0x24, 166, 1, 1520 },
-{ 0x12, 168, 1, 1501 },
-{ 0x12, 169, 0, 1500 },
-{ 0x14, 159, 1, 1623 },
-{ 0x14, 160, 1, 1622 },
-{ 0xa, 162, 1, 1553 },
-{ 0xa, 163, 1, 1552 },
-{ 0x14, 165, 1, 1523 },
-{ 0x14, 166, 1, 1522 },
-{ 0xa, 168, 1, 1503 },
-{ 0xa, 169, 0, 1502 },
-{ 0xc, 159, 1, 1627 },
-{ 0xc, 160, 1, 1626 },
-{ 0x4, 160, 1, 1624 },
-{ 0x4, 161, 1, 1625 },
-{ 0x6, 162, 1, 1557 },
-{ 0x6, 163, 1, 1556 },
-{ 0x2, 163, 1, 1554 },
-{ 0x2, 164, 1, 1555 },
-{ 0xc, 165, 1, 1527 },
-{ 0xc, 166, 1, 1526 },
-{ 0x4, 166, 1, 1524 },
-{ 0x4, 167, 1, 1525 },
-{ 0x6, 168, 1, 1507 },
-{ 0x6, 169, 1, 1506 },
-{ 0x2, 169, 1, 1504 },
-{ 0x2, 170, 0, 1505 },
-{ 0x442, 159, 1, 1589 },
-{ 0x442, 160, 1, 1588 },
-{ 0x221, 162, 1, 1479 },
-{ 0x221, 163, 1, 1478 },
-{ 0x442, 165, 1, 1449 },
-{ 0x442, 166, 1, 1448 },
-{ 0x221, 168, 1, 1429 },
-{ 0x221, 169, 0, 1428 },
-{ 0x242, 159, 1, 1591 },
-{ 0x242, 160, 1, 1590 },
-{ 0x121, 162, 1, 1481 },
-{ 0x121, 163, 1, 1480 },
-{ 0x242, 165, 1, 1451 },
-{ 0x242, 166, 1, 1450 },
-{ 0x121, 168, 1, 1431 },
-{ 0x121, 169, 0, 1430 },
-{ 0x142, 159, 1, 1593 },
-{ 0x142, 160, 1, 1592 },
-{ 0xa1, 162, 1, 1483 },
-{ 0xa1, 163, 1, 1482 },
-{ 0x142, 165, 1, 1453 },
-{ 0x142, 166, 1, 1452 },
-{ 0xa1, 168, 1, 1433 },
-{ 0xa1, 169, 0, 1432 },
-{ 0xc2, 159, 1, 1597 },
-{ 0xc2, 160, 1, 1596 },
-{ 0x42, 160, 1, 1594 },
-{ 0x6, 161, 1, 1595 },
-{ 0x61, 162, 1, 1487 },
-{ 0x61, 163, 1, 1486 },
-{ 0x21, 163, 1, 1484 },
-{ 0x3, 164, 1, 1485 },
-{ 0xc2, 165, 1, 1457 },
-{ 0xc2, 166, 1, 1456 },
-{ 0x42, 166, 1, 1454 },
-{ 0x6, 167, 1, 1455 },
-{ 0x61, 168, 1, 1437 },
-{ 0x61, 169, 1, 1436 },
-{ 0x21, 169, 1, 1434 },
-{ 0x3, 170, 0, 1435 },
-{ 0x22, 159, 1, 1629 },
-{ 0x22, 160, 1, 1628 },
-{ 0x11, 162, 1, 1559 },
-{ 0x11, 163, 1, 1558 },
-{ 0x22, 165, 1, 1529 },
-{ 0x22, 166, 1, 1528 },
-{ 0x11, 168, 1, 1509 },
-{ 0x11, 169, 0, 1508 },
-{ 0x12, 159, 1, 1631 },
-{ 0x12, 160, 1, 1630 },
-{ 0x9, 162, 1, 1561 },
-{ 0x9, 163, 1, 1560 },
-{ 0x12, 165, 1, 1531 },
-{ 0x12, 166, 1, 1530 },
-{ 0x9, 168, 1, 1511 },
-{ 0x9, 169, 0, 1510 },
-{ 0xa, 159, 1, 1633 },
-{ 0xa, 160, 1, 1632 },
-{ 0x5, 162, 1, 1563 },
-{ 0x5, 163, 1, 1562 },
-{ 0xa, 165, 1, 1533 },
-{ 0xa, 166, 1, 1532 },
-{ 0x5, 168, 1, 1513 },
-{ 0x5, 169, 0, 1512 },
-{ 0x6, 159, 1, 1637 },
-{ 0x6, 160, 1, 1636 },
-{ 0x2, 160, 1, 1634 },
-{ 0x2, 161, 1, 1635 },
-{ 0x3, 162, 1, 1567 },
-{ 0x3, 163, 1, 1566 },
-{ 0x1, 163, 1, 1564 },
-{ 0x1, 164, 1, 1565 },
-{ 0x6, 165, 1, 1537 },
-{ 0x6, 166, 1, 1536 },
-{ 0x2, 166, 1, 1534 },
-{ 0x2, 167, 1, 1535 },
-{ 0x3, 168, 1, 1517 },
-{ 0x3, 169, 1, 1516 },
-{ 0x1, 169, 1, 1514 },
-{ 0x1, 170, 0, 1515 },
-{ 0x221, 159, 1, 1599 },
-{ 0x221, 160, 1, 1598 },
-{ 0x221, 165, 1, 1459 },
-{ 0x221, 166, 0, 1458 },
-{ 0x121, 159, 1, 1601 },
-{ 0x121, 160, 1, 1600 },
-{ 0x121, 165, 1, 1461 },
-{ 0x121, 166, 0, 1460 },
-{ 0xa1, 159, 1, 1603 },
-{ 0xa1, 160, 1, 1602 },
-{ 0xa1, 165, 1, 1463 },
-{ 0xa1, 166, 0, 1462 },
-{ 0x61, 159, 1, 1607 },
-{ 0x61, 160, 1, 1606 },
-{ 0x21, 160, 1, 1604 },
-{ 0x3, 161, 1, 1605 },
-{ 0x61, 165, 1, 1467 },
-{ 0x61, 166, 1, 1466 },
-{ 0x21, 166, 1, 1464 },
-{ 0x3, 167, 0, 1465 },
-{ 0x11, 159, 1, 1639 },
-{ 0x11, 160, 1, 1638 },
-{ 0x11, 165, 1, 1539 },
-{ 0x11, 166, 0, 1538 },
-{ 0x9, 159, 1, 1641 },
-{ 0x9, 160, 1, 1640 },
-{ 0x9, 165, 1, 1541 },
-{ 0x9, 166, 0, 1540 },
-{ 0x5, 159, 1, 1643 },
-{ 0x5, 160, 1, 1642 },
-{ 0x5, 165, 1, 1543 },
-{ 0x5, 166, 0, 1542 },
-{ 0x3, 159, 1, 1647 },
-{ 0x3, 160, 1, 1646 },
-{ 0x1, 160, 1, 1644 },
-{ 0x1, 161, 1, 1645 },
-{ 0x3, 165, 1, 1547 },
-{ 0x3, 166, 1, 1546 },
-{ 0x1, 166, 1, 1544 },
-{ 0x1, 167, 0, 1545 },
-{ 0x442, 205, 0, 1648 },
-{ 0x242, 205, 0, 1649 },
-{ 0x142, 205, 0, 1650 },
-{ 0xc2, 205, 1, 1652 },
-{ 0x6, 206, 1, 1651 },
-{ 0x1, 443, 0, 981 },
-{ 0x22, 205, 0, 1658 },
-{ 0x12, 205, 0, 1659 },
-{ 0xa, 205, 0, 1660 },
-{ 0x6, 205, 1, 1662 },
-{ 0x2, 206, 1, 1661 },
-{ 0x2, 367, 0, 1010 },
-{ 0x221, 205, 0, 1653 },
-{ 0x121, 205, 0, 1654 },
-{ 0xa1, 205, 0, 1655 },
-{ 0x61, 205, 1, 1657 },
-{ 0x3, 206, 1, 1656 },
-{ 0x1, 437, 0, 982 },
-{ 0x11, 205, 0, 1663 },
-{ 0x9, 205, 0, 1664 },
-{ 0x5, 205, 0, 1665 },
-{ 0x3, 205, 1, 1667 },
-{ 0x1, 206, 1, 1666 },
-{ 0x1, 367, 0, 1011 },
-{ 0x4, 211, 0, 1668 },
-{ 0x1, 211, 0, 1670 },
-{ 0x1, 218, 0, 1671 },
-{ 0x1, 217, 1, 1672 },
-{ 0x2, 211, 0, 1669 },
-{ 0x1, 196, 0, 1673 },
-{ 0x880, 202, 0, 1674 },
-{ 0x480, 202, 0, 1675 },
-{ 0x280, 202, 0, 1676 },
-{ 0x180, 202, 1, 1678 },
-{ 0x80, 203, 0, 1677 },
-{ 0x440, 202, 1, 1689 },
-{ 0x88, 204, 0, 1679 },
-{ 0x240, 202, 1, 1690 },
-{ 0x48, 204, 0, 1680 },
-{ 0x140, 202, 1, 1691 },
-{ 0x28, 204, 0, 1681 },
-{ 0xc0, 202, 1, 1693 },
-{ 0x40, 203, 1, 1692 },
-{ 0x18, 204, 1, 1683 },
-{ 0x8, 204, 0, 1682 },
-{ 0x220, 202, 1, 1694 },
-{ 0x44, 204, 0, 1684 },
-{ 0x120, 202, 1, 1695 },
-{ 0x24, 204, 0, 1685 },
-{ 0xa0, 202, 1, 1696 },
-{ 0x14, 204, 0, 1686 },
-{ 0x60, 202, 1, 1698 },
-{ 0x20, 203, 1, 1697 },
-{ 0xc, 204, 1, 1688 },
-{ 0x4, 204, 0, 1687 },
-{ 0x110, 202, 0, 1699 },
-{ 0x90, 202, 0, 1700 },
-{ 0x50, 202, 0, 1701 },
-{ 0x30, 202, 1, 1703 },
-{ 0x10, 203, 1, 1702 },
-{ 0x1, 385, 0, 974 },
-{ 0x88, 202, 0, 1704 },
-{ 0x48, 202, 0, 1705 },
-{ 0x28, 202, 0, 1706 },
-{ 0x18, 202, 1, 1708 },
-{ 0x8, 203, 1, 1707 },
-{ 0xc, 368, 0, 1007 },
-{ 0x44, 202, 1, 1719 },
-{ 0x22, 204, 0, 1709 },
-{ 0x24, 202, 1, 1720 },
-{ 0x12, 204, 0, 1710 },
-{ 0x14, 202, 1, 1721 },
-{ 0xa, 204, 0, 1711 },
-{ 0xc, 202, 1, 1723 },
-{ 0x4, 203, 1, 1722 },
-{ 0x6, 204, 1, 1713 },
-{ 0x2, 204, 1, 1712 },
-{ 0x6, 368, 0, 1008 },
-{ 0x22, 202, 1, 1724 },
-{ 0x11, 204, 0, 1714 },
-{ 0x12, 202, 1, 1725 },
-{ 0x9, 204, 0, 1715 },
-{ 0xa, 202, 1, 1726 },
-{ 0x5, 204, 0, 1716 },
-{ 0x6, 202, 1, 1728 },
-{ 0x2, 203, 1, 1727 },
-{ 0x3, 204, 1, 1718 },
-{ 0x1, 204, 1, 1717 },
-{ 0x3, 368, 0, 1009 },
-{ 0x11, 202, 0, 1729 },
-{ 0x9, 202, 0, 1730 },
-{ 0x5, 202, 0, 1731 },
-{ 0x3, 202, 1, 1733 },
-{ 0x1, 203, 0, 1732 },
-{ 0x8, 198, 0, 1734 },
-{ 0x4, 198, 0, 1735 },
-{ 0x2, 198, 0, 1736 },
-{ 0x1, 198, 1, 1738 },
-{ 0x1, 199, 1, 1737 },
-{ 0x1, 332, 0, 988 },
-{ 0x8, 200, 0, 1739 },
-{ 0x4, 200, 0, 1740 },
-{ 0x2, 200, 0, 1741 },
-{ 0x1, 200, 1, 1743 },
-{ 0x1, 201, 1, 1742 },
-{ 0x1, 331, 0, 989 },
-{ 0x8, 209, 0, 1744 },
-{ 0x4, 209, 0, 1745 },
-{ 0x2, 209, 0, 1746 },
-{ 0x1, 209, 1, 1748 },
-{ 0x1, 210, 1, 1747 },
-{ 0x1, 330, 0, 990 },
-{ 0x8, 212, 0, 1749 },
-{ 0x4, 212, 0, 1750 },
-{ 0x2, 212, 0, 1751 },
-{ 0x1, 212, 1, 1753 },
-{ 0x1, 213, 1, 1752 },
-{ 0x1, 329, 0, 991 },
-{ 0x8, 224, 0, 1754 },
-{ 0x4, 224, 0, 1755 },
-{ 0x2, 224, 0, 1756 },
-{ 0x1, 224, 1, 1758 },
-{ 0x1, 225, 0, 1757 },
-{ 0x8, 222, 0, 1759 },
-{ 0x4, 222, 0, 1760 },
-{ 0x2, 222, 0, 1761 },
-{ 0x1, 222, 1, 1763 },
-{ 0x1, 223, 0, 1762 },
-{ 0x1, 240, 0, 1764 },
-{ 0x1, 340, 0, 1765 },
-{ 0x1, 33, 0, 1766 },
-{ 0x8, 151, 0, 1767 },
-{ 0x4, 151, 0, 1768 },
-{ 0x2, 151, 0, 1769 },
-{ 0x1, 151, 1, 1771 },
-{ 0x1, 152, 0, 1770 },
-{ 0x8, 157, 0, 1772 },
-{ 0x4, 157, 0, 1773 },
-{ 0x2, 157, 0, 1774 },
-{ 0x1, 157, 1, 1776 },
-{ 0x1, 158, 0, 1775 },
-{ 0x8, 231, 0, 1777 },
-{ 0x4, 231, 0, 1778 },
-{ 0x2, 231, 0, 1779 },
-{ 0x1, 231, 1, 1781 },
-{ 0x1, 232, 0, 1780 },
-{ 0x1, 173, 0, 1782 },
-{ 0x442, 171, 0, 1783 },
-{ 0x242, 171, 0, 1784 },
-{ 0x142, 171, 0, 1785 },
-{ 0xc2, 171, 1, 1787 },
-{ 0x6, 172, 0, 1786 },
-{ 0x22, 171, 0, 1793 },
-{ 0x12, 171, 0, 1794 },
-{ 0xa, 171, 0, 1795 },
-{ 0x6, 171, 1, 1797 },
-{ 0x2, 172, 1, 1796 },
-{ 0x1, 135, 0, 1197 },
-{ 0x221, 171, 0, 1788 },
-{ 0x121, 171, 0, 1789 },
-{ 0xa1, 171, 0, 1790 },
-{ 0x61, 171, 1, 1792 },
-{ 0x3, 172, 0, 1791 },
-{ 0x11, 171, 0, 1798 },
-{ 0x9, 171, 0, 1799 },
-{ 0x5, 171, 0, 1800 },
-{ 0x3, 171, 1, 1802 },
-{ 0x1, 172, 1, 1801 },
-{ 0x1, 134, 0, 1198 },
-{ 0x1, 237, 0, 1803 },
-{ 0x1, 195, 0, 1804 },
-{ 0x1, 149, 0, 1805 },
-{ 0x1, 148, 0, 1806 },
-{ 0x4, 234, 0, 1807 },
-{ 0x2, 234, 0, 1808 },
-{ 0x1, 234, 0, 1809 },
-{ 0x1, 197, 0, 1810 },
-{ 0x2, 235, 0, 1811 },
-{ 0x1, 235, 0, 1812 },
-{ 0x4, 185, 0, 1813 },
-{ 0x2, 185, 0, 1814 },
-{ 0x1, 185, 0, 1815 },
-{ 0x4, 182, 0, 1816 },
-{ 0x1, 190, 0, 1819 },
-{ 0x1, 189, 1, 1820 },
-{ 0x2, 182, 0, 1817 },
-{ 0x1, 142, 0, 1821 },
-{ 0x1, 297, 1, 1822 },
-{ 0x1, 182, 0, 1818 },
-{ 0x8, 144, 0, 1823 },
-{ 0x4, 144, 0, 1824 },
-{ 0x2, 144, 0, 1825 },
-{ 0x1, 144, 1, 1827 },
-{ 0x1, 145, 0, 1826 },
-{ 0x8, 146, 0, 1828 },
-{ 0x4, 146, 0, 1829 },
-{ 0x2, 146, 0, 1830 },
-{ 0x1, 146, 1, 1832 },
-{ 0x1, 147, 1, 1831 },
-{ 0x1, 426, 0, 1199 },
-{ 0x8, 180, 0, 1833 },
-{ 0x4, 180, 0, 1834 },
-{ 0x2, 180, 0, 1835 },
-{ 0x1, 180, 1, 1837 },
-{ 0x1, 181, 1, 1836 },
-{ 0x1, 425, 0, 1200 },
-{ 0x8, 183, 0, 1838 },
-{ 0x4, 183, 0, 1839 },
-{ 0x2, 183, 0, 1840 },
-{ 0x1, 183, 1, 1842 },
-{ 0x1, 184, 1, 1841 },
-{ 0x1, 424, 0, 1201 },
-{ 0x8, 228, 0, 1843 },
-{ 0x4, 228, 0, 1844 },
-{ 0x2, 228, 0, 1845 },
-{ 0x1, 228, 1, 1847 },
-{ 0x1, 229, 0, 1846 },
-{ 0x8, 226, 0, 1848 },
-{ 0x4, 226, 0, 1849 },
-{ 0x2, 226, 0, 1850 },
-{ 0x1, 226, 1, 1852 },
-{ 0x1, 227, 0, 1851 },
-{ 0x8, 44, 0, 1857 },
-{ 0x18, 44, 0, 1853 },
-{ 0x4, 44, 0, 1858 },
-{ 0xc, 44, 0, 1854 },
-{ 0x2, 44, 0, 1859 },
-{ 0x6, 44, 0, 1855 },
-{ 0x1, 44, 0, 1860 },
-{ 0x3, 44, 0, 1856 },
-{ 0x51, 30, 0, 1862 },
-{ 0xd1, 30, 0, 1861 },
-{ 0x31, 30, 1, 1872 },
-{ 0x11, 31, 0, 1871 },
-{ 0x71, 30, 1, 1870 },
-{ 0x31, 31, 0, 1869 },
-{ 0x29, 30, 0, 1864 },
-{ 0x69, 30, 0, 1863 },
-{ 0x19, 30, 1, 1876 },
-{ 0x9, 31, 0, 1875 },
-{ 0x39, 30, 1, 1874 },
-{ 0x19, 31, 0, 1873 },
-{ 0x15, 30, 0, 1866 },
-{ 0x35, 30, 0, 1865 },
-{ 0xd, 30, 1, 1880 },
-{ 0x5, 31, 0, 1879 },
-{ 0x1d, 30, 1, 1878 },
-{ 0xd, 31, 0, 1877 },
-{ 0xb, 30, 0, 1868 },
-{ 0x1b, 30, 0, 1867 },
-{ 0x7, 30, 1, 1884 },
-{ 0x3, 31, 0, 1883 },
-{ 0xf, 30, 1, 1882 },
-{ 0x7, 31, 0, 1881 },
-{ 0xa2, 28, 0, 1886 },
-{ 0x1a2, 28, 0, 1885 },
-{ 0x62, 28, 1, 1896 },
-{ 0x22, 29, 0, 1895 },
-{ 0xe2, 28, 1, 1894 },
-{ 0x62, 29, 0, 1893 },
-{ 0x52, 28, 0, 1888 },
-{ 0xd2, 28, 0, 1887 },
-{ 0x32, 28, 1, 1900 },
-{ 0x12, 29, 0, 1899 },
-{ 0x72, 28, 1, 1898 },
-{ 0x32, 29, 0, 1897 },
-{ 0x2a, 28, 0, 1890 },
-{ 0x6a, 28, 0, 1889 },
-{ 0x1a, 28, 1, 1904 },
-{ 0xa, 29, 0, 1903 },
-{ 0x3a, 28, 1, 1902 },
-{ 0x1a, 29, 0, 1901 },
-{ 0x16, 28, 0, 1892 },
-{ 0x36, 28, 0, 1891 },
-{ 0xe, 28, 1, 1908 },
-{ 0x6, 29, 0, 1907 },
-{ 0x1e, 28, 1, 1906 },
-{ 0xe, 29, 0, 1905 },
-{ 0x51, 28, 0, 1910 },
-{ 0xd1, 28, 0, 1909 },
-{ 0x31, 28, 1, 1920 },
-{ 0x11, 29, 0, 1919 },
-{ 0x71, 28, 1, 1918 },
-{ 0x31, 29, 0, 1917 },
-{ 0x29, 28, 0, 1912 },
-{ 0x69, 28, 0, 1911 },
-{ 0x19, 28, 1, 1924 },
-{ 0x9, 29, 0, 1923 },
-{ 0x39, 28, 1, 1922 },
-{ 0x19, 29, 0, 1921 },
-{ 0x15, 28, 0, 1914 },
-{ 0x35, 28, 0, 1913 },
-{ 0xd, 28, 1, 1928 },
-{ 0x5, 29, 0, 1927 },
-{ 0x1d, 28, 1, 1926 },
-{ 0xd, 29, 0, 1925 },
-{ 0xb, 28, 0, 1916 },
-{ 0x1b, 28, 0, 1915 },
-{ 0x7, 28, 1, 1932 },
-{ 0x3, 29, 0, 1931 },
-{ 0xf, 28, 1, 1930 },
-{ 0x7, 29, 0, 1929 },
-{ 0x51, 26, 0, 1934 },
-{ 0xd1, 26, 0, 1933 },
-{ 0x31, 26, 1, 1944 },
-{ 0x11, 27, 0, 1943 },
-{ 0x71, 26, 1, 1942 },
-{ 0x31, 27, 0, 1941 },
-{ 0x29, 26, 0, 1936 },
-{ 0x69, 26, 0, 1935 },
-{ 0x19, 26, 1, 1948 },
-{ 0x9, 27, 0, 1947 },
-{ 0x39, 26, 1, 1946 },
-{ 0x19, 27, 0, 1945 },
-{ 0x15, 26, 0, 1938 },
-{ 0x35, 26, 0, 1937 },
-{ 0xd, 26, 1, 1952 },
-{ 0x5, 27, 0, 1951 },
-{ 0x1d, 26, 1, 1950 },
-{ 0xd, 27, 0, 1949 },
-{ 0xb, 26, 0, 1940 },
-{ 0x1b, 26, 0, 1939 },
-{ 0x7, 26, 1, 1956 },
-{ 0x3, 27, 0, 1955 },
-{ 0xf, 26, 1, 1954 },
-{ 0x7, 27, 0, 1953 },
-{ 0xa2, 24, 0, 1958 },
-{ 0x1a2, 24, 0, 1957 },
-{ 0x62, 24, 1, 1968 },
-{ 0x22, 25, 0, 1967 },
-{ 0xe2, 24, 1, 1966 },
-{ 0x62, 25, 0, 1965 },
-{ 0x52, 24, 0, 1960 },
-{ 0xd2, 24, 0, 1959 },
-{ 0x32, 24, 1, 1972 },
-{ 0x12, 25, 0, 1971 },
-{ 0x72, 24, 1, 1970 },
-{ 0x32, 25, 0, 1969 },
-{ 0x2a, 24, 0, 1962 },
-{ 0x6a, 24, 0, 1961 },
-{ 0x1a, 24, 1, 1976 },
-{ 0xa, 25, 0, 1975 },
-{ 0x3a, 24, 1, 1974 },
-{ 0x1a, 25, 0, 1973 },
-{ 0x16, 24, 0, 1964 },
-{ 0x36, 24, 0, 1963 },
-{ 0xe, 24, 1, 1980 },
-{ 0x6, 25, 0, 1979 },
-{ 0x1e, 24, 1, 1978 },
-{ 0xe, 25, 0, 1977 },
-{ 0x51, 24, 0, 1982 },
-{ 0xd1, 24, 0, 1981 },
-{ 0x31, 24, 1, 1992 },
-{ 0x11, 25, 0, 1991 },
-{ 0x71, 24, 1, 1990 },
-{ 0x31, 25, 0, 1989 },
-{ 0x29, 24, 0, 1984 },
-{ 0x69, 24, 0, 1983 },
-{ 0x19, 24, 1, 1996 },
-{ 0x9, 25, 0, 1995 },
-{ 0x39, 24, 1, 1994 },
-{ 0x19, 25, 0, 1993 },
-{ 0x15, 24, 0, 1986 },
-{ 0x35, 24, 0, 1985 },
-{ 0xd, 24, 1, 2000 },
-{ 0x5, 25, 0, 1999 },
-{ 0x1d, 24, 1, 1998 },
-{ 0xd, 25, 0, 1997 },
-{ 0xb, 24, 0, 1988 },
-{ 0x1b, 24, 0, 1987 },
-{ 0x7, 24, 1, 2004 },
-{ 0x3, 25, 0, 2003 },
-{ 0xf, 24, 1, 2002 },
-{ 0x7, 25, 0, 2001 },
-{ 0x51, 22, 1, 2030 },
-{ 0x50, 22, 0, 2006 },
-{ 0xd1, 22, 1, 2029 },
-{ 0xd0, 22, 0, 2005 },
-{ 0x31, 22, 1, 2040 },
-{ 0x30, 22, 1, 2016 },
-{ 0x11, 23, 1, 2039 },
-{ 0x10, 23, 0, 2015 },
-{ 0x71, 22, 1, 2038 },
-{ 0x70, 22, 1, 2014 },
-{ 0x31, 23, 1, 2037 },
-{ 0x30, 23, 0, 2013 },
-{ 0x29, 22, 1, 2032 },
-{ 0x28, 22, 0, 2008 },
-{ 0x69, 22, 1, 2031 },
-{ 0x68, 22, 0, 2007 },
-{ 0x19, 22, 1, 2044 },
-{ 0x18, 22, 1, 2020 },
-{ 0x9, 23, 1, 2043 },
-{ 0x8, 23, 0, 2019 },
-{ 0x39, 22, 1, 2042 },
-{ 0x38, 22, 1, 2018 },
-{ 0x19, 23, 1, 2041 },
-{ 0x18, 23, 0, 2017 },
-{ 0x15, 22, 1, 2034 },
-{ 0x14, 22, 0, 2010 },
-{ 0x35, 22, 1, 2033 },
-{ 0x34, 22, 0, 2009 },
-{ 0xd, 22, 1, 2048 },
-{ 0xc, 22, 1, 2024 },
-{ 0x5, 23, 1, 2047 },
-{ 0x4, 23, 0, 2023 },
-{ 0x1d, 22, 1, 2046 },
-{ 0x1c, 22, 1, 2022 },
-{ 0xd, 23, 1, 2045 },
-{ 0xc, 23, 0, 2021 },
-{ 0xb, 22, 1, 2036 },
-{ 0xa, 22, 0, 2012 },
-{ 0x1b, 22, 1, 2035 },
-{ 0x1a, 22, 0, 2011 },
-{ 0x7, 22, 1, 2052 },
-{ 0x6, 22, 1, 2028 },
-{ 0x3, 23, 1, 2051 },
-{ 0x2, 23, 0, 2027 },
-{ 0xf, 22, 1, 2050 },
-{ 0xe, 22, 1, 2026 },
-{ 0x7, 23, 1, 2049 },
-{ 0x6, 23, 0, 2025 },
-{ 0x8, 21, 0, 2054 },
-{ 0x18, 21, 0, 2053 },
-{ 0x1, 21, 1, 2058 },
-{ 0x2, 21, 0, 2057 },
-{ 0x3, 21, 1, 2056 },
-{ 0x4, 21, 0, 2055 },
-{ 0x1, 239, 0, 2059 },
-{ 0x1, 339, 0, 2060 },
-{ 0x14, 43, 0, 2063 },
-{ 0x34, 43, 0, 2061 },
-{ 0xc, 43, 0, 2064 },
-{ 0x1c, 43, 0, 2062 },
-{ 0x2, 43, 0, 2067 },
-{ 0x6, 43, 0, 2065 },
-{ 0x1, 43, 0, 2068 },
-{ 0x3, 43, 0, 2066 },
-{ 0x51, 19, 0, 2070 },
-{ 0xd1, 19, 0, 2069 },
-{ 0x31, 19, 1, 2080 },
-{ 0x11, 20, 0, 2079 },
-{ 0x71, 19, 1, 2078 },
-{ 0x31, 20, 0, 2077 },
-{ 0x29, 19, 0, 2072 },
-{ 0x69, 19, 0, 2071 },
-{ 0x19, 19, 1, 2084 },
-{ 0x9, 20, 0, 2083 },
-{ 0x39, 19, 1, 2082 },
-{ 0x19, 20, 0, 2081 },
-{ 0x15, 19, 0, 2074 },
-{ 0x35, 19, 0, 2073 },
-{ 0xd, 19, 1, 2088 },
-{ 0x5, 20, 0, 2087 },
-{ 0x1d, 19, 1, 2086 },
-{ 0xd, 20, 0, 2085 },
-{ 0xb, 19, 0, 2076 },
-{ 0x1b, 19, 0, 2075 },
-{ 0x7, 19, 1, 2092 },
-{ 0x3, 20, 0, 2091 },
-{ 0xf, 19, 1, 2090 },
-{ 0x7, 20, 0, 2089 },
-{ 0x1, 32, 0, 2093 },
-{ 0x2, 447, 0, 2094 },
-{ 0x1, 447, 0, 2095 },
-{ 0x1, 140, 0, 2096 },
-{ 0x2, 45, 0, 2097 },
-{ 0x1, 45, 0, 2098 },
-{ 0x1, 387, 0, 2099 },
-{ 0x2, 52, 0, 2100 },
-{ 0x1, 52, 0, 2101 },
-{ 0x1, 133, 0, 2102 },
-{ 0x51, 17, 0, 2104 },
-{ 0xd1, 17, 0, 2103 },
-{ 0x31, 17, 1, 2114 },
-{ 0x11, 18, 0, 2113 },
-{ 0x71, 17, 1, 2112 },
-{ 0x31, 18, 0, 2111 },
-{ 0x29, 17, 0, 2106 },
-{ 0x69, 17, 0, 2105 },
-{ 0x19, 17, 1, 2118 },
-{ 0x9, 18, 0, 2117 },
-{ 0x39, 17, 1, 2116 },
-{ 0x19, 18, 0, 2115 },
-{ 0x15, 17, 0, 2108 },
-{ 0x35, 17, 0, 2107 },
-{ 0xd, 17, 1, 2122 },
-{ 0x5, 18, 0, 2121 },
-{ 0x1d, 17, 1, 2120 },
-{ 0xd, 18, 0, 2119 },
-{ 0xb, 17, 0, 2110 },
-{ 0x1b, 17, 0, 2109 },
-{ 0x7, 17, 1, 2126 },
-{ 0x3, 18, 0, 2125 },
-{ 0xf, 17, 1, 2124 },
-{ 0x7, 18, 0, 2123 },
-{ 0xa20, 15, 0, 2128 },
-{ 0x1a20, 15, 0, 2127 },
-{ 0x620, 15, 1, 2138 },
-{ 0x220, 16, 0, 2137 },
-{ 0xe20, 15, 1, 2136 },
-{ 0x620, 16, 0, 2135 },
-{ 0x520, 15, 0, 2130 },
-{ 0xd20, 15, 0, 2129 },
-{ 0x320, 15, 1, 2142 },
-{ 0x120, 16, 0, 2141 },
-{ 0x720, 15, 1, 2140 },
-{ 0x320, 16, 0, 2139 },
-{ 0x2a0, 15, 0, 2132 },
-{ 0x6a0, 15, 0, 2131 },
-{ 0x1a0, 15, 1, 2146 },
-{ 0xa0, 16, 0, 2145 },
-{ 0x3a0, 15, 1, 2144 },
-{ 0x1a0, 16, 0, 2143 },
-{ 0x160, 15, 0, 2134 },
-{ 0x360, 15, 0, 2133 },
-{ 0xe0, 15, 1, 2150 },
-{ 0x60, 16, 0, 2149 },
-{ 0x1e0, 15, 1, 2148 },
-{ 0xe0, 16, 0, 2147 },
-{ 0x51, 15, 1, 2176 },
-{ 0x50, 15, 0, 2152 },
-{ 0xd1, 15, 1, 2175 },
-{ 0xd0, 15, 0, 2151 },
-{ 0x31, 15, 1, 2186 },
-{ 0x30, 15, 1, 2162 },
-{ 0x11, 16, 1, 2185 },
-{ 0x10, 16, 0, 2161 },
-{ 0x71, 15, 1, 2184 },
-{ 0x70, 15, 1, 2160 },
-{ 0x31, 16, 1, 2183 },
-{ 0x30, 16, 0, 2159 },
-{ 0x29, 15, 1, 2178 },
-{ 0x28, 15, 0, 2154 },
-{ 0x69, 15, 1, 2177 },
-{ 0x68, 15, 0, 2153 },
-{ 0x19, 15, 1, 2190 },
-{ 0x18, 15, 1, 2166 },
-{ 0x9, 16, 1, 2189 },
-{ 0x8, 16, 0, 2165 },
-{ 0x39, 15, 1, 2188 },
-{ 0x38, 15, 1, 2164 },
-{ 0x19, 16, 1, 2187 },
-{ 0x18, 16, 0, 2163 },
-{ 0x15, 15, 1, 2180 },
-{ 0x14, 15, 0, 2156 },
-{ 0x35, 15, 1, 2179 },
-{ 0x34, 15, 0, 2155 },
-{ 0xd, 15, 1, 2194 },
-{ 0xc, 15, 1, 2170 },
-{ 0x5, 16, 1, 2193 },
-{ 0x4, 16, 0, 2169 },
-{ 0x1d, 15, 1, 2192 },
-{ 0x1c, 15, 1, 2168 },
-{ 0xd, 16, 1, 2191 },
-{ 0xc, 16, 0, 2167 },
-{ 0xb, 15, 1, 2182 },
-{ 0xa, 15, 0, 2158 },
-{ 0x1b, 15, 1, 2181 },
-{ 0x1a, 15, 0, 2157 },
-{ 0x7, 15, 1, 2198 },
-{ 0x6, 15, 1, 2174 },
-{ 0x3, 16, 1, 2197 },
-{ 0x2, 16, 0, 2173 },
-{ 0xf, 15, 1, 2196 },
-{ 0xe, 15, 1, 2172 },
-{ 0x7, 16, 1, 2195 },
-{ 0x6, 16, 0, 2171 },
-{ 0x8, 14, 0, 2200 },
-{ 0x18, 14, 0, 2199 },
-{ 0x1, 14, 1, 2204 },
-{ 0x2, 14, 0, 2203 },
-{ 0x3, 14, 1, 2202 },
-{ 0x4, 14, 0, 2201 },
-{ 0x1, 109, 1, 2356 },
-{ 0x1, 110, 1, 2355 },
-{ 0x1, 111, 1, 2354 },
-{ 0x1, 112, 1, 2353 },
-{ 0x1, 113, 1, 2352 },
-{ 0x1, 114, 1, 2351 },
-{ 0x1, 115, 1, 2350 },
-{ 0x1, 116, 1, 2349 },
-{ 0x39, 41, 1, 22 },
-{ 0x19, 42, 0, 21 },
-{ 0x3, 109, 1, 2348 },
-{ 0x3, 110, 1, 2347 },
-{ 0x3, 111, 1, 2346 },
-{ 0x3, 112, 1, 2345 },
-{ 0x3, 113, 1, 2344 },
-{ 0x3, 114, 1, 2343 },
-{ 0x3, 115, 1, 2342 },
-{ 0x3, 116, 1, 2341 },
-{ 0x69, 41, 0, 11 },
-{ 0x14, 100, 1, 2336 },
-{ 0x22, 101, 1, 2333 },
-{ 0x44, 101, 1, 2335 },
-{ 0xa, 108, 1, 2334 },
-{ 0xd1, 41, 0, 9 },
-{ 0x34, 100, 1, 2208 },
-{ 0xc4, 101, 1, 2207 },
-{ 0x1c, 107, 1, 2205 },
-{ 0xe, 122, 0, 2206 },
-{ 0xc, 100, 1, 2496 },
-{ 0xa, 101, 1, 2493 },
-{ 0x14, 101, 1, 2495 },
-{ 0x6, 108, 0, 2494 },
-{ 0x2, 100, 1, 2220 },
-{ 0x2, 101, 1, 2219 },
-{ 0x2, 106, 1, 2218 },
-{ 0x2, 107, 0, 2217 },
-{ 0x12, 100, 1, 2216 },
-{ 0x42, 101, 1, 2215 },
-{ 0x6, 106, 1, 2214 },
-{ 0x6, 107, 0, 2213 },
-{ 0xa, 100, 1, 2340 },
-{ 0x12, 101, 1, 2339 },
-{ 0x24, 101, 1, 2337 },
-{ 0x5, 108, 1, 2338 },
-{ 0x71, 41, 1, 18 },
-{ 0x31, 42, 0, 17 },
-{ 0x1a, 100, 1, 2212 },
-{ 0x32, 101, 1, 2211 },
-{ 0x1a, 107, 1, 2209 },
-{ 0x7, 122, 0, 2210 },
-{ 0x6, 100, 1, 2500 },
-{ 0x6, 101, 1, 2499 },
-{ 0xc, 101, 1, 2497 },
-{ 0x3, 108, 0, 2498 },
-{ 0x1, 100, 1, 2516 },
-{ 0x1, 101, 1, 2515 },
-{ 0x1, 102, 1, 2514 },
-{ 0x1, 103, 1, 2513 },
-{ 0x1, 104, 1, 2512 },
-{ 0x1, 105, 1, 2511 },
-{ 0x1, 106, 1, 2510 },
-{ 0x1, 107, 0, 2509 },
-{ 0x3, 100, 1, 2508 },
-{ 0x3, 101, 1, 2507 },
-{ 0x3, 102, 1, 2506 },
-{ 0x3, 103, 1, 2505 },
-{ 0x3, 104, 1, 2504 },
-{ 0x3, 105, 1, 2503 },
-{ 0x3, 106, 1, 2502 },
-{ 0x3, 107, 0, 2501 },
-{ 0x8, 67, 1, 2380 },
-{ 0x8, 68, 1, 2379 },
-{ 0x2, 73, 1, 2374 },
-{ 0x2, 74, 1, 2373 },
-{ 0x1, 76, 1, 2378 },
-{ 0x1, 77, 1, 2377 },
-{ 0x1, 78, 1, 2376 },
-{ 0x1, 79, 1, 2375 },
-{ 0xf, 41, 1, 30 },
-{ 0x7, 42, 0, 29 },
-{ 0x18, 67, 1, 2372 },
-{ 0x18, 68, 1, 2371 },
-{ 0x6, 73, 1, 2366 },
-{ 0x6, 74, 1, 2365 },
-{ 0x3, 76, 1, 2370 },
-{ 0x3, 77, 1, 2369 },
-{ 0x3, 78, 1, 2368 },
-{ 0x3, 79, 1, 2367 },
-{ 0x1b, 41, 0, 15 },
-{ 0x14, 67, 1, 2360 },
-{ 0x22, 68, 1, 2357 },
-{ 0x44, 68, 1, 2359 },
-{ 0xa, 75, 1, 2358 },
-{ 0x35, 41, 0, 13 },
-{ 0x34, 67, 1, 2224 },
-{ 0xc4, 68, 1, 2223 },
-{ 0x38, 74, 1, 2221 },
-{ 0xe, 85, 0, 2222 },
-{ 0xc, 67, 1, 2520 },
-{ 0xa, 68, 1, 2517 },
-{ 0x14, 68, 1, 2519 },
-{ 0x6, 75, 0, 2518 },
-{ 0x2, 67, 1, 2236 },
-{ 0x2, 68, 1, 2235 },
-{ 0x4, 73, 1, 2234 },
-{ 0x4, 74, 0, 2233 },
-{ 0x12, 67, 1, 2232 },
-{ 0x42, 68, 1, 2231 },
-{ 0xc, 73, 1, 2230 },
-{ 0xc, 74, 0, 2229 },
-{ 0xa, 67, 1, 2364 },
-{ 0x12, 68, 1, 2363 },
-{ 0x24, 68, 1, 2361 },
-{ 0x5, 75, 1, 2362 },
-{ 0x1d, 41, 1, 26 },
-{ 0xd, 42, 0, 25 },
-{ 0x1a, 67, 1, 2228 },
-{ 0x32, 68, 1, 2227 },
-{ 0x34, 74, 1, 2225 },
-{ 0x7, 85, 0, 2226 },
-{ 0x6, 67, 1, 2524 },
-{ 0x6, 68, 1, 2523 },
-{ 0xc, 68, 1, 2521 },
-{ 0x3, 75, 0, 2522 },
-{ 0x1, 67, 1, 2540 },
-{ 0x1, 68, 1, 2539 },
-{ 0x1, 69, 1, 2538 },
-{ 0x1, 70, 1, 2537 },
-{ 0x1, 71, 1, 2536 },
-{ 0x1, 72, 1, 2535 },
-{ 0x1, 73, 1, 2534 },
-{ 0x1, 74, 0, 2533 },
-{ 0x3, 67, 1, 2532 },
-{ 0x3, 68, 1, 2531 },
-{ 0x3, 69, 1, 2530 },
-{ 0x3, 70, 1, 2529 },
-{ 0x3, 71, 1, 2528 },
-{ 0x3, 72, 1, 2527 },
-{ 0x3, 73, 1, 2526 },
-{ 0x3, 74, 0, 2525 },
-{ 0x28, 95, 1, 2388 },
-{ 0x44, 96, 1, 2383 },
-{ 0x88, 96, 1, 2387 },
-{ 0x44, 97, 1, 2382 },
-{ 0x88, 97, 1, 2386 },
-{ 0x44, 98, 1, 2381 },
-{ 0x88, 98, 1, 2385 },
-{ 0x28, 99, 0, 2384 },
-{ 0x68, 95, 1, 2244 },
-{ 0x188, 96, 1, 2243 },
-{ 0x188, 97, 1, 2242 },
-{ 0x188, 98, 1, 2241 },
-{ 0x38, 118, 1, 2240 },
-{ 0x38, 119, 1, 2239 },
-{ 0x38, 120, 1, 2238 },
-{ 0x38, 121, 0, 2237 },
-{ 0x18, 95, 1, 2548 },
-{ 0x14, 96, 1, 2543 },
-{ 0x28, 96, 1, 2547 },
-{ 0x14, 97, 1, 2542 },
-{ 0x28, 97, 1, 2546 },
-{ 0x14, 98, 1, 2541 },
-{ 0x28, 98, 1, 2545 },
-{ 0x18, 99, 0, 2544 },
-{ 0x14, 95, 1, 2396 },
-{ 0x24, 96, 1, 2395 },
-{ 0x48, 96, 1, 2391 },
-{ 0x24, 97, 1, 2394 },
-{ 0x48, 97, 1, 2390 },
-{ 0x24, 98, 1, 2393 },
-{ 0x48, 98, 1, 2389 },
-{ 0x14, 99, 0, 2392 },
-{ 0x34, 95, 1, 2252 },
-{ 0x64, 96, 1, 2251 },
-{ 0x64, 97, 1, 2250 },
-{ 0x64, 98, 1, 2249 },
-{ 0x1c, 118, 1, 2248 },
-{ 0x1c, 119, 1, 2247 },
-{ 0x1c, 120, 1, 2246 },
-{ 0x1c, 121, 0, 2245 },
-{ 0xc, 95, 1, 2556 },
-{ 0xc, 96, 1, 2555 },
-{ 0x18, 96, 1, 2551 },
-{ 0xc, 97, 1, 2554 },
-{ 0x18, 97, 1, 2550 },
-{ 0xc, 98, 1, 2553 },
-{ 0x18, 98, 1, 2549 },
-{ 0xc, 99, 0, 2552 },
-{ 0xa, 95, 1, 2404 },
-{ 0x11, 96, 1, 2399 },
-{ 0x22, 96, 1, 2403 },
-{ 0x11, 97, 1, 2398 },
-{ 0x22, 97, 1, 2402 },
-{ 0x11, 98, 1, 2397 },
-{ 0x22, 98, 1, 2401 },
-{ 0xa, 99, 0, 2400 },
-{ 0x1a, 95, 1, 2260 },
-{ 0x62, 96, 1, 2259 },
-{ 0x62, 97, 1, 2258 },
-{ 0x62, 98, 1, 2257 },
-{ 0xe, 118, 1, 2256 },
-{ 0xe, 119, 1, 2255 },
-{ 0xe, 120, 1, 2254 },
-{ 0xe, 121, 0, 2253 },
-{ 0x6, 95, 1, 2564 },
-{ 0x5, 96, 1, 2559 },
-{ 0xa, 96, 1, 2563 },
-{ 0x5, 97, 1, 2558 },
-{ 0xa, 97, 1, 2562 },
-{ 0x5, 98, 1, 2557 },
-{ 0xa, 98, 1, 2561 },
-{ 0x6, 99, 0, 2560 },
-{ 0x5, 95, 1, 2412 },
-{ 0x9, 96, 1, 2411 },
-{ 0x12, 96, 1, 2407 },
-{ 0x9, 97, 1, 2410 },
-{ 0x12, 97, 1, 2406 },
-{ 0x9, 98, 1, 2409 },
-{ 0x12, 98, 1, 2405 },
-{ 0x5, 99, 0, 2408 },
-{ 0xd, 95, 1, 2268 },
-{ 0x19, 96, 1, 2267 },
-{ 0x19, 97, 1, 2266 },
-{ 0x19, 98, 1, 2265 },
-{ 0x7, 118, 1, 2264 },
-{ 0x7, 119, 1, 2263 },
-{ 0x7, 120, 1, 2262 },
-{ 0x7, 121, 0, 2261 },
-{ 0x3, 95, 1, 2572 },
-{ 0x3, 96, 1, 2571 },
-{ 0x6, 96, 1, 2567 },
-{ 0x3, 97, 1, 2570 },
-{ 0x6, 97, 1, 2566 },
-{ 0x3, 98, 1, 2569 },
-{ 0x6, 98, 1, 2565 },
-{ 0x3, 99, 0, 2568 },
-{ 0x28, 62, 1, 2420 },
-{ 0x44, 63, 1, 2415 },
-{ 0x88, 63, 1, 2419 },
-{ 0x44, 64, 1, 2414 },
-{ 0x88, 64, 1, 2418 },
-{ 0x44, 65, 1, 2413 },
-{ 0x88, 65, 1, 2417 },
-{ 0x28, 66, 0, 2416 },
-{ 0x68, 62, 1, 2276 },
-{ 0x188, 63, 1, 2275 },
-{ 0x188, 64, 1, 2274 },
-{ 0x188, 65, 1, 2273 },
-{ 0x38, 81, 1, 2272 },
-{ 0x38, 82, 1, 2271 },
-{ 0x38, 83, 1, 2270 },
-{ 0x38, 84, 0, 2269 },
-{ 0x18, 62, 1, 2580 },
-{ 0x14, 63, 1, 2575 },
-{ 0x28, 63, 1, 2579 },
-{ 0x14, 64, 1, 2574 },
-{ 0x28, 64, 1, 2578 },
-{ 0x14, 65, 1, 2573 },
-{ 0x28, 65, 1, 2577 },
-{ 0x18, 66, 0, 2576 },
-{ 0x14, 62, 1, 2428 },
-{ 0x24, 63, 1, 2427 },
-{ 0x48, 63, 1, 2423 },
-{ 0x24, 64, 1, 2426 },
-{ 0x48, 64, 1, 2422 },
-{ 0x24, 65, 1, 2425 },
-{ 0x48, 65, 1, 2421 },
-{ 0x14, 66, 0, 2424 },
-{ 0x34, 62, 1, 2284 },
-{ 0x64, 63, 1, 2283 },
-{ 0x64, 64, 1, 2282 },
-{ 0x64, 65, 1, 2281 },
-{ 0x1c, 81, 1, 2280 },
-{ 0x1c, 82, 1, 2279 },
-{ 0x1c, 83, 1, 2278 },
-{ 0x1c, 84, 0, 2277 },
-{ 0xc, 62, 1, 2588 },
-{ 0xc, 63, 1, 2587 },
-{ 0x18, 63, 1, 2583 },
-{ 0xc, 64, 1, 2586 },
-{ 0x18, 64, 1, 2582 },
-{ 0xc, 65, 1, 2585 },
-{ 0x18, 65, 1, 2581 },
-{ 0xc, 66, 0, 2584 },
-{ 0xa, 62, 1, 2436 },
-{ 0x11, 63, 1, 2431 },
-{ 0x22, 63, 1, 2435 },
-{ 0x11, 64, 1, 2430 },
-{ 0x22, 64, 1, 2434 },
-{ 0x11, 65, 1, 2429 },
-{ 0x22, 65, 1, 2433 },
-{ 0xa, 66, 0, 2432 },
-{ 0x1a, 62, 1, 2292 },
-{ 0x62, 63, 1, 2291 },
-{ 0x62, 64, 1, 2290 },
-{ 0x62, 65, 1, 2289 },
-{ 0xe, 81, 1, 2288 },
-{ 0xe, 82, 1, 2287 },
-{ 0xe, 83, 1, 2286 },
-{ 0xe, 84, 0, 2285 },
-{ 0x6, 62, 1, 2596 },
-{ 0x5, 63, 1, 2591 },
-{ 0xa, 63, 1, 2595 },
-{ 0x5, 64, 1, 2590 },
-{ 0xa, 64, 1, 2594 },
-{ 0x5, 65, 1, 2589 },
-{ 0xa, 65, 1, 2593 },
-{ 0x6, 66, 0, 2592 },
-{ 0x5, 62, 1, 2444 },
-{ 0x9, 63, 1, 2443 },
-{ 0x12, 63, 1, 2439 },
-{ 0x9, 64, 1, 2442 },
-{ 0x12, 64, 1, 2438 },
-{ 0x9, 65, 1, 2441 },
-{ 0x12, 65, 1, 2437 },
-{ 0x5, 66, 0, 2440 },
-{ 0xd, 62, 1, 2300 },
-{ 0x19, 63, 1, 2299 },
-{ 0x19, 64, 1, 2298 },
-{ 0x19, 65, 1, 2297 },
-{ 0x7, 81, 1, 2296 },
-{ 0x7, 82, 1, 2295 },
-{ 0x7, 83, 1, 2294 },
-{ 0x7, 84, 0, 2293 },
-{ 0x3, 62, 1, 2604 },
-{ 0x3, 63, 1, 2603 },
-{ 0x6, 63, 1, 2599 },
-{ 0x3, 64, 1, 2602 },
-{ 0x6, 64, 1, 2598 },
-{ 0x3, 65, 1, 2601 },
-{ 0x6, 65, 1, 2597 },
-{ 0x3, 66, 0, 2600 },
-{ 0x8, 86, 1, 2468 },
-{ 0x8, 87, 1, 2467 },
-{ 0x2, 88, 1, 2466 },
-{ 0x2, 89, 1, 2465 },
-{ 0x2, 90, 1, 2464 },
-{ 0x2, 91, 1, 2463 },
-{ 0x2, 92, 1, 2462 },
-{ 0x2, 93, 0, 2461 },
-{ 0x18, 86, 1, 2460 },
-{ 0x18, 87, 1, 2459 },
-{ 0x6, 88, 1, 2458 },
-{ 0x6, 89, 1, 2457 },
-{ 0x6, 90, 1, 2456 },
-{ 0x6, 91, 1, 2455 },
-{ 0x6, 92, 1, 2454 },
-{ 0x6, 93, 0, 2453 },
-{ 0x14, 86, 1, 2448 },
-{ 0x22, 87, 1, 2445 },
-{ 0x44, 87, 1, 2447 },
-{ 0xa, 94, 0, 2446 },
-{ 0x34, 86, 1, 2304 },
-{ 0xc4, 87, 1, 2303 },
-{ 0x38, 93, 1, 2301 },
-{ 0xe, 117, 0, 2302 },
-{ 0xc, 86, 1, 2608 },
-{ 0xa, 87, 1, 2605 },
-{ 0x14, 87, 1, 2607 },
-{ 0x6, 94, 0, 2606 },
-{ 0x2, 86, 1, 2316 },
-{ 0x2, 87, 1, 2315 },
-{ 0x4, 92, 1, 2314 },
-{ 0x4, 93, 0, 2313 },
-{ 0x12, 86, 1, 2312 },
-{ 0x42, 87, 1, 2311 },
-{ 0xc, 92, 1, 2310 },
-{ 0xc, 93, 0, 2309 },
-{ 0xa, 86, 1, 2452 },
-{ 0x12, 87, 1, 2451 },
-{ 0x24, 87, 1, 2449 },
-{ 0x5, 94, 0, 2450 },
-{ 0x1a, 86, 1, 2308 },
-{ 0x32, 87, 1, 2307 },
-{ 0x34, 93, 1, 2305 },
-{ 0x7, 117, 0, 2306 },
-{ 0x6, 86, 1, 2612 },
-{ 0x6, 87, 1, 2611 },
-{ 0xc, 87, 1, 2609 },
-{ 0x3, 94, 0, 2610 },
-{ 0x1, 86, 1, 2628 },
-{ 0x1, 87, 1, 2627 },
-{ 0x1, 88, 1, 2626 },
-{ 0x1, 89, 1, 2625 },
-{ 0x1, 90, 1, 2624 },
-{ 0x1, 91, 1, 2623 },
-{ 0x1, 92, 1, 2622 },
-{ 0x1, 93, 0, 2621 },
-{ 0x3, 86, 1, 2620 },
-{ 0x3, 87, 1, 2619 },
-{ 0x3, 88, 1, 2618 },
-{ 0x3, 89, 1, 2617 },
-{ 0x3, 90, 1, 2616 },
-{ 0x3, 91, 1, 2615 },
-{ 0x3, 92, 1, 2614 },
-{ 0x3, 93, 0, 2613 },
-{ 0x8, 53, 1, 2492 },
-{ 0x8, 54, 1, 2491 },
-{ 0x2, 55, 1, 2490 },
-{ 0x2, 56, 1, 2489 },
-{ 0x2, 57, 1, 2488 },
-{ 0x2, 58, 1, 2487 },
-{ 0x2, 59, 1, 2486 },
-{ 0x2, 60, 0, 2485 },
-{ 0x18, 53, 1, 2484 },
-{ 0x18, 54, 1, 2483 },
-{ 0x6, 55, 1, 2482 },
-{ 0x6, 56, 1, 2481 },
-{ 0x6, 57, 1, 2480 },
-{ 0x6, 58, 1, 2479 },
-{ 0x6, 59, 1, 2478 },
-{ 0x6, 60, 0, 2477 },
-{ 0x14, 53, 1, 2472 },
-{ 0x22, 54, 1, 2469 },
-{ 0x44, 54, 1, 2471 },
-{ 0xa, 61, 0, 2470 },
-{ 0x34, 53, 1, 2320 },
-{ 0xc4, 54, 1, 2319 },
-{ 0x38, 60, 1, 2317 },
-{ 0xe, 80, 0, 2318 },
-{ 0xc, 53, 1, 2632 },
-{ 0xa, 54, 1, 2629 },
-{ 0x14, 54, 1, 2631 },
-{ 0x6, 61, 0, 2630 },
-{ 0x2, 53, 1, 2332 },
-{ 0x2, 54, 1, 2331 },
-{ 0x4, 59, 1, 2330 },
-{ 0x4, 60, 0, 2329 },
-{ 0x12, 53, 1, 2328 },
-{ 0x42, 54, 1, 2327 },
-{ 0xc, 59, 1, 2326 },
-{ 0xc, 60, 0, 2325 },
-{ 0xa, 53, 1, 2476 },
-{ 0x12, 54, 1, 2475 },
-{ 0x24, 54, 1, 2473 },
-{ 0x5, 61, 0, 2474 },
-{ 0x1a, 53, 1, 2324 },
-{ 0x32, 54, 1, 2323 },
-{ 0x34, 60, 1, 2321 },
-{ 0x7, 80, 0, 2322 },
-{ 0x6, 53, 1, 2636 },
-{ 0x6, 54, 1, 2635 },
-{ 0xc, 54, 1, 2633 },
-{ 0x3, 61, 0, 2634 },
-{ 0x1, 53, 1, 2652 },
-{ 0x1, 54, 1, 2651 },
-{ 0x1, 55, 1, 2650 },
-{ 0x1, 56, 1, 2649 },
-{ 0x1, 57, 1, 2648 },
-{ 0x1, 58, 1, 2647 },
-{ 0x1, 59, 1, 2646 },
-{ 0x1, 60, 0, 2645 },
-{ 0x3, 53, 1, 2644 },
-{ 0x3, 54, 1, 2643 },
-{ 0x3, 55, 1, 2642 },
-{ 0x3, 56, 1, 2641 },
-{ 0x3, 57, 1, 2640 },
-{ 0x3, 58, 1, 2639 },
-{ 0x3, 59, 1, 2638 },
-{ 0x3, 60, 0, 2637 },
-{ 0x1, 4, 0, 2653 },
-{ 0x1, 296, 0, 2654 },
-{ 0x1, 379, 0, 2655 },
-{ 0x1, 374, 0, 2656 },
-{ 0x2, 358, 0, 2657 },
-{ 0x1, 358, 0, 2660 },
-{ 0x2, 357, 0, 2658 },
-{ 0x1, 357, 0, 2661 },
-{ 0x2, 356, 0, 2659 },
-{ 0x1, 356, 0, 2662 },
-{ 0x1, 355, 0, 2663 },
-{ 0x1, 354, 0, 2664 },
-{ 0x2, 353, 0, 2665 },
-{ 0x1, 353, 0, 2667 },
-{ 0x2, 352, 0, 2666 },
-{ 0x1, 352, 0, 2668 },
-{ 0x1, 382, 0, 2675 },
-{ 0x8, 381, 0, 2669 },
-{ 0x4, 381, 0, 2671 },
-{ 0x2, 381, 0, 2673 },
-{ 0x1, 381, 0, 2676 },
-{ 0x8, 380, 0, 2670 },
-{ 0x4, 380, 0, 2672 },
-{ 0x2, 380, 0, 2674 },
-{ 0x1, 380, 0, 2677 },
-{ 0x1, 351, 0, 2684 },
-{ 0x8, 350, 0, 2678 },
-{ 0x4, 350, 0, 2680 },
-{ 0x2, 350, 0, 2682 },
-{ 0x1, 350, 0, 2685 },
-{ 0x8, 349, 0, 2679 },
-{ 0x4, 349, 0, 2681 },
-{ 0x2, 349, 1, 2683 },
-{ 0x4, 143, 0, 1377 },
-{ 0x1, 349, 0, 2686 },
-{ 0x1, 6, 0, 2687 },
-{ 0x1, 7, 0, 2688 },
-{ 0x1, 295, 0, 2689 },
-{ 0x1, 456, 0, 2690 },
-{ 0x1, 346, 0, 2691 },
-{ 0x1, 13, 0, 2692 },
-{ 0x1, 11, 0, 2693 },
-{ 0x1, 422, 0, 2694 },
-{ 0x1, 394, 0, 2695 },
-{ 0x1, 393, 0, 2696 },
-{ 0x1, 455, 0, 2697 },
-{ 0x1, 345, 0, 2698 },
-{ 0x1, 12, 0, 2699 },
-{ 0x1, 10, 0, 2700 },
-{ 0x1, 5, 0, 2701 },
-{ 0x1, 421, 0, 2702 },
-{ 0x1, 420, 0, 2703 },
-{ 0x1, 1, 0, 2704 },
-{ 0x1, 0, 0, 2705 },
-};
-
diff --git a/tools/debugger/xenitp/ia64-asmtab.h b/tools/debugger/xenitp/ia64-asmtab.h
deleted file mode 100644 (file)
index 08a2cd9..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-/* ia64-asmtab.h -- Header for compacted IA-64 opcode tables.
-   Copyright 1999, 2000 Free Software Foundation, Inc.
-   Contributed by Bob Manson of Cygnus Support <manson@cygnus.com>
-
-   This file is part of GDB, GAS, and the GNU binutils.
-
-   GDB, GAS, and the GNU binutils are free software; you can redistribute
-   them and/or modify them under the terms of the GNU General Public
-   License as published by the Free Software Foundation; either version
-   2, or (at your option) any later version.
-
-   GDB, GAS, and the GNU binutils are distributed in the hope that they
-   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 file; see the file COPYING.  If not, write to the
-   Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
-   02110-1301, USA.  */
-
-#ifndef IA64_ASMTAB_H
-#define IA64_ASMTAB_H
-
-#include "ia64.h"
-
-/* The primary opcode table is made up of the following: */
-struct ia64_main_table
-{
-  /* The entry in the string table that corresponds to the name of this
-     opcode. */
-  unsigned short name_index;
-
-  /* The type of opcode; corresponds to the TYPE field in 
-     struct ia64_opcode. */
-  unsigned char opcode_type;
-
-  /* The number of outputs for this opcode. */
-  unsigned char num_outputs;
-
-  /* The base insn value for this opcode.  It may be modified by completers. */
-  ia64_insn opcode;
-
-  /* The mask of valid bits in OPCODE. Zeros indicate operand fields. */
-  ia64_insn mask;
-
-  /* The operands of this instruction.  Corresponds to the OPERANDS field
-     in struct ia64_opcode. */
-  unsigned char operands[5];
-
-  /* The flags for this instruction.  Corresponds to the FLAGS field in
-     struct ia64_opcode. */
-  short flags;
-
-  /* The tree of completers for this instruction; this is an offset into
-     completer_table. */
-  short completers;
-};
-
-/* Each instruction has a set of possible "completers", or additional
-   suffixes that can alter the instruction's behavior, and which has
-   potentially different dependencies.
-
-   The completer entries modify certain bits in the instruction opcode.
-   Which bits are to be modified are marked by the BITS, MASK and
-   OFFSET fields.  The completer entry may also note dependencies for the
-   opcode. 
-
-   These completers are arranged in a DAG; the pointers are indexes
-   into the completer_table array.  The completer DAG is searched by
-   find_completer () and ia64_find_matching_opcode ().
-
-   Note that each completer needs to be applied in turn, so that if we
-   have the instruction
-       cmp.lt.unc
-   the completer entries for both "lt" and "unc" would need to be applied
-   to the opcode's value.
-
-   Some instructions do not require any completers; these contain an
-   empty completer entry.  Instructions that require a completer do
-   not contain an empty entry.
-
-   Terminal completers (those completers that validly complete an
-   instruction) are marked by having the TERMINAL_COMPLETER flag set. 
-
-   Only dependencies listed in the terminal completer for an opcode are
-   considered to apply to that opcode instance. */
-
-struct ia64_completer_table
-{
-  /* The bit value that this completer sets. */
-  unsigned int bits;
-
-  /* And its mask. 1s are bits that are to be modified in the 
-     instruction. */
-  unsigned int mask;
-
-  /* The entry in the string table that corresponds to the name of this
-     completer. */
-  unsigned short name_index;
-
-  /* An alternative completer, or -1 if this is the end of the chain. */
-  short alternative;
-
-  /* A pointer to the DAG of completers that can potentially follow
-     this one, or -1. */
-  short subentries;
-
-  /* The bit offset in the instruction where BITS and MASK should be
-     applied. */
-  unsigned char offset : 7;
-
-  unsigned char terminal_completer : 1;
-
-  /* Index into the dependency list table */
-  short dependencies;
-};
-
-/* This contains sufficient information for the disassembler to resolve
-   the complete name of the original instruction.  */
-struct ia64_dis_names 
-{
-  /* COMPLETER_INDEX represents the tree of completers that make up
-     the instruction.  The LSB represents the top of the tree for the
-     specified instruction. 
-
-     A 0 bit indicates to go to the next alternate completer via the
-     alternative field; a 1 bit indicates that the current completer
-     is part of the instruction, and to go down the subentries index.
-     We know we've reached the final completer when we run out of 1
-     bits.
-
-     There is always at least one 1 bit. */
-  unsigned int completer_index : 20;
-
-  /* The index in the main_table[] array for the instruction. */
-  unsigned short insn_index : 11;
-
-  /* If set, the next entry in this table is an alternate possibility
-     for this instruction encoding.  Which one to use is determined by
-     the instruction type and other factors (see opcode_verify ()).  */
-  unsigned int next_flag : 1;
-
-  /* The disassembly priority of this entry among instructions. */
-  unsigned short priority;
-};
-
-#endif
diff --git a/tools/debugger/xenitp/ia64-dis.c b/tools/debugger/xenitp/ia64-dis.c
deleted file mode 100644 (file)
index 5068768..0000000
+++ /dev/null
@@ -1,309 +0,0 @@
-/* ia64-dis.c -- Disassemble ia64 instructions
-   Copyright 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
-   Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
-
-   This file is part of GDB, GAS, and the GNU binutils.
-
-   GDB, GAS, and the GNU binutils are free software; you can redistribute
-   them and/or modify them under the terms of the GNU General Public
-   License as published by the Free Software Foundation; either version
-   2, or (at your option) any later version.
-
-   GDB, GAS, and the GNU binutils are distributed in the hope that they
-   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 file; see the file COPYING.  If not, write to the
-   Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
-   02110-1301, USA.  */
-
-#include <assert.h>
-#include <string.h>
-
-#include "dis-asm.h"
-#include "ia64.h"
-
-#define NELEMS(a)      ((int) (sizeof (a) / sizeof (a[0])))
-
-/* Disassemble ia64 instruction.  */
-
-/* Return the instruction type for OPCODE found in unit UNIT. */
-
-static enum ia64_insn_type
-unit_to_type (ia64_insn opcode, enum ia64_unit unit)
-{
-  enum ia64_insn_type type;
-  int op;
-
-  op = IA64_OP (opcode);
-
-  if (op >= 8 && (unit == IA64_UNIT_I || unit == IA64_UNIT_M))
-    {
-      type = IA64_TYPE_A;
-    }
-  else
-    {
-      switch (unit)
-       {
-       case IA64_UNIT_I:
-         type = IA64_TYPE_I; break;
-       case IA64_UNIT_M:
-         type = IA64_TYPE_M; break;
-       case IA64_UNIT_B:
-         type = IA64_TYPE_B; break;
-       case IA64_UNIT_F:
-         type = IA64_TYPE_F; break;
-        case IA64_UNIT_L:
-       case IA64_UNIT_X:
-         type = IA64_TYPE_X; break;
-       default:
-         type = -1;
-       }
-    }
-  return type;
-}
-
-int
-print_insn_ia64 (bfd_vma memaddr, struct disassemble_info *info)
-{
-  ia64_insn t0, t1, slot[3], template, s_bit, insn;
-  int slotnum, j, status, need_comma, retval, slot_multiplier;
-  const struct ia64_operand *odesc;
-  const struct ia64_opcode *idesc;
-  const char *err, *str, *tname;
-  BFD_HOST_U_64_BIT value;
-  bfd_byte bundle[16];
-  enum ia64_unit unit;
-  char regname[16];
-
-  if (info->bytes_per_line == 0)
-    info->bytes_per_line = 6;
-  info->display_endian = info->endian;
-
-  slot_multiplier = info->bytes_per_line;
-  retval = slot_multiplier;
-
-  slotnum = (((long) memaddr) & 0xf) / slot_multiplier;
-  if (slotnum > 2)
-    return -1;
-
-  memaddr -= (memaddr & 0xf);
-  status = (*info->read_memory_func) (memaddr, bundle, sizeof (bundle), info);
-  if (status != 0)
-    {
-      (*info->memory_error_func) (status, memaddr, info);
-      return -1;
-    }
-  /* bundles are always in little-endian byte order */
-  t0 = bfd_getl64 (bundle);
-  t1 = bfd_getl64 (bundle + 8);
-  s_bit = t0 & 1;
-  template = (t0 >> 1) & 0xf;
-  slot[0] = (t0 >>  5) & 0x1ffffffffffLL;
-  slot[1] = ((t0 >> 46) & 0x3ffff) | ((t1 & 0x7fffff) << 18);
-  slot[2] = (t1 >> 23) & 0x1ffffffffffLL;
-
-  tname = ia64_templ_desc[template].name;
-  if (slotnum == 0)
-    (*info->fprintf_func) (info->stream, "[%s] ", tname);
-  else
-    (*info->fprintf_func) (info->stream, "      ");
-
-  unit = ia64_templ_desc[template].exec_unit[slotnum];
-
-  if (template == 2 && slotnum == 1)
-    {
-      /* skip L slot in MLI template: */
-      slotnum = 2;
-      retval += slot_multiplier;
-    }
-
-  insn = slot[slotnum];
-
-  if (unit == IA64_UNIT_NIL)
-    goto decoding_failed;
-
-  idesc = ia64_dis_opcode (insn, unit_to_type (insn, unit));
-  if (idesc == NULL)
-    goto decoding_failed;
-
-  /* print predicate, if any: */
-
-  if ((idesc->flags & IA64_OPCODE_NO_PRED)
-      || (insn & 0x3f) == 0)
-    (*info->fprintf_func) (info->stream, "      ");
-  else
-    (*info->fprintf_func) (info->stream, "(p%02d) ", (int)(insn & 0x3f));
-
-  /* now the actual instruction: */
-
-  (*info->fprintf_func) (info->stream, "%s", idesc->name);
-  if (idesc->operands[0])
-    (*info->fprintf_func) (info->stream, " ");
-
-  need_comma = 0;
-  for (j = 0; j < NELEMS (idesc->operands) && idesc->operands[j]; ++j)
-    {
-      odesc = elf64_ia64_operands + idesc->operands[j];
-
-      if (need_comma)
-       (*info->fprintf_func) (info->stream, ",");
-
-      if (odesc - elf64_ia64_operands == IA64_OPND_IMMU64)
-       {
-         /* special case of 64 bit immediate load: */
-         value = ((insn >> 13) & 0x7f) | (((insn >> 27) & 0x1ff) << 7)
-           | (((insn >> 22) & 0x1f) << 16) | (((insn >> 21) & 0x1) << 21)
-           | (slot[1] << 22) | (((insn >> 36) & 0x1) << 63);
-       }
-      else if (odesc - elf64_ia64_operands == IA64_OPND_IMMU62)
-        {
-          /* 62-bit immediate for nop.x/break.x */
-          value = ((slot[1] & 0x1ffffffffffLL) << 21)
-            | (((insn >> 36) & 0x1) << 20)
-            | ((insn >> 6) & 0xfffff);
-        }
-      else if (odesc - elf64_ia64_operands == IA64_OPND_TGT64)
-       {
-         /* 60-bit immediate for long branches. */
-         value = (((insn >> 13) & 0xfffff)
-                  | (((insn >> 36) & 1) << 59)
-                  | (((slot[1] >> 2) & 0x7fffffffffLL) << 20)) << 4;
-       }
-      else
-       {
-         err = (*odesc->extract) (odesc, insn, &value);
-         if (err)
-           {
-             (*info->fprintf_func) (info->stream, "%s", err);
-             goto done;
-           }
-       }
-
-       switch (odesc->class)
-         {
-         case IA64_OPND_CLASS_CST:
-           (*info->fprintf_func) (info->stream, "%s", odesc->str);
-           break;
-
-         case IA64_OPND_CLASS_REG:
-           if (odesc->str[0] == 'a' && odesc->str[1] == 'r')
-             {
-               switch (value)
-                 {
-                 case 0: case 1: case 2: case 3:
-                 case 4: case 5: case 6: case 7:
-                   sprintf (regname, "ar.k%u", (unsigned int) value);
-                   break;
-                 case 16:      strcpy (regname, "ar.rsc"); break;
-                 case 17:      strcpy (regname, "ar.bsp"); break;
-                 case 18:      strcpy (regname, "ar.bspstore"); break;
-                 case 19:      strcpy (regname, "ar.rnat"); break;
-                 case 32:      strcpy (regname, "ar.ccv"); break;
-                 case 36:      strcpy (regname, "ar.unat"); break;
-                 case 40:      strcpy (regname, "ar.fpsr"); break;
-                 case 44:      strcpy (regname, "ar.itc"); break;
-                 case 64:      strcpy (regname, "ar.pfs"); break;
-                 case 65:      strcpy (regname, "ar.lc"); break;
-                 case 66:      strcpy (regname, "ar.ec"); break;
-                 default:
-                   sprintf (regname, "ar%u", (unsigned int) value);
-                   break;
-                 }
-               (*info->fprintf_func) (info->stream, "%s", regname);
-             }
-           else if (odesc->str[0] == 'c' && odesc->str[1] == 'r')
-             {
-               switch (value)
-                 {
-                 case 0:       strcpy (regname, "cr.dcr"); break;
-                 case 1:       strcpy (regname, "cr.itm"); break;
-                 case 2:       strcpy (regname, "cr.iva"); break;
-                 case 8:       strcpy (regname, "cr.pta"); break;
-                 case 16:      strcpy (regname, "cr.ipsr"); break;
-                 case 17:      strcpy (regname, "cr.isr"); break;
-                 case 19:      strcpy (regname, "cr.iip"); break;
-                 case 20:      strcpy (regname, "cr.ifa"); break;
-                 case 21:      strcpy (regname, "cr.itir"); break;
-                 case 22:      strcpy (regname, "cr.iipa"); break;
-                 case 23:      strcpy (regname, "cr.ifs"); break;
-                 case 24:      strcpy (regname, "cr.iim"); break;
-                 case 25:      strcpy (regname, "cr.iha"); break;
-                 case 64:      strcpy (regname, "cr.lid"); break;
-                 case 65:      strcpy (regname, "cr.ivr"); break;
-                 case 66:      strcpy (regname, "cr.tpr"); break;
-                 case 67:      strcpy (regname, "cr.eoi"); break;
-                 case 68:      strcpy (regname, "cr.irr0"); break;
-                 case 69:      strcpy (regname, "cr.irr1"); break;
-                 case 70:      strcpy (regname, "cr.irr2"); break;
-                 case 71:      strcpy (regname, "cr.irr3"); break;
-                 case 72:      strcpy (regname, "cr.itv"); break;
-                 case 73:      strcpy (regname, "cr.pmv"); break;
-                 case 74:      strcpy (regname, "cr.cmcv"); break;
-                 case 80:      strcpy (regname, "cr.lrr0"); break;
-                 case 81:      strcpy (regname, "cr.lrr1"); break;
-                 default:
-                   sprintf (regname, "cr%u", (unsigned int) value);
-                   break;
-                 }
-               (*info->fprintf_func) (info->stream, "%s", regname);
-             }
-           else
-             (*info->fprintf_func) (info->stream, "%s%d", odesc->str, (int)value);
-           break;
-
-         case IA64_OPND_CLASS_IND:
-           (*info->fprintf_func) (info->stream, "%s[r%d]", odesc->str, (int)value);
-           break;
-
-         case IA64_OPND_CLASS_ABS:
-           str = 0;
-           if (odesc - elf64_ia64_operands == IA64_OPND_MBTYPE4)
-             switch (value)
-               {
-               case 0x0: str = "@brcst"; break;
-               case 0x8: str = "@mix"; break;
-               case 0x9: str = "@shuf"; break;
-               case 0xa: str = "@alt"; break;
-               case 0xb: str = "@rev"; break;
-               }
-
-           if (str)
-             (*info->fprintf_func) (info->stream, "%s", str);
-           else if (odesc->flags & IA64_OPND_FLAG_DECIMAL_SIGNED)
-             (*info->fprintf_func) (info->stream, "%lld", (long long) value);
-           else if (odesc->flags & IA64_OPND_FLAG_DECIMAL_UNSIGNED)
-             (*info->fprintf_func) (info->stream, "%llu", (long long) value);
-           else
-             (*info->fprintf_func) (info->stream, "0x%llx", (long long) value);
-           break;
-
-         case IA64_OPND_CLASS_REL:
-           (*info->print_address_func) (memaddr + value, info);
-           break;
-         }
-
-      need_comma = 1;
-      if (j + 1 == idesc->num_outputs)
-       {
-         (*info->fprintf_func) (info->stream, "=");
-         need_comma = 0;
-       }
-    }
-  if (slotnum + 1 == ia64_templ_desc[template].group_boundary 
-      || ((slotnum == 2) && s_bit))
-    (*info->fprintf_func) (info->stream, ";;");
-
- done:
-  ia64_free_opcode ((struct ia64_opcode *)idesc);
- failed:
-  if (slotnum == 2)
-    retval += 16 - 3*slot_multiplier;
-  return retval;
-
- decoding_failed:
-  (*info->fprintf_func) (info->stream, "      data8 %#011llx", (long long) insn);
-  goto failed;
-}
diff --git a/tools/debugger/xenitp/ia64-gen.c b/tools/debugger/xenitp/ia64-gen.c
deleted file mode 100644 (file)
index c5e08eb..0000000
+++ /dev/null
@@ -1,2865 +0,0 @@
-/* ia64-gen.c -- Generate a shrunk set of opcode tables
-   Copyright 1999, 2000, 2001, 2002, 2004, 2005, 2006
-   Free Software Foundation, Inc.
-   Written by Bob Manson, Cygnus Solutions, <manson@cygnus.com>
-
-   This file is part of GDB, GAS, and the GNU binutils.
-
-   GDB, GAS, and the GNU binutils are free software; you can redistribute
-   them and/or modify them under the terms of the GNU General Public
-   License as published by the Free Software Foundation; either version
-   2, or (at your option) any later version.
-
-   GDB, GAS, and the GNU binutils are distributed in the hope that they
-   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 file; see the file COPYING.  If not, write to the
-   Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
-   02110-1301, USA.  */
-
-/* While the ia64-opc-* set of opcode tables are easy to maintain,
-   they waste a tremendous amount of space.  ia64-gen rearranges the
-   instructions into a directed acyclic graph (DAG) of instruction opcodes and 
-   their possible completers, as well as compacting the set of strings used.  
-
-   The disassembler table consists of a state machine that does
-   branching based on the bits of the opcode being disassembled.  The
-   state encodings have been chosen to minimize the amount of space
-   required.  
-
-   The resource table is constructed based on some text dependency tables, 
-   which are also easier to maintain than the final representation.  */
-
-#include <stdio.h>
-#include <stdarg.h>
-#include <errno.h>
-
-#include "ansidecl.h"
-#include "libiberty.h"
-#include "safe-ctype.h"
-#include "sysdep.h"
-#include "getopt.h"
-#include "ia64-opc.h"
-#include "ia64-opc-a.c"
-#include "ia64-opc-i.c"
-#include "ia64-opc-m.c"
-#include "ia64-opc-b.c"
-#include "ia64-opc-f.c"
-#include "ia64-opc-x.c"
-#include "ia64-opc-d.c"
-
-#include <libintl.h>
-#define _(String) gettext (String)
-
-/* This is a copy of fprintf_vma from bfd/bfd-in2.h.  We have to use this
-   always, because we might be compiled without BFD64 defined, if configured
-   for a 32-bit target and --enable-targets=all is used.  This will work for
-   both 32-bit and 64-bit hosts.  */
-#define _opcode_int64_low(x) ((unsigned long) (((x) & 0xffffffff)))
-#define _opcode_int64_high(x) ((unsigned long) (((x) >> 32) & 0xffffffff))
-#define opcode_fprintf_vma(s,x) \
-  fprintf ((s), "%08lx%08lx", _opcode_int64_high (x), _opcode_int64_low (x))
-
-const char * program_name = NULL;
-int debug = 0;
-
-#define NELEMS(a) (sizeof (a) / sizeof ((a)[0]))
-#define tmalloc(X) (X *) xmalloc (sizeof (X))
-
-/* The main opcode table entry.  Each entry is a unique combination of
-   name and flags (no two entries in the table compare as being equal
-   via opcodes_eq).  */
-struct main_entry
-{
-  /* The base name of this opcode.  The names of its completers are
-     appended to it to generate the full instruction name.  */
-  struct string_entry *name;
-  /* The base opcode entry.  Which one to use is a fairly arbitrary choice;
-     it uses the first one passed to add_opcode_entry.  */
-  struct ia64_opcode *opcode;
-  /* The list of completers that can be applied to this opcode.  */
-  struct completer_entry *completers;
-  /* Next entry in the chain.  */
-  struct main_entry *next;
-  /* Index in the  main table.  */
-  int main_index;
-} *maintable, **ordered_table;
-
-int otlen = 0;
-int ottotlen = 0;
-int opcode_count = 0;
-
-/* The set of possible completers for an opcode.  */
-struct completer_entry
-{
-  /* This entry's index in the ia64_completer_table[] array.  */
-  int num;
-
-  /* The name of the completer.  */
-  struct string_entry *name;
-
-  /* This entry's parent.  */
-  struct completer_entry *parent;
-
-  /* Set if this is a terminal completer (occurs at the end of an
-     opcode).  */
-  int is_terminal;
-
-  /* An alternative completer.  */
-  struct completer_entry *alternative;
-
-  /* Additional completers that can be appended to this one.  */
-  struct completer_entry *addl_entries;
-
-  /* Before compute_completer_bits () is invoked, this contains the actual
-     instruction opcode for this combination of opcode and completers.
-     Afterwards, it contains those bits that are different from its
-     parent opcode.  */
-  ia64_insn bits;
-
-  /* Bits set to 1 correspond to those bits in this completer's opcode
-     that are different from its parent completer's opcode (or from
-     the base opcode if the entry is the root of the opcode's completer
-     list).  This field is filled in by compute_completer_bits ().  */
-  ia64_insn mask;
-
-  /* Index into the opcode dependency list, or -1 if none.  */
-  int dependencies;
-
-  /* Remember the order encountered in the opcode tables.  */
-  int order;
-};
-
-/* One entry in the disassembler name table.  */
-struct disent
-{
-  /* The index into the ia64_name_dis array for this entry.  */
-  int ournum;
-
-  /* The index into the main_table[] array.  */
-  int insn;
-
-  /* The disassmbly priority of this entry.  */
-  int priority;
-
-  /* The completer_index value for this entry.  */
-  int completer_index;
-
-  /* How many other entries share this decode.  */
-  int nextcnt;
-
-  /* The next entry sharing the same decode.  */
-  struct disent *nexte;
-
-  /* The next entry in the name list.  */
-  struct disent *next_ent;
-} *disinsntable = NULL;
-
-/* A state machine that will eventually be used to generate the
-   disassembler table.  */
-struct bittree
-{
-  struct disent *disent;
-  struct bittree *bits[3]; /* 0, 1, and X (don't care).  */
-  int bits_to_skip;
-  int skip_flag;
-} *bittree;
-
-/* The string table contains all opcodes and completers sorted in
-   alphabetical order.  */
-
-/* One entry in the string table.  */
-struct string_entry 
-{
-  /* The index in the ia64_strings[] array for this entry.  */
-  int num;
-  /* And the string.  */
-  char *s;
-} **string_table = NULL;
-
-int strtablen = 0;
-int strtabtotlen = 0;
-
-\f
-/* Resource dependency entries.  */
-struct rdep
-{
-  char *name;                       /* Resource name.  */
-  unsigned 
-    mode:2,                         /* RAW, WAW, or WAR.  */
-    semantics:3;                    /* Dependency semantics.  */
-  char *extra;                      /* Additional semantics info.  */
-  int nchks;                   
-  int total_chks;                   /* Total #of terminal insns.  */
-  int *chks;                        /* Insn classes which read (RAW), write
-                                       (WAW), or write (WAR) this rsrc.  */
-  int *chknotes;                    /* Dependency notes for each class.  */
-  int nregs;
-  int total_regs;                   /* Total #of terminal insns.  */
-  int *regs;                        /* Insn class which write (RAW), write2
-                                       (WAW), or read (WAR) this rsrc.  */
-  int *regnotes;                    /* Dependency notes for each class.  */
-
-  int waw_special;                  /* Special WAW dependency note.  */
-} **rdeps = NULL;
-
-static int rdepslen = 0;
-static int rdepstotlen = 0;
-
-/* Array of all instruction classes.  */
-struct iclass
-{ 
-  char *name;                       /* Instruction class name.  */
-  int is_class;                     /* Is a class, not a terminal.  */
-  int nsubs;                        
-  int *subs;                        /* Other classes within this class.  */
-  int nxsubs;                       
-  int xsubs[4];                     /* Exclusions.  */
-  char *comment;                    /* Optional comment.  */
-  int note;                         /* Optional note.  */
-  int terminal_resolved;            /* Did we match this with anything?  */
-  int orphan;                       /* Detect class orphans.  */
-} **ics = NULL;
-
-static int iclen = 0;
-static int ictotlen = 0;
-
-/* An opcode dependency (chk/reg pair of dependency lists).  */
-struct opdep
-{
-  int chk;                          /* index into dlists */
-  int reg;                          /* index into dlists */
-} **opdeps;
-
-static int opdeplen = 0;
-static int opdeptotlen = 0;
-
-/* A generic list of dependencies w/notes encoded.  These may be shared.  */
-struct deplist
-{
-  int len;
-  unsigned short *deps;
-} **dlists;
-
-static int dlistlen = 0;
-static int dlisttotlen = 0;
-
-
-static void fail (const char *, ...) ATTRIBUTE_PRINTF_1;
-static void warn (const char *, ...) ATTRIBUTE_PRINTF_1;
-static struct rdep * insert_resource (const char *, enum ia64_dependency_mode);
-static int  deplist_equals (struct deplist *, struct deplist *);
-static short insert_deplist (int, unsigned short *);
-static short insert_dependencies (int, unsigned short *, int, unsigned short *);
-static void  mark_used (struct iclass *, int);
-static int  fetch_insn_class (const char *, int);
-static int  sub_compare (const void *, const void *);
-static void load_insn_classes (void);
-static void parse_resource_users (const char *, int **, int *, int **);
-static int  parse_semantics (char *);
-static void add_dep (const char *, const char *, const char *, int, int, char *, int);
-static void load_depfile (const char *, enum ia64_dependency_mode);
-static void load_dependencies (void);
-static int  irf_operand (int, const char *);
-static int  in_iclass_mov_x (struct ia64_opcode *, struct iclass *, const char *, const char *);
-static int  in_iclass (struct ia64_opcode *, struct iclass *, const char *, const char *, int *);
-static int  lookup_regindex (const char *, int);
-static int  lookup_specifier (const char *);
-static void print_dependency_table (void);
-static struct string_entry * insert_string (char *);
-static void gen_dis_table (struct bittree *);
-static void print_dis_table (void);
-static void generate_disassembler (void);
-static void print_string_table (void);
-static int  completer_entries_eq (struct completer_entry *, struct completer_entry *);
-static struct completer_entry * insert_gclist (struct completer_entry *);
-static int  get_prefix_len (const char *);
-static void compute_completer_bits (struct main_entry *, struct completer_entry *);
-static void collapse_redundant_completers (void);
-static int  insert_opcode_dependencies (struct ia64_opcode *, struct completer_entry *);
-static void insert_completer_entry (struct ia64_opcode *, struct main_entry *, int);
-static void print_completer_entry (struct completer_entry *);
-static void print_completer_table (void);
-static int  opcodes_eq (struct ia64_opcode *, struct ia64_opcode *);
-static void add_opcode_entry (struct ia64_opcode *);
-static void print_main_table (void);
-static void shrink (struct ia64_opcode *);
-static void print_version (void);
-static void usage (FILE *, int);
-static void finish_distable (void);
-static void insert_bit_table_ent (struct bittree *, int, ia64_insn, ia64_insn, int, int, int);
-static void add_dis_entry (struct bittree *, ia64_insn, ia64_insn, int, struct completer_entry *, int);
-static void compact_distree (struct bittree *);
-static struct bittree * make_bittree_entry (void);
-static struct disent * add_dis_table_ent (struct disent *, int, int, int);
-
-\f
-static void
-fail (const char *message, ...)
-{
-  va_list args;
-  
-  va_start (args, message);
-  fprintf (stderr, _("%s: Error: "), program_name);
-  vfprintf (stderr, message, args);
-  va_end (args);
-  xexit (1);
-}
-
-static void
-warn (const char *message, ...)
-{
-  va_list args;
-
-  va_start (args, message);
-
-  fprintf (stderr, _("%s: Warning: "), program_name);
-  vfprintf (stderr, message, args);
-  va_end (args);
-}
-
-/* Add NAME to the resource table, where TYPE is RAW or WAW.  */
-static struct rdep *
-insert_resource (const char *name, enum ia64_dependency_mode type)
-{
-  if (rdepslen == rdepstotlen)
-    {
-      rdepstotlen += 20;
-      rdeps = (struct rdep **)
-        xrealloc (rdeps, sizeof(struct rdep **) * rdepstotlen);
-    }
-  rdeps[rdepslen] = tmalloc(struct rdep);
-  memset((void *)rdeps[rdepslen], 0, sizeof(struct rdep));
-  rdeps[rdepslen]->name = xstrdup (name);
-  rdeps[rdepslen]->mode = type;
-  rdeps[rdepslen]->waw_special = 0;
-  
-  return rdeps[rdepslen++];
-}
-
-/* Are the lists of dependency indexes equivalent?  */
-static int
-deplist_equals (struct deplist *d1, struct deplist *d2)
-{
-  int i;
-
-  if (d1->len != d2->len)
-    return 0;
-
-  for (i = 0; i < d1->len; i++)
-    if (d1->deps[i] != d2->deps[i])
-      return 0;
-
-  return 1;
-}
-
-/* Add the list of dependencies to the list of dependency lists.  */
-static short
-insert_deplist (int count, unsigned short *deps)
-{
-  /* Sort the list, then see if an equivalent list exists already.
-     this results in a much smaller set of dependency lists.  */
-  struct deplist *list;
-  char set[0x10000];
-  int i;
-
-  memset ((void *)set, 0, sizeof (set));
-  for (i = 0; i < count; i++)
-    set[deps[i]] = 1;
-
-  count = 0;
-  for (i = 0; i < (int) sizeof (set); i++)
-    if (set[i])
-      ++count;
-
-  list = tmalloc (struct deplist);
-  list->len = count;
-  list->deps = (unsigned short *) malloc (sizeof (unsigned short) * count);
-
-  for (i = 0, count = 0; i < (int) sizeof (set); i++)
-    if (set[i])
-      list->deps[count++] = i;
-
-  /* Does this list exist already?  */
-  for (i = 0; i < dlistlen; i++)
-    if (deplist_equals (list, dlists[i]))
-      {
-       free (list->deps);
-       free (list);
-       return i;
-      }
-
-  if (dlistlen == dlisttotlen)
-    {
-      dlisttotlen += 20;
-      dlists = (struct deplist **)
-        xrealloc (dlists, sizeof(struct deplist **) * dlisttotlen);
-    }
-  dlists[dlistlen] = list;
-
-  return dlistlen++;
-}
-
-/* Add the given pair of dependency lists to the opcode dependency list.  */
-static short
-insert_dependencies (int nchks, unsigned short *chks, 
-                     int nregs, unsigned short *regs)
-{
-  struct opdep *pair;
-  int i;
-  int regind = -1;
-  int chkind = -1;
-
-  if (nregs > 0)
-    regind = insert_deplist (nregs, regs);
-  if (nchks > 0)
-    chkind = insert_deplist (nchks, chks);
-
-  for (i = 0; i < opdeplen; i++)
-    if (opdeps[i]->chk == chkind 
-       && opdeps[i]->reg == regind)
-      return i;
-
-  pair = tmalloc (struct opdep);
-  pair->chk = chkind;
-  pair->reg = regind;
-  
-  if (opdeplen == opdeptotlen)
-    {
-      opdeptotlen += 20;
-      opdeps = (struct opdep **)
-        xrealloc (opdeps, sizeof(struct opdep **) * opdeptotlen);
-    }
-  opdeps[opdeplen] = pair;
-
-  return opdeplen++;
-}
-
-static void 
-mark_used (struct iclass *ic, int clear_terminals)
-{
-  int i;
-
-  ic->orphan = 0;
-  if (clear_terminals)
-    ic->terminal_resolved = 1;
-
-  for (i = 0; i < ic->nsubs; i++)
-    mark_used (ics[ic->subs[i]], clear_terminals);
-
-  for (i = 0; i < ic->nxsubs; i++)
-    mark_used (ics[ic->xsubs[i]], clear_terminals);
-}
-
-/* Look up an instruction class; if CREATE make a new one if none found;
-   returns the index into the insn class array.  */
-static int
-fetch_insn_class (const char *full_name, int create)
-{
-  char *name;
-  char *notestr;
-  char *xsect;
-  char *comment;
-  int i, note = 0;
-  int ind;
-  int is_class = 0;
-
-  if (strncmp (full_name, "IC:", 3) == 0)
-    {
-      name = xstrdup (full_name + 3);
-      is_class = 1;
-    }
-  else
-    name = xstrdup (full_name);
-
-  if ((xsect = strchr(name, '\\')) != NULL)
-    is_class = 1;
-  if ((comment = strchr(name, '[')) != NULL)
-    is_class = 1;
-  if ((notestr = strchr(name, '+')) != NULL)
-    is_class = 1;
-
-  /* If it is a composite class, then ignore comments and notes that come after
-     the '\\', since they don't apply to the part we are decoding now.  */
-  if (xsect)
-    {
-      if (comment > xsect)
-       comment = 0;
-      if (notestr > xsect)
-       notestr = 0;
-    }
-
-  if (notestr)
-    {
-      char *nextnotestr;
-
-      note = atoi (notestr + 1);
-      if ((nextnotestr = strchr (notestr + 1, '+')) != NULL)
-        {
-          if (strcmp (notestr, "+1+13") == 0)
-            note = 13;
-          else if (!xsect || nextnotestr < xsect)
-            warn (_("multiple note %s not handled\n"), notestr);
-        }
-    }
-
-  /* If it's a composite class, leave the notes and comments in place so that
-     we have a unique name for the composite class.  Otherwise, we remove
-     them.  */
-  if (!xsect)
-    {
-      if (notestr)
-        *notestr = 0;
-      if (comment)
-        *comment = 0;
-    }
-
-  for (i = 0; i < iclen; i++)
-    if (strcmp (name, ics[i]->name) == 0
-        && ((comment == NULL && ics[i]->comment == NULL)
-            || (comment != NULL && ics[i]->comment != NULL
-                && strncmp (ics[i]->comment, comment, 
-                            strlen (ics[i]->comment)) == 0))
-        && note == ics[i]->note)
-      return i;
-
-  if (!create)
-    return -1;
-
-  /* Doesn't exist, so make a new one.  */
-  if (iclen == ictotlen)
-    {
-      ictotlen += 20;
-      ics = (struct iclass **)
-        xrealloc (ics, (ictotlen) * sizeof (struct iclass *));
-    }
-
-  ind = iclen++;
-  ics[ind] = tmalloc (struct iclass);
-  memset ((void *)ics[ind], 0, sizeof (struct iclass));
-  ics[ind]->name = xstrdup (name);
-  ics[ind]->is_class = is_class;
-  ics[ind]->orphan = 1;
-
-  if (comment)
-    {
-      ics[ind]->comment = xstrdup (comment + 1);
-      ics[ind]->comment[strlen (ics[ind]->comment)-1] = 0;
-    }
-
-  if (notestr)
-    ics[ind]->note = note;
-
-  /* If it's a composite class, there's a comment or note, look for an
-     existing class or terminal with the same name.  */
-  if ((xsect || comment || notestr) && is_class)
-    {
-      /* First, populate with the class we're based on.  */
-      char *subname = name;
-
-      if (xsect)
-        *xsect = 0;
-      else if (comment)
-        *comment = 0;
-      else if (notestr)
-        *notestr = 0;
-
-      ics[ind]->nsubs = 1;
-      ics[ind]->subs = tmalloc(int);
-      ics[ind]->subs[0] = fetch_insn_class (subname, 1);
-    }
-
-  while (xsect)
-    {
-      char *subname = xsect + 1;
-
-      xsect = strchr (subname, '\\');
-      if (xsect)
-        *xsect = 0;
-      ics[ind]->xsubs[ics[ind]->nxsubs] = fetch_insn_class (subname,1);
-      ics[ind]->nxsubs++;
-    }
-  free (name);
-
-  return ind;
-}
-
-/* For sorting a class's sub-class list only; make sure classes appear before
-   terminals.  */
-static int
-sub_compare (const void *e1, const void *e2)
-{
-  struct iclass *ic1 = ics[*(int *)e1];
-  struct iclass *ic2 = ics[*(int *)e2];
-
-  if (ic1->is_class)
-    {
-      if (!ic2->is_class)
-        return -1;
-    }
-  else if (ic2->is_class)
-    return 1;
-
-  return strcmp (ic1->name, ic2->name);
-}
-
-static void
-load_insn_classes (void)
-{
-  FILE *fp = fopen ("ia64-ic.tbl", "r");
-  char buf[2048];
-
-  if (fp == NULL)
-    fail (_("can't find ia64-ic.tbl for reading\n"));
-
-  /* Discard first line.  */
-  fgets (buf, sizeof(buf), fp);
-
-  while (!feof (fp))
-    {
-      int iclass;
-      char *name;
-      char *tmp;
-      
-      if (fgets (buf, sizeof (buf), fp) == NULL)
-        break;
-      
-      while (ISSPACE (buf[strlen (buf) - 1]))
-        buf[strlen (buf) - 1] = '\0';
-
-      name = tmp = buf;
-      while (*tmp != ';')
-        {
-          ++tmp;
-          if (tmp == buf + sizeof (buf))
-            abort ();
-        }
-      *tmp++ = '\0';
-
-      iclass = fetch_insn_class (name, 1);
-      ics[iclass]->is_class = 1;
-
-      if (strcmp (name, "none") == 0)
-        {
-          ics[iclass]->is_class = 0;
-          ics[iclass]->terminal_resolved = 1;
-          continue;
-        }
-
-      /* For this class, record all sub-classes.  */
-      while (*tmp)
-        {
-          char *subname;
-          int sub;
-
-          while (*tmp && ISSPACE (*tmp))
-            {
-              ++tmp;
-              if (tmp == buf + sizeof (buf))
-                abort ();
-            }
-          subname = tmp;
-          while (*tmp && *tmp != ',')
-            {
-              ++tmp;
-              if (tmp == buf + sizeof (buf))
-                abort ();
-            }
-          if (*tmp == ',')
-            *tmp++ = '\0';
-          
-          ics[iclass]->subs = (int *)
-            xrealloc ((void *)ics[iclass]->subs, 
-                     (ics[iclass]->nsubs + 1) * sizeof (int));
-
-          sub = fetch_insn_class (subname, 1);
-          ics[iclass]->subs = (int *)
-            xrealloc (ics[iclass]->subs, (ics[iclass]->nsubs + 1) * sizeof (int));
-          ics[iclass]->subs[ics[iclass]->nsubs++] = sub;
-        }
-
-      /* Make sure classes come before terminals.  */
-      qsort ((void *)ics[iclass]->subs, 
-             ics[iclass]->nsubs, sizeof(int), sub_compare);
-    }
-  fclose (fp);
-
-  if (debug)
-    printf ("%d classes\n", iclen);
-}
-
-/* Extract the insn classes from the given line.  */
-static void
-parse_resource_users (ref, usersp, nusersp, notesp)
-  const char *ref;
-  int **usersp;
-  int *nusersp;
-  int **notesp;
-{
-  int c;
-  char *line = xstrdup (ref);
-  char *tmp = line;
-  int *users = *usersp;
-  int count = *nusersp;
-  int *notes = *notesp;
-
-  c = *tmp;
-  while (c != 0)
-    {
-      char *notestr;
-      int note;
-      char *xsect;
-      int iclass;
-      int create = 0;
-      char *name;
-      
-      while (ISSPACE (*tmp))
-        ++tmp;
-      name = tmp;
-      while (*tmp && *tmp != ',')
-        ++tmp;
-      c = *tmp;
-      *tmp++ = '\0';
-      
-      xsect = strchr (name, '\\');
-      if ((notestr = strstr (name, "+")) != NULL)
-        {
-          char *nextnotestr;
-
-          note = atoi (notestr + 1);
-          if ((nextnotestr = strchr (notestr + 1, '+')) != NULL)
-            {
-              /* Note 13 always implies note 1.  */
-              if (strcmp (notestr, "+1+13") == 0)
-                note = 13;
-              else if (!xsect || nextnotestr < xsect)
-                warn (_("multiple note %s not handled\n"), notestr);
-            }
-          if (!xsect)
-            *notestr = '\0';
-        }
-      else 
-        note = 0;
-
-      /* All classes are created when the insn class table is parsed;
-         Individual instructions might not appear until the dependency tables
-         are read.  Only create new classes if it's *not* an insn class,
-         or if it's a composite class (which wouldn't necessarily be in the IC
-         table).  */
-      if (strncmp (name, "IC:", 3) != 0 || xsect != NULL)
-        create = 1;
-      
-      iclass = fetch_insn_class (name, create);
-      if (iclass != -1)
-        {
-          users = (int *)
-            xrealloc ((void *) users,(count + 1) * sizeof (int));
-          notes = (int *)
-            xrealloc ((void *) notes,(count + 1) * sizeof (int));
-          notes[count] = note;
-          users[count++] = iclass;
-          mark_used (ics[iclass], 0);
-        }
-      else if (debug)
-       printf("Class %s not found\n", name);
-    }
-  /* Update the return values.  */
-  *usersp = users;
-  *nusersp = count;
-  *notesp = notes;
-
-  free (line);
-}
-
-static int
-parse_semantics (char *sem)
-{
-  if (strcmp (sem, "none") == 0)
-    return IA64_DVS_NONE;
-  else if (strcmp (sem, "implied") == 0)
-    return IA64_DVS_IMPLIED;
-  else if (strcmp (sem, "impliedF") == 0)
-    return IA64_DVS_IMPLIEDF;
-  else if (strcmp (sem, "data") == 0)
-    return IA64_DVS_DATA;
-  else if (strcmp (sem, "instr") == 0)
-    return IA64_DVS_INSTR;
-  else if (strcmp (sem, "specific") == 0)
-    return IA64_DVS_SPECIFIC;
-  else if (strcmp (sem, "stop") == 0)
-    return IA64_DVS_STOP;
-  else 
-    return IA64_DVS_OTHER;
-}
-
-static void
-add_dep (const char *name, const char *chk, const char *reg,
-         int semantics, int mode, char *extra, int flag)
-{
-  struct rdep *rs;
-
-  rs = insert_resource (name, mode);
-
-  parse_resource_users (chk, &rs->chks, &rs->nchks, &rs->chknotes);
-  parse_resource_users (reg, &rs->regs, &rs->nregs, &rs->regnotes);
-
-  rs->semantics = semantics;
-  rs->extra = extra;
-  rs->waw_special = flag;
-}
-
-static void
-load_depfile (const char *filename, enum ia64_dependency_mode mode)
-{
-  FILE *fp = fopen (filename, "r");
-  char buf[1024];
-
-  if (fp == NULL)
-    fail (_("can't find %s for reading\n"), filename);
-
-  fgets (buf, sizeof(buf), fp);
-  while (!feof (fp))
-    {
-      char *name, *tmp;
-      int semantics;
-      char *extra;
-      char *regp, *chkp;
-
-      if (fgets (buf, sizeof(buf), fp) == NULL)
-        break;
-
-      while (ISSPACE (buf[strlen (buf) - 1]))
-        buf[strlen (buf) - 1] = '\0';
-
-      name = tmp = buf;
-      while (*tmp != ';')
-        ++tmp;
-      *tmp++ = '\0';
-      
-      while (ISSPACE (*tmp))
-        ++tmp;
-      regp = tmp;
-      tmp = strchr (tmp, ';');
-      if (!tmp)
-        abort ();
-      *tmp++ = 0;
-      while (ISSPACE (*tmp))
-        ++tmp;
-      chkp = tmp;
-      tmp = strchr (tmp, ';');
-      if (!tmp)
-        abort ();
-      *tmp++ = 0;
-      while (ISSPACE (*tmp))
-        ++tmp;
-      semantics = parse_semantics (tmp);
-      extra = semantics == IA64_DVS_OTHER ? xstrdup (tmp) : NULL;
-
-      /* For WAW entries, if the chks and regs differ, we need to enter the
-         entries in both positions so that the tables will be parsed properly,
-         without a lot of extra work.  */
-      if (mode == IA64_DV_WAW && strcmp (regp, chkp) != 0)
-        {
-          add_dep (name, chkp, regp, semantics, mode, extra, 0);
-          add_dep (name, regp, chkp, semantics, mode, extra, 1);
-        }
-      else
-        {
-          add_dep (name, chkp, regp, semantics, mode, extra, 0);
-        }
-    }
-  fclose (fp);
-}
-
-static void
-load_dependencies (void)
-{
-  load_depfile ("ia64-raw.tbl", IA64_DV_RAW);
-  load_depfile ("ia64-waw.tbl", IA64_DV_WAW);
-  load_depfile ("ia64-war.tbl", IA64_DV_WAR);
-
-  if (debug)
-    printf ("%d RAW/WAW/WAR dependencies\n", rdepslen);
-}
-
-/* Is the given operand an indirect register file operand?  */
-static int 
-irf_operand (int op, const char *field)
-{
-  if (!field)
-    {
-      return op == IA64_OPND_RR_R3 || op == IA64_OPND_DBR_R3
-        || op == IA64_OPND_IBR_R3  || op == IA64_OPND_PKR_R3
-       || op == IA64_OPND_PMC_R3  || op == IA64_OPND_PMD_R3
-       || op == IA64_OPND_MSR_R3 || op == IA64_OPND_CPUID_R3;
-    }
-  else
-    {
-      return ((op == IA64_OPND_RR_R3 && strstr (field, "rr"))
-              || (op == IA64_OPND_DBR_R3 && strstr (field, "dbr"))
-              || (op == IA64_OPND_IBR_R3 && strstr (field, "ibr"))
-              || (op == IA64_OPND_PKR_R3 && strstr (field, "pkr"))
-              || (op == IA64_OPND_PMC_R3 && strstr (field, "pmc"))
-              || (op == IA64_OPND_PMD_R3 && strstr (field, "pmd"))
-              || (op == IA64_OPND_MSR_R3 && strstr (field, "msr"))
-              || (op == IA64_OPND_CPUID_R3 && strstr (field, "cpuid")));
-    }
-}
-
-/* Handle mov_ar, mov_br, mov_cr, mov_indirect, mov_ip, mov_pr, mov_psr, and
-   mov_um insn classes.  */
-static int
-in_iclass_mov_x (struct ia64_opcode *idesc, struct iclass *ic, 
-                 const char *format, const char *field)
-{
-  int plain_mov = strcmp (idesc->name, "mov") == 0;
-
-  if (!format)
-    return 0;
-
-  switch (ic->name[4])
-    {
-    default:
-      abort ();
-    case 'a':
-      {
-        int i = strcmp (idesc->name, "mov.i") == 0;
-        int m = strcmp (idesc->name, "mov.m") == 0;
-        int i2627 = i && idesc->operands[0] == IA64_OPND_AR3;
-        int i28 = i && idesc->operands[1] == IA64_OPND_AR3;
-        int m2930 = m && idesc->operands[0] == IA64_OPND_AR3;
-        int m31 = m && idesc->operands[1] == IA64_OPND_AR3;
-        int pseudo0 = plain_mov && idesc->operands[1] == IA64_OPND_AR3;
-        int pseudo1 = plain_mov && idesc->operands[0] == IA64_OPND_AR3;
-
-        /* IC:mov ar */
-        if (i2627)
-          return strstr (format, "I26") || strstr (format, "I27");
-        if (i28)
-          return strstr (format, "I28") != NULL;
-        if (m2930)
-          return strstr (format, "M29") || strstr (format, "M30");
-        if (m31)
-          return strstr (format, "M31") != NULL;
-        if (pseudo0 || pseudo1)
-          return 1;
-      }
-      break;
-    case 'b':
-      {
-        int i21 = idesc->operands[0] == IA64_OPND_B1;
-        int i22 = plain_mov && idesc->operands[1] == IA64_OPND_B2;
-        if (i22)
-          return strstr (format, "I22") != NULL;
-        if (i21)
-          return strstr (format, "I21") != NULL;
-      }
-      break;
-    case 'c':
-      {
-        int m32 = plain_mov && idesc->operands[0] == IA64_OPND_CR3;
-        int m33 = plain_mov && idesc->operands[1] == IA64_OPND_CR3;
-        if (m32)
-          return strstr (format, "M32") != NULL;
-        if (m33)
-          return strstr (format, "M33") != NULL;
-      }
-      break;
-    case 'i':
-      if (ic->name[5] == 'n')
-        {
-          int m42 = plain_mov && irf_operand (idesc->operands[0], field);
-          int m43 = plain_mov && irf_operand (idesc->operands[1], field);
-          if (m42)
-            return strstr (format, "M42") != NULL;
-          if (m43)
-            return strstr (format, "M43") != NULL;
-        }
-      else if (ic->name[5] == 'p')
-        {
-          return idesc->operands[1] == IA64_OPND_IP;
-        }
-      else
-        abort ();
-      break;
-    case 'p':
-      if (ic->name[5] == 'r')
-        {
-          int i25 = plain_mov && idesc->operands[1] == IA64_OPND_PR;
-          int i23 = plain_mov && idesc->operands[0] == IA64_OPND_PR;
-          int i24 = plain_mov && idesc->operands[0] == IA64_OPND_PR_ROT;
-          if (i23)
-            return strstr (format, "I23") != NULL;
-          if (i24)
-            return strstr (format, "I24") != NULL;
-          if (i25)
-            return strstr (format, "I25") != NULL;
-        }
-      else if (ic->name[5] == 's')
-        {
-          int m35 = plain_mov && idesc->operands[0] == IA64_OPND_PSR_L;
-          int m36 = plain_mov && idesc->operands[1] == IA64_OPND_PSR;
-          if (m35)
-            return strstr (format, "M35") != NULL;
-          if (m36)
-            return strstr (format, "M36") != NULL;
-        }
-      else
-        abort ();
-      break;
-    case 'u':
-      {
-        int m35 = plain_mov && idesc->operands[0] == IA64_OPND_PSR_UM;
-        int m36 = plain_mov && idesc->operands[1] == IA64_OPND_PSR_UM;
-        if (m35)
-          return strstr (format, "M35") != NULL;
-        if (m36)
-          return strstr (format, "M36") != NULL;
-      }
-      break;
-    }
-  return 0;
-}
-
-/* Is the given opcode in the given insn class?  */
-static int
-in_iclass (struct ia64_opcode *idesc, struct iclass *ic, 
-          const char *format, const char *field, int *notep)
-{
-  int i;
-  int resolved = 0;
-
-  if (ic->comment)
-    {
-      if (!strncmp (ic->comment, "Format", 6))
-        {
-          /* Assume that the first format seen is the most restrictive, and
-             only keep a later one if it looks like it's more restrictive.  */
-          if (format)
-            {
-              if (strlen (ic->comment) < strlen (format))
-                {
-                  warn (_("most recent format '%s'\nappears more restrictive than '%s'\n"),
-                       ic->comment, format);
-                  format = ic->comment; 
-                }
-            }
-          else
-            format = ic->comment;
-        }
-      else if (!strncmp (ic->comment, "Field", 5))
-        {
-          if (field)
-            warn (_("overlapping field %s->%s\n"),
-                 ic->comment, field);
-          field = ic->comment;
-        }
-    }
-
-  /* An insn class matches anything that is the same followed by completers,
-     except when the absence and presence of completers constitutes different
-     instructions.  */
-  if (ic->nsubs == 0 && ic->nxsubs == 0)
-    {
-      int is_mov = strncmp (idesc->name, "mov", 3) == 0;
-      int plain_mov = strcmp (idesc->name, "mov") == 0;
-      int len = strlen(ic->name);
-
-      resolved = ((strncmp (ic->name, idesc->name, len) == 0)
-                  && (idesc->name[len] == '\0' 
-                      || idesc->name[len] == '.'));
-
-      /* All break, nop, and hint variations must match exactly.  */
-      if (resolved &&
-          (strcmp (ic->name, "break") == 0
-           || strcmp (ic->name, "nop") == 0
-          || strcmp (ic->name, "hint") == 0))
-        resolved = strcmp (ic->name, idesc->name) == 0;
-
-      /* Assume restrictions in the FORMAT/FIELD negate resolution,
-         unless specifically allowed by clauses in this block.  */
-      if (resolved && field)
-        {
-          /* Check Field(sf)==sN against opcode sN.  */
-          if (strstr(field, "(sf)==") != NULL)
-            {
-              char *sf;
-
-              if ((sf = strstr (idesc->name, ".s")) != 0)
-               resolved = strcmp (sf + 1, strstr (field, "==") + 2) == 0;
-            }
-          /* Check Field(lftype)==XXX.  */
-          else if (strstr (field, "(lftype)") != NULL)
-            {
-              if (strstr (idesc->name, "fault") != NULL)
-                resolved = strstr (field, "fault") != NULL;
-              else
-                resolved = strstr (field, "fault") == NULL;
-            }
-          /* Handle Field(ctype)==XXX.  */
-          else if (strstr (field, "(ctype)") != NULL)
-            {
-              if (strstr (idesc->name, "or.andcm"))
-                resolved = strstr (field, "or.andcm") != NULL;
-              else if (strstr (idesc->name, "and.orcm"))
-                resolved = strstr (field, "and.orcm") != NULL;
-              else if (strstr (idesc->name, "orcm"))
-                resolved = strstr (field, "or orcm") != NULL;
-              else if (strstr (idesc->name, "or"))
-                resolved = strstr (field, "or orcm") != NULL;
-              else if (strstr (idesc->name, "andcm"))
-                resolved = strstr (field, "and andcm") != NULL;
-              else if (strstr (idesc->name, "and"))
-                resolved = strstr (field, "and andcm") != NULL;
-              else if (strstr (idesc->name, "unc"))
-                resolved = strstr (field, "unc") != NULL;
-              else
-                resolved = strcmp (field, "Field(ctype)==") == 0;
-            }
-        }
-
-      if (resolved && format)
-        {
-          if (strncmp (idesc->name, "dep", 3) == 0
-                   && strstr (format, "I13") != NULL)
-            resolved = idesc->operands[1] == IA64_OPND_IMM8;
-          else if (strncmp (idesc->name, "chk", 3) == 0
-                   && strstr (format, "M21") != NULL)
-            resolved = idesc->operands[0] == IA64_OPND_F2;
-          else if (strncmp (idesc->name, "lfetch", 6) == 0)
-            resolved = (strstr (format, "M14 M15") != NULL
-                        && (idesc->operands[1] == IA64_OPND_R2
-                            || idesc->operands[1] == IA64_OPND_IMM9b));
-          else if (strncmp (idesc->name, "br.call", 7) == 0
-                   && strstr (format, "B5") != NULL)
-            resolved = idesc->operands[1] == IA64_OPND_B2;
-          else if (strncmp (idesc->name, "br.call", 7) == 0
-                   && strstr (format, "B3") != NULL)
-            resolved = idesc->operands[1] == IA64_OPND_TGT25c;
-          else if (strncmp (idesc->name, "brp", 3) == 0
-                   && strstr (format, "B7") != NULL)
-            resolved = idesc->operands[0] == IA64_OPND_B2;
-          else if (strcmp (ic->name, "invala") == 0)
-            resolved = strcmp (idesc->name, ic->name) == 0;
-         else if (strncmp (idesc->name, "st", 2) == 0
-                  && (strstr (format, "M5") != NULL
-                      || strstr (format, "M10") != NULL))
-           resolved = idesc->flags & IA64_OPCODE_POSTINC;
-         else if (strncmp (idesc->name, "ld", 2) == 0
-                  && (strstr (format, "M2 M3") != NULL
-                      || strstr (format, "M12") != NULL
-                      || strstr (format, "M7 M8") != NULL))
-           resolved = idesc->flags & IA64_OPCODE_POSTINC;
-          else
-            resolved = 0;
-        }
-
-      /* Misc brl variations ('.cond' is optional); 
-         plain brl matches brl.cond.  */
-      if (!resolved
-          && (strcmp (idesc->name, "brl") == 0
-              || strncmp (idesc->name, "brl.", 4) == 0)
-          && strcmp (ic->name, "brl.cond") == 0)
-        {
-          resolved = 1;
-        }
-
-      /* Misc br variations ('.cond' is optional).  */
-      if (!resolved 
-          && (strcmp (idesc->name, "br") == 0
-              || strncmp (idesc->name, "br.", 3) == 0)
-          && strcmp (ic->name, "br.cond") == 0)
-        {
-          if (format)
-            resolved = (strstr (format, "B4") != NULL
-                        && idesc->operands[0] == IA64_OPND_B2)
-              || (strstr (format, "B1") != NULL
-                  && idesc->operands[0] == IA64_OPND_TGT25c);
-          else
-            resolved = 1;
-        }
-
-      /* probe variations.  */
-      if (!resolved && strncmp (idesc->name, "probe", 5) == 0)
-        {
-          resolved = strcmp (ic->name, "probe") == 0 
-            && !((strstr (idesc->name, "fault") != NULL) 
-                 ^ (format && strstr (format, "M40") != NULL));
-        }
-
-      /* mov variations.  */
-      if (!resolved && is_mov)
-        {
-          if (plain_mov)
-            {
-              /* mov alias for fmerge.  */
-              if (strcmp (ic->name, "fmerge") == 0)
-                {
-                  resolved = idesc->operands[0] == IA64_OPND_F1
-                    && idesc->operands[1] == IA64_OPND_F3;
-                }
-              /* mov alias for adds (r3 or imm14).  */
-              else if (strcmp (ic->name, "adds") == 0)
-                {
-                  resolved = (idesc->operands[0] == IA64_OPND_R1
-                              && (idesc->operands[1] == IA64_OPND_R3
-                                  || (idesc->operands[1] == IA64_OPND_IMM14)));
-                }
-              /* mov alias for addl.  */
-              else if (strcmp (ic->name, "addl") == 0)
-                {
-                  resolved = idesc->operands[0] == IA64_OPND_R1
-                    && idesc->operands[1] == IA64_OPND_IMM22;
-                }
-            }
-
-          /* Some variants of mov and mov.[im].  */
-          if (!resolved && strncmp (ic->name, "mov_", 4) == 0)
-           resolved = in_iclass_mov_x (idesc, ic, format, field);
-        }
-
-      /* Keep track of this so we can flag any insn classes which aren't 
-         mapped onto at least one real insn.  */
-      if (resolved)
-       ic->terminal_resolved = 1;
-    }
-  else for (i = 0; i < ic->nsubs; i++)
-    {
-      if (in_iclass (idesc, ics[ic->subs[i]], format, field, notep))
-        {
-          int j;
-
-          for (j = 0; j < ic->nxsubs; j++)
-           if (in_iclass (idesc, ics[ic->xsubs[j]], NULL, NULL, NULL))
-             return 0;
-
-          if (debug > 1)
-            printf ("%s is in IC %s\n", idesc->name, ic->name);
-
-          resolved = 1;
-          break;
-        }
-    }
-  
-  /* If it's in this IC, add the IC note (if any) to the insn.  */
-  if (resolved)
-    {
-      if (ic->note && notep)
-        {
-          if (*notep && *notep != ic->note)
-           warn (_("overwriting note %d with note %d (IC:%s)\n"),
-                 *notep, ic->note, ic->name);
-
-          *notep = ic->note;
-        }
-    }
-
-  return resolved;
-}
-
-\f
-static int
-lookup_regindex (const char *name, int specifier)
-{
-  switch (specifier)
-    {
-    case IA64_RS_ARX:
-      if (strstr (name, "[RSC]"))
-        return 16;
-      if (strstr (name, "[BSP]"))
-        return 17;
-      else if (strstr (name, "[BSPSTORE]"))
-        return 18;
-      else if (strstr (name, "[RNAT]"))
-        return 19;
-      else if (strstr (name, "[FCR]"))
-        return 21;
-      else if (strstr (name, "[EFLAG]"))
-        return 24;
-      else if (strstr (name, "[CSD]"))
-        return 25;
-      else if (strstr (name, "[SSD]"))
-        return 26;
-      else if (strstr (name, "[CFLG]"))
-        return 27;
-      else if (strstr (name, "[FSR]"))
-        return 28;
-      else if (strstr (name, "[FIR]"))
-        return 29;
-      else if (strstr (name, "[FDR]"))
-        return 30;
-      else if (strstr (name, "[CCV]"))
-        return 32;
-      else if (strstr (name, "[ITC]"))
-        return 44;
-      else if (strstr (name, "[PFS]"))
-        return 64;
-      else if (strstr (name, "[LC]"))
-        return 65;
-      else if (strstr (name, "[EC]"))
-        return 66;
-      abort ();
-    case IA64_RS_CRX:
-      if (strstr (name, "[DCR]"))
-        return 0;
-      else if (strstr (name, "[ITM]"))
-        return 1;
-      else if (strstr (name, "[IVA]"))
-        return 2;
-      else if (strstr (name, "[PTA]"))
-        return 8;
-      else if (strstr (name, "[GPTA]"))
-        return 9;
-      else if (strstr (name, "[IPSR]"))
-        return 16;
-      else if (strstr (name, "[ISR]"))
-        return 17;
-      else if (strstr (name, "[IIP]"))
-        return 19;
-      else if (strstr (name, "[IFA]"))
-        return 20;
-      else if (strstr (name, "[ITIR]"))
-        return 21;
-      else if (strstr (name, "[IIPA]"))
-        return 22;
-      else if (strstr (name, "[IFS]"))
-        return 23;
-      else if (strstr (name, "[IIM]"))
-        return 24;
-      else if (strstr (name, "[IHA]"))
-        return 25;
-      else if (strstr (name, "[LID]"))
-        return 64;
-      else if (strstr (name, "[IVR]"))
-        return 65;
-      else if (strstr (name, "[TPR]"))
-        return 66;
-      else if (strstr (name, "[EOI]"))
-        return 67;
-      else if (strstr (name, "[ITV]"))
-        return 72;
-      else if (strstr (name, "[PMV]"))
-        return 73;
-      else if (strstr (name, "[CMCV]"))
-        return 74;
-      abort ();
-    case IA64_RS_PSR:
-      if (strstr (name, ".be"))
-        return 1;
-      else if (strstr (name, ".up"))
-        return 2;
-      else if (strstr (name, ".ac"))
-        return 3;
-      else if (strstr (name, ".mfl"))
-        return 4;
-      else if (strstr (name, ".mfh"))
-        return 5;
-      else if (strstr (name, ".ic"))
-        return 13;
-      else if (strstr (name, ".i"))
-        return 14;
-      else if (strstr (name, ".pk"))
-        return 15;
-      else if (strstr (name, ".dt"))
-        return 17;
-      else if (strstr (name, ".dfl"))
-        return 18;
-      else if (strstr (name, ".dfh"))
-        return 19;
-      else if (strstr (name, ".sp"))
-        return 20;
-      else if (strstr (name, ".pp"))
-        return 21;
-      else if (strstr (name, ".di"))
-        return 22;
-      else if (strstr (name, ".si"))
-        return 23;
-      else if (strstr (name, ".db"))
-        return 24;
-      else if (strstr (name, ".lp"))
-        return 25;
-      else if (strstr (name, ".tb"))
-        return 26;
-      else if (strstr (name, ".rt"))
-        return 27;
-      else if (strstr (name, ".cpl"))
-        return 32;
-      else if (strstr (name, ".rs"))
-        return 34;
-      else if (strstr (name, ".mc"))
-        return 35;
-      else if (strstr (name, ".it"))
-        return 36;
-      else if (strstr (name, ".id"))
-        return 37;
-      else if (strstr (name, ".da"))
-        return 38;
-      else if (strstr (name, ".dd"))
-        return 39;
-      else if (strstr (name, ".ss"))
-        return 40;
-      else if (strstr (name, ".ri"))
-        return 41;
-      else if (strstr (name, ".ed"))
-        return 43;
-      else if (strstr (name, ".bn"))
-        return 44;
-      else if (strstr (name, ".ia"))
-        return 45;
-      else if (strstr (name, ".vm"))
-        return 46;
-      else
-        abort ();
-    default:
-      break;
-    }
-  return REG_NONE;
-}
-
-static int
-lookup_specifier (const char *name)
-{
-  if (strchr (name, '%'))
-    {
-      if (strstr (name, "AR[K%]") != NULL)
-        return IA64_RS_AR_K;
-      if (strstr (name, "AR[UNAT]") != NULL)
-        return IA64_RS_AR_UNAT;
-      if (strstr (name, "AR%, % in 8") != NULL)
-        return IA64_RS_AR;
-      if (strstr (name, "AR%, % in 48") != NULL)
-        return IA64_RS_ARb;
-      if (strstr (name, "BR%") != NULL)
-        return IA64_RS_BR;
-      if (strstr (name, "CR[IRR%]") != NULL)
-        return IA64_RS_CR_IRR;
-      if (strstr (name, "CR[LRR%]") != NULL)
-        return IA64_RS_CR_LRR;
-      if (strstr (name, "CR%") != NULL)
-        return IA64_RS_CR;
-      if (strstr (name, "FR%, % in 0") != NULL)
-        return IA64_RS_FR;
-      if (strstr (name, "FR%, % in 2") != NULL)
-        return IA64_RS_FRb;
-      if (strstr (name, "GR%") != NULL)
-        return IA64_RS_GR;
-      if (strstr (name, "PR%, % in 1 ") != NULL)
-        return IA64_RS_PR;
-      if (strstr (name, "PR%, % in 16 ") != NULL)
-       return IA64_RS_PRr;
-
-      warn (_("don't know how to specify %% dependency %s\n"),
-           name);
-    }
-  else if (strchr (name, '#'))
-    {
-      if (strstr (name, "CPUID#") != NULL)
-        return IA64_RS_CPUID;
-      if (strstr (name, "DBR#") != NULL)
-        return IA64_RS_DBR;
-      if (strstr (name, "IBR#") != NULL)
-        return IA64_RS_IBR;
-      if (strstr (name, "MSR#") != NULL)
-       return IA64_RS_MSR;
-      if (strstr (name, "PKR#") != NULL)
-        return IA64_RS_PKR;
-      if (strstr (name, "PMC#") != NULL)
-        return IA64_RS_PMC;
-      if (strstr (name, "PMD#") != NULL)
-        return IA64_RS_PMD;
-      if (strstr (name, "RR#") != NULL)
-        return IA64_RS_RR;
-      
-      warn (_("Don't know how to specify # dependency %s\n"),
-           name);
-    }
-  else if (strncmp (name, "AR[FPSR]", 8) == 0)
-    return IA64_RS_AR_FPSR;
-  else if (strncmp (name, "AR[", 3) == 0)
-    return IA64_RS_ARX;
-  else if (strncmp (name, "CR[", 3) == 0)
-    return IA64_RS_CRX;
-  else if (strncmp (name, "PSR.", 4) == 0)
-    return IA64_RS_PSR;
-  else if (strcmp (name, "InService*") == 0)
-    return IA64_RS_INSERVICE;
-  else if (strcmp (name, "GR0") == 0)
-    return IA64_RS_GR0;
-  else if (strcmp (name, "CFM") == 0)
-    return IA64_RS_CFM;
-  else if (strcmp (name, "PR63") == 0)
-    return IA64_RS_PR63;
-  else if (strcmp (name, "RSE") == 0)
-    return IA64_RS_RSE;
-
-  return IA64_RS_ANY;
-}
-
-static void
-print_dependency_table ()
-{
-  int i, j;
-
-  if (debug) 
-    {
-      for (i=0;i < iclen;i++)
-        {
-          if (ics[i]->is_class)
-            {
-              if (!ics[i]->nsubs)
-                {
-                  if (ics[i]->comment)
-                   warn (_("IC:%s [%s] has no terminals or sub-classes\n"),
-                         ics[i]->name, ics[i]->comment);
-                 else
-                   warn (_("IC:%s has no terminals or sub-classes\n"),
-                         ics[i]->name);
-                }
-            }
-          else 
-            {
-              if (!ics[i]->terminal_resolved && !ics[i]->orphan)
-                {
-                  if (ics[i]->comment)
-                   warn (_("no insns mapped directly to terminal IC %s [%s]"),
-                         ics[i]->name, ics[i]->comment);
-                 else
-                   warn (_("no insns mapped directly to terminal IC %s\n"),
-                         ics[i]->name);
-                }
-            }
-        }
-
-      for (i = 0; i < iclen; i++)
-        {
-          if (ics[i]->orphan)
-            {
-              mark_used (ics[i], 1);
-              warn (_("class %s is defined but not used\n"),
-                   ics[i]->name);
-            }
-        }
-
-      if (debug > 1)
-       for (i = 0; i < rdepslen; i++)
-         {  
-           static const char *mode_str[] = { "RAW", "WAW", "WAR" };
-
-           if (rdeps[i]->total_chks == 0)
-             warn (_("Warning: rsrc %s (%s) has no chks%s\n"), 
-                   rdeps[i]->name, mode_str[rdeps[i]->mode],
-                   rdeps[i]->total_regs ? "" : " or regs");
-           else if (rdeps[i]->total_regs == 0)
-             warn (_("rsrc %s (%s) has no regs\n"),
-                   rdeps[i]->name, mode_str[rdeps[i]->mode]);
-         }
-    }
-
-  /* The dependencies themselves.  */
-  printf ("static const struct ia64_dependency\ndependencies[] = {\n");
-  for (i = 0; i < rdepslen; i++)
-    {
-      /* '%', '#', AR[], CR[], or PSR. indicates we need to specify the actual
-         resource used.  */ 
-      int specifier = lookup_specifier (rdeps[i]->name);
-      int regindex = lookup_regindex (rdeps[i]->name, specifier);
-
-      printf ("  { \"%s\", %d, %d, %d, %d, ",
-              rdeps[i]->name, specifier,
-              (int)rdeps[i]->mode, (int)rdeps[i]->semantics, regindex);
-      if (rdeps[i]->semantics == IA64_DVS_OTHER)
-       {
-         const char *quote, *rest;
-
-         putchar ('\"');
-         rest = rdeps[i]->extra;
-         quote = strchr (rest, '\"');
-         while (quote != NULL)
-           {
-             printf ("%.*s\\\"", (int) (quote - rest), rest);
-             rest = quote + 1;
-             quote = strchr (rest, '\"');
-           }
-         printf ("%s\", ", rest);
-       }
-      else
-       printf ("NULL, ");
-      printf("},\n");
-    }
-  printf ("};\n\n");
-
-  /* And dependency lists.  */
-  for (i=0;i < dlistlen;i++)
-    {
-      int len = 2;
-      printf ("static const unsigned short dep%d[] = {\n  ", i);
-      for (j=0;j < dlists[i]->len; j++)
-        {
-          len += printf ("%d, ", dlists[i]->deps[j]);
-          if (len > 75)
-            {
-              printf("\n  ");
-              len = 2;
-            }
-        }
-      printf ("\n};\n\n");
-    }
-
-  /* And opcode dependency list.  */
-  printf ("#define NELS(X) (sizeof(X)/sizeof(X[0]))\n");
-  printf ("static const struct ia64_opcode_dependency\n");
-  printf ("op_dependencies[] = {\n");
-  for (i = 0; i < opdeplen; i++)
-    {
-      printf ("  { ");
-      if (opdeps[i]->chk == -1)
-        printf ("0, NULL, ");
-      else 
-        printf ("NELS(dep%d), dep%d, ", opdeps[i]->chk, opdeps[i]->chk);
-      if (opdeps[i]->reg == -1)
-        printf ("0, NULL, ");
-      else 
-        printf ("NELS(dep%d), dep%d, ", opdeps[i]->reg, opdeps[i]->reg);
-      printf ("},\n");
-    }
-  printf ("};\n\n");
-}
-
-\f
-/* Add STR to the string table.  */
-static struct string_entry *
-insert_string (char *str)
-{
-  int start = 0, end = strtablen;
-  int i, x;
-
-  if (strtablen == strtabtotlen)
-    {
-      strtabtotlen += 20;
-      string_table = (struct string_entry **)
-       xrealloc (string_table, 
-                 sizeof (struct string_entry **) * strtabtotlen);
-    }
-
-  if (strtablen == 0)
-    {
-      strtablen = 1;
-      string_table[0] = tmalloc (struct string_entry);
-      string_table[0]->s = xstrdup (str);
-      string_table[0]->num = 0;
-      return string_table[0];
-    }
-
-  if (strcmp (str, string_table[strtablen - 1]->s) > 0)
-    i = end;
-  else if (strcmp (str, string_table[0]->s) < 0)
-    i = 0;
-  else
-    {
-      while (1)
-       {
-         int c;
-
-         i = (start + end) / 2;
-         c = strcmp (str, string_table[i]->s);
-
-         if (c < 0)
-           end = i - 1;
-         else if (c == 0)
-           return string_table[i];
-         else
-           start = i + 1;
-
-         if (start > end)
-           break;
-       }
-    }
-
-  for (; i > 0 && i < strtablen; i--)
-    if (strcmp (str, string_table[i - 1]->s) > 0)
-      break;
-
-  for (; i < strtablen; i++)
-    if (strcmp (str, string_table[i]->s) < 0)
-      break;
-
-  for (x = strtablen - 1; x >= i; x--)
-    {
-      string_table[x + 1] = string_table[x];
-      string_table[x + 1]->num = x + 1;
-    }
-
-  string_table[i] = tmalloc (struct string_entry);
-  string_table[i]->s = xstrdup (str);
-  string_table[i]->num = i;
-  strtablen++;
-
-  return string_table[i];
-}
-\f
-static struct bittree *
-make_bittree_entry (void)
-{
-  struct bittree *res = tmalloc (struct bittree);
-
-  res->disent = NULL;
-  res->bits[0] = NULL;
-  res->bits[1] = NULL;
-  res->bits[2] = NULL;
-  res->skip_flag = 0;
-  res->bits_to_skip = 0;
-  return res;
-}
-\f
-static struct disent *
-add_dis_table_ent (which, insn, order, completer_index)
-     struct disent *which;
-     int insn;
-     int order;
-     int completer_index;
-{
-  int ci = 0;
-  struct disent *ent;
-
-  if (which != NULL)
-    {
-      ent = which;
-
-      ent->nextcnt++;
-      while (ent->nexte != NULL)
-       ent = ent->nexte;
-
-      ent = (ent->nexte = tmalloc (struct disent));
-    }
-  else
-    {
-      ent = tmalloc (struct disent);
-      ent->next_ent = disinsntable;
-      disinsntable = ent;
-      which = ent;
-    }
-  ent->nextcnt = 0;
-  ent->nexte = NULL;
-  ent->insn = insn;
-  ent->priority = order;
-
-  while (completer_index != 1)
-    {
-      ci = (ci << 1) | (completer_index & 1);
-      completer_index >>= 1;
-    }
-  ent->completer_index = ci;
-  return which;
-}
-\f
-static void
-finish_distable ()
-{
-  struct disent *ent = disinsntable;
-  struct disent *prev = ent;
-
-  ent->ournum = 32768;
-  while ((ent = ent->next_ent) != NULL)
-    {
-      ent->ournum = prev->ournum + prev->nextcnt + 1;
-      prev = ent;
-    }
-}
-\f
-static void
-insert_bit_table_ent (curr_ent, bit, opcode, mask, 
-                      opcodenum, order, completer_index)
-     struct bittree *curr_ent;
-     int bit;
-     ia64_insn opcode; 
-     ia64_insn mask;
-     int opcodenum;
-     int order;
-     int completer_index;
-{
-  ia64_insn m;
-  int b;
-  struct bittree *next;
-
-  if (bit == -1)
-    {
-      struct disent *nent = add_dis_table_ent (curr_ent->disent, 
-                                               opcodenum, order,
-                                              completer_index);
-      curr_ent->disent = nent;
-      return;
-    }
-
-  m = ((ia64_insn) 1) << bit;
-
-  if (mask & m)
-    b = (opcode & m) ? 1 : 0;
-  else
-    b = 2;
-
-  next = curr_ent->bits[b];
-  if (next == NULL)
-    {
-      next = make_bittree_entry ();
-      curr_ent->bits[b] = next;
-    }
-  insert_bit_table_ent (next, bit - 1, opcode, mask, opcodenum, order,
-                       completer_index);
-}
-\f
-static void
-add_dis_entry (first, opcode, mask, opcodenum, ent, completer_index)
-     struct bittree *first;
-     ia64_insn opcode;
-     ia64_insn mask;
-     int opcodenum;
-     struct completer_entry *ent;
-     int completer_index;
-{
-  if (completer_index & (1 << 20))
-    abort ();
-
-  while (ent != NULL)
-    {
-      ia64_insn newopcode = (opcode & (~ ent->mask)) | ent->bits;
-      add_dis_entry (first, newopcode, mask, opcodenum, ent->addl_entries,
-                    (completer_index << 1) | 1);
-
-      if (ent->is_terminal)
-       {
-         insert_bit_table_ent (bittree, 40, newopcode, mask, 
-                                opcodenum, opcode_count - ent->order - 1, 
-                               (completer_index << 1) | 1);
-       }
-      completer_index <<= 1;
-      ent = ent->alternative;
-    }
-}
-\f
-/* This optimization pass combines multiple "don't care" nodes.  */
-static void
-compact_distree (ent)
-     struct bittree *ent;
-{
-#define IS_SKIP(ent) \
-    ((ent->bits[2] !=NULL) \
-     && (ent->bits[0] == NULL && ent->bits[1] == NULL && ent->skip_flag == 0))
-
-  int bitcnt = 0;
-  struct bittree *nent = ent;
-  int x;
-
-  while (IS_SKIP (nent))
-    {
-      bitcnt++;
-      nent = nent->bits[2];
-    }
-
-  if (bitcnt)
-    {
-      struct bittree *next = ent->bits[2];
-
-      ent->bits[0] = nent->bits[0];
-      ent->bits[1] = nent->bits[1];
-      ent->bits[2] = nent->bits[2];
-      ent->disent = nent->disent;
-      ent->skip_flag = 1;
-      ent->bits_to_skip = bitcnt;
-      while (next != nent)
-       {
-         struct bittree *b = next;
-         next = next->bits[2];
-         free (b);
-       }
-      free (nent);
-    }
-
-  for (x = 0; x < 3; x++)
-    {
-      struct bittree *i = ent->bits[x];
-
-      if (i != NULL)
-       compact_distree (i);
-    }
-}
-\f
-static unsigned char *insn_list;
-static int insn_list_len = 0;
-static int tot_insn_list_len = 0;
-
-/* Generate the disassembler state machine corresponding to the tree
-   in ENT.  */
-static void
-gen_dis_table (ent)
-     struct bittree *ent;
-{
-  int x;
-  int our_offset = insn_list_len;
-  int bitsused = 5;
-  int totbits = bitsused;
-  int needed_bytes;
-  int zero_count = 0;
-  int zero_dest = 0;   /* Initialize this with 0 to keep gcc quiet...  */
-
-  /* If this is a terminal entry, there's no point in skipping any
-     bits.  */
-  if (ent->skip_flag && ent->bits[0] == NULL && ent->bits[1] == NULL &&
-      ent->bits[2] == NULL)
-    {
-      if (ent->disent == NULL)
-       abort ();
-      else
-       ent->skip_flag = 0;
-    }
-
-  /* Calculate the amount of space needed for this entry, or at least
-     a conservatively large approximation.  */
-  if (ent->skip_flag)
-    totbits += 5;
-
-  for (x = 1; x < 3; x++)
-    if (ent->bits[x] != NULL)
-      totbits += 16;
-
-  if (ent->disent != NULL)
-    {
-      if (ent->bits[2] != NULL)
-       abort ();
-
-      totbits += 16;
-    }
-
-  /* Now allocate the space.  */
-  needed_bytes = (totbits + 7) / 8;
-  if ((needed_bytes + insn_list_len) > tot_insn_list_len)
-    {
-      tot_insn_list_len += 256;
-      insn_list = (unsigned char *) xrealloc (insn_list, tot_insn_list_len);
-    }
-  our_offset = insn_list_len;
-  insn_list_len += needed_bytes;
-  memset (insn_list + our_offset, 0, needed_bytes);
-
-  /* Encode the skip entry by setting bit 6 set in the state op field,
-     and store the # of bits to skip immediately after.  */
-  if (ent->skip_flag)
-    {
-      bitsused += 5;
-      insn_list[our_offset + 0] |= 0x40 | ((ent->bits_to_skip >> 2) & 0xf);
-      insn_list[our_offset + 1] |= ((ent->bits_to_skip & 3) << 6);
-    }
-
-#define IS_ONLY_IFZERO(ENT) \
-  ((ENT)->bits[0] != NULL && (ENT)->bits[1] == NULL && (ENT)->bits[2] == NULL \
-   && (ENT)->disent == NULL && (ENT)->skip_flag == 0)
-
-  /* Store an "if (bit is zero)" instruction by setting bit 7 in the
-     state op field.  */
-  if (ent->bits[0] != NULL)
-    {
-      struct bittree *nent = ent->bits[0];
-      zero_count = 0;
-
-      insn_list[our_offset] |= 0x80;
-
-      /* We can encode sequences of multiple "if (bit is zero)" tests
-        by storing the # of zero bits to check in the lower 3 bits of
-        the instruction.  However, this only applies if the state
-        solely tests for a zero bit.  */
-
-      if (IS_ONLY_IFZERO (ent))
-       {
-         while (IS_ONLY_IFZERO (nent) && zero_count < 7)
-           {
-             nent = nent->bits[0];
-             zero_count++;
-           }
-
-         insn_list[our_offset + 0] |= zero_count;
-       }
-      zero_dest = insn_list_len;
-      gen_dis_table (nent);
-    }
-
-  /* Now store the remaining tests.  We also handle a sole "termination
-     entry" by storing it as an "any bit" test.  */
-
-  for (x = 1; x < 3; x++)
-    {
-      if (ent->bits[x] != NULL || (x == 2 && ent->disent != NULL))
-       {
-         struct bittree *i = ent->bits[x];
-         int idest;
-         int currbits = 15;
-
-         if (i != NULL)
-           {
-             /* If the instruction being branched to only consists of
-                a termination entry, use the termination entry as the
-                place to branch to instead.  */
-             if (i->bits[0] == NULL && i->bits[1] == NULL
-                 && i->bits[2] == NULL && i->disent != NULL)
-               {
-                 idest = i->disent->ournum;
-                 i = NULL;
-               }
-             else
-               idest = insn_list_len - our_offset;
-           }
-         else
-           idest = ent->disent->ournum;
-
-         /* If the destination offset for the if (bit is 1) test is less 
-            than 256 bytes away, we can store it as 8-bits instead of 16;
-            the instruction has bit 5 set for the 16-bit address, and bit
-            4 for the 8-bit address.  Since we've already allocated 16
-            bits for the address we need to deallocate the space.
-
-            Note that branchings within the table are relative, and
-            there are no branches that branch past our instruction yet
-            so we do not need to adjust any other offsets.  */
-         if (x == 1)
-           {
-             if (idest <= 256)
-               {
-                 int start = our_offset + bitsused / 8 + 1;
-
-                 memmove (insn_list + start,
-                          insn_list + start + 1,
-                          insn_list_len - (start + 1));
-                 currbits = 7;
-                 totbits -= 8;
-                 needed_bytes--;
-                 insn_list_len--;
-                 insn_list[our_offset] |= 0x10;
-                 idest--;
-               }
-             else
-               insn_list[our_offset] |= 0x20;
-           }
-         else
-           {
-             /* An instruction which solely consists of a termination
-                marker and whose disassembly name index is < 4096
-                can be stored in 16 bits.  The encoding is slightly
-                odd; the upper 4 bits of the instruction are 0x3, and
-                bit 3 loses its normal meaning.  */
-
-             if (ent->bits[0] == NULL && ent->bits[1] == NULL
-                 && ent->bits[2] == NULL && ent->skip_flag == 0
-                 && ent->disent != NULL
-                 && ent->disent->ournum < (32768 + 4096))
-               {
-                 int start = our_offset + bitsused / 8 + 1;
-
-                 memmove (insn_list + start,
-                          insn_list + start + 1,
-                          insn_list_len - (start + 1));
-                 currbits = 11;
-                 totbits -= 5;
-                 bitsused--;
-                 needed_bytes--;
-                 insn_list_len--;
-                 insn_list[our_offset] |= 0x30;
-                 idest &= ~32768;
-               }
-             else
-               insn_list[our_offset] |= 0x08;
-           }
-
-         if (debug)
-           {
-             int id = idest;
-
-             if (i == NULL)
-               id |= 32768;
-             else if (! (id & 32768))
-               id += our_offset;
-
-             if (x == 1)
-               printf ("%d: if (1) goto %d\n", our_offset, id);
-             else
-               printf ("%d: try %d\n", our_offset, id);
-           }
-
-         /* Store the address of the entry being branched to.  */
-         while (currbits >= 0)
-           {
-             unsigned char *byte = insn_list + our_offset + bitsused / 8;
-
-             if (idest & (1 << currbits))
-               *byte |= (1 << (7 - (bitsused % 8)));
-
-             bitsused++;
-             currbits--;
-           }
-
-         /* Now generate the states for the entry being branched to.  */
-         if (i != NULL)
-           gen_dis_table (i);
-       }
-    }
-
-  if (debug)
-    {
-      if (ent->skip_flag)
-       printf ("%d: skipping %d\n", our_offset, ent->bits_to_skip);
-  
-      if (ent->bits[0] != NULL)
-       printf ("%d: if (0:%d) goto %d\n", our_offset, zero_count + 1,
-               zero_dest);
-    }
-
-  if (bitsused != totbits)
-    abort ();
-}
-\f
-static void
-print_dis_table (void)
-{
-  int x;
-  struct disent *cent = disinsntable;
-
-  printf ("static const char dis_table[] = {\n");
-  for (x = 0; x < insn_list_len; x++)
-    {
-      if ((x > 0) && ((x % 12) == 0))
-       printf ("\n");
-
-      printf ("0x%02x, ", insn_list[x]);
-    }
-  printf ("\n};\n\n");
-
-  printf ("static const struct ia64_dis_names ia64_dis_names[] = {\n");
-  while (cent != NULL)
-    {
-      struct disent *ent = cent;
-
-      while (ent != NULL)
-       {
-         printf ("{ 0x%x, %d, %d, %d },\n", ent->completer_index,
-                 ent->insn, (ent->nexte != NULL ? 1 : 0),
-                  ent->priority);
-         ent = ent->nexte;
-       }
-      cent = cent->next_ent;
-    }
-  printf ("};\n\n");
-}
-\f
-static void
-generate_disassembler (void)
-{
-  int i;
-
-  bittree = make_bittree_entry ();
-
-  for (i = 0; i < otlen; i++)
-    {
-      struct main_entry *ptr = ordered_table[i];
-
-      if (ptr->opcode->type != IA64_TYPE_DYN)
-       add_dis_entry (bittree,
-                      ptr->opcode->opcode, ptr->opcode->mask, 
-                      ptr->main_index,
-                      ptr->completers, 1);
-    }
-
-  compact_distree (bittree);
-  finish_distable ();
-  gen_dis_table (bittree);
-
-  print_dis_table ();
-}
-\f
-static void
-print_string_table (void)
-{
-  int x;
-  char lbuf[80], buf[80];
-  int blen = 0;
-
-  printf ("static const char * const ia64_strings[] = {\n");
-  lbuf[0] = '\0';
-
-  for (x = 0; x < strtablen; x++)
-    {
-      int len;
-      
-      if (strlen (string_table[x]->s) > 75)
-       abort ();
-
-      sprintf (buf, " \"%s\",", string_table[x]->s);
-      len = strlen (buf);
-
-      if ((blen + len) > 75)
-       {
-         printf (" %s\n", lbuf);
-         lbuf[0] = '\0';
-         blen = 0;
-       }
-      strcat (lbuf, buf);
-      blen += len;
-    }
-
-  if (blen > 0)
-    printf (" %s\n", lbuf);
-
-  printf ("};\n\n");
-}
-\f
-static struct completer_entry **glist;
-static int glistlen = 0;
-static int glisttotlen = 0;
-
-/* If the completer trees ENT1 and ENT2 are equal, return 1.  */
-
-static int
-completer_entries_eq (ent1, ent2)
-     struct completer_entry *ent1, *ent2;
-{
-  while (ent1 != NULL && ent2 != NULL)
-    {
-      if (ent1->name->num != ent2->name->num
-         || ent1->bits != ent2->bits
-         || ent1->mask != ent2->mask
-         || ent1->is_terminal != ent2->is_terminal
-          || ent1->dependencies != ent2->dependencies
-          || ent1->order != ent2->order)
-       return 0;
-
-      if (! completer_entries_eq (ent1->addl_entries, ent2->addl_entries))
-       return 0;
-
-      ent1 = ent1->alternative;
-      ent2 = ent2->alternative;
-    }
-
-  return ent1 == ent2;
-}
-\f
-/* Insert ENT into the global list of completers and return it.  If an
-   equivalent entry (according to completer_entries_eq) already exists,
-   it is returned instead.  */
-static struct completer_entry *
-insert_gclist (struct completer_entry *ent)
-{
-  if (ent != NULL)
-    {
-      int i;
-      int x;
-      int start = 0, end;
-
-      ent->addl_entries = insert_gclist (ent->addl_entries);
-      ent->alternative = insert_gclist (ent->alternative);
-
-      i = glistlen / 2;
-      end = glistlen;
-
-      if (glisttotlen == glistlen)
-       {
-         glisttotlen += 20;
-         glist = (struct completer_entry **)
-           xrealloc (glist, sizeof (struct completer_entry *) * glisttotlen);
-       }
-
-      if (glistlen == 0)
-       {
-         glist[0] = ent;
-         glistlen = 1;
-         return ent;
-       }
-
-      if (ent->name->num < glist[0]->name->num)
-       i = 0;
-      else if (ent->name->num > glist[end - 1]->name->num)
-       i = end;
-      else
-       {
-         int c;
-
-         while (1)
-           {
-             i = (start + end) / 2;
-             c = ent->name->num - glist[i]->name->num;
-
-             if (c < 0)
-               end = i - 1;
-             else if (c == 0)
-               {
-                 while (i > 0 
-                        && ent->name->num == glist[i - 1]->name->num)
-                   i--;
-
-                 break;
-               }
-             else
-               start = i + 1;
-
-             if (start > end)
-               break;
-           }
-
-         if (c == 0)
-           {
-             while (i < glistlen)
-               {
-                 if (ent->name->num != glist[i]->name->num)
-                   break;
-
-                 if (completer_entries_eq (ent, glist[i]))
-                   return glist[i];
-
-                 i++;
-               }
-           }
-       }
-
-      for (; i > 0 && i < glistlen; i--)
-       if (ent->name->num >= glist[i - 1]->name->num)
-         break;
-
-      for (; i < glistlen; i++)
-       if (ent->name->num < glist[i]->name->num)
-         break;
-
-      for (x = glistlen - 1; x >= i; x--)
-       glist[x + 1] = glist[x];
-
-      glist[i] = ent;
-      glistlen++;
-    }
-  return ent;
-}
-\f
-static int
-get_prefix_len (name)
-     const char *name;
-{
-  char *c;
-
-  if (name[0] == '\0')
-    return 0;
-
-  c = strchr (name, '.');
-  if (c != NULL)
-    return c - name;
-  else
-    return strlen (name);
-}
-\f
-static void
-compute_completer_bits (ment, ent)
-     struct main_entry *ment;
-     struct completer_entry *ent;
-{
-  while (ent != NULL)
-    {
-      compute_completer_bits (ment, ent->addl_entries);
-
-      if (ent->is_terminal)
-       {
-         ia64_insn mask = 0;
-         ia64_insn our_bits = ent->bits;
-         struct completer_entry *p = ent->parent;
-         ia64_insn p_bits;
-         int x;
-
-         while (p != NULL && ! p->is_terminal)
-           p = p->parent;
-      
-         if (p != NULL)
-           p_bits = p->bits;
-         else
-           p_bits = ment->opcode->opcode;
-
-         for (x = 0; x < 64; x++)
-           {
-             ia64_insn m = ((ia64_insn) 1) << x;
-
-             if ((p_bits & m) != (our_bits & m))
-               mask |= m;
-             else
-               our_bits &= ~m;
-           }
-         ent->bits = our_bits;
-         ent->mask = mask;
-       }
-      else
-       {
-         ent->bits = 0;
-         ent->mask = 0;
-       }
-
-      ent = ent->alternative;
-    }
-}
-\f
-/* Find identical completer trees that are used in different
-   instructions and collapse their entries.  */
-static void
-collapse_redundant_completers (void)
-{
-  struct main_entry *ptr;
-  int x;
-
-  for (ptr = maintable; ptr != NULL; ptr = ptr->next)
-    {
-      if (ptr->completers == NULL)
-       abort ();
-
-      compute_completer_bits (ptr, ptr->completers);
-      ptr->completers = insert_gclist (ptr->completers);
-    }
-
-  /* The table has been finalized, now number the indexes.  */
-  for (x = 0; x < glistlen; x++)
-    glist[x]->num = x;
-}
-\f
-
-/* Attach two lists of dependencies to each opcode.
-   1) all resources which, when already marked in use, conflict with this
-   opcode (chks) 
-   2) all resources which must be marked in use when this opcode is used
-   (regs).  */
-static int
-insert_opcode_dependencies (opc, cmp)
-     struct ia64_opcode *opc;
-     struct completer_entry *cmp ATTRIBUTE_UNUSED;
-{
-  /* Note all resources which point to this opcode.  rfi has the most chks
-     (79) and cmpxchng has the most regs (54) so 100 here should be enough.  */
-  int i;
-  int nregs = 0;
-  unsigned short regs[256];                  
-  int nchks = 0;
-  unsigned short chks[256];
-  /* Flag insns for which no class matched; there should be none.  */
-  int no_class_found = 1;
-
-  for (i = 0; i < rdepslen; i++)
-    {
-      struct rdep *rs = rdeps[i];
-      int j;
-
-      if (strcmp (opc->name, "cmp.eq.and") == 0
-          && strncmp (rs->name, "PR%", 3) == 0
-          && rs->mode == 1)
-        no_class_found = 99;
-
-      for (j=0; j < rs->nregs;j++)
-        {
-          int ic_note = 0;
-
-          if (in_iclass (opc, ics[rs->regs[j]], NULL, NULL, &ic_note))
-            {
-              /* We can ignore ic_note 11 for non PR resources.  */
-              if (ic_note == 11 && strncmp (rs->name, "PR", 2) != 0)
-                ic_note = 0;
-
-              if (ic_note != 0 && rs->regnotes[j] != 0
-                  && ic_note != rs->regnotes[j]
-                  && !(ic_note == 11 && rs->regnotes[j] == 1))
-                warn (_("IC note %d in opcode %s (IC:%s) conflicts with resource %s note %d\n"),
-                     ic_note, opc->name, ics[rs->regs[j]]->name,
-                     rs->name, rs->regnotes[j]);
-              /* Instruction class notes override resource notes.
-                 So far, only note 11 applies to an IC instead of a resource,
-                 and note 11 implies note 1.  */
-              if (ic_note)
-                regs[nregs++] = RDEP(ic_note, i);
-              else
-                regs[nregs++] = RDEP(rs->regnotes[j], i);
-              no_class_found = 0;
-              ++rs->total_regs;
-            }
-        }
-
-      for (j = 0; j < rs->nchks; j++)
-        {
-          int ic_note = 0;
-
-          if (in_iclass (opc, ics[rs->chks[j]], NULL, NULL, &ic_note))
-            {
-              /* We can ignore ic_note 11 for non PR resources.  */
-              if (ic_note == 11 && strncmp (rs->name, "PR", 2) != 0)
-                ic_note = 0;
-
-              if (ic_note != 0 && rs->chknotes[j] != 0
-                  && ic_note != rs->chknotes[j]
-                  && !(ic_note == 11 && rs->chknotes[j] == 1))
-                warn (_("IC note %d for opcode %s (IC:%s) conflicts with resource %s note %d\n"),
-                     ic_note, opc->name, ics[rs->chks[j]]->name,
-                     rs->name, rs->chknotes[j]);
-              if (ic_note)
-                chks[nchks++] = RDEP(ic_note, i);
-              else
-                chks[nchks++] = RDEP(rs->chknotes[j], i);
-              no_class_found = 0;
-              ++rs->total_chks;
-            }
-        }
-    }
-
-  if (no_class_found)
-    warn (_("opcode %s has no class (ops %d %d %d)\n"),
-         opc->name, 
-         opc->operands[0], opc->operands[1], opc->operands[2]);
-
-  return insert_dependencies (nchks, chks, nregs, regs);
-}
-\f
-static void
-insert_completer_entry (opc, tabent, order)
-     struct ia64_opcode *opc;
-     struct main_entry *tabent;
-     int order;
-{
-  struct completer_entry **ptr = &tabent->completers;
-  struct completer_entry *parent = NULL;
-  char pcopy[129], *prefix;
-  int at_end = 0;
-
-  if (strlen (opc->name) > 128)
-    abort ();
-
-  strcpy (pcopy, opc->name);
-  prefix = pcopy + get_prefix_len (pcopy);
-
-  if (prefix[0] != '\0')
-    prefix++;
-
-  while (! at_end)
-    {
-      int need_new_ent = 1;
-      int plen = get_prefix_len (prefix);
-      struct string_entry *sent;
-
-      at_end = (prefix[plen] == '\0');
-      prefix[plen] = '\0';
-      sent = insert_string (prefix);
-
-      while (*ptr != NULL)
-       {
-         int cmpres = sent->num - (*ptr)->name->num;
-
-         if (cmpres == 0)
-           {
-             need_new_ent = 0;
-             break;
-           }
-         else
-           ptr = &((*ptr)->alternative);
-       }
-
-      if (need_new_ent)
-       {
-         struct completer_entry *nent = tmalloc (struct completer_entry);
-
-         nent->name = sent;
-         nent->parent = parent;
-         nent->addl_entries = NULL;
-         nent->alternative = *ptr;
-         *ptr = nent;
-         nent->is_terminal = 0;
-          nent->dependencies = -1;
-       }
-
-      if (! at_end)
-       {
-         parent = *ptr;
-         ptr = &((*ptr)->addl_entries);
-         prefix += plen + 1;
-       }
-    }
-
-  if ((*ptr)->is_terminal)
-    abort ();
-
-  (*ptr)->is_terminal = 1;
-  (*ptr)->mask = (ia64_insn)-1;
-  (*ptr)->bits = opc->opcode;
-  (*ptr)->dependencies = insert_opcode_dependencies (opc, *ptr);
-  (*ptr)->order = order;
-}
-\f
-static void
-print_completer_entry (ent)
-     struct completer_entry *ent;
-{
-  int moffset = 0;
-  ia64_insn mask = ent->mask, bits = ent->bits;
-
-  if (mask != 0)
-    {
-      while (! (mask & 1))
-       {
-         moffset++;
-         mask = mask >> 1;
-         bits = bits >> 1;
-       }
-
-      if (bits & 0xffffffff00000000LL)
-       abort ();
-    }
-  
-  printf ("  { 0x%x, 0x%x, %d, %d, %d, %d, %d, %d },\n",
-         (int)bits,
-         (int)mask,
-         ent->name->num,
-         ent->alternative != NULL ? ent->alternative->num : -1,
-         ent->addl_entries != NULL ? ent->addl_entries->num : -1,
-         moffset,
-         ent->is_terminal ? 1 : 0,
-          ent->dependencies);
-}
-\f
-static void
-print_completer_table ()
-{
-  int x;
-
-  printf ("static const struct ia64_completer_table\ncompleter_table[] = {\n");
-  for (x = 0; x < glistlen; x++)
-    print_completer_entry (glist[x]);
-  printf ("};\n\n");
-}
-\f
-static int
-opcodes_eq (opc1, opc2)
-     struct ia64_opcode *opc1;
-     struct ia64_opcode *opc2;
-{
-  int x;
-  int plen1, plen2;
-
-  if ((opc1->mask != opc2->mask) || (opc1->type != opc2->type) 
-      || (opc1->num_outputs != opc2->num_outputs)
-      || (opc1->flags != opc2->flags))
-    return 0;
-
-  for (x = 0; x < 5; x++)
-    if (opc1->operands[x] != opc2->operands[x])
-      return 0;
-
-  plen1 = get_prefix_len (opc1->name);
-  plen2 = get_prefix_len (opc2->name);
-
-  if (plen1 == plen2 && (memcmp (opc1->name, opc2->name, plen1) == 0))
-    return 1;
-
-  return 0;
-}
-\f
-static void
-add_opcode_entry (opc)
-     struct ia64_opcode *opc;
-{
-  struct main_entry **place;
-  struct string_entry *name;
-  char prefix[129];
-  int found_it = 0;
-
-  if (strlen (opc->name) > 128)
-    abort ();
-
-  place = &maintable;
-  strcpy (prefix, opc->name);
-  prefix[get_prefix_len (prefix)] = '\0';
-  name = insert_string (prefix);
-
-  /* Walk the list of opcode table entries.  If it's a new
-     instruction, allocate and fill in a new entry.  Note 
-     the main table is alphabetical by opcode name.  */
-
-  while (*place != NULL)
-    {
-      if ((*place)->name->num == name->num
-         && opcodes_eq ((*place)->opcode, opc))
-       {
-         found_it = 1;
-         break;
-       }
-      if ((*place)->name->num > name->num)
-       break;
-
-      place = &((*place)->next);
-    }
-  if (! found_it)
-    {
-      struct main_entry *nent = tmalloc (struct main_entry);
-
-      nent->name = name;
-      nent->opcode = opc;
-      nent->next = *place;
-      nent->completers = 0;
-      *place = nent;
-
-      if (otlen == ottotlen)
-        {
-          ottotlen += 20;
-          ordered_table = (struct main_entry **)
-            xrealloc (ordered_table, sizeof (struct main_entry *) * ottotlen);
-        }
-      ordered_table[otlen++] = nent;
-    }
-
-  insert_completer_entry (opc, *place, opcode_count++);
-}
-\f
-static void
-print_main_table (void)
-{
-  struct main_entry *ptr = maintable;
-  int index = 0;
-
-  printf ("static const struct ia64_main_table\nmain_table[] = {\n");
-  while (ptr != NULL)
-    {
-      printf ("  { %d, %d, %d, 0x",
-             ptr->name->num,
-             ptr->opcode->type,
-             ptr->opcode->num_outputs);
-      opcode_fprintf_vma (stdout, ptr->opcode->opcode);
-      printf ("ull, 0x");
-      opcode_fprintf_vma (stdout, ptr->opcode->mask);
-      printf ("ull, { %d, %d, %d, %d, %d }, 0x%x, %d, },\n",
-             ptr->opcode->operands[0],
-             ptr->opcode->operands[1],
-             ptr->opcode->operands[2],
-             ptr->opcode->operands[3],
-             ptr->opcode->operands[4],
-             ptr->opcode->flags,
-             ptr->completers->num);
-
-      ptr->main_index = index++;
-
-      ptr = ptr->next;
-    }
-  printf ("};\n\n");
-}
-\f
-static void
-shrink (table)
-     struct ia64_opcode *table;
-{
-  int curr_opcode;
-
-  for (curr_opcode = 0; table[curr_opcode].name != NULL; curr_opcode++)
-    {
-      add_opcode_entry (table + curr_opcode);
-      if (table[curr_opcode].num_outputs == 2
-         && ((table[curr_opcode].operands[0] == IA64_OPND_P1
-              && table[curr_opcode].operands[1] == IA64_OPND_P2)
-             || (table[curr_opcode].operands[0] == IA64_OPND_P2
-                 && table[curr_opcode].operands[1] == IA64_OPND_P1)))
-       {
-         struct ia64_opcode *alias = tmalloc(struct ia64_opcode);
-         unsigned i;
-
-         *alias = table[curr_opcode];
-         for (i = 2; i < NELEMS (alias->operands); ++i)
-           alias->operands[i - 1] = alias->operands[i];
-         alias->operands[NELEMS (alias->operands) - 1] = IA64_OPND_NIL;
-         --alias->num_outputs;
-         alias->flags |= PSEUDO;
-         add_opcode_entry (alias);
-       }
-    }
-}
-\f
-
-/* Program options.  */
-#define OPTION_SRCDIR  200
-
-struct option long_options[] = 
-{
-  {"srcdir",  required_argument, NULL, OPTION_SRCDIR},
-  {"debug",   no_argument,       NULL, 'd'},
-  {"version", no_argument,       NULL, 'V'},
-  {"help",    no_argument,       NULL, 'h'},
-  {0,         no_argument,       NULL, 0}
-};
-
-static void
-print_version (void)
-{
-  printf ("%s: version 1.0\n", program_name);
-  xexit (0);
-}
-
-static void
-usage (FILE * stream, int status)
-{
-  fprintf (stream, "Usage: %s [-V | --version] [-d | --debug] [--srcdir=dirname] [--help]\n",
-          program_name);
-  xexit (status);
-}
-
-int
-main (int argc, char **argv)
-{
-  extern int chdir (char *);
-  char *srcdir = NULL;
-  int c;
-  
-  program_name = *argv;
-  xmalloc_set_program_name (program_name);
-
-  while ((c = getopt_long (argc, argv, "vVdh", long_options, 0)) != EOF)
-    switch (c)
-      {
-      case OPTION_SRCDIR:
-       srcdir = optarg;
-       break;
-      case 'V':
-      case 'v':
-       print_version ();
-       break;
-      case 'd':
-       debug = 1;
-       break;
-      case 'h':
-      case '?':
-       usage (stderr, 0);
-      default:
-      case 0:
-       break;
-      }
-
-  if (optind != argc)
-    usage (stdout, 1);
-
-  if (srcdir != NULL) 
-    if (chdir (srcdir) != 0)
-      fail (_("unable to change directory to \"%s\", errno = %s\n"),
-           srcdir, strerror (errno));
-
-  load_insn_classes ();
-  load_dependencies ();
-
-  shrink (ia64_opcodes_a);
-  shrink (ia64_opcodes_b);
-  shrink (ia64_opcodes_f);
-  shrink (ia64_opcodes_i);
-  shrink (ia64_opcodes_m);
-  shrink (ia64_opcodes_x);
-  shrink (ia64_opcodes_d);
-
-  collapse_redundant_completers ();
-
-  printf ("/* This file is automatically generated by ia64-gen.  Do not edit!  */\n");
-  print_string_table ();
-  print_dependency_table ();
-  print_completer_table ();
-  print_main_table ();
-
-  generate_disassembler ();
-
-  exit (0);
-}
diff --git a/tools/debugger/xenitp/ia64-opc-a.c b/tools/debugger/xenitp/ia64-opc-a.c
deleted file mode 100644 (file)
index e865094..0000000
+++ /dev/null
@@ -1,419 +0,0 @@
-/* ia64-opc-a.c -- IA-64 `A' opcode table.
-   Copyright 1998, 1999, 2000, 2001, 2002, 2004
-   Free Software Foundation, Inc.
-   Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
-
-   This file is part of GDB, GAS, and the GNU binutils.
-
-   GDB, GAS, and the GNU binutils are free software; you can redistribute
-   them and/or modify them under the terms of the GNU General Public
-   License as published by the Free Software Foundation; either version
-   2, or (at your option) any later version.
-
-   GDB, GAS, and the GNU binutils are distributed in the hope that they
-   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 file; see the file COPYING.  If not, write to the
-   Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
-   02110-1301, USA.  */
-
-#include "ia64-opc.h"
-
-#define A      IA64_TYPE_A, 1
-#define A2     IA64_TYPE_A, 2
-
-/* instruction bit fields: */
-#define bC(x)          (((ia64_insn) ((x) & 0x1)) << 12)
-#define bImm14(x)      ((((ia64_insn) (((x) >>  0) & 0x7f)) << 13) | \
-                        (((ia64_insn) (((x) >>  7) & 0x3f)) << 27) | \
-                        (((ia64_insn) (((x) >> 13) & 0x01)) << 36))
-#define bR3a(x)                (((ia64_insn) ((x) & 0x7f)) << 20)
-#define bR3b(x)                (((ia64_insn) ((x) & 0x3)) << 20)
-#define bTa(x)         (((ia64_insn) ((x) & 0x1)) << 33)
-#define bTb(x)         (((ia64_insn) ((x) & 0x1)) << 36)
-#define bVe(x)         (((ia64_insn) ((x) & 0x1)) << 33)
-#define bX(x)          (((ia64_insn) ((x) & 0x1)) << 33)
-#define bX2(x)         (((ia64_insn) ((x) & 0x3)) << 34)
-#define bX2a(x)                (((ia64_insn) ((x) & 0x3)) << 34)
-#define bX2b(x)                (((ia64_insn) ((x) & 0x3)) << 27)
-#define bX4(x)         (((ia64_insn) ((x) & 0xf)) << 29)
-#define bZa(x)         (((ia64_insn) ((x) & 0x1)) << 36)
-#define bZb(x)         (((ia64_insn) ((x) & 0x1)) << 33)
-
-/* instruction bit masks: */
-#define mC     bC (-1)
-#define mImm14 bImm14 (-1)
-#define mR3a   bR3a (-1)
-#define mR3b   bR3b (-1)
-#define mTa    bTa (-1)
-#define mTb    bTb (-1)
-#define mVe    bVe (-1)
-#define mX     bX (-1)
-#define mX2    bX2 (-1)
-#define mX2a   bX2a (-1)
-#define mX2b   bX2b (-1)
-#define mX4    bX4 (-1)
-#define mZa    bZa (-1)
-#define mZb    bZb (-1)
-
-#define OpR3b(a,b)             (bOp (a) | bR3b (b)), (mOp | mR3b)
-#define OpX2aVe(a,b,c)         (bOp (a) | bX2a (b) | bVe (c)), \
-                               (mOp | mX2a | mVe)
-#define OpX2aVeR3a(a,b,c,d)    (bOp (a) | bX2a (b) | bVe (c) | bR3a (d)), \
-                               (mOp | mX2a | mVe | mR3a)
-#define OpX2aVeImm14(a,b,c,d)  (bOp (a) | bX2a (b) | bVe (c) | bImm14 (d)), \
-                               (mOp | mX2a | mVe | mImm14)
-#define OpX2aVeX4(a,b,c,d)     (bOp (a) | bX2a (b) | bVe (c) | bX4 (d)), \
-                               (mOp | mX2a | mVe | mX4)
-#define OpX2aVeX4X2b(a,b,c,d,e)        \
-       (bOp (a) | bX2a (b) | bVe (c) | bX4 (d) | bX2b (e)), \
-       (mOp | mX2a | mVe | mX4 | mX2b)
-#define OpX2TbTaC(a,b,c,d,e) \
-       (bOp (a) | bX2 (b) | bTb (c) | bTa (d) | bC (e)), \
-       (mOp | mX2 | mTb | mTa | mC)
-#define OpX2TaC(a,b,c,d)       (bOp (a) | bX2 (b) | bTa (c) | bC (d)), \
-                               (mOp | mX2 | mTa | mC)
-#define OpX2aZaZbX4(a,b,c,d,e) \
-       (bOp (a) | bX2a (b) | bZa (c) | bZb (d) | bX4 (e)), \
-       (mOp | mX2a | mZa | mZb | mX4)
-#define OpX2aZaZbX4X2b(a,b,c,d,e,f) \
-       (bOp (a) | bX2a (b) | bZa (c) | bZb (d) | bX4 (e) | bX2b (f)), \
-       (mOp | mX2a | mZa | mZb | mX4 | mX2b)
-
-/* Used to initialise unused fields in ia64_opcode struct,
-   in order to stop gcc from complaining.  */
-#define EMPTY 0,0,NULL
-
-struct ia64_opcode ia64_opcodes_a[] =
-  {
-    /* A-type instruction encodings (sorted according to major opcode).  */
-
-    {"add",     A, OpX2aVeX4X2b (8, 0, 0, 0, 0), {R1, R2, R3}, EMPTY},
-    {"add",     A, OpX2aVeX4X2b (8, 0, 0, 0, 1), {R1, R2, R3, C1}, EMPTY},
-    {"sub",     A, OpX2aVeX4X2b (8, 0, 0, 1, 1), {R1, R2, R3}, EMPTY},
-    {"sub",     A, OpX2aVeX4X2b (8, 0, 0, 1, 0), {R1, R2, R3, C1}, EMPTY},
-    {"addp4",   A, OpX2aVeX4X2b (8, 0, 0, 2, 0), {R1, R2, R3}, EMPTY},
-    {"and",     A, OpX2aVeX4X2b (8, 0, 0, 3, 0), {R1, R2, R3}, EMPTY},
-    {"andcm",   A, OpX2aVeX4X2b (8, 0, 0, 3, 1), {R1, R2, R3}, EMPTY},
-    {"or",      A, OpX2aVeX4X2b (8, 0, 0, 3, 2), {R1, R2, R3}, EMPTY},
-    {"xor",     A, OpX2aVeX4X2b (8, 0, 0, 3, 3), {R1, R2, R3}, EMPTY},
-    {"shladd",  A, OpX2aVeX4 (8, 0, 0, 4), {R1, R2, CNT2a, R3}, EMPTY},
-    {"shladdp4", A, OpX2aVeX4 (8, 0, 0, 6), {R1, R2, CNT2a, R3}, EMPTY},
-    {"sub",     A, OpX2aVeX4X2b (8, 0, 0, 9, 1), {R1, IMM8, R3}, EMPTY},
-    {"and",     A, OpX2aVeX4X2b (8, 0, 0, 0xb, 0), {R1, IMM8, R3}, EMPTY},
-    {"andcm",   A, OpX2aVeX4X2b (8, 0, 0, 0xb, 1), {R1, IMM8, R3}, EMPTY},
-    {"or",      A, OpX2aVeX4X2b (8, 0, 0, 0xb, 2), {R1, IMM8, R3}, EMPTY},
-    {"xor",     A, OpX2aVeX4X2b (8, 0, 0, 0xb, 3), {R1, IMM8, R3}, EMPTY},
-    {"mov",     A, OpX2aVeImm14 (8, 2, 0, 0), {R1, R3}, EMPTY},
-    /* A mov immediate pseudo for adds was deleted.  It failed for immediate
-       operands requiring relocs, e.g. @pltoff(a).  */
-    {"adds",    A, OpX2aVe (8, 2, 0), {R1, IMM14, R3}, EMPTY},
-    {"addp4",   A, OpX2aVe (8, 3, 0), {R1, IMM14, R3}, EMPTY},
-    {"padd1",           A, OpX2aZaZbX4X2b (8, 1, 0, 0, 0, 0), {R1, R2, R3}, EMPTY},
-    {"padd2",           A, OpX2aZaZbX4X2b (8, 1, 0, 1, 0, 0), {R1, R2, R3}, EMPTY},
-    {"padd4",           A, OpX2aZaZbX4X2b (8, 1, 1, 0, 0, 0), {R1, R2, R3}, EMPTY},
-    {"padd1.sss",       A, OpX2aZaZbX4X2b (8, 1, 0, 0, 0, 1), {R1, R2, R3}, EMPTY},
-    {"padd2.sss",       A, OpX2aZaZbX4X2b (8, 1, 0, 1, 0, 1), {R1, R2, R3}, EMPTY},
-    {"padd1.uuu",       A, OpX2aZaZbX4X2b (8, 1, 0, 0, 0, 2), {R1, R2, R3}, EMPTY},
-    {"padd2.uuu",       A, OpX2aZaZbX4X2b (8, 1, 0, 1, 0, 2), {R1, R2, R3}, EMPTY},
-    {"padd1.uus",       A, OpX2aZaZbX4X2b (8, 1, 0, 0, 0, 3), {R1, R2, R3}, EMPTY},
-    {"padd2.uus",       A, OpX2aZaZbX4X2b (8, 1, 0, 1, 0, 3), {R1, R2, R3}, EMPTY},
-    {"psub1",           A, OpX2aZaZbX4X2b (8, 1, 0, 0, 1, 0), {R1, R2, R3}, EMPTY},
-    {"psub2",           A, OpX2aZaZbX4X2b (8, 1, 0, 1, 1, 0), {R1, R2, R3}, EMPTY},
-    {"psub4",           A, OpX2aZaZbX4X2b (8, 1, 1, 0, 1, 0), {R1, R2, R3}, EMPTY},
-    {"psub1.sss",       A, OpX2aZaZbX4X2b (8, 1, 0, 0, 1, 1), {R1, R2, R3}, EMPTY},
-    {"psub2.sss",       A, OpX2aZaZbX4X2b (8, 1, 0, 1, 1, 1), {R1, R2, R3}, EMPTY},
-    {"psub1.uuu",       A, OpX2aZaZbX4X2b (8, 1, 0, 0, 1, 2), {R1, R2, R3}, EMPTY},
-    {"psub2.uuu",       A, OpX2aZaZbX4X2b (8, 1, 0, 1, 1, 2), {R1, R2, R3}, EMPTY},
-    {"psub1.uus",       A, OpX2aZaZbX4X2b (8, 1, 0, 0, 1, 3), {R1, R2, R3}, EMPTY},
-    {"psub2.uus",       A, OpX2aZaZbX4X2b (8, 1, 0, 1, 1, 3), {R1, R2, R3}, EMPTY},
-    {"pavg1",           A, OpX2aZaZbX4X2b (8, 1, 0, 0, 2, 2), {R1, R2, R3}, EMPTY},
-    {"pavg2",           A, OpX2aZaZbX4X2b (8, 1, 0, 1, 2, 2), {R1, R2, R3}, EMPTY},
-    {"pavg1.raz",       A, OpX2aZaZbX4X2b (8, 1, 0, 0, 2, 3), {R1, R2, R3}, EMPTY},
-    {"pavg2.raz",       A, OpX2aZaZbX4X2b (8, 1, 0, 1, 2, 3), {R1, R2, R3}, EMPTY},
-    {"pavgsub1",        A, OpX2aZaZbX4X2b (8, 1, 0, 0, 3, 2), {R1, R2, R3}, EMPTY},
-    {"pavgsub2",        A, OpX2aZaZbX4X2b (8, 1, 0, 1, 3, 2), {R1, R2, R3}, EMPTY},
-    {"pcmp1.eq",        A, OpX2aZaZbX4X2b (8, 1, 0, 0, 9, 0), {R1, R2, R3}, EMPTY},
-    {"pcmp2.eq",        A, OpX2aZaZbX4X2b (8, 1, 0, 1, 9, 0), {R1, R2, R3}, EMPTY},
-    {"pcmp4.eq",        A, OpX2aZaZbX4X2b (8, 1, 1, 0, 9, 0), {R1, R2, R3}, EMPTY},
-    {"pcmp1.gt",        A, OpX2aZaZbX4X2b (8, 1, 0, 0, 9, 1), {R1, R2, R3}, EMPTY},
-    {"pcmp2.gt",        A, OpX2aZaZbX4X2b (8, 1, 0, 1, 9, 1), {R1, R2, R3}, EMPTY},
-    {"pcmp4.gt",        A, OpX2aZaZbX4X2b (8, 1, 1, 0, 9, 1), {R1, R2, R3}, EMPTY},
-    {"pshladd2",        A, OpX2aZaZbX4 (8, 1, 0, 1, 4), {R1, R2, CNT2b, R3}, EMPTY},
-    {"pshradd2",        A, OpX2aZaZbX4 (8, 1, 0, 1, 6), {R1, R2, CNT2b, R3}, EMPTY},
-
-    {"mov",             A, OpR3b (9, 0), {R1, IMM22}, PSEUDO, 0, NULL},
-    {"addl",            A, Op    (9),    {R1, IMM22, R3_2}, EMPTY},
-
-    {"cmp.lt",          A2, OpX2TbTaC (0xc, 0, 0, 0, 0), {P1, P2, R2, R3}, EMPTY},
-    {"cmp.le",          A2, OpX2TbTaC (0xc, 0, 0, 0, 0), {P2, P1, R3, R2}, EMPTY},
-    {"cmp.gt",          A2, OpX2TbTaC (0xc, 0, 0, 0, 0), {P1, P2, R3, R2}, EMPTY},
-    {"cmp.ge",          A2, OpX2TbTaC (0xc, 0, 0, 0, 0), {P2, P1, R2, R3}, EMPTY},
-    {"cmp.lt.unc",      A2, OpX2TbTaC (0xc, 0, 0, 0, 1), {P1, P2, R2, R3}, EMPTY},
-    {"cmp.le.unc",      A2, OpX2TbTaC (0xc, 0, 0, 0, 1), {P2, P1, R3, R2}, EMPTY},
-    {"cmp.gt.unc",      A2, OpX2TbTaC (0xc, 0, 0, 0, 1), {P1, P2, R3, R2}, EMPTY},
-    {"cmp.ge.unc",      A2, OpX2TbTaC (0xc, 0, 0, 0, 1), {P2, P1, R2, R3}, EMPTY},
-    {"cmp.eq.and",      A2, OpX2TbTaC (0xc, 0, 0, 1, 0), {P1, P2, R2, R3}, EMPTY},
-    {"cmp.ne.andcm",    A2, OpX2TbTaC (0xc, 0, 0, 1, 0), {P1, P2, R2, R3}, PSEUDO, 0, NULL},
-    {"cmp.ne.and",      A2, OpX2TbTaC (0xc, 0, 0, 1, 1), {P1, P2, R2, R3}, EMPTY},
-    {"cmp.eq.andcm",    A2, OpX2TbTaC (0xc, 0, 0, 1, 1), {P1, P2, R2, R3}, PSEUDO, 0, NULL},
-    {"cmp4.lt",                 A2, OpX2TbTaC (0xc, 1, 0, 0, 0), {P1, P2, R2, R3}, EMPTY},
-    {"cmp4.le",                 A2, OpX2TbTaC (0xc, 1, 0, 0, 0), {P2, P1, R3, R2}, EMPTY},
-    {"cmp4.gt",                 A2, OpX2TbTaC (0xc, 1, 0, 0, 0), {P1, P2, R3, R2}, EMPTY},
-    {"cmp4.ge",                 A2, OpX2TbTaC (0xc, 1, 0, 0, 0), {P2, P1, R2, R3}, EMPTY},
-    {"cmp4.lt.unc",     A2, OpX2TbTaC (0xc, 1, 0, 0, 1), {P1, P2, R2, R3}, EMPTY},
-    {"cmp4.le.unc",     A2, OpX2TbTaC (0xc, 1, 0, 0, 1), {P2, P1, R3, R2}, EMPTY},
-    {"cmp4.gt.unc",     A2, OpX2TbTaC (0xc, 1, 0, 0, 1), {P1, P2, R3, R2}, EMPTY},
-    {"cmp4.ge.unc",     A2, OpX2TbTaC (0xc, 1, 0, 0, 1), {P2, P1, R2, R3}, EMPTY},
-    {"cmp4.eq.and",     A2, OpX2TbTaC (0xc, 1, 0, 1, 0), {P1, P2, R2, R3}, EMPTY},
-    {"cmp4.ne.andcm",   A2, OpX2TbTaC (0xc, 1, 0, 1, 0), {P1, P2, R2, R3}, PSEUDO, 0, NULL},
-    {"cmp4.ne.and",     A2, OpX2TbTaC (0xc, 1, 0, 1, 1), {P1, P2, R2, R3}, EMPTY},
-    {"cmp4.eq.andcm",   A2, OpX2TbTaC (0xc, 1, 0, 1, 1), {P1, P2, R2, R3}, PSEUDO, 0, NULL},
-    {"cmp.gt.and",      A2, OpX2TbTaC (0xc, 0, 1, 0, 0), {P1, P2, GR0, R3}, EMPTY},
-    {"cmp.lt.and",      A2, OpX2TbTaC (0xc, 0, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp.le.andcm",    A2, OpX2TbTaC (0xc, 0, 1, 0, 0), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
-    {"cmp.ge.andcm",    A2, OpX2TbTaC (0xc, 0, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp.le.and",      A2, OpX2TbTaC (0xc, 0, 1, 0, 1), {P1, P2, GR0, R3}, EMPTY},
-    {"cmp.ge.and",      A2, OpX2TbTaC (0xc, 0, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp.gt.andcm",    A2, OpX2TbTaC (0xc, 0, 1, 0, 1), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
-    {"cmp.lt.andcm",    A2, OpX2TbTaC (0xc, 0, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp.ge.and",      A2, OpX2TbTaC (0xc, 0, 1, 1, 0), {P1, P2, GR0, R3}, EMPTY},
-    {"cmp.le.and",      A2, OpX2TbTaC (0xc, 0, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp.lt.andcm",    A2, OpX2TbTaC (0xc, 0, 1, 1, 0), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
-    {"cmp.gt.andcm",    A2, OpX2TbTaC (0xc, 0, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp.lt.and",      A2, OpX2TbTaC (0xc, 0, 1, 1, 1), {P1, P2, GR0, R3}, EMPTY},
-    {"cmp.gt.and",      A2, OpX2TbTaC (0xc, 0, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp.ge.andcm",    A2, OpX2TbTaC (0xc, 0, 1, 1, 1), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
-    {"cmp.le.andcm",    A2, OpX2TbTaC (0xc, 0, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp4.gt.and",     A2, OpX2TbTaC (0xc, 1, 1, 0, 0), {P1, P2, GR0, R3}, EMPTY},
-    {"cmp4.lt.and",     A2, OpX2TbTaC (0xc, 1, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp4.le.andcm",   A2, OpX2TbTaC (0xc, 1, 1, 0, 0), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
-    {"cmp4.ge.andcm",   A2, OpX2TbTaC (0xc, 1, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp4.le.and",     A2, OpX2TbTaC (0xc, 1, 1, 0, 1), {P1, P2, GR0, R3}, EMPTY},
-    {"cmp4.ge.and",     A2, OpX2TbTaC (0xc, 1, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp4.gt.andcm",   A2, OpX2TbTaC (0xc, 1, 1, 0, 1), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
-    {"cmp4.lt.andcm",   A2, OpX2TbTaC (0xc, 1, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp4.ge.and",     A2, OpX2TbTaC (0xc, 1, 1, 1, 0), {P1, P2, GR0, R3}, EMPTY},
-    {"cmp4.le.and",     A2, OpX2TbTaC (0xc, 1, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp4.lt.andcm",   A2, OpX2TbTaC (0xc, 1, 1, 1, 0), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
-    {"cmp4.gt.andcm",   A2, OpX2TbTaC (0xc, 1, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp4.lt.and",     A2, OpX2TbTaC (0xc, 1, 1, 1, 1), {P1, P2, GR0, R3}, EMPTY},
-    {"cmp4.gt.and",     A2, OpX2TbTaC (0xc, 1, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp4.ge.andcm",   A2, OpX2TbTaC (0xc, 1, 1, 1, 1), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
-    {"cmp4.le.andcm",   A2, OpX2TbTaC (0xc, 1, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp.lt",          A2, OpX2TaC   (0xc, 2, 0, 0), {P1, P2, IMM8, R3}, EMPTY},
-    {"cmp.le",          A2, OpX2TaC   (0xc, 2, 0, 0), {P1, P2, IMM8M1, R3}, EMPTY},
-    {"cmp.gt",          A2, OpX2TaC   (0xc, 2, 0, 0), {P2, P1, IMM8M1, R3}, EMPTY},
-    {"cmp.ge",          A2, OpX2TaC   (0xc, 2, 0, 0), {P2, P1, IMM8, R3}, EMPTY},
-    {"cmp.lt.unc",      A2, OpX2TaC   (0xc, 2, 0, 1), {P1, P2, IMM8, R3}, EMPTY},
-    {"cmp.le.unc",      A2, OpX2TaC   (0xc, 2, 0, 1), {P1, P2, IMM8M1, R3}, EMPTY},
-    {"cmp.gt.unc",      A2, OpX2TaC   (0xc, 2, 0, 1), {P2, P1, IMM8M1, R3}, EMPTY},
-    {"cmp.ge.unc",      A2, OpX2TaC   (0xc, 2, 0, 1), {P2, P1, IMM8, R3}, EMPTY},
-    {"cmp.eq.and",      A2, OpX2TaC   (0xc, 2, 1, 0), {P1, P2, IMM8, R3}, EMPTY},
-    {"cmp.ne.andcm",    A2, OpX2TaC   (0xc, 2, 1, 0), {P1, P2, IMM8, R3}, PSEUDO, 0, NULL},
-    {"cmp.ne.and",      A2, OpX2TaC   (0xc, 2, 1, 1), {P1, P2, IMM8, R3}, EMPTY},
-    {"cmp.eq.andcm",    A2, OpX2TaC   (0xc, 2, 1, 1), {P1, P2, IMM8, R3}, PSEUDO, 0, NULL},
-    {"cmp4.lt",                 A2, OpX2TaC   (0xc, 3, 0, 0), {P1, P2, IMM8, R3}, EMPTY},
-    {"cmp4.le",                 A2, OpX2TaC   (0xc, 3, 0, 0), {P1, P2, IMM8M1, R3}, EMPTY},
-    {"cmp4.gt",                 A2, OpX2TaC   (0xc, 3, 0, 0), {P2, P1, IMM8M1, R3}, EMPTY},
-    {"cmp4.ge",                 A2, OpX2TaC   (0xc, 3, 0, 0), {P2, P1, IMM8, R3}, EMPTY},
-    {"cmp4.lt.unc",     A2, OpX2TaC   (0xc, 3, 0, 1), {P1, P2, IMM8, R3}, EMPTY},
-    {"cmp4.le.unc",     A2, OpX2TaC   (0xc, 3, 0, 1), {P1, P2, IMM8M1, R3}, EMPTY},
-    {"cmp4.gt.unc",     A2, OpX2TaC   (0xc, 3, 0, 1), {P2, P1, IMM8M1, R3}, EMPTY},
-    {"cmp4.ge.unc",     A2, OpX2TaC   (0xc, 3, 0, 1), {P2, P1, IMM8, R3}, EMPTY},
-    {"cmp4.eq.and",     A2, OpX2TaC   (0xc, 3, 1, 0), {P1, P2, IMM8, R3}, EMPTY},
-    {"cmp4.ne.andcm",   A2, OpX2TaC   (0xc, 3, 1, 0), {P1, P2, IMM8, R3}, PSEUDO, 0, NULL},
-    {"cmp4.ne.and",     A2, OpX2TaC   (0xc, 3, 1, 1), {P1, P2, IMM8, R3}, EMPTY},
-    {"cmp4.eq.andcm",   A2, OpX2TaC   (0xc, 3, 1, 1), {P1, P2, IMM8, R3}, PSEUDO, 0, NULL},
-    {"cmp.ltu",                 A2, OpX2TbTaC (0xd, 0, 0, 0, 0), {P1, P2, R2, R3}, EMPTY},
-    {"cmp.leu",                 A2, OpX2TbTaC (0xd, 0, 0, 0, 0), {P2, P1, R3, R2}, EMPTY},
-    {"cmp.gtu",                 A2, OpX2TbTaC (0xd, 0, 0, 0, 0), {P1, P2, R3, R2}, EMPTY},
-    {"cmp.geu",                 A2, OpX2TbTaC (0xd, 0, 0, 0, 0), {P2, P1, R2, R3}, EMPTY},
-    {"cmp.ltu.unc",     A2, OpX2TbTaC (0xd, 0, 0, 0, 1), {P1, P2, R2, R3}, EMPTY},
-    {"cmp.leu.unc",     A2, OpX2TbTaC (0xd, 0, 0, 0, 1), {P2, P1, R3, R2}, EMPTY},
-    {"cmp.gtu.unc",     A2, OpX2TbTaC (0xd, 0, 0, 0, 1), {P1, P2, R3, R2}, EMPTY},
-    {"cmp.geu.unc",     A2, OpX2TbTaC (0xd, 0, 0, 0, 1), {P2, P1, R2, R3}, EMPTY},
-    {"cmp.eq.or",       A2, OpX2TbTaC (0xd, 0, 0, 1, 0), {P1, P2, R2, R3}, EMPTY},
-    {"cmp.ne.orcm",     A2, OpX2TbTaC (0xd, 0, 0, 1, 0), {P1, P2, R2, R3}, PSEUDO, 0, NULL},
-    {"cmp.ne.or",       A2, OpX2TbTaC (0xd, 0, 0, 1, 1), {P1, P2, R2, R3}, EMPTY},
-    {"cmp.eq.orcm",     A2, OpX2TbTaC (0xd, 0, 0, 1, 1), {P1, P2, R2, R3}, PSEUDO, 0, NULL},
-    {"cmp4.ltu",        A2, OpX2TbTaC (0xd, 1, 0, 0, 0), {P1, P2, R2, R3}, EMPTY},
-    {"cmp4.leu",        A2, OpX2TbTaC (0xd, 1, 0, 0, 0), {P2, P1, R3, R2}, EMPTY},
-    {"cmp4.gtu",        A2, OpX2TbTaC (0xd, 1, 0, 0, 0), {P1, P2, R3, R2}, EMPTY},
-    {"cmp4.geu",        A2, OpX2TbTaC (0xd, 1, 0, 0, 0), {P2, P1, R2, R3}, EMPTY},
-    {"cmp4.ltu.unc",    A2, OpX2TbTaC (0xd, 1, 0, 0, 1), {P1, P2, R2, R3}, EMPTY},
-    {"cmp4.leu.unc",    A2, OpX2TbTaC (0xd, 1, 0, 0, 1), {P2, P1, R3, R2}, EMPTY},
-    {"cmp4.gtu.unc",    A2, OpX2TbTaC (0xd, 1, 0, 0, 1), {P1, P2, R3, R2}, EMPTY},
-    {"cmp4.geu.unc",    A2, OpX2TbTaC (0xd, 1, 0, 0, 1), {P2, P1, R2, R3}, EMPTY},
-    {"cmp4.eq.or",      A2, OpX2TbTaC (0xd, 1, 0, 1, 0), {P1, P2, R2, R3}, EMPTY},
-    {"cmp4.ne.orcm",    A2, OpX2TbTaC (0xd, 1, 0, 1, 0), {P1, P2, R2, R3}, PSEUDO, 0, NULL},
-    {"cmp4.ne.or",      A2, OpX2TbTaC (0xd, 1, 0, 1, 1), {P1, P2, R2, R3}, EMPTY},
-    {"cmp4.eq.orcm",    A2, OpX2TbTaC (0xd, 1, 0, 1, 1), {P1, P2, R2, R3}, PSEUDO, 0, NULL},
-    {"cmp.gt.or",       A2, OpX2TbTaC (0xd, 0, 1, 0, 0), {P1, P2, GR0, R3}, EMPTY},
-    {"cmp.lt.or",       A2, OpX2TbTaC (0xd, 0, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp.le.orcm",     A2, OpX2TbTaC (0xd, 0, 1, 0, 0), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
-    {"cmp.ge.orcm",     A2, OpX2TbTaC (0xd, 0, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp.le.or",       A2, OpX2TbTaC (0xd, 0, 1, 0, 1), {P1, P2, GR0, R3}, EMPTY},
-    {"cmp.ge.or",       A2, OpX2TbTaC (0xd, 0, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp.gt.orcm",     A2, OpX2TbTaC (0xd, 0, 1, 0, 1), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
-    {"cmp.lt.orcm",     A2, OpX2TbTaC (0xd, 0, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp.ge.or",       A2, OpX2TbTaC (0xd, 0, 1, 1, 0), {P1, P2, GR0, R3}, EMPTY},
-    {"cmp.le.or",       A2, OpX2TbTaC (0xd, 0, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp.lt.orcm",     A2, OpX2TbTaC (0xd, 0, 1, 1, 0), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
-    {"cmp.gt.orcm",     A2, OpX2TbTaC (0xd, 0, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp.lt.or",       A2, OpX2TbTaC (0xd, 0, 1, 1, 1), {P1, P2, GR0, R3}, EMPTY},
-    {"cmp.gt.or",       A2, OpX2TbTaC (0xd, 0, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp.ge.orcm",     A2, OpX2TbTaC (0xd, 0, 1, 1, 1), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
-    {"cmp.le.orcm",     A2, OpX2TbTaC (0xd, 0, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp4.gt.or",      A2, OpX2TbTaC (0xd, 1, 1, 0, 0), {P1, P2, GR0, R3}, EMPTY},
-    {"cmp4.lt.or",      A2, OpX2TbTaC (0xd, 1, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp4.le.orcm",    A2, OpX2TbTaC (0xd, 1, 1, 0, 0), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
-    {"cmp4.ge.orcm",    A2, OpX2TbTaC (0xd, 1, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp4.le.or",      A2, OpX2TbTaC (0xd, 1, 1, 0, 1), {P1, P2, GR0, R3}, EMPTY},
-    {"cmp4.ge.or",      A2, OpX2TbTaC (0xd, 1, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp4.gt.orcm",    A2, OpX2TbTaC (0xd, 1, 1, 0, 1), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
-    {"cmp4.lt.orcm",    A2, OpX2TbTaC (0xd, 1, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp4.ge.or",      A2, OpX2TbTaC (0xd, 1, 1, 1, 0), {P1, P2, GR0, R3}, EMPTY},
-    {"cmp4.le.or",      A2, OpX2TbTaC (0xd, 1, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp4.lt.orcm",    A2, OpX2TbTaC (0xd, 1, 1, 1, 0), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
-    {"cmp4.gt.orcm",    A2, OpX2TbTaC (0xd, 1, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp4.lt.or",      A2, OpX2TbTaC (0xd, 1, 1, 1, 1), {P1, P2, GR0, R3}, EMPTY},
-    {"cmp4.gt.or",      A2, OpX2TbTaC (0xd, 1, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp4.ge.orcm",    A2, OpX2TbTaC (0xd, 1, 1, 1, 1), {P1, P2, GR0, R3}, PSEUDO, 0, NULL},
-    {"cmp4.le.orcm",    A2, OpX2TbTaC (0xd, 1, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp.ltu",                 A2, OpX2TaC   (0xd, 2, 0, 0), {P1, P2, IMM8, R3}, EMPTY},
-    {"cmp.leu",                 A2, OpX2TaC   (0xd, 2, 0, 0), {P1, P2, IMM8M1U8, R3}, EMPTY},
-    {"cmp.gtu",                 A2, OpX2TaC   (0xd, 2, 0, 0), {P2, P1, IMM8M1U8, R3}, EMPTY},
-    {"cmp.geu",                 A2, OpX2TaC   (0xd, 2, 0, 0), {P2, P1, IMM8, R3}, EMPTY},
-    {"cmp.ltu.unc",     A2, OpX2TaC   (0xd, 2, 0, 1), {P1, P2, IMM8, R3}, EMPTY},
-    {"cmp.leu.unc",     A2, OpX2TaC   (0xd, 2, 0, 1), {P1, P2, IMM8M1U8, R3}, EMPTY},
-    {"cmp.gtu.unc",     A2, OpX2TaC   (0xd, 2, 0, 1), {P2, P1, IMM8M1U8, R3}, EMPTY},
-    {"cmp.geu.unc",     A2, OpX2TaC   (0xd, 2, 0, 1), {P2, P1, IMM8, R3}, EMPTY},
-    {"cmp.eq.or",       A2, OpX2TaC   (0xd, 2, 1, 0), {P1, P2, IMM8, R3}, EMPTY},
-    {"cmp.ne.orcm",     A2, OpX2TaC   (0xd, 2, 1, 0), {P1, P2, IMM8, R3}, PSEUDO, 0, NULL},
-    {"cmp.ne.or",       A2, OpX2TaC   (0xd, 2, 1, 1), {P1, P2, IMM8, R3}, EMPTY},
-    {"cmp.eq.orcm",     A2, OpX2TaC   (0xd, 2, 1, 1), {P1, P2, IMM8, R3}, PSEUDO, 0, NULL},
-    {"cmp4.ltu",        A2, OpX2TaC   (0xd, 3, 0, 0), {P1, P2, IMM8U4, R3}, EMPTY},
-    {"cmp4.leu",        A2, OpX2TaC   (0xd, 3, 0, 0), {P1, P2, IMM8M1U4, R3}, EMPTY},
-    {"cmp4.gtu",        A2, OpX2TaC   (0xd, 3, 0, 0), {P2, P1, IMM8M1U4, R3}, EMPTY},
-    {"cmp4.geu",        A2, OpX2TaC   (0xd, 3, 0, 0), {P2, P1, IMM8U4, R3}, EMPTY},
-    {"cmp4.ltu.unc",    A2, OpX2TaC   (0xd, 3, 0, 1), {P1, P2, IMM8U4, R3}, EMPTY},
-    {"cmp4.leu.unc",    A2, OpX2TaC   (0xd, 3, 0, 1), {P1, P2, IMM8M1U4, R3}, EMPTY},
-    {"cmp4.gtu.unc",    A2, OpX2TaC   (0xd, 3, 0, 1), {P2, P1, IMM8M1U4, R3}, EMPTY},
-    {"cmp4.geu.unc",    A2, OpX2TaC   (0xd, 3, 0, 1), {P2, P1, IMM8U4, R3}, EMPTY},
-    {"cmp4.eq.or",      A2, OpX2TaC   (0xd, 3, 1, 0), {P1, P2, IMM8, R3}, EMPTY},
-    {"cmp4.ne.orcm",    A2, OpX2TaC   (0xd, 3, 1, 0), {P1, P2, IMM8, R3}, PSEUDO, 0, NULL},
-    {"cmp4.ne.or",      A2, OpX2TaC   (0xd, 3, 1, 1), {P1, P2, IMM8, R3}, EMPTY},
-    {"cmp4.eq.orcm",    A2, OpX2TaC   (0xd, 3, 1, 1), {P1, P2, IMM8, R3}, PSEUDO, 0, NULL},
-    {"cmp.eq",          A2, OpX2TbTaC (0xe, 0, 0, 0, 0), {P1, P2, R2, R3}, EMPTY},
-    {"cmp.ne",          A2, OpX2TbTaC (0xe, 0, 0, 0, 0), {P2, P1, R2, R3}, EMPTY},
-    {"cmp.eq.unc",      A2, OpX2TbTaC (0xe, 0, 0, 0, 1), {P1, P2, R2, R3}, EMPTY},
-    {"cmp.ne.unc",      A2, OpX2TbTaC (0xe, 0, 0, 0, 1), {P2, P1, R2, R3}, EMPTY},
-    {"cmp.eq.or.andcm",         A2, OpX2TbTaC (0xe, 0, 0, 1, 0), {P1, P2, R2, R3}, EMPTY},
-    {"cmp.ne.and.orcm",         A2, OpX2TbTaC (0xe, 0, 0, 1, 0), {P2, P1, R2, R3}, PSEUDO, 0, NULL},
-    {"cmp.ne.or.andcm",         A2, OpX2TbTaC (0xe, 0, 0, 1, 1), {P1, P2, R2, R3}, EMPTY},
-    {"cmp.eq.and.orcm",         A2, OpX2TbTaC (0xe, 0, 0, 1, 1), {P2, P1, R2, R3}, PSEUDO, 0, NULL},
-    {"cmp4.eq",                 A2, OpX2TbTaC (0xe, 1, 0, 0, 0), {P1, P2, R2, R3}, EMPTY},
-    {"cmp4.ne",                 A2, OpX2TbTaC (0xe, 1, 0, 0, 0), {P2, P1, R2, R3}, EMPTY},
-    {"cmp4.eq.unc",     A2, OpX2TbTaC (0xe, 1, 0, 0, 1), {P1, P2, R2, R3}, EMPTY},
-    {"cmp4.ne.unc",     A2, OpX2TbTaC (0xe, 1, 0, 0, 1), {P2, P1, R2, R3}, EMPTY},
-    {"cmp4.eq.or.andcm", A2, OpX2TbTaC (0xe, 1, 0, 1, 0), {P1, P2, R2, R3}, EMPTY},
-    {"cmp4.ne.and.orcm", A2, OpX2TbTaC (0xe, 1, 0, 1, 0), {P2, P1, R2, R3}, PSEUDO, 0, NULL},
-    {"cmp4.ne.or.andcm", A2, OpX2TbTaC (0xe, 1, 0, 1, 1), {P1, P2, R2, R3}, EMPTY},
-    {"cmp4.eq.and.orcm", A2, OpX2TbTaC (0xe, 1, 0, 1, 1), {P2, P1, R2, R3}, PSEUDO, 0, NULL},
-    {"cmp.gt.or.andcm",         A2, OpX2TbTaC (0xe, 0, 1, 0, 0), {P1, P2, GR0, R3}, EMPTY},
-    {"cmp.lt.or.andcm",         A2, OpX2TbTaC (0xe, 0, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp.le.and.orcm",         A2, OpX2TbTaC (0xe, 0, 1, 0, 0), {P2, P1, GR0, R3}, PSEUDO, 0, NULL},
-    {"cmp.ge.and.orcm",         A2, OpX2TbTaC (0xe, 0, 1, 0, 0), {P2, P1, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp.le.or.andcm",         A2, OpX2TbTaC (0xe, 0, 1, 0, 1), {P1, P2, GR0, R3}, EMPTY},
-    {"cmp.ge.or.andcm",         A2, OpX2TbTaC (0xe, 0, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp.gt.and.orcm",         A2, OpX2TbTaC (0xe, 0, 1, 0, 1), {P2, P1, GR0, R3}, PSEUDO, 0, NULL},
-    {"cmp.lt.and.orcm",         A2, OpX2TbTaC (0xe, 0, 1, 0, 1), {P2, P1, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp.ge.or.andcm",         A2, OpX2TbTaC (0xe, 0, 1, 1, 0), {P1, P2, GR0, R3}, EMPTY},
-    {"cmp.le.or.andcm",         A2, OpX2TbTaC (0xe, 0, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp.lt.and.orcm",         A2, OpX2TbTaC (0xe, 0, 1, 1, 0), {P2, P1, GR0, R3}, PSEUDO, 0, NULL},
-    {"cmp.gt.and.orcm",         A2, OpX2TbTaC (0xe, 0, 1, 1, 0), {P2, P1, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp.lt.or.andcm",         A2, OpX2TbTaC (0xe, 0, 1, 1, 1), {P1, P2, GR0, R3}, EMPTY},
-    {"cmp.gt.or.andcm",         A2, OpX2TbTaC (0xe, 0, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp.ge.and.orcm",         A2, OpX2TbTaC (0xe, 0, 1, 1, 1), {P2, P1, GR0, R3}, PSEUDO, 0, NULL},
-    {"cmp.le.and.orcm",         A2, OpX2TbTaC (0xe, 0, 1, 1, 1), {P2, P1, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp4.gt.or.andcm", A2, OpX2TbTaC (0xe, 1, 1, 0, 0), {P1, P2, GR0, R3}, EMPTY},
-    {"cmp4.lt.or.andcm", A2, OpX2TbTaC (0xe, 1, 1, 0, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp4.le.and.orcm", A2, OpX2TbTaC (0xe, 1, 1, 0, 0), {P2, P1, GR0, R3}, PSEUDO, 0, NULL},
-    {"cmp4.ge.and.orcm", A2, OpX2TbTaC (0xe, 1, 1, 0, 0), {P2, P1, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp4.le.or.andcm", A2, OpX2TbTaC (0xe, 1, 1, 0, 1), {P1, P2, GR0, R3}, EMPTY},
-    {"cmp4.ge.or.andcm", A2, OpX2TbTaC (0xe, 1, 1, 0, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp4.gt.and.orcm", A2, OpX2TbTaC (0xe, 1, 1, 0, 1), {P2, P1, GR0, R3}, PSEUDO, 0, NULL},
-    {"cmp4.lt.and.orcm", A2, OpX2TbTaC (0xe, 1, 1, 0, 1), {P2, P1, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp4.ge.or.andcm", A2, OpX2TbTaC (0xe, 1, 1, 1, 0), {P1, P2, GR0, R3}, EMPTY},
-    {"cmp4.le.or.andcm", A2, OpX2TbTaC (0xe, 1, 1, 1, 0), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp4.lt.and.orcm", A2, OpX2TbTaC (0xe, 1, 1, 1, 0), {P2, P1, GR0, R3}, PSEUDO, 0, NULL},
-    {"cmp4.gt.and.orcm", A2, OpX2TbTaC (0xe, 1, 1, 1, 0), {P2, P1, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp4.lt.or.andcm", A2, OpX2TbTaC (0xe, 1, 1, 1, 1), {P1, P2, GR0, R3}, EMPTY},
-    {"cmp4.gt.or.andcm", A2, OpX2TbTaC (0xe, 1, 1, 1, 1), {P1, P2, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp4.ge.and.orcm", A2, OpX2TbTaC (0xe, 1, 1, 1, 1), {P2, P1, GR0, R3}, PSEUDO, 0, NULL},
-    {"cmp4.le.and.orcm", A2, OpX2TbTaC (0xe, 1, 1, 1, 1), {P2, P1, R3, GR0}, PSEUDO, 0, NULL},
-    {"cmp.eq",          A2, OpX2TaC   (0xe, 2, 0, 0), {P1, P2, IMM8, R3}, EMPTY},
-    {"cmp.ne",          A2, OpX2TaC   (0xe, 2, 0, 0), {P2, P1, IMM8, R3}, EMPTY},
-    {"cmp.eq.unc",      A2, OpX2TaC   (0xe, 2, 0, 1), {P1, P2, IMM8, R3}, EMPTY},
-    {"cmp.ne.unc",      A2, OpX2TaC   (0xe, 2, 0, 1), {P2, P1, IMM8, R3}, EMPTY},
-    {"cmp.eq.or.andcm",         A2, OpX2TaC   (0xe, 2, 1, 0), {P1, P2, IMM8, R3}, EMPTY},
-    {"cmp.ne.and.orcm",         A2, OpX2TaC   (0xe, 2, 1, 0), {P2, P1, IMM8, R3}, PSEUDO, 0, NULL},
-    {"cmp.ne.or.andcm",         A2, OpX2TaC   (0xe, 2, 1, 1), {P1, P2, IMM8, R3}, EMPTY},
-    {"cmp.eq.and.orcm",         A2, OpX2TaC   (0xe, 2, 1, 1), {P2, P1, IMM8, R3}, PSEUDO, 0, NULL},
-    {"cmp4.eq",                 A2, OpX2TaC   (0xe, 3, 0, 0), {P1, P2, IMM8, R3}, EMPTY},
-    {"cmp4.ne",                 A2, OpX2TaC   (0xe, 3, 0, 0), {P2, P1, IMM8, R3}, EMPTY},
-    {"cmp4.eq.unc",     A2, OpX2TaC   (0xe, 3, 0, 1), {P1, P2, IMM8, R3}, EMPTY},
-    {"cmp4.ne.unc",     A2, OpX2TaC   (0xe, 3, 0, 1), {P2, P1, IMM8, R3}, EMPTY},
-    {"cmp4.eq.or.andcm", A2, OpX2TaC   (0xe, 3, 1, 0), {P1, P2, IMM8, R3}, EMPTY},
-    {"cmp4.ne.and.orcm", A2, OpX2TaC   (0xe, 3, 1, 0), {P2, P1, IMM8, R3}, PSEUDO, 0, NULL},
-    {"cmp4.ne.or.andcm", A2, OpX2TaC   (0xe, 3, 1, 1), {P1, P2, IMM8, R3}, EMPTY},
-    {"cmp4.eq.and.orcm", A2, OpX2TaC   (0xe, 3, 1, 1), {P2, P1, IMM8, R3}, PSEUDO, 0, NULL},
-
-    {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL}
-  };
-
-#undef A
-#undef A2
-#undef bC
-#undef bImm14
-#undef bR3a
-#undef bR3b
-#undef bTa
-#undef bTb
-#undef bVe
-#undef bX
-#undef bX2
-#undef bX2a
-#undef bX2b
-#undef bX4
-#undef bZa
-#undef bZb
-#undef mC
-#undef mImm14
-#undef mR3a
-#undef mR3b
-#undef mTa
-#undef mTb
-#undef mVe
-#undef mX
-#undef mX2
-#undef mX2a
-#undef mX2b
-#undef mX4
-#undef mZa
-#undef mZb
-#undef OpR3a
-#undef OpR3b
-#undef OpX2aVe
-#undef OpX2aVeImm14
-#undef OpX2aVeX4
-#undef OpX2aVeX4X2b
-#undef OpX2TbTaC
-#undef OpX2TaC
-#undef OpX2aZaZbX4
-#undef OpX2aZaZbX4X2b
-#undef EMPTY
diff --git a/tools/debugger/xenitp/ia64-opc-b.c b/tools/debugger/xenitp/ia64-opc-b.c
deleted file mode 100644 (file)
index dbc74e1..0000000
+++ /dev/null
@@ -1,512 +0,0 @@
-/* ia64-opc-b.c -- IA-64 `B' opcode table.
-   Copyright 1998, 1999, 2000, 2002, 2005, 2006
-   Free Software Foundation, Inc.
-   Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
-
-   This file is part of GDB, GAS, and the GNU binutils.
-
-   GDB, GAS, and the GNU binutils are free software; you can redistribute
-   them and/or modify them under the terms of the GNU General Public
-   License as published by the Free Software Foundation; either version
-   2, or (at your option) any later version.
-
-   GDB, GAS, and the GNU binutils are distributed in the hope that they
-   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 file; see the file COPYING.  If not, write to the
-   Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
-   02110-1301, USA.  */
-
-#include "ia64-opc.h"
-
-#define B0     IA64_TYPE_B, 0
-#define B      IA64_TYPE_B, 1
-
-/* instruction bit fields: */
-#define bBtype(x)      (((ia64_insn) ((x) & 0x7)) << 6)
-#define bD(x)          (((ia64_insn) ((x) & 0x1)) << 35)
-#define bIh(x)         (((ia64_insn) ((x) & 0x1)) << 35)
-#define bPa(x)         (((ia64_insn) ((x) & 0x1)) << 12)
-#define bPr(x)         (((ia64_insn) ((x) & 0x3f)) << 0)
-#define bWha(x)                (((ia64_insn) ((x) & 0x3)) << 33)
-#define bWhb(x)                (((ia64_insn) ((x) & 0x3)) << 3)
-#define bWhc(x)                (((ia64_insn) ((x) & 0x7)) << 32)
-#define bX6(x)         (((ia64_insn) ((x) & 0x3f)) << 27)
-
-#define mBtype         bBtype (-1)
-#define mD             bD (-1)
-#define mIh            bIh (-1)
-#define mPa            bPa (-1)
-#define mPr            bPr (-1)
-#define mWha           bWha (-1)
-#define mWhb           bWhb (-1)
-#define mWhc           bWhc (-1)
-#define mX6            bX6 (-1)
-
-#define OpX6(a,b)      (bOp (a) | bX6 (b)), (mOp | mX6)
-#define OpPaWhaD(a,b,c,d) \
-       (bOp (a) | bPa (b) | bWha (c) | bD (d)), (mOp | mPa | mWha | mD)
-#define OpPaWhcD(a,b,c,d) \
-       (bOp (a) | bPa (b) | bWhc (c) | bD (d)), (mOp | mPa | mWhc | mD)
-#define OpBtypePaWhaD(a,b,c,d,e) \
-       (bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e)), \
-       (mOp | mBtype | mPa | mWha | mD)
-#define OpBtypePaWhaDPr(a,b,c,d,e,f) \
-       (bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e) | bPr (f)), \
-       (mOp | mBtype | mPa | mWha | mD | mPr)
-#define OpX6BtypePaWhaD(a,b,c,d,e,f) \
-       (bOp (a) | bX6 (b) | bBtype (c) | bPa (d) | bWha (e) | bD (f)), \
-       (mOp | mX6 | mBtype | mPa | mWha | mD)
-#define OpX6BtypePaWhaDPr(a,b,c,d,e,f,g) \
-   (bOp (a) | bX6 (b) | bBtype (c) | bPa (d) | bWha (e) | bD (f) | bPr (g)), \
-       (mOp | mX6 | mBtype | mPa | mWha | mD | mPr)
-#define OpIhWhb(a,b,c) \
-       (bOp (a) | bIh (b) | bWhb (c)), \
-       (mOp | mIh | mWhb)
-#define OpX6IhWhb(a,b,c,d) \
-       (bOp (a) | bX6 (b) | bIh (c) | bWhb (d)), \
-       (mOp | mX6 | mIh | mWhb)
-
-/* Used to initialise unused fields in ia64_opcode struct,
-   in order to stop gcc from complaining.  */
-#define EMPTY 0,0,NULL
-
-struct ia64_opcode ia64_opcodes_b[] =
-  {
-    /* B-type instruction encodings (sorted according to major opcode) */
-
-#define BR(a,b) \
-      B0, OpX6BtypePaWhaDPr (0, 0x20, 0, a, 0, b, 0), {B2}, PSEUDO, 0, NULL
-    {"br.few",         BR (0, 0)},
-    {"br",             BR (0, 0)},
-    {"br.few.clr",     BR (0, 1)},
-    {"br.clr",         BR (0, 1)},
-    {"br.many",                BR (1, 0)},
-    {"br.many.clr",    BR (1, 1)},
-#undef BR
-
-#define BR(a,b,c,d,e)  B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2}, EMPTY
-#define BRP(a,b,c,d,e) B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2}, PSEUDO, 0, NULL
-#define BRT(a,b,c,d,e,f) B0, OpX6BtypePaWhaD (0, a, b, c, d, e), {B2}, f, 0, NULL
-    {"br.cond.sptk.few",       BR (0x20, 0, 0, 0, 0)},
-    {"br.cond.sptk",           BRP (0x20, 0, 0, 0, 0)},
-    {"br.cond.sptk.few.clr",   BR (0x20, 0, 0, 0, 1)},
-    {"br.cond.sptk.clr",       BRP (0x20, 0, 0, 0, 1)},
-    {"br.cond.spnt.few",       BR (0x20, 0, 0, 1, 0)},
-    {"br.cond.spnt",           BRP (0x20, 0, 0, 1, 0)},
-    {"br.cond.spnt.few.clr",   BR (0x20, 0, 0, 1, 1)},
-    {"br.cond.spnt.clr",       BRP (0x20, 0, 0, 1, 1)},
-    {"br.cond.dptk.few",       BR (0x20, 0, 0, 2, 0)},
-    {"br.cond.dptk",           BRP (0x20, 0, 0, 2, 0)},
-    {"br.cond.dptk.few.clr",   BR (0x20, 0, 0, 2, 1)},
-    {"br.cond.dptk.clr",       BRP (0x20, 0, 0, 2, 1)},
-    {"br.cond.dpnt.few",       BR (0x20, 0, 0, 3, 0)},
-    {"br.cond.dpnt",           BRP (0x20, 0, 0, 3, 0)},
-    {"br.cond.dpnt.few.clr",   BR (0x20, 0, 0, 3, 1)},
-    {"br.cond.dpnt.clr",       BRP (0x20, 0, 0, 3, 1)},
-    {"br.cond.sptk.many",      BR (0x20, 0, 1, 0, 0)},
-    {"br.cond.sptk.many.clr",  BR (0x20, 0, 1, 0, 1)},
-    {"br.cond.spnt.many",      BR (0x20, 0, 1, 1, 0)},
-    {"br.cond.spnt.many.clr",  BR (0x20, 0, 1, 1, 1)},
-    {"br.cond.dptk.many",      BR (0x20, 0, 1, 2, 0)},
-    {"br.cond.dptk.many.clr",  BR (0x20, 0, 1, 2, 1)},
-    {"br.cond.dpnt.many",      BR (0x20, 0, 1, 3, 0)},
-    {"br.cond.dpnt.many.clr",  BR (0x20, 0, 1, 3, 1)},
-    {"br.sptk.few",            BR (0x20, 0, 0, 0, 0)},
-    {"br.sptk",                        BRP (0x20, 0, 0, 0, 0)},
-    {"br.sptk.few.clr",                BR (0x20, 0, 0, 0, 1)},
-    {"br.sptk.clr",            BRP (0x20, 0, 0, 0, 1)},
-    {"br.spnt.few",            BR (0x20, 0, 0, 1, 0)},
-    {"br.spnt",                        BRP (0x20, 0, 0, 1, 0)},
-    {"br.spnt.few.clr",                BR (0x20, 0, 0, 1, 1)},
-    {"br.spnt.clr",            BRP (0x20, 0, 0, 1, 1)},
-    {"br.dptk.few",            BR (0x20, 0, 0, 2, 0)},
-    {"br.dptk",                        BRP (0x20, 0, 0, 2, 0)},
-    {"br.dptk.few.clr",                BR (0x20, 0, 0, 2, 1)},
-    {"br.dptk.clr",            BRP (0x20, 0, 0, 2, 1)},
-    {"br.dpnt.few",            BR (0x20, 0, 0, 3, 0)},
-    {"br.dpnt",                        BRP (0x20, 0, 0, 3, 0)},
-    {"br.dpnt.few.clr",                BR (0x20, 0, 0, 3, 1)},
-    {"br.dpnt.clr",            BRP (0x20, 0, 0, 3, 1)},
-    {"br.sptk.many",           BR (0x20, 0, 1, 0, 0)},
-    {"br.sptk.many.clr",       BR (0x20, 0, 1, 0, 1)},
-    {"br.spnt.many",           BR (0x20, 0, 1, 1, 0)},
-    {"br.spnt.many.clr",       BR (0x20, 0, 1, 1, 1)},
-    {"br.dptk.many",           BR (0x20, 0, 1, 2, 0)},
-    {"br.dptk.many.clr",       BR (0x20, 0, 1, 2, 1)},
-    {"br.dpnt.many",           BR (0x20, 0, 1, 3, 0)},
-    {"br.dpnt.many.clr",       BR (0x20, 0, 1, 3, 1)},
-    {"br.ia.sptk.few",         BR (0x20, 1, 0, 0, 0)},
-    {"br.ia.sptk",             BRP (0x20, 1, 0, 0, 0)},
-    {"br.ia.sptk.few.clr",     BR (0x20, 1, 0, 0, 1)},
-    {"br.ia.sptk.clr",         BRP (0x20, 1, 0, 0, 1)},
-    {"br.ia.spnt.few",         BR (0x20, 1, 0, 1, 0)},
-    {"br.ia.spnt",             BRP (0x20, 1, 0, 1, 0)},
-    {"br.ia.spnt.few.clr",     BR (0x20, 1, 0, 1, 1)},
-    {"br.ia.spnt.clr",         BRP (0x20, 1, 0, 1, 1)},
-    {"br.ia.dptk.few",         BR (0x20, 1, 0, 2, 0)},
-    {"br.ia.dptk",             BRP (0x20, 1, 0, 2, 0)},
-    {"br.ia.dptk.few.clr",     BR (0x20, 1, 0, 2, 1)},
-    {"br.ia.dptk.clr",         BRP (0x20, 1, 0, 2, 1)},
-    {"br.ia.dpnt.few",         BR (0x20, 1, 0, 3, 0)},
-    {"br.ia.dpnt",             BRP (0x20, 1, 0, 3, 0)},
-    {"br.ia.dpnt.few.clr",     BR (0x20, 1, 0, 3, 1)},
-    {"br.ia.dpnt.clr",         BRP (0x20, 1, 0, 3, 1)},
-    {"br.ia.sptk.many",                BR (0x20, 1, 1, 0, 0)},
-    {"br.ia.sptk.many.clr",    BR (0x20, 1, 1, 0, 1)},
-    {"br.ia.spnt.many",                BR (0x20, 1, 1, 1, 0)},
-    {"br.ia.spnt.many.clr",    BR (0x20, 1, 1, 1, 1)},
-    {"br.ia.dptk.many",                BR (0x20, 1, 1, 2, 0)},
-    {"br.ia.dptk.many.clr",    BR (0x20, 1, 1, 2, 1)},
-    {"br.ia.dpnt.many",                BR (0x20, 1, 1, 3, 0)},
-    {"br.ia.dpnt.many.clr",    BR (0x20, 1, 1, 3, 1)},
-    {"br.ret.sptk.few",                BRT (0x21, 4, 0, 0, 0, MOD_RRBS)},
-    {"br.ret.sptk",            BRT (0x21, 4, 0, 0, 0, PSEUDO | MOD_RRBS)},
-    {"br.ret.sptk.few.clr",    BRT (0x21, 4, 0, 0, 1, MOD_RRBS)},
-    {"br.ret.sptk.clr",                BRT (0x21, 4, 0, 0, 1, PSEUDO | MOD_RRBS)},
-    {"br.ret.spnt.few",                BRT (0x21, 4, 0, 1, 0, MOD_RRBS)},
-    {"br.ret.spnt",            BRT (0x21, 4, 0, 1, 0, PSEUDO | MOD_RRBS)},
-    {"br.ret.spnt.few.clr",    BRT (0x21, 4, 0, 1, 1, MOD_RRBS)},
-    {"br.ret.spnt.clr",                BRT (0x21, 4, 0, 1, 1, PSEUDO | MOD_RRBS)},
-    {"br.ret.dptk.few",                BRT (0x21, 4, 0, 2, 0, MOD_RRBS)},
-    {"br.ret.dptk",            BRT (0x21, 4, 0, 2, 0, PSEUDO | MOD_RRBS)},
-    {"br.ret.dptk.few.clr",    BRT (0x21, 4, 0, 2, 1, MOD_RRBS)},
-    {"br.ret.dptk.clr",                BRT (0x21, 4, 0, 2, 1, PSEUDO | MOD_RRBS)},
-    {"br.ret.dpnt.few",                BRT (0x21, 4, 0, 3, 0, MOD_RRBS)},
-    {"br.ret.dpnt",            BRT (0x21, 4, 0, 3, 0, PSEUDO | MOD_RRBS)},
-    {"br.ret.dpnt.few.clr",    BRT (0x21, 4, 0, 3, 1, MOD_RRBS)},
-    {"br.ret.dpnt.clr",                BRT (0x21, 4, 0, 3, 1, PSEUDO | MOD_RRBS)},
-    {"br.ret.sptk.many",       BRT (0x21, 4, 1, 0, 0, MOD_RRBS)},
-    {"br.ret.sptk.many.clr",   BRT (0x21, 4, 1, 0, 1, MOD_RRBS)},
-    {"br.ret.spnt.many",       BRT (0x21, 4, 1, 1, 0, MOD_RRBS)},
-    {"br.ret.spnt.many.clr",   BRT (0x21, 4, 1, 1, 1, MOD_RRBS)},
-    {"br.ret.dptk.many",       BRT (0x21, 4, 1, 2, 0, MOD_RRBS)},
-    {"br.ret.dptk.many.clr",   BRT (0x21, 4, 1, 2, 1, MOD_RRBS)},
-    {"br.ret.dpnt.many",       BRT (0x21, 4, 1, 3, 0, MOD_RRBS)},
-    {"br.ret.dpnt.many.clr",   BRT (0x21, 4, 1, 3, 1, MOD_RRBS)},
-#undef BR
-#undef BRP
-#undef BRT
-
-    {"cover",          B0, OpX6 (0, 0x02), {0, }, NO_PRED | LAST | MOD_RRBS, 0, NULL},
-    {"clrrrb",         B0, OpX6 (0, 0x04), {0, }, NO_PRED | LAST | MOD_RRBS, 0, NULL},
-    {"clrrrb.pr",      B0, OpX6 (0, 0x05), {0, }, NO_PRED | LAST | MOD_RRBS, 0, NULL},
-    {"rfi",            B0, OpX6 (0, 0x08), {0, }, NO_PRED | LAST | PRIV | MOD_RRBS, 0, NULL},
-    {"bsw.0",          B0, OpX6 (0, 0x0c), {0, }, NO_PRED | LAST | PRIV, 0, NULL},
-    {"bsw.1",          B0, OpX6 (0, 0x0d), {0, }, NO_PRED | LAST | PRIV, 0, NULL},
-    {"epc",            B0, OpX6 (0, 0x10), {0, }, NO_PRED, 0, NULL},
-    {"vmsw.0",         B0, OpX6 (0, 0x18), {0, }, NO_PRED | PRIV, 0, NULL},
-    {"vmsw.1",         B0, OpX6 (0, 0x19), {0, }, NO_PRED | PRIV, 0, NULL},
-
-    {"break.b",                B0, OpX6 (0, 0x00), {IMMU21}, EMPTY},
-
-    {"br.call.sptk.few",       B, OpPaWhcD (1, 0, 1, 0), {B1, B2}, EMPTY},
-    {"br.call.sptk",           B, OpPaWhcD (1, 0, 1, 0), {B1, B2}, PSEUDO, 0, NULL},
-    {"br.call.sptk.few.clr",   B, OpPaWhcD (1, 0, 1, 1), {B1, B2}, EMPTY},
-    {"br.call.sptk.clr",       B, OpPaWhcD (1, 0, 1, 1), {B1, B2}, PSEUDO, 0, NULL},
-    {"br.call.spnt.few",       B, OpPaWhcD (1, 0, 3, 0), {B1, B2}, EMPTY},
-    {"br.call.spnt",           B, OpPaWhcD (1, 0, 3, 0), {B1, B2}, PSEUDO, 0, NULL},
-    {"br.call.spnt.few.clr",   B, OpPaWhcD (1, 0, 3, 1), {B1, B2}, EMPTY},
-    {"br.call.spnt.clr",       B, OpPaWhcD (1, 0, 3, 1), {B1, B2}, PSEUDO, 0, NULL},
-    {"br.call.dptk.few",       B, OpPaWhcD (1, 0, 5, 0), {B1, B2}, EMPTY},
-    {"br.call.dptk",           B, OpPaWhcD (1, 0, 5, 0), {B1, B2}, PSEUDO, 0, NULL},
-    {"br.call.dptk.few.clr",   B, OpPaWhcD (1, 0, 5, 1), {B1, B2}, EMPTY},
-    {"br.call.dptk.clr",       B, OpPaWhcD (1, 0, 5, 1), {B1, B2}, PSEUDO, 0, NULL},
-    {"br.call.dpnt.few",       B, OpPaWhcD (1, 0, 7, 0), {B1, B2}, EMPTY},
-    {"br.call.dpnt",           B, OpPaWhcD (1, 0, 7, 0), {B1, B2}, PSEUDO, 0, NULL},
-    {"br.call.dpnt.few.clr",   B, OpPaWhcD (1, 0, 7, 1), {B1, B2}, EMPTY},
-    {"br.call.dpnt.clr",       B, OpPaWhcD (1, 0, 7, 1), {B1, B2}, PSEUDO, 0, NULL},
-    {"br.call.sptk.many",      B, OpPaWhcD (1, 1, 1, 0), {B1, B2}, EMPTY},
-    {"br.call.sptk.many.clr",  B, OpPaWhcD (1, 1, 1, 1), {B1, B2}, EMPTY},
-    {"br.call.spnt.many",      B, OpPaWhcD (1, 1, 3, 0), {B1, B2}, EMPTY},
-    {"br.call.spnt.many.clr",  B, OpPaWhcD (1, 1, 3, 1), {B1, B2}, EMPTY},
-    {"br.call.dptk.many",      B, OpPaWhcD (1, 1, 5, 0), {B1, B2}, EMPTY},
-    {"br.call.dptk.many.clr",  B, OpPaWhcD (1, 1, 5, 1), {B1, B2}, EMPTY},
-    {"br.call.dpnt.many",      B, OpPaWhcD (1, 1, 7, 0), {B1, B2}, EMPTY},
-    {"br.call.dpnt.many.clr",  B, OpPaWhcD (1, 1, 7, 1), {B1, B2}, EMPTY},
-
-#define BRP(a,b,c) \
-      B0, OpX6IhWhb (2, a, b, c), {B2, TAG13}, NO_PRED, 0, NULL
-    {"brp.sptk",               BRP (0x10, 0, 0)},
-    {"brp.dptk",               BRP (0x10, 0, 2)},
-    {"brp.sptk.imp",           BRP (0x10, 1, 0)},
-    {"brp.dptk.imp",           BRP (0x10, 1, 2)},
-    {"brp.ret.sptk",           BRP (0x11, 0, 0)},
-    {"brp.ret.dptk",           BRP (0x11, 0, 2)},
-    {"brp.ret.sptk.imp",       BRP (0x11, 1, 0)},
-    {"brp.ret.dptk.imp",       BRP (0x11, 1, 2)},
-#undef BRP
-
-    {"nop.b",          B0, OpX6 (2, 0x00), {IMMU21}, EMPTY},
-    {"hint.b",         B0, OpX6 (2, 0x01), {IMMU21}, EMPTY},
-
-#define BR(a,b) \
-      B0, OpBtypePaWhaDPr (4, 0, a, 0, b, 0), {TGT25c}, PSEUDO, 0, NULL
-    {"br.few",         BR (0, 0)},
-    {"br",             BR (0, 0)},
-    {"br.few.clr",     BR (0, 1)},
-    {"br.clr",         BR (0, 1)},
-    {"br.many",                BR (1, 0)},
-    {"br.many.clr",    BR (1, 1)},
-#undef BR
-
-#define BR(a,b,c) \
-      B0, OpBtypePaWhaD (4, 0, a, b, c), {TGT25c}, EMPTY
-#define BRP(a,b,c) \
-      B0, OpBtypePaWhaD (4, 0, a, b, c), {TGT25c}, PSEUDO, 0, NULL
-    {"br.cond.sptk.few",       BR (0, 0, 0)},
-    {"br.cond.sptk",           BRP (0, 0, 0)},
-    {"br.cond.sptk.few.clr",   BR (0, 0, 1)},
-    {"br.cond.sptk.clr",       BRP (0, 0, 1)},
-    {"br.cond.spnt.few",       BR (0, 1, 0)},
-    {"br.cond.spnt",           BRP (0, 1, 0)},
-    {"br.cond.spnt.few.clr",   BR (0, 1, 1)},
-    {"br.cond.spnt.clr",       BRP (0, 1, 1)},
-    {"br.cond.dptk.few",       BR (0, 2, 0)},
-    {"br.cond.dptk",           BRP (0, 2, 0)},
-    {"br.cond.dptk.few.clr",   BR (0, 2, 1)},
-    {"br.cond.dptk.clr",       BRP (0, 2, 1)},
-    {"br.cond.dpnt.few",       BR (0, 3, 0)},
-    {"br.cond.dpnt",           BRP (0, 3, 0)},
-    {"br.cond.dpnt.few.clr",   BR (0, 3, 1)},
-    {"br.cond.dpnt.clr",       BRP (0, 3, 1)},
-    {"br.cond.sptk.many",      BR (1, 0, 0)},
-    {"br.cond.sptk.many.clr",  BR (1, 0, 1)},
-    {"br.cond.spnt.many",      BR (1, 1, 0)},
-    {"br.cond.spnt.many.clr",  BR (1, 1, 1)},
-    {"br.cond.dptk.many",      BR (1, 2, 0)},
-    {"br.cond.dptk.many.clr",  BR (1, 2, 1)},
-    {"br.cond.dpnt.many",      BR (1, 3, 0)},
-    {"br.cond.dpnt.many.clr",  BR (1, 3, 1)},
-    {"br.sptk.few",            BR (0, 0, 0)},
-    {"br.sptk",                        BRP (0, 0, 0)},
-    {"br.sptk.few.clr",                BR (0, 0, 1)},
-    {"br.sptk.clr",            BRP (0, 0, 1)},
-    {"br.spnt.few",            BR (0, 1, 0)},
-    {"br.spnt",                        BRP (0, 1, 0)},
-    {"br.spnt.few.clr",                BR (0, 1, 1)},
-    {"br.spnt.clr",            BRP (0, 1, 1)},
-    {"br.dptk.few",            BR (0, 2, 0)},
-    {"br.dptk",                        BRP (0, 2, 0)},
-    {"br.dptk.few.clr",                BR (0, 2, 1)},
-    {"br.dptk.clr",            BRP (0, 2, 1)},
-    {"br.dpnt.few",            BR (0, 3, 0)},
-    {"br.dpnt",                        BRP (0, 3, 0)},
-    {"br.dpnt.few.clr",                BR (0, 3, 1)},
-    {"br.dpnt.clr",            BRP (0, 3, 1)},
-    {"br.sptk.many",           BR (1, 0, 0)},
-    {"br.sptk.many.clr",       BR (1, 0, 1)},
-    {"br.spnt.many",           BR (1, 1, 0)},
-    {"br.spnt.many.clr",       BR (1, 1, 1)},
-    {"br.dptk.many",           BR (1, 2, 0)},
-    {"br.dptk.many.clr",       BR (1, 2, 1)},
-    {"br.dpnt.many",           BR (1, 3, 0)},
-    {"br.dpnt.many.clr",       BR (1, 3, 1)},
-#undef BR
-#undef BRP
-
-#define BR(a,b,c,d, e) \
-       B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | e, 0, NULL
-    {"br.wexit.sptk.few",      BR (2, 0, 0, 0, MOD_RRBS)},
-    {"br.wexit.sptk",          BR (2, 0, 0, 0, PSEUDO | MOD_RRBS)},
-    {"br.wexit.sptk.few.clr",  BR (2, 0, 0, 1, MOD_RRBS)},
-    {"br.wexit.sptk.clr",      BR (2, 0, 0, 1, PSEUDO | MOD_RRBS)},
-    {"br.wexit.spnt.few",      BR (2, 0, 1, 0, MOD_RRBS)},
-    {"br.wexit.spnt",          BR (2, 0, 1, 0, PSEUDO | MOD_RRBS)},
-    {"br.wexit.spnt.few.clr",  BR (2, 0, 1, 1, MOD_RRBS)},
-    {"br.wexit.spnt.clr",      BR (2, 0, 1, 1, PSEUDO | MOD_RRBS)},
-    {"br.wexit.dptk.few",      BR (2, 0, 2, 0, MOD_RRBS)},
-    {"br.wexit.dptk",          BR (2, 0, 2, 0, PSEUDO | MOD_RRBS)},
-    {"br.wexit.dptk.few.clr",  BR (2, 0, 2, 1, MOD_RRBS)},
-    {"br.wexit.dptk.clr",      BR (2, 0, 2, 1, PSEUDO | MOD_RRBS)},
-    {"br.wexit.dpnt.few",      BR (2, 0, 3, 0, MOD_RRBS)},
-    {"br.wexit.dpnt",          BR (2, 0, 3, 0, PSEUDO | MOD_RRBS)},
-    {"br.wexit.dpnt.few.clr",  BR (2, 0, 3, 1, MOD_RRBS)},
-    {"br.wexit.dpnt.clr",      BR (2, 0, 3, 1, PSEUDO | MOD_RRBS)},
-    {"br.wexit.sptk.many",     BR (2, 1, 0, 0, MOD_RRBS)},
-    {"br.wexit.sptk.many.clr", BR (2, 1, 0, 1, MOD_RRBS)},
-    {"br.wexit.spnt.many",     BR (2, 1, 1, 0, MOD_RRBS)},
-    {"br.wexit.spnt.many.clr", BR (2, 1, 1, 1, MOD_RRBS)},
-    {"br.wexit.dptk.many",     BR (2, 1, 2, 0, MOD_RRBS)},
-    {"br.wexit.dptk.many.clr", BR (2, 1, 2, 1, MOD_RRBS)},
-    {"br.wexit.dpnt.many",     BR (2, 1, 3, 0, MOD_RRBS)},
-    {"br.wexit.dpnt.many.clr", BR (2, 1, 3, 1, MOD_RRBS)},
-    {"br.wtop.sptk.few",       BR (3, 0, 0, 0, MOD_RRBS)},
-    {"br.wtop.sptk",           BR (3, 0, 0, 0, PSEUDO | MOD_RRBS)},
-    {"br.wtop.sptk.few.clr",   BR (3, 0, 0, 1, MOD_RRBS)},
-    {"br.wtop.sptk.clr",       BR (3, 0, 0, 1, PSEUDO | MOD_RRBS)},
-    {"br.wtop.spnt.few",       BR (3, 0, 1, 0, MOD_RRBS)},
-    {"br.wtop.spnt",           BR (3, 0, 1, 0, PSEUDO | MOD_RRBS)},
-    {"br.wtop.spnt.few.clr",   BR (3, 0, 1, 1, MOD_RRBS)},
-    {"br.wtop.spnt.clr",       BR (3, 0, 1, 1, PSEUDO | MOD_RRBS)},
-    {"br.wtop.dptk.few",       BR (3, 0, 2, 0, MOD_RRBS)},
-    {"br.wtop.dptk",           BR (3, 0, 2, 0, PSEUDO | MOD_RRBS)},
-    {"br.wtop.dptk.few.clr",   BR (3, 0, 2, 1, MOD_RRBS)},
-    {"br.wtop.dptk.clr",       BR (3, 0, 2, 1, PSEUDO | MOD_RRBS)},
-    {"br.wtop.dpnt.few",       BR (3, 0, 3, 0, MOD_RRBS)},
-    {"br.wtop.dpnt",           BR (3, 0, 3, 0, PSEUDO | MOD_RRBS)},
-    {"br.wtop.dpnt.few.clr",   BR (3, 0, 3, 1, MOD_RRBS)},
-    {"br.wtop.dpnt.clr",       BR (3, 0, 3, 1, PSEUDO | MOD_RRBS)},
-    {"br.wtop.sptk.many",      BR (3, 1, 0, 0, MOD_RRBS)},
-    {"br.wtop.sptk.many.clr",  BR (3, 1, 0, 1, MOD_RRBS)},
-    {"br.wtop.spnt.many",      BR (3, 1, 1, 0, MOD_RRBS)},
-    {"br.wtop.spnt.many.clr",  BR (3, 1, 1, 1, MOD_RRBS)},
-    {"br.wtop.dptk.many",      BR (3, 1, 2, 0, MOD_RRBS)},
-    {"br.wtop.dptk.many.clr",  BR (3, 1, 2, 1, MOD_RRBS)},
-    {"br.wtop.dpnt.many",      BR (3, 1, 3, 0, MOD_RRBS)},
-    {"br.wtop.dpnt.many.clr",  BR (3, 1, 3, 1, MOD_RRBS)},
-
-#undef BR
-#define BR(a,b,c,d) \
-       B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | NO_PRED, 0, NULL
-#define BRT(a,b,c,d,e) \
-       B0, OpBtypePaWhaD (4, a, b, c, d), {TGT25c}, SLOT2 | NO_PRED | e, 0, NULL
-    {"br.cloop.sptk.few",      BR (5, 0, 0, 0)},
-    {"br.cloop.sptk",          BRT (5, 0, 0, 0, PSEUDO)},
-    {"br.cloop.sptk.few.clr",  BR (5, 0, 0, 1)},
-    {"br.cloop.sptk.clr",      BRT (5, 0, 0, 1, PSEUDO)},
-    {"br.cloop.spnt.few",      BR (5, 0, 1, 0)},
-    {"br.cloop.spnt",          BRT (5, 0, 1, 0, PSEUDO)},
-    {"br.cloop.spnt.few.clr",  BR (5, 0, 1, 1)},
-    {"br.cloop.spnt.clr",      BRT (5, 0, 1, 1, PSEUDO)},
-    {"br.cloop.dptk.few",      BR (5, 0, 2, 0)},
-    {"br.cloop.dptk",          BRT (5, 0, 2, 0, PSEUDO)},
-    {"br.cloop.dptk.few.clr",  BR (5, 0, 2, 1)},
-    {"br.cloop.dptk.clr",      BRT (5, 0, 2, 1, PSEUDO)},
-    {"br.cloop.dpnt.few",      BR (5, 0, 3, 0)},
-    {"br.cloop.dpnt",          BRT (5, 0, 3, 0, PSEUDO)},
-    {"br.cloop.dpnt.few.clr",  BR (5, 0, 3, 1)},
-    {"br.cloop.dpnt.clr",      BRT (5, 0, 3, 1, PSEUDO)},
-    {"br.cloop.sptk.many",     BR (5, 1, 0, 0)},
-    {"br.cloop.sptk.many.clr", BR (5, 1, 0, 1)},
-    {"br.cloop.spnt.many",     BR (5, 1, 1, 0)},
-    {"br.cloop.spnt.many.clr", BR (5, 1, 1, 1)},
-    {"br.cloop.dptk.many",     BR (5, 1, 2, 0)},
-    {"br.cloop.dptk.many.clr", BR (5, 1, 2, 1)},
-    {"br.cloop.dpnt.many",     BR (5, 1, 3, 0)},
-    {"br.cloop.dpnt.many.clr", BR (5, 1, 3, 1)},
-    {"br.cexit.sptk.few",      BRT (6, 0, 0, 0, MOD_RRBS)},
-    {"br.cexit.sptk",          BRT (6, 0, 0, 0, PSEUDO | MOD_RRBS)},
-    {"br.cexit.sptk.few.clr",  BRT (6, 0, 0, 1, MOD_RRBS)},
-    {"br.cexit.sptk.clr",      BRT (6, 0, 0, 1, PSEUDO | MOD_RRBS)},
-    {"br.cexit.spnt.few",      BRT (6, 0, 1, 0, MOD_RRBS)},
-    {"br.cexit.spnt",          BRT (6, 0, 1, 0, PSEUDO | MOD_RRBS)},
-    {"br.cexit.spnt.few.clr",  BRT (6, 0, 1, 1, MOD_RRBS)},
-    {"br.cexit.spnt.clr",      BRT (6, 0, 1, 1, PSEUDO | MOD_RRBS)},
-    {"br.cexit.dptk.few",      BRT (6, 0, 2, 0, MOD_RRBS)},
-    {"br.cexit.dptk",          BRT (6, 0, 2, 0, PSEUDO | MOD_RRBS)},
-    {"br.cexit.dptk.few.clr",  BRT (6, 0, 2, 1, MOD_RRBS)},
-    {"br.cexit.dptk.clr",      BRT (6, 0, 2, 1, PSEUDO | MOD_RRBS)},
-    {"br.cexit.dpnt.few",      BRT (6, 0, 3, 0, MOD_RRBS)},
-    {"br.cexit.dpnt",          BRT (6, 0, 3, 0, PSEUDO | MOD_RRBS)},
-    {"br.cexit.dpnt.few.clr",  BRT (6, 0, 3, 1, MOD_RRBS)},
-    {"br.cexit.dpnt.clr",      BRT (6, 0, 3, 1, PSEUDO | MOD_RRBS)},
-    {"br.cexit.sptk.many",     BRT (6, 1, 0, 0, MOD_RRBS)},
-    {"br.cexit.sptk.many.clr", BRT (6, 1, 0, 1, MOD_RRBS)},
-    {"br.cexit.spnt.many",     BRT (6, 1, 1, 0, MOD_RRBS)},
-    {"br.cexit.spnt.many.clr", BRT (6, 1, 1, 1, MOD_RRBS)},
-    {"br.cexit.dptk.many",     BRT (6, 1, 2, 0, MOD_RRBS)},
-    {"br.cexit.dptk.many.clr", BRT (6, 1, 2, 1, MOD_RRBS)},
-    {"br.cexit.dpnt.many",     BRT (6, 1, 3, 0, MOD_RRBS)},
-    {"br.cexit.dpnt.many.clr", BRT (6, 1, 3, 1, MOD_RRBS)},
-    {"br.ctop.sptk.few",       BRT (7, 0, 0, 0, MOD_RRBS)},
-    {"br.ctop.sptk",           BRT (7, 0, 0, 0, PSEUDO | MOD_RRBS)},
-    {"br.ctop.sptk.few.clr",   BRT (7, 0, 0, 1, MOD_RRBS)},
-    {"br.ctop.sptk.clr",       BRT (7, 0, 0, 1, PSEUDO | MOD_RRBS)},
-    {"br.ctop.spnt.few",       BRT (7, 0, 1, 0, MOD_RRBS)},
-    {"br.ctop.spnt",           BRT (7, 0, 1, 0, PSEUDO | MOD_RRBS)},
-    {"br.ctop.spnt.few.clr",   BRT (7, 0, 1, 1, MOD_RRBS)},
-    {"br.ctop.spnt.clr",       BRT (7, 0, 1, 1, PSEUDO | MOD_RRBS)},
-    {"br.ctop.dptk.few",       BRT (7, 0, 2, 0, MOD_RRBS)},
-    {"br.ctop.dptk",           BRT (7, 0, 2, 0, PSEUDO | MOD_RRBS)},
-    {"br.ctop.dptk.few.clr",   BRT (7, 0, 2, 1, MOD_RRBS)},
-    {"br.ctop.dptk.clr",       BRT (7, 0, 2, 1, PSEUDO | MOD_RRBS)},
-    {"br.ctop.dpnt.few",       BRT (7, 0, 3, 0, MOD_RRBS)},
-    {"br.ctop.dpnt",           BRT (7, 0, 3, 0, PSEUDO | MOD_RRBS)},
-    {"br.ctop.dpnt.few.clr",   BRT (7, 0, 3, 1, MOD_RRBS)},
-    {"br.ctop.dpnt.clr",       BRT (7, 0, 3, 1, PSEUDO | MOD_RRBS)},
-    {"br.ctop.sptk.many",      BRT (7, 1, 0, 0, MOD_RRBS)},
-    {"br.ctop.sptk.many.clr",  BRT (7, 1, 0, 1, MOD_RRBS)},
-    {"br.ctop.spnt.many",      BRT (7, 1, 1, 0, MOD_RRBS)},
-    {"br.ctop.spnt.many.clr",  BRT (7, 1, 1, 1, MOD_RRBS)},
-    {"br.ctop.dptk.many",      BRT (7, 1, 2, 0, MOD_RRBS)},
-    {"br.ctop.dptk.many.clr",  BRT (7, 1, 2, 1, MOD_RRBS)},
-    {"br.ctop.dpnt.many",      BRT (7, 1, 3, 0, MOD_RRBS)},
-    {"br.ctop.dpnt.many.clr",  BRT (7, 1, 3, 1, MOD_RRBS)},
-#undef BR
-#undef BRT
-
-    {"br.call.sptk.few",       B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}, EMPTY},
-    {"br.call.sptk",           B, OpPaWhaD (5, 0, 0, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
-    {"br.call.sptk.few.clr",   B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}, EMPTY},
-    {"br.call.sptk.clr",       B, OpPaWhaD (5, 0, 0, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
-    {"br.call.spnt.few",       B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}, EMPTY},
-    {"br.call.spnt",           B, OpPaWhaD (5, 0, 1, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
-    {"br.call.spnt.few.clr",   B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}, EMPTY},
-    {"br.call.spnt.clr",       B, OpPaWhaD (5, 0, 1, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
-    {"br.call.dptk.few",       B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}, EMPTY},
-    {"br.call.dptk",           B, OpPaWhaD (5, 0, 2, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
-    {"br.call.dptk.few.clr",   B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}, EMPTY},
-    {"br.call.dptk.clr",       B, OpPaWhaD (5, 0, 2, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
-    {"br.call.dpnt.few",       B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}, EMPTY},
-    {"br.call.dpnt",           B, OpPaWhaD (5, 0, 3, 0), {B1, TGT25c}, PSEUDO, 0, NULL},
-    {"br.call.dpnt.few.clr",   B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}, EMPTY},
-    {"br.call.dpnt.clr",       B, OpPaWhaD (5, 0, 3, 1), {B1, TGT25c}, PSEUDO, 0, NULL},
-    {"br.call.sptk.many",      B, OpPaWhaD (5, 1, 0, 0), {B1, TGT25c}, EMPTY},
-    {"br.call.sptk.many.clr",  B, OpPaWhaD (5, 1, 0, 1), {B1, TGT25c}, EMPTY},
-    {"br.call.spnt.many",      B, OpPaWhaD (5, 1, 1, 0), {B1, TGT25c}, EMPTY},
-    {"br.call.spnt.many.clr",  B, OpPaWhaD (5, 1, 1, 1), {B1, TGT25c}, EMPTY},
-    {"br.call.dptk.many",      B, OpPaWhaD (5, 1, 2, 0), {B1, TGT25c}, EMPTY},
-    {"br.call.dptk.many.clr",  B, OpPaWhaD (5, 1, 2, 1), {B1, TGT25c}, EMPTY},
-    {"br.call.dpnt.many",      B, OpPaWhaD (5, 1, 3, 0), {B1, TGT25c}, EMPTY},
-    {"br.call.dpnt.many.clr",  B, OpPaWhaD (5, 1, 3, 1), {B1, TGT25c}, EMPTY},
-
-    /* Branch predict.  */
-#define BRP(a,b) \
-      B0, OpIhWhb (7, a, b), {TGT25c, TAG13}, NO_PRED, 0, NULL
-    {"brp.sptk",               BRP (0, 0)},
-    {"brp.loop",               BRP (0, 1)},
-    {"brp.dptk",               BRP (0, 2)},
-    {"brp.exit",               BRP (0, 3)},
-    {"brp.sptk.imp",           BRP (1, 0)},
-    {"brp.loop.imp",           BRP (1, 1)},
-    {"brp.dptk.imp",           BRP (1, 2)},
-    {"brp.exit.imp",           BRP (1, 3)},
-#undef BRP
-
-    {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL}
-  };
-
-#undef B0
-#undef B
-#undef bBtype
-#undef bD
-#undef bIh
-#undef bPa
-#undef bPr
-#undef bWha
-#undef bWhb
-#undef bWhc
-#undef bX6
-#undef mBtype
-#undef mD
-#undef mIh
-#undef mPa
-#undef mPr
-#undef mWha
-#undef mWhb
-#undef mWhc
-#undef mX6
-#undef OpX6
-#undef OpPaWhaD
-#undef OpPaWhcD
-#undef OpBtypePaWhaD
-#undef OpBtypePaWhaDPr
-#undef OpX6BtypePaWhaD
-#undef OpX6BtypePaWhaDPr
-#undef OpIhWhb
-#undef OpX6IhWhb
-#undef EMPTY
diff --git a/tools/debugger/xenitp/ia64-opc-d.c b/tools/debugger/xenitp/ia64-opc-d.c
deleted file mode 100644 (file)
index f0bd064..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-/* ia64-opc-d.c -- IA-64 `D' opcode table.
-   Copyright 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
-   Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
-
-   This file is part of GDB, GAS, and the GNU binutils.
-
-   GDB, GAS, and the GNU binutils are free software; you can redistribute
-   them and/or modify them under the terms of the GNU General Public
-   License as published by the Free Software Foundation; either version
-   2, or (at your option) any later version.
-
-   GDB, GAS, and the GNU binutils are distributed in the hope that they
-   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 file; see the file COPYING.  If not, write to the
-   Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
-   02110-1301, USA.  */
-
-struct ia64_opcode ia64_opcodes_d[] =
-  {
-    {"add",   IA64_TYPE_DYN, 1, 0, 0, {IA64_OPND_R1, IA64_OPND_IMM22, IA64_OPND_R3_2}, 0, 0, NULL},
-    {"add",   IA64_TYPE_DYN, 1, 0, 0, {IA64_OPND_R1, IA64_OPND_IMM14, IA64_OPND_R3}, 0, 0, NULL},
-    {"break", IA64_TYPE_DYN, 0, 0, 0, {IA64_OPND_IMMU21}, 0, 0, NULL},
-    {"chk.s", IA64_TYPE_DYN, 0, 0, 0, {IA64_OPND_R2, IA64_OPND_TGT25b}, 0, 0, NULL},
-    {"hint",  IA64_TYPE_DYN, 0, 0, 0, {IA64_OPND_IMMU21}, 0, 0, NULL},
-    {"mov",   IA64_TYPE_DYN, 1, 0, 0, {IA64_OPND_R1,  IA64_OPND_AR3}, 0, 0, NULL},
-    {"mov",   IA64_TYPE_DYN, 1, 0, 0, {IA64_OPND_AR3, IA64_OPND_IMM8}, 0, 0, NULL},
-    {"mov",   IA64_TYPE_DYN, 1, 0, 0, {IA64_OPND_AR3, IA64_OPND_R2}, 0, 0, NULL},
-    {"nop",   IA64_TYPE_DYN, 0, 0, 0, {IA64_OPND_IMMU21}, 0, 0, NULL},
-    {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL}
-  };
diff --git a/tools/debugger/xenitp/ia64-opc-f.c b/tools/debugger/xenitp/ia64-opc-f.c
deleted file mode 100644 (file)
index 0b13c9c..0000000
+++ /dev/null
@@ -1,656 +0,0 @@
-/* ia64-opc-f.c -- IA-64 `F' opcode table.
-   Copyright 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
-   Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
-
-   This file is part of GDB, GAS, and the GNU binutils.
-
-   GDB, GAS, and the GNU binutils are free software; you can redistribute
-   them and/or modify them under the terms of the GNU General Public
-   License as published by the Free Software Foundation; either version
-   2, or (at your option) any later version.
-
-   GDB, GAS, and the GNU binutils are distributed in the hope that they
-   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 file; see the file COPYING.  If not, write to the
-   Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
-   02110-1301, USA.  */
-
-#include "ia64-opc.h"
-
-#define f0     IA64_TYPE_F, 0
-#define f      IA64_TYPE_F, 1
-#define f2     IA64_TYPE_F, 2
-
-#define bF2(x) (((ia64_insn) ((x) & 0x7f)) << 13)
-#define bF4(x) (((ia64_insn) ((x) & 0x7f)) << 27)
-#define bQ(x)  (((ia64_insn) ((x) & 0x1)) << 36)
-#define bRa(x) (((ia64_insn) ((x) & 0x1)) << 33)
-#define bRb(x) (((ia64_insn) ((x) & 0x1)) << 36)
-#define bSf(x) (((ia64_insn) ((x) & 0x3)) << 34)
-#define bTa(x) (((ia64_insn) ((x) & 0x1)) << 12)
-#define bXa(x) (((ia64_insn) ((x) & 0x1)) << 36)
-#define bXb(x) (((ia64_insn) ((x) & 0x1)) << 33)
-#define bX2(x) (((ia64_insn) ((x) & 0x3)) << 34)
-#define bX6(x) (((ia64_insn) ((x) & 0x3f)) << 27)
-#define bY(x)  (((ia64_insn) ((x) & 0x1)) << 26)
-
-#define mF2    bF2 (-1)
-#define mF4    bF4 (-1)
-#define mQ     bQ (-1)
-#define mRa    bRa (-1)
-#define mRb    bRb (-1)
-#define mSf    bSf (-1)
-#define mTa    bTa (-1)
-#define mXa    bXa (-1)
-#define mXb    bXb (-1)
-#define mX2    bX2 (-1)
-#define mX6    bX6 (-1)
-#define mY     bY (-1)
-
-#define OpXa(a,b)      (bOp (a) | bXa (b)), (mOp | mXa)
-#define OpXaSf(a,b,c)  (bOp (a) | bXa (b) | bSf (c)), (mOp | mXa | mSf)
-#define OpXaSfF2(a,b,c,d) \
-       (bOp (a) | bXa (b) | bSf (c) | bF2 (d)), (mOp | mXa | mSf | mF2)
-#define OpXaSfF4(a,b,c,d) \
-       (bOp (a) | bXa (b) | bSf (c) | bF4 (d)), (mOp | mXa | mSf | mF4)
-#define OpXaSfF2F4(a,b,c,d,e) \
-       (bOp (a) | bXa (b) | bSf (c) | bF2 (d) | bF4 (e)), \
-       (mOp | mXa | mSf | mF2 | mF4)
-#define OpXaX2(a,b,c)  (bOp (a) | bXa (b) | bX2 (c)), (mOp | mXa | mX2)
-#define OpXaX2F2(a,b,c,d) \
-       (bOp (a) | bXa (b) | bX2 (c) | bF2 (d)), (mOp | mXa | mX2 | mF2)
-#define OpRaRbTaSf(a,b,c,d,e) \
-       (bOp (a) | bRa (b) | bRb (c) | bTa (d) | bSf (e)), \
-       (mOp | mRa | mRb | mTa | mSf)
-#define OpTa(a,b)      (bOp (a) | bTa (b)), (mOp | mTa)
-#define OpXbQSf(a,b,c,d) \
-       (bOp (a) | bXb (b) | bQ (c) | bSf (d)), (mOp | mXb | mQ | mSf)
-#define OpXbX6(a,b,c) \
-       (bOp (a) | bXb (b) | bX6 (c)), (mOp | mXb | mX6)
-#define OpXbX6Y(a,b,c,d) \
-       (bOp (a) | bXb (b) | bX6 (c) | bY (d)), (mOp | mXb | mX6 | mY)
-#define OpXbX6F2(a,b,c,d) \
-       (bOp (a) | bXb (b) | bX6 (c) | bF2 (d)), (mOp | mXb | mX6 | mF2)
-#define OpXbX6Sf(a,b,c,d) \
-       (bOp (a) | bXb (b) | bX6 (c) | bSf (d)), (mOp | mXb | mX6 | mSf)
-
-/* Used to initialise unused fields in ia64_opcode struct,
-   in order to stop gcc from complaining.  */
-#define EMPTY 0,0,NULL
-
-struct ia64_opcode ia64_opcodes_f[] =
-  {
-    /* F-type instruction encodings (sorted according to major opcode).  */
-
-    {"frcpa.s0",       f2, OpXbQSf (0, 1, 0, 0), {F1, P2, F2, F3}, EMPTY},
-    {"frcpa",          f2, OpXbQSf (0, 1, 0, 0), {F1, P2, F2, F3}, PSEUDO, 0, NULL},
-    {"frcpa.s1",       f2, OpXbQSf (0, 1, 0, 1), {F1, P2, F2, F3}, EMPTY},
-    {"frcpa.s2",       f2, OpXbQSf (0, 1, 0, 2), {F1, P2, F2, F3}, EMPTY},
-    {"frcpa.s3",       f2, OpXbQSf (0, 1, 0, 3), {F1, P2, F2, F3}, EMPTY},
-
-    {"frsqrta.s0",     f2, OpXbQSf (0, 1, 1, 0), {F1, P2, F3}, EMPTY},
-    {"frsqrta",                f2, OpXbQSf (0, 1, 1, 0), {F1, P2, F3}, PSEUDO, 0, NULL},
-    {"frsqrta.s1",     f2, OpXbQSf (0, 1, 1, 1), {F1, P2, F3}, EMPTY},
-    {"frsqrta.s2",     f2, OpXbQSf (0, 1, 1, 2), {F1, P2, F3}, EMPTY},
-    {"frsqrta.s3",     f2, OpXbQSf (0, 1, 1, 3), {F1, P2, F3}, EMPTY},
-
-    {"fmin.s0",                f, OpXbX6Sf (0, 0, 0x14, 0), {F1, F2, F3}, EMPTY},
-    {"fmin",           f, OpXbX6Sf (0, 0, 0x14, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
-    {"fmin.s1",                f, OpXbX6Sf (0, 0, 0x14, 1), {F1, F2, F3}, EMPTY},
-    {"fmin.s2",                f, OpXbX6Sf (0, 0, 0x14, 2), {F1, F2, F3}, EMPTY},
-    {"fmin.s3",                f, OpXbX6Sf (0, 0, 0x14, 3), {F1, F2, F3}, EMPTY},
-    {"fmax.s0",                f, OpXbX6Sf (0, 0, 0x15, 0), {F1, F2, F3}, EMPTY},
-    {"fmax",           f, OpXbX6Sf (0, 0, 0x15, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
-    {"fmax.s1",                f, OpXbX6Sf (0, 0, 0x15, 1), {F1, F2, F3}, EMPTY},
-    {"fmax.s2",                f, OpXbX6Sf (0, 0, 0x15, 2), {F1, F2, F3}, EMPTY},
-    {"fmax.s3",                f, OpXbX6Sf (0, 0, 0x15, 3), {F1, F2, F3}, EMPTY},
-    {"famin.s0",       f, OpXbX6Sf (0, 0, 0x16, 0), {F1, F2, F3}, EMPTY},
-    {"famin",          f, OpXbX6Sf (0, 0, 0x16, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
-    {"famin.s1",       f, OpXbX6Sf (0, 0, 0x16, 1), {F1, F2, F3}, EMPTY},
-    {"famin.s2",       f, OpXbX6Sf (0, 0, 0x16, 2), {F1, F2, F3}, EMPTY},
-    {"famin.s3",       f, OpXbX6Sf (0, 0, 0x16, 3), {F1, F2, F3}, EMPTY},
-    {"famax.s0",       f, OpXbX6Sf (0, 0, 0x17, 0), {F1, F2, F3}, EMPTY},
-    {"famax",          f, OpXbX6Sf (0, 0, 0x17, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
-    {"famax.s1",       f, OpXbX6Sf (0, 0, 0x17, 1), {F1, F2, F3}, EMPTY},
-    {"famax.s2",       f, OpXbX6Sf (0, 0, 0x17, 2), {F1, F2, F3}, EMPTY},
-    {"famax.s3",       f, OpXbX6Sf (0, 0, 0x17, 3), {F1, F2, F3}, EMPTY},
-
-    {"mov",            f, OpXbX6 (0, 0, 0x10), {F1, F3}, PSEUDO | F2_EQ_F3, 0, NULL},
-    {"fabs",           f, OpXbX6F2 (0, 0, 0x10, 0), {F1, F3}, PSEUDO, 0, NULL},
-    {"fneg",           f, OpXbX6   (0, 0, 0x11), {F1, F3}, PSEUDO | F2_EQ_F3, 0, NULL},
-    {"fnegabs",                f, OpXbX6F2 (0, 0, 0x11, 0), {F1, F3}, PSEUDO, 0, NULL},
-    {"fmerge.s",       f, OpXbX6   (0, 0, 0x10), {F1, F2, F3}, EMPTY},
-    {"fmerge.ns",      f, OpXbX6   (0, 0, 0x11), {F1, F2, F3}, EMPTY},
-
-    {"fmerge.se",      f, OpXbX6 (0, 0, 0x12), {F1, F2, F3}, EMPTY},
-    {"fmix.lr",                f, OpXbX6 (0, 0, 0x39), {F1, F2, F3}, EMPTY},
-    {"fmix.r",         f, OpXbX6 (0, 0, 0x3a), {F1, F2, F3}, EMPTY},
-    {"fmix.l",         f, OpXbX6 (0, 0, 0x3b), {F1, F2, F3}, EMPTY},
-    {"fsxt.r",         f, OpXbX6 (0, 0, 0x3c), {F1, F2, F3}, EMPTY},
-    {"fsxt.l",         f, OpXbX6 (0, 0, 0x3d), {F1, F2, F3}, EMPTY},
-    {"fpack",          f, OpXbX6 (0, 0, 0x28), {F1, F2, F3}, EMPTY},
-    {"fswap",          f, OpXbX6 (0, 0, 0x34), {F1, F2, F3}, EMPTY},
-    {"fswap.nl",       f, OpXbX6 (0, 0, 0x35), {F1, F2, F3}, EMPTY},
-    {"fswap.nr",       f, OpXbX6 (0, 0, 0x36), {F1, F2, F3}, EMPTY},
-    {"fand",           f, OpXbX6 (0, 0, 0x2c), {F1, F2, F3}, EMPTY},
-    {"fandcm",         f, OpXbX6 (0, 0, 0x2d), {F1, F2, F3}, EMPTY},
-    {"for",            f, OpXbX6 (0, 0, 0x2e), {F1, F2, F3}, EMPTY},
-    {"fxor",           f, OpXbX6 (0, 0, 0x2f), {F1, F2, F3}, EMPTY},
-
-    {"fcvt.fx.s0",             f, OpXbX6Sf (0, 0, 0x18, 0), {F1, F2}, EMPTY},
-    {"fcvt.fx",                        f, OpXbX6Sf (0, 0, 0x18, 0), {F1, F2}, PSEUDO, 0, NULL},
-    {"fcvt.fx.s1",             f, OpXbX6Sf (0, 0, 0x18, 1), {F1, F2}, EMPTY},
-    {"fcvt.fx.s2",             f, OpXbX6Sf (0, 0, 0x18, 2), {F1, F2}, EMPTY},
-    {"fcvt.fx.s3",             f, OpXbX6Sf (0, 0, 0x18, 3), {F1, F2}, EMPTY},
-    {"fcvt.fxu.s0",            f, OpXbX6Sf (0, 0, 0x19, 0), {F1, F2}, EMPTY},
-    {"fcvt.fxu",               f, OpXbX6Sf (0, 0, 0x19, 0), {F1, F2}, PSEUDO, 0, NULL},
-    {"fcvt.fxu.s1",            f, OpXbX6Sf (0, 0, 0x19, 1), {F1, F2}, EMPTY},
-    {"fcvt.fxu.s2",            f, OpXbX6Sf (0, 0, 0x19, 2), {F1, F2}, EMPTY},
-    {"fcvt.fxu.s3",            f, OpXbX6Sf (0, 0, 0x19, 3), {F1, F2}, EMPTY},
-    {"fcvt.fx.trunc.s0",       f, OpXbX6Sf (0, 0, 0x1a, 0), {F1, F2}, EMPTY},
-    {"fcvt.fx.trunc",          f, OpXbX6Sf (0, 0, 0x1a, 0), {F1, F2}, PSEUDO, 0, NULL},
-    {"fcvt.fx.trunc.s1",       f, OpXbX6Sf (0, 0, 0x1a, 1), {F1, F2}, EMPTY},
-    {"fcvt.fx.trunc.s2",       f, OpXbX6Sf (0, 0, 0x1a, 2), {F1, F2}, EMPTY},
-    {"fcvt.fx.trunc.s3",       f, OpXbX6Sf (0, 0, 0x1a, 3), {F1, F2}, EMPTY},
-    {"fcvt.fxu.trunc.s0",      f, OpXbX6Sf (0, 0, 0x1b, 0), {F1, F2}, EMPTY},
-    {"fcvt.fxu.trunc",         f, OpXbX6Sf (0, 0, 0x1b, 0), {F1, F2}, PSEUDO, 0, NULL},
-    {"fcvt.fxu.trunc.s1",      f, OpXbX6Sf (0, 0, 0x1b, 1), {F1, F2}, EMPTY},
-    {"fcvt.fxu.trunc.s2",      f, OpXbX6Sf (0, 0, 0x1b, 2), {F1, F2}, EMPTY},
-    {"fcvt.fxu.trunc.s3",      f, OpXbX6Sf (0, 0, 0x1b, 3), {F1, F2}, EMPTY},
-
-    {"fcvt.xf",                f, OpXbX6 (0, 0, 0x1c), {F1, F2}, EMPTY},
-
-    {"fsetc.s0",       f0, OpXbX6Sf (0, 0, 0x04, 0), {IMMU7a, IMMU7b}, EMPTY},
-    {"fsetc",          f0, OpXbX6Sf (0, 0, 0x04, 0), {IMMU7a, IMMU7b}, PSEUDO, 0, NULL},
-    {"fsetc.s1",       f0, OpXbX6Sf (0, 0, 0x04, 1), {IMMU7a, IMMU7b}, EMPTY},
-    {"fsetc.s2",       f0, OpXbX6Sf (0, 0, 0x04, 2), {IMMU7a, IMMU7b}, EMPTY},
-    {"fsetc.s3",       f0, OpXbX6Sf (0, 0, 0x04, 3), {IMMU7a, IMMU7b}, EMPTY},
-    {"fclrf.s0",       f0, OpXbX6Sf (0, 0, 0x05, 0), {}, EMPTY},
-    {"fclrf",          f0, OpXbX6Sf (0, 0, 0x05, 0), {0}, PSEUDO, 0, NULL},
-    {"fclrf.s1",       f0, OpXbX6Sf (0, 0, 0x05, 1), {}, EMPTY},
-    {"fclrf.s2",       f0, OpXbX6Sf (0, 0, 0x05, 2), {}, EMPTY},
-    {"fclrf.s3",       f0, OpXbX6Sf (0, 0, 0x05, 3), {}, EMPTY},
-    {"fchkf.s0",       f0, OpXbX6Sf (0, 0, 0x08, 0), {TGT25}, EMPTY},
-    {"fchkf",          f0, OpXbX6Sf (0, 0, 0x08, 0), {TGT25}, PSEUDO, 0, NULL},
-    {"fchkf.s1",       f0, OpXbX6Sf (0, 0, 0x08, 1), {TGT25}, EMPTY},
-    {"fchkf.s2",       f0, OpXbX6Sf (0, 0, 0x08, 2), {TGT25}, EMPTY},
-    {"fchkf.s3",       f0, OpXbX6Sf (0, 0, 0x08, 3), {TGT25}, EMPTY},
-
-    {"break.f",                f0, OpXbX6 (0, 0, 0x00), {IMMU21}, EMPTY},
-    {"nop.f",          f0, OpXbX6Y (0, 0, 0x01, 0), {IMMU21}, EMPTY},
-    {"hint.f",         f0, OpXbX6Y (0, 0, 0x01, 1), {IMMU21}, EMPTY},
-
-    {"fprcpa.s0",      f2, OpXbQSf (1, 1, 0, 0), {F1, P2, F2, F3}, EMPTY},
-    {"fprcpa",         f2, OpXbQSf (1, 1, 0, 0), {F1, P2, F2, F3}, PSEUDO, 0, NULL},
-    {"fprcpa.s1",      f2, OpXbQSf (1, 1, 0, 1), {F1, P2, F2, F3}, EMPTY},
-    {"fprcpa.s2",      f2, OpXbQSf (1, 1, 0, 2), {F1, P2, F2, F3}, EMPTY},
-    {"fprcpa.s3",      f2, OpXbQSf (1, 1, 0, 3), {F1, P2, F2, F3}, EMPTY},
-
-    {"fprsqrta.s0",    f2, OpXbQSf (1, 1, 1, 0), {F1, P2, F3}, EMPTY},
-    {"fprsqrta",       f2, OpXbQSf (1, 1, 1, 0), {F1, P2, F3}, PSEUDO, 0, NULL},
-    {"fprsqrta.s1",    f2, OpXbQSf (1, 1, 1, 1), {F1, P2, F3}, EMPTY},
-    {"fprsqrta.s2",    f2, OpXbQSf (1, 1, 1, 2), {F1, P2, F3}, EMPTY},
-    {"fprsqrta.s3",    f2, OpXbQSf (1, 1, 1, 3), {F1, P2, F3}, EMPTY},
-
-    {"fpmin.s0",       f, OpXbX6Sf (1, 0, 0x14, 0), {F1, F2, F3}, EMPTY},
-    {"fpmin",          f, OpXbX6Sf (1, 0, 0x14, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
-    {"fpmin.s1",       f, OpXbX6Sf (1, 0, 0x14, 1), {F1, F2, F3}, EMPTY},
-    {"fpmin.s2",       f, OpXbX6Sf (1, 0, 0x14, 2), {F1, F2, F3}, EMPTY},
-    {"fpmin.s3",       f, OpXbX6Sf (1, 0, 0x14, 3), {F1, F2, F3}, EMPTY},
-    {"fpmax.s0",       f, OpXbX6Sf (1, 0, 0x15, 0), {F1, F2, F3}, EMPTY},
-    {"fpmax",          f, OpXbX6Sf (1, 0, 0x15, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
-    {"fpmax.s1",       f, OpXbX6Sf (1, 0, 0x15, 1), {F1, F2, F3}, EMPTY},
-    {"fpmax.s2",       f, OpXbX6Sf (1, 0, 0x15, 2), {F1, F2, F3}, EMPTY},
-    {"fpmax.s3",       f, OpXbX6Sf (1, 0, 0x15, 3), {F1, F2, F3}, EMPTY},
-    {"fpamin.s0",      f, OpXbX6Sf (1, 0, 0x16, 0), {F1, F2, F3}, EMPTY},
-    {"fpamin",         f, OpXbX6Sf (1, 0, 0x16, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
-    {"fpamin.s1",      f, OpXbX6Sf (1, 0, 0x16, 1), {F1, F2, F3}, EMPTY},
-    {"fpamin.s2",      f, OpXbX6Sf (1, 0, 0x16, 2), {F1, F2, F3}, EMPTY},
-    {"fpamin.s3",      f, OpXbX6Sf (1, 0, 0x16, 3), {F1, F2, F3}, EMPTY},
-    {"fpamax.s0",      f, OpXbX6Sf (1, 0, 0x17, 0), {F1, F2, F3}, EMPTY},
-    {"fpamax",         f, OpXbX6Sf (1, 0, 0x17, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
-    {"fpamax.s1",      f, OpXbX6Sf (1, 0, 0x17, 1), {F1, F2, F3}, EMPTY},
-    {"fpamax.s2",      f, OpXbX6Sf (1, 0, 0x17, 2), {F1, F2, F3}, EMPTY},
-    {"fpamax.s3",      f, OpXbX6Sf (1, 0, 0x17, 3), {F1, F2, F3}, EMPTY},
-
-    {"fpcmp.eq.s0",    f, OpXbX6Sf (1, 0, 0x30, 0), {F1, F2, F3}, EMPTY},
-    {"fpcmp.eq",       f, OpXbX6Sf (1, 0, 0x30, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
-    {"fpcmp.eq.s1",    f, OpXbX6Sf (1, 0, 0x30, 1), {F1, F2, F3}, EMPTY},
-    {"fpcmp.eq.s2",    f, OpXbX6Sf (1, 0, 0x30, 2), {F1, F2, F3}, EMPTY},
-    {"fpcmp.eq.s3",    f, OpXbX6Sf (1, 0, 0x30, 3), {F1, F2, F3}, EMPTY},
-    {"fpcmp.lt.s0",    f, OpXbX6Sf (1, 0, 0x31, 0), {F1, F2, F3}, EMPTY},
-    {"fpcmp.lt",       f, OpXbX6Sf (1, 0, 0x31, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
-    {"fpcmp.lt.s1",    f, OpXbX6Sf (1, 0, 0x31, 1), {F1, F2, F3}, EMPTY},
-    {"fpcmp.lt.s2",    f, OpXbX6Sf (1, 0, 0x31, 2), {F1, F2, F3}, EMPTY},
-    {"fpcmp.lt.s3",    f, OpXbX6Sf (1, 0, 0x31, 3), {F1, F2, F3}, EMPTY},
-    {"fpcmp.le.s0",    f, OpXbX6Sf (1, 0, 0x32, 0), {F1, F2, F3}, EMPTY},
-    {"fpcmp.le",       f, OpXbX6Sf (1, 0, 0x32, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
-    {"fpcmp.le.s1",    f, OpXbX6Sf (1, 0, 0x32, 1), {F1, F2, F3}, EMPTY},
-    {"fpcmp.le.s2",    f, OpXbX6Sf (1, 0, 0x32, 2), {F1, F2, F3}, EMPTY},
-    {"fpcmp.le.s3",    f, OpXbX6Sf (1, 0, 0x32, 3), {F1, F2, F3}, EMPTY},
-    {"fpcmp.gt.s0",    f, OpXbX6Sf (1, 0, 0x31, 0), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fpcmp.gt",       f, OpXbX6Sf (1, 0, 0x31, 0), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fpcmp.gt.s1",    f, OpXbX6Sf (1, 0, 0x31, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fpcmp.gt.s2",    f, OpXbX6Sf (1, 0, 0x31, 2), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fpcmp.gt.s3",    f, OpXbX6Sf (1, 0, 0x31, 3), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fpcmp.ge.s0",    f, OpXbX6Sf (1, 0, 0x32, 0), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fpcmp.ge",       f, OpXbX6Sf (1, 0, 0x32, 0), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fpcmp.ge.s1",    f, OpXbX6Sf (1, 0, 0x32, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fpcmp.ge.s2",    f, OpXbX6Sf (1, 0, 0x32, 2), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fpcmp.ge.s3",    f, OpXbX6Sf (1, 0, 0x32, 3), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fpcmp.unord.s0", f, OpXbX6Sf (1, 0, 0x33, 0), {F1, F2, F3}, EMPTY},
-    {"fpcmp.unord",    f, OpXbX6Sf (1, 0, 0x33, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
-    {"fpcmp.unord.s1", f, OpXbX6Sf (1, 0, 0x33, 1), {F1, F2, F3}, EMPTY},
-    {"fpcmp.unord.s2", f, OpXbX6Sf (1, 0, 0x33, 2), {F1, F2, F3}, EMPTY},
-    {"fpcmp.unord.s3", f, OpXbX6Sf (1, 0, 0x33, 3), {F1, F2, F3}, EMPTY},
-    {"fpcmp.neq.s0",   f, OpXbX6Sf (1, 0, 0x34, 0), {F1, F2, F3}, EMPTY},
-    {"fpcmp.neq",      f, OpXbX6Sf (1, 0, 0x34, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
-    {"fpcmp.neq.s1",   f, OpXbX6Sf (1, 0, 0x34, 1), {F1, F2, F3}, EMPTY},
-    {"fpcmp.neq.s2",   f, OpXbX6Sf (1, 0, 0x34, 2), {F1, F2, F3}, EMPTY},
-    {"fpcmp.neq.s3",   f, OpXbX6Sf (1, 0, 0x34, 3), {F1, F2, F3}, EMPTY},
-    {"fpcmp.nlt.s0",   f, OpXbX6Sf (1, 0, 0x35, 0), {F1, F2, F3}, EMPTY},
-    {"fpcmp.nlt",      f, OpXbX6Sf (1, 0, 0x35, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
-    {"fpcmp.nlt.s1",   f, OpXbX6Sf (1, 0, 0x35, 1), {F1, F2, F3}, EMPTY},
-    {"fpcmp.nlt.s2",   f, OpXbX6Sf (1, 0, 0x35, 2), {F1, F2, F3}, EMPTY},
-    {"fpcmp.nlt.s3",   f, OpXbX6Sf (1, 0, 0x35, 3), {F1, F2, F3}, EMPTY},
-    {"fpcmp.nle.s0",   f, OpXbX6Sf (1, 0, 0x36, 0), {F1, F2, F3}, EMPTY},
-    {"fpcmp.nle",      f, OpXbX6Sf (1, 0, 0x36, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
-    {"fpcmp.nle.s1",   f, OpXbX6Sf (1, 0, 0x36, 1), {F1, F2, F3}, EMPTY},
-    {"fpcmp.nle.s2",   f, OpXbX6Sf (1, 0, 0x36, 2), {F1, F2, F3}, EMPTY},
-    {"fpcmp.nle.s3",   f, OpXbX6Sf (1, 0, 0x36, 3), {F1, F2, F3}, EMPTY},
-    {"fpcmp.ngt.s0",   f, OpXbX6Sf (1, 0, 0x35, 0), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fpcmp.ngt",      f, OpXbX6Sf (1, 0, 0x35, 0), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fpcmp.ngt.s1",   f, OpXbX6Sf (1, 0, 0x35, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fpcmp.ngt.s2",   f, OpXbX6Sf (1, 0, 0x35, 2), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fpcmp.ngt.s3",   f, OpXbX6Sf (1, 0, 0x35, 3), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fpcmp.nge.s0",   f, OpXbX6Sf (1, 0, 0x36, 0), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fpcmp.nge",      f, OpXbX6Sf (1, 0, 0x36, 0), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fpcmp.nge.s1",   f, OpXbX6Sf (1, 0, 0x36, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fpcmp.nge.s2",   f, OpXbX6Sf (1, 0, 0x36, 2), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fpcmp.nge.s3",   f, OpXbX6Sf (1, 0, 0x36, 3), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fpcmp.ord.s0",   f, OpXbX6Sf (1, 0, 0x37, 0), {F1, F2, F3}, EMPTY},
-    {"fpcmp.ord",      f, OpXbX6Sf (1, 0, 0x37, 0), {F1, F2, F3}, PSEUDO, 0, NULL},
-    {"fpcmp.ord.s1",   f, OpXbX6Sf (1, 0, 0x37, 1), {F1, F2, F3}, EMPTY},
-    {"fpcmp.ord.s2",   f, OpXbX6Sf (1, 0, 0x37, 2), {F1, F2, F3}, EMPTY},
-    {"fpcmp.ord.s3",   f, OpXbX6Sf (1, 0, 0x37, 3), {F1, F2, F3}, EMPTY},
-
-    {"fpabs",          f, OpXbX6F2 (1, 0, 0x10, 0), {F1, F3}, PSEUDO, 0, NULL},
-    {"fpneg",          f, OpXbX6   (1, 0, 0x11), {F1, F3}, PSEUDO | F2_EQ_F3, 0, NULL},
-    {"fpnegabs",       f, OpXbX6F2 (1, 0, 0x11, 0), {F1, F3}, PSEUDO, 0, NULL},
-    {"fpmerge.s",      f, OpXbX6   (1, 0, 0x10), {F1, F2, F3}, EMPTY},
-    {"fpmerge.ns",     f, OpXbX6   (1, 0, 0x11), {F1, F2, F3}, EMPTY},
-    {"fpmerge.se",     f, OpXbX6 (1, 0, 0x12), {F1, F2, F3}, EMPTY},
-
-    {"fpcvt.fx.s0",            f, OpXbX6Sf (1, 0, 0x18, 0), {F1, F2}, EMPTY},
-    {"fpcvt.fx",               f, OpXbX6Sf (1, 0, 0x18, 0), {F1, F2}, PSEUDO, 0, NULL},
-    {"fpcvt.fx.s1",            f, OpXbX6Sf (1, 0, 0x18, 1), {F1, F2}, EMPTY},
-    {"fpcvt.fx.s2",            f, OpXbX6Sf (1, 0, 0x18, 2), {F1, F2}, EMPTY},
-    {"fpcvt.fx.s3",            f, OpXbX6Sf (1, 0, 0x18, 3), {F1, F2}, EMPTY},
-    {"fpcvt.fxu.s0",           f, OpXbX6Sf (1, 0, 0x19, 0), {F1, F2}, EMPTY},
-    {"fpcvt.fxu",              f, OpXbX6Sf (1, 0, 0x19, 0), {F1, F2}, PSEUDO, 0, NULL},
-    {"fpcvt.fxu.s1",           f, OpXbX6Sf (1, 0, 0x19, 1), {F1, F2}, EMPTY},
-    {"fpcvt.fxu.s2",           f, OpXbX6Sf (1, 0, 0x19, 2), {F1, F2}, EMPTY},
-    {"fpcvt.fxu.s3",           f, OpXbX6Sf (1, 0, 0x19, 3), {F1, F2}, EMPTY},
-    {"fpcvt.fx.trunc.s0",      f, OpXbX6Sf (1, 0, 0x1a, 0), {F1, F2}, EMPTY},
-    {"fpcvt.fx.trunc",         f, OpXbX6Sf (1, 0, 0x1a, 0), {F1, F2}, PSEUDO, 0, NULL},
-    {"fpcvt.fx.trunc.s1",      f, OpXbX6Sf (1, 0, 0x1a, 1), {F1, F2}, EMPTY},
-    {"fpcvt.fx.trunc.s2",      f, OpXbX6Sf (1, 0, 0x1a, 2), {F1, F2}, EMPTY},
-    {"fpcvt.fx.trunc.s3",      f, OpXbX6Sf (1, 0, 0x1a, 3), {F1, F2}, EMPTY},
-    {"fpcvt.fxu.trunc.s0",     f, OpXbX6Sf (1, 0, 0x1b, 0), {F1, F2}, EMPTY},
-    {"fpcvt.fxu.trunc",                f, OpXbX6Sf (1, 0, 0x1b, 0), {F1, F2}, PSEUDO, 0, NULL},
-    {"fpcvt.fxu.trunc.s1",     f, OpXbX6Sf (1, 0, 0x1b, 1), {F1, F2}, EMPTY},
-    {"fpcvt.fxu.trunc.s2",     f, OpXbX6Sf (1, 0, 0x1b, 2), {F1, F2}, EMPTY},
-    {"fpcvt.fxu.trunc.s3",     f, OpXbX6Sf (1, 0, 0x1b, 3), {F1, F2}, EMPTY},
-
-    {"fcmp.eq.s0",       f2, OpRaRbTaSf (4, 0, 0, 0, 0), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.eq",                  f2, OpRaRbTaSf (4, 0, 0, 0, 0), {P1, P2, F2, F3}, PSEUDO, 0, NULL},
-    {"fcmp.eq.s1",       f2, OpRaRbTaSf (4, 0, 0, 0, 1), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.eq.s2",       f2, OpRaRbTaSf (4, 0, 0, 0, 2), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.eq.s3",       f2, OpRaRbTaSf (4, 0, 0, 0, 3), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.lt.s0",       f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.lt",                  f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P1, P2, F2, F3}, PSEUDO, 0, NULL},
-    {"fcmp.lt.s1",       f2, OpRaRbTaSf (4, 0, 1, 0, 1), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.lt.s2",       f2, OpRaRbTaSf (4, 0, 1, 0, 2), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.lt.s3",       f2, OpRaRbTaSf (4, 0, 1, 0, 3), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.le.s0",       f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.le",                  f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P1, P2, F2, F3}, PSEUDO, 0, NULL},
-    {"fcmp.le.s1",       f2, OpRaRbTaSf (4, 1, 0, 0, 1), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.le.s2",       f2, OpRaRbTaSf (4, 1, 0, 0, 2), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.le.s3",       f2, OpRaRbTaSf (4, 1, 0, 0, 3), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.unord.s0",    f2, OpRaRbTaSf (4, 1, 1, 0, 0), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.unord",       f2, OpRaRbTaSf (4, 1, 1, 0, 0), {P1, P2, F2, F3}, PSEUDO, 0, NULL},
-    {"fcmp.unord.s1",    f2, OpRaRbTaSf (4, 1, 1, 0, 1), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.unord.s2",    f2, OpRaRbTaSf (4, 1, 1, 0, 2), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.unord.s3",    f2, OpRaRbTaSf (4, 1, 1, 0, 3), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.eq.unc.s0",   f2, OpRaRbTaSf (4, 0, 0, 1, 0), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.eq.unc",      f2, OpRaRbTaSf (4, 0, 0, 1, 0), {P1, P2, F2, F3}, PSEUDO, 0, NULL},
-    {"fcmp.eq.unc.s1",   f2, OpRaRbTaSf (4, 0, 0, 1, 1), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.eq.unc.s2",   f2, OpRaRbTaSf (4, 0, 0, 1, 2), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.eq.unc.s3",   f2, OpRaRbTaSf (4, 0, 0, 1, 3), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.lt.unc.s0",   f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.lt.unc",      f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P1, P2, F2, F3}, PSEUDO, 0, NULL},
-    {"fcmp.lt.unc.s1",   f2, OpRaRbTaSf (4, 0, 1, 1, 1), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.lt.unc.s2",   f2, OpRaRbTaSf (4, 0, 1, 1, 2), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.lt.unc.s3",   f2, OpRaRbTaSf (4, 0, 1, 1, 3), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.le.unc.s0",   f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.le.unc",      f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P1, P2, F2, F3}, PSEUDO, 0, NULL},
-    {"fcmp.le.unc.s1",   f2, OpRaRbTaSf (4, 1, 0, 1, 1), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.le.unc.s2",   f2, OpRaRbTaSf (4, 1, 0, 1, 2), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.le.unc.s3",   f2, OpRaRbTaSf (4, 1, 0, 1, 3), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.unord.unc.s0", f2, OpRaRbTaSf (4, 1, 1, 1, 0), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.unord.unc",    f2, OpRaRbTaSf (4, 1, 1, 1, 0), {P1, P2, F2, F3}, PSEUDO, 0, NULL},
-    {"fcmp.unord.unc.s1", f2, OpRaRbTaSf (4, 1, 1, 1, 1), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.unord.unc.s2", f2, OpRaRbTaSf (4, 1, 1, 1, 2), {P1, P2, F2, F3}, EMPTY},
-    {"fcmp.unord.unc.s3", f2, OpRaRbTaSf (4, 1, 1, 1, 3), {P1, P2, F2, F3}, EMPTY},
-
-    /* pseudo-ops of the above */
-    {"fcmp.gt.s0",       f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P1, P2, F3, F2}, EMPTY},
-    {"fcmp.gt",                  f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P1, P2, F3, F2}, PSEUDO, 0, NULL},
-    {"fcmp.gt.s1",       f2, OpRaRbTaSf (4, 0, 1, 0, 1), {P1, P2, F3, F2}, EMPTY},
-    {"fcmp.gt.s2",       f2, OpRaRbTaSf (4, 0, 1, 0, 2), {P1, P2, F3, F2}, EMPTY},
-    {"fcmp.gt.s3",       f2, OpRaRbTaSf (4, 0, 1, 0, 3), {P1, P2, F3, F2}, EMPTY},
-    {"fcmp.ge.s0",       f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P1, P2, F3, F2}, EMPTY},
-    {"fcmp.ge",                  f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P1, P2, F3, F2}, PSEUDO, 0, NULL},
-    {"fcmp.ge.s1",       f2, OpRaRbTaSf (4, 1, 0, 0, 1), {P1, P2, F3, F2}, EMPTY},
-    {"fcmp.ge.s2",       f2, OpRaRbTaSf (4, 1, 0, 0, 2), {P1, P2, F3, F2}, EMPTY},
-    {"fcmp.ge.s3",       f2, OpRaRbTaSf (4, 1, 0, 0, 3), {P1, P2, F3, F2}, EMPTY},
-    {"fcmp.neq.s0",      f2, OpRaRbTaSf (4, 0, 0, 0, 0), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.neq",         f2, OpRaRbTaSf (4, 0, 0, 0, 0), {P2, P1, F2, F3}, PSEUDO, 0, NULL},
-    {"fcmp.neq.s1",      f2, OpRaRbTaSf (4, 0, 0, 0, 1), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.neq.s2",      f2, OpRaRbTaSf (4, 0, 0, 0, 2), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.neq.s3",      f2, OpRaRbTaSf (4, 0, 0, 0, 3), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.nlt.s0",      f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.nlt",         f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P2, P1, F2, F3}, PSEUDO, 0, NULL},
-    {"fcmp.nlt.s1",      f2, OpRaRbTaSf (4, 0, 1, 0, 1), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.nlt.s2",      f2, OpRaRbTaSf (4, 0, 1, 0, 2), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.nlt.s3",      f2, OpRaRbTaSf (4, 0, 1, 0, 3), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.nle.s0",      f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.nle",         f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P2, P1, F2, F3}, PSEUDO, 0, NULL},
-    {"fcmp.nle.s1",      f2, OpRaRbTaSf (4, 1, 0, 0, 1), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.nle.s2",      f2, OpRaRbTaSf (4, 1, 0, 0, 2), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.nle.s3",      f2, OpRaRbTaSf (4, 1, 0, 0, 3), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.ngt.s0",      f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P2, P1, F3, F2}, EMPTY},
-    {"fcmp.ngt",         f2, OpRaRbTaSf (4, 0, 1, 0, 0), {P2, P1, F3, F2}, PSEUDO, 0, NULL},
-    {"fcmp.ngt.s1",      f2, OpRaRbTaSf (4, 0, 1, 0, 1), {P2, P1, F3, F2}, EMPTY},
-    {"fcmp.ngt.s2",      f2, OpRaRbTaSf (4, 0, 1, 0, 2), {P2, P1, F3, F2}, EMPTY},
-    {"fcmp.ngt.s3",      f2, OpRaRbTaSf (4, 0, 1, 0, 3), {P2, P1, F3, F2}, EMPTY},
-    {"fcmp.nge.s0",      f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P2, P1, F3, F2}, EMPTY},
-    {"fcmp.nge",         f2, OpRaRbTaSf (4, 1, 0, 0, 0), {P2, P1, F3, F2}, PSEUDO, 0, NULL},
-    {"fcmp.nge.s1",      f2, OpRaRbTaSf (4, 1, 0, 0, 1), {P2, P1, F3, F2}, EMPTY},
-    {"fcmp.nge.s2",      f2, OpRaRbTaSf (4, 1, 0, 0, 2), {P2, P1, F3, F2}, EMPTY},
-    {"fcmp.nge.s3",      f2, OpRaRbTaSf (4, 1, 0, 0, 3), {P2, P1, F3, F2}, EMPTY},
-    {"fcmp.ord.s0",      f2, OpRaRbTaSf (4, 1, 1, 0, 0), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.ord",         f2, OpRaRbTaSf (4, 1, 1, 0, 0), {P2, P1, F2, F3}, PSEUDO, 0, NULL},
-    {"fcmp.ord.s1",      f2, OpRaRbTaSf (4, 1, 1, 0, 1), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.ord.s2",      f2, OpRaRbTaSf (4, 1, 1, 0, 2), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.ord.s3",      f2, OpRaRbTaSf (4, 1, 1, 0, 3), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.gt.unc.s0",   f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P1, P2, F3, F2}, EMPTY},
-    {"fcmp.gt.unc",      f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P1, P2, F3, F2}, PSEUDO, 0, NULL},
-    {"fcmp.gt.unc.s1",   f2, OpRaRbTaSf (4, 0, 1, 1, 1), {P1, P2, F3, F2}, EMPTY},
-    {"fcmp.gt.unc.s2",   f2, OpRaRbTaSf (4, 0, 1, 1, 2), {P1, P2, F3, F2}, EMPTY},
-    {"fcmp.gt.unc.s3",   f2, OpRaRbTaSf (4, 0, 1, 1, 3), {P1, P2, F3, F2}, EMPTY},
-    {"fcmp.ge.unc.s0",   f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P1, P2, F3, F2}, EMPTY},
-    {"fcmp.ge.unc",      f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P1, P2, F3, F2}, PSEUDO, 0, NULL},
-    {"fcmp.ge.unc.s1",   f2, OpRaRbTaSf (4, 1, 0, 1, 1), {P1, P2, F3, F2}, EMPTY},
-    {"fcmp.ge.unc.s2",   f2, OpRaRbTaSf (4, 1, 0, 1, 2), {P1, P2, F3, F2}, EMPTY},
-    {"fcmp.ge.unc.s3",   f2, OpRaRbTaSf (4, 1, 0, 1, 3), {P1, P2, F3, F2}, EMPTY},
-    {"fcmp.neq.unc.s0",          f2, OpRaRbTaSf (4, 0, 0, 1, 0), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.neq.unc",     f2, OpRaRbTaSf (4, 0, 0, 1, 0), {P2, P1, F2, F3}, PSEUDO, 0, NULL},
-    {"fcmp.neq.unc.s1",          f2, OpRaRbTaSf (4, 0, 0, 1, 1), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.neq.unc.s2",          f2, OpRaRbTaSf (4, 0, 0, 1, 2), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.neq.unc.s3",          f2, OpRaRbTaSf (4, 0, 0, 1, 3), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.nlt.unc.s0",          f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.nlt.unc",     f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P2, P1, F2, F3}, PSEUDO, 0, NULL},
-    {"fcmp.nlt.unc.s1",          f2, OpRaRbTaSf (4, 0, 1, 1, 1), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.nlt.unc.s2",          f2, OpRaRbTaSf (4, 0, 1, 1, 2), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.nlt.unc.s3",          f2, OpRaRbTaSf (4, 0, 1, 1, 3), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.nle.unc.s0",          f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.nle.unc",     f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P2, P1, F2, F3}, PSEUDO, 0, NULL},
-    {"fcmp.nle.unc.s1",          f2, OpRaRbTaSf (4, 1, 0, 1, 1), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.nle.unc.s2",          f2, OpRaRbTaSf (4, 1, 0, 1, 2), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.nle.unc.s3",          f2, OpRaRbTaSf (4, 1, 0, 1, 3), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.ngt.unc.s0",          f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P2, P1, F3, F2}, EMPTY},
-    {"fcmp.ngt.unc",     f2, OpRaRbTaSf (4, 0, 1, 1, 0), {P2, P1, F3, F2}, PSEUDO, 0, NULL},
-    {"fcmp.ngt.unc.s1",          f2, OpRaRbTaSf (4, 0, 1, 1, 1), {P2, P1, F3, F2}, EMPTY},
-    {"fcmp.ngt.unc.s2",          f2, OpRaRbTaSf (4, 0, 1, 1, 2), {P2, P1, F3, F2}, EMPTY},
-    {"fcmp.ngt.unc.s3",          f2, OpRaRbTaSf (4, 0, 1, 1, 3), {P2, P1, F3, F2}, EMPTY},
-    {"fcmp.nge.unc.s0",          f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P2, P1, F3, F2}, EMPTY},
-    {"fcmp.nge.unc",     f2, OpRaRbTaSf (4, 1, 0, 1, 0), {P2, P1, F3, F2}, PSEUDO, 0, NULL},
-    {"fcmp.nge.unc.s1",          f2, OpRaRbTaSf (4, 1, 0, 1, 1), {P2, P1, F3, F2}, EMPTY},
-    {"fcmp.nge.unc.s2",          f2, OpRaRbTaSf (4, 1, 0, 1, 2), {P2, P1, F3, F2}, EMPTY},
-    {"fcmp.nge.unc.s3",          f2, OpRaRbTaSf (4, 1, 0, 1, 3), {P2, P1, F3, F2}, EMPTY},
-    {"fcmp.ord.unc.s0",          f2, OpRaRbTaSf (4, 1, 1, 1, 0), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.ord.unc",     f2, OpRaRbTaSf (4, 1, 1, 1, 0), {P2, P1, F2, F3}, PSEUDO, 0, NULL},
-    {"fcmp.ord.unc.s1",   f2, OpRaRbTaSf (4, 1, 1, 1, 1), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.ord.unc.s2",   f2, OpRaRbTaSf (4, 1, 1, 1, 2), {P2, P1, F2, F3}, EMPTY},
-    {"fcmp.ord.unc.s3",   f2, OpRaRbTaSf (4, 1, 1, 1, 3), {P2, P1, F2, F3}, EMPTY},
-
-    {"fclass.m",       f2, OpTa (5, 0), {P1, P2, F2, IMMU9}, EMPTY},
-    {"fclass.nm",      f2, OpTa (5, 0), {P2, P1, F2, IMMU9}, PSEUDO, 0, NULL},
-    {"fclass.m.unc",   f2, OpTa (5, 1), {P1, P2, F2, IMMU9}, EMPTY},
-    {"fclass.nm.unc",  f2, OpTa (5, 1), {P2, P1, F2, IMMU9}, PSEUDO, 0, NULL},
-
-    /* note: fnorm and fcvt.xuf have identical encodings! */
-    {"fnorm.s0",       f, OpXaSfF2F4 (0x8, 0, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fnorm",          f, OpXaSfF2F4 (0x8, 0, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fnorm.s1",       f, OpXaSfF2F4 (0x8, 0, 1, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fnorm.s2",       f, OpXaSfF2F4 (0x8, 0, 2, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fnorm.s3",       f, OpXaSfF2F4 (0x8, 0, 3, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fnorm.s.s0",     f, OpXaSfF2F4 (0x8, 1, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fnorm.s",                f, OpXaSfF2F4 (0x8, 1, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fnorm.s.s1",     f, OpXaSfF2F4 (0x8, 1, 1, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fnorm.s.s2",     f, OpXaSfF2F4 (0x8, 1, 2, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fnorm.s.s3",     f, OpXaSfF2F4 (0x8, 1, 3, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fcvt.xuf.s0",    f, OpXaSfF2F4 (0x8, 0, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fcvt.xuf",       f, OpXaSfF2F4 (0x8, 0, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fcvt.xuf.s1",    f, OpXaSfF2F4 (0x8, 0, 1, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fcvt.xuf.s2",    f, OpXaSfF2F4 (0x8, 0, 2, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fcvt.xuf.s3",    f, OpXaSfF2F4 (0x8, 0, 3, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fcvt.xuf.s.s0",  f, OpXaSfF2F4 (0x8, 1, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fcvt.xuf.s",     f, OpXaSfF2F4 (0x8, 1, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fcvt.xuf.s.s1",  f, OpXaSfF2F4 (0x8, 1, 1, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fcvt.xuf.s.s2",  f, OpXaSfF2F4 (0x8, 1, 2, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fcvt.xuf.s.s3",  f, OpXaSfF2F4 (0x8, 1, 3, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fadd.s0",                f, OpXaSfF4 (0x8, 0, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fadd",           f, OpXaSfF4 (0x8, 0, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fadd.s1",                f, OpXaSfF4 (0x8, 0, 1, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fadd.s2",                f, OpXaSfF4 (0x8, 0, 2, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fadd.s3",                f, OpXaSfF4 (0x8, 0, 3, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fadd.s.s0",      f, OpXaSfF4 (0x8, 1, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fadd.s",         f, OpXaSfF4 (0x8, 1, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fadd.s.s1",      f, OpXaSfF4 (0x8, 1, 1, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fadd.s.s2",      f, OpXaSfF4 (0x8, 1, 2, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fadd.s.s3",      f, OpXaSfF4 (0x8, 1, 3, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fmpy.s0",                f, OpXaSfF2 (0x8, 0, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fmpy",           f, OpXaSfF2 (0x8, 0, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fmpy.s1",                f, OpXaSfF2 (0x8, 0, 1, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fmpy.s2",                f, OpXaSfF2 (0x8, 0, 2, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fmpy.s3",                f, OpXaSfF2 (0x8, 0, 3, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fmpy.s.s0",      f, OpXaSfF2 (0x8, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fmpy.s",         f, OpXaSfF2 (0x8, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fmpy.s.s1",      f, OpXaSfF2 (0x8, 1, 1, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fmpy.s.s2",      f, OpXaSfF2 (0x8, 1, 2, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fmpy.s.s3",      f, OpXaSfF2 (0x8, 1, 3, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fma.s0",         f, OpXaSf (0x8, 0, 0), {F1, F3, F4, F2}, EMPTY},
-    {"fma",            f, OpXaSf (0x8, 0, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
-    {"fma.s1",         f, OpXaSf (0x8, 0, 1), {F1, F3, F4, F2}, EMPTY},
-    {"fma.s2",         f, OpXaSf (0x8, 0, 2), {F1, F3, F4, F2}, EMPTY},
-    {"fma.s3",         f, OpXaSf (0x8, 0, 3), {F1, F3, F4, F2}, EMPTY},
-    {"fma.s.s0",       f, OpXaSf (0x8, 1, 0), {F1, F3, F4, F2}, EMPTY},
-    {"fma.s",          f, OpXaSf (0x8, 1, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
-    {"fma.s.s1",       f, OpXaSf (0x8, 1, 1), {F1, F3, F4, F2}, EMPTY},
-    {"fma.s.s2",       f, OpXaSf (0x8, 1, 2), {F1, F3, F4, F2}, EMPTY},
-    {"fma.s.s3",       f, OpXaSf (0x8, 1, 3), {F1, F3, F4, F2}, EMPTY},
-
-    {"fnorm.d.s0",     f, OpXaSfF2F4 (0x9, 0, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fnorm.d",                f, OpXaSfF2F4 (0x9, 0, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fnorm.d.s1",     f, OpXaSfF2F4 (0x9, 0, 1, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fnorm.d.s2",     f, OpXaSfF2F4 (0x9, 0, 2, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fnorm.d.s3",     f, OpXaSfF2F4 (0x9, 0, 3, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fcvt.xuf.d.s0",  f, OpXaSfF2F4 (0x9, 0, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fcvt.xuf.d",     f, OpXaSfF2F4 (0x9, 0, 0, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fcvt.xuf.d.s1",  f, OpXaSfF2F4 (0x9, 0, 1, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fcvt.xuf.d.s2",  f, OpXaSfF2F4 (0x9, 0, 2, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fcvt.xuf.d.s3",  f, OpXaSfF2F4 (0x9, 0, 3, 0, 1), {F1, F3}, PSEUDO, 0, NULL},
-    {"fadd.d.s0",      f, OpXaSfF4 (0x9, 0, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fadd.d",         f, OpXaSfF4 (0x9, 0, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fadd.d.s1",      f, OpXaSfF4 (0x9, 0, 1, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fadd.d.s2",      f, OpXaSfF4 (0x9, 0, 2, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fadd.d.s3",      f, OpXaSfF4 (0x9, 0, 3, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fmpy.d.s0",      f, OpXaSfF2 (0x9, 0, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fmpy.d",         f, OpXaSfF2 (0x9, 0, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fmpy.d.s1",      f, OpXaSfF2 (0x9, 0, 1, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fmpy.d.s2",      f, OpXaSfF2 (0x9, 0, 2, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fmpy.d.s3",      f, OpXaSfF2 (0x9, 0, 3, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fma.d.s0",       f, OpXaSf (0x9, 0, 0), {F1, F3, F4, F2}, EMPTY},
-    {"fma.d",          f, OpXaSf (0x9, 0, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
-    {"fma.d.s1",       f, OpXaSf (0x9, 0, 1), {F1, F3, F4, F2}, EMPTY},
-    {"fma.d.s2",       f, OpXaSf (0x9, 0, 2), {F1, F3, F4, F2}, EMPTY},
-    {"fma.d.s3",       f, OpXaSf (0x9, 0, 3), {F1, F3, F4, F2}, EMPTY},
-
-    {"fpmpy.s0",       f, OpXaSfF2 (0x9, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fpmpy",          f, OpXaSfF2 (0x9, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fpmpy.s1",       f, OpXaSfF2 (0x9, 1, 1, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fpmpy.s2",       f, OpXaSfF2 (0x9, 1, 2, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fpmpy.s3",       f, OpXaSfF2 (0x9, 1, 3, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fpma.s0",                f, OpXaSf   (0x9, 1, 0), {F1, F3, F4, F2}, EMPTY},
-    {"fpma",           f, OpXaSf   (0x9, 1, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
-    {"fpma.s1",                f, OpXaSf   (0x9, 1, 1), {F1, F3, F4, F2}, EMPTY},
-    {"fpma.s2",                f, OpXaSf   (0x9, 1, 2), {F1, F3, F4, F2}, EMPTY},
-    {"fpma.s3",                f, OpXaSf   (0x9, 1, 3), {F1, F3, F4, F2}, EMPTY},
-
-    {"fsub.s0",                f, OpXaSfF4 (0xa, 0, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fsub",           f, OpXaSfF4 (0xa, 0, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fsub.s1",                f, OpXaSfF4 (0xa, 0, 1, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fsub.s2",                f, OpXaSfF4 (0xa, 0, 2, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fsub.s3",                f, OpXaSfF4 (0xa, 0, 3, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fsub.s.s0",      f, OpXaSfF4 (0xa, 1, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fsub.s",         f, OpXaSfF4 (0xa, 1, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fsub.s.s1",      f, OpXaSfF4 (0xa, 1, 1, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fsub.s.s2",      f, OpXaSfF4 (0xa, 1, 2, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fsub.s.s3",      f, OpXaSfF4 (0xa, 1, 3, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fms.s0",         f, OpXaSf   (0xa, 0, 0), {F1, F3, F4, F2}, EMPTY},
-    {"fms",            f, OpXaSf   (0xa, 0, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
-    {"fms.s1",         f, OpXaSf   (0xa, 0, 1), {F1, F3, F4, F2}, EMPTY},
-    {"fms.s2",         f, OpXaSf   (0xa, 0, 2), {F1, F3, F4, F2}, EMPTY},
-    {"fms.s3",         f, OpXaSf   (0xa, 0, 3), {F1, F3, F4, F2}, EMPTY},
-    {"fms.s.s0",       f, OpXaSf   (0xa, 1, 0), {F1, F3, F4, F2}, EMPTY},
-    {"fms.s",          f, OpXaSf   (0xa, 1, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
-    {"fms.s.s1",       f, OpXaSf   (0xa, 1, 1), {F1, F3, F4, F2}, EMPTY},
-    {"fms.s.s2",       f, OpXaSf   (0xa, 1, 2), {F1, F3, F4, F2}, EMPTY},
-    {"fms.s.s3",       f, OpXaSf   (0xa, 1, 3), {F1, F3, F4, F2}, EMPTY},
-    {"fsub.d.s0",      f, OpXaSfF4 (0xb, 0, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fsub.d",         f, OpXaSfF4 (0xb, 0, 0, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fsub.d.s1",      f, OpXaSfF4 (0xb, 0, 1, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fsub.d.s2",      f, OpXaSfF4 (0xb, 0, 2, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fsub.d.s3",      f, OpXaSfF4 (0xb, 0, 3, 1), {F1, F3, F2}, PSEUDO, 0, NULL},
-    {"fms.d.s0",       f, OpXaSf   (0xb, 0, 0), {F1, F3, F4, F2}, EMPTY},
-    {"fms.d",          f, OpXaSf   (0xb, 0, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
-    {"fms.d.s1",       f, OpXaSf   (0xb, 0, 1), {F1, F3, F4, F2}, EMPTY},
-    {"fms.d.s2",       f, OpXaSf   (0xb, 0, 2), {F1, F3, F4, F2}, EMPTY},
-    {"fms.d.s3",       f, OpXaSf   (0xb, 0, 3), {F1, F3, F4, F2}, EMPTY},
-
-    {"fpms.s0",                f, OpXaSf (0xb, 1, 0), {F1, F3, F4, F2}, EMPTY},
-    {"fpms",           f, OpXaSf (0xb, 1, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
-    {"fpms.s1",                f, OpXaSf (0xb, 1, 1), {F1, F3, F4, F2}, EMPTY},
-    {"fpms.s2",                f, OpXaSf (0xb, 1, 2), {F1, F3, F4, F2}, EMPTY},
-    {"fpms.s3",                f, OpXaSf (0xb, 1, 3), {F1, F3, F4, F2}, EMPTY},
-
-    {"fnmpy.s0",       f, OpXaSfF2 (0xc, 0, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fnmpy",          f, OpXaSfF2 (0xc, 0, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fnmpy.s1",       f, OpXaSfF2 (0xc, 0, 1, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fnmpy.s2",       f, OpXaSfF2 (0xc, 0, 2, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fnmpy.s3",       f, OpXaSfF2 (0xc, 0, 3, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fnmpy.s.s0",     f, OpXaSfF2 (0xc, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fnmpy.s",                f, OpXaSfF2 (0xc, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fnmpy.s.s1",     f, OpXaSfF2 (0xc, 1, 1, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fnmpy.s.s2",     f, OpXaSfF2 (0xc, 1, 2, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fnmpy.s.s3",     f, OpXaSfF2 (0xc, 1, 3, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fnma.s0",                f, OpXaSf (0xc, 0, 0), {F1, F3, F4, F2}, EMPTY},
-    {"fnma",           f, OpXaSf (0xc, 0, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
-    {"fnma.s1",                f, OpXaSf (0xc, 0, 1), {F1, F3, F4, F2}, EMPTY},
-    {"fnma.s2",                f, OpXaSf (0xc, 0, 2), {F1, F3, F4, F2}, EMPTY},
-    {"fnma.s3",                f, OpXaSf (0xc, 0, 3), {F1, F3, F4, F2}, EMPTY},
-    {"fnma.s.s0",      f, OpXaSf (0xc, 1, 0), {F1, F3, F4, F2}, EMPTY},
-    {"fnma.s",         f, OpXaSf (0xc, 1, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
-    {"fnma.s.s1",      f, OpXaSf (0xc, 1, 1), {F1, F3, F4, F2}, EMPTY},
-    {"fnma.s.s2",      f, OpXaSf (0xc, 1, 2), {F1, F3, F4, F2}, EMPTY},
-    {"fnma.s.s3",      f, OpXaSf (0xc, 1, 3), {F1, F3, F4, F2}, EMPTY},
-    {"fnmpy.d.s0",     f, OpXaSfF2 (0xd, 0, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fnmpy.d",                f, OpXaSfF2 (0xd, 0, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fnmpy.d.s1",     f, OpXaSfF2 (0xd, 0, 1, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fnmpy.d.s2",     f, OpXaSfF2 (0xd, 0, 2, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fnmpy.d.s3",     f, OpXaSfF2 (0xd, 0, 3, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fnma.d.s0",      f, OpXaSf (0xd, 0, 0), {F1, F3, F4, F2}, EMPTY},
-    {"fnma.d",         f, OpXaSf (0xd, 0, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
-    {"fnma.d.s1",      f, OpXaSf (0xd, 0, 1), {F1, F3, F4, F2}, EMPTY},
-    {"fnma.d.s2",      f, OpXaSf (0xd, 0, 2), {F1, F3, F4, F2}, EMPTY},
-    {"fnma.d.s3",      f, OpXaSf (0xd, 0, 3), {F1, F3, F4, F2}, EMPTY},
-
-    {"fpnmpy.s0",      f, OpXaSfF2 (0xd, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fpnmpy",         f, OpXaSfF2 (0xd, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fpnmpy.s1",      f, OpXaSfF2 (0xd, 1, 1, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fpnmpy.s2",      f, OpXaSfF2 (0xd, 1, 2, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fpnmpy.s3",      f, OpXaSfF2 (0xd, 1, 3, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"fpnma.s0",       f, OpXaSf   (0xd, 1, 0), {F1, F3, F4, F2}, EMPTY},
-    {"fpnma",          f, OpXaSf   (0xd, 1, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
-    {"fpnma.s1",       f, OpXaSf   (0xd, 1, 1), {F1, F3, F4, F2}, EMPTY},
-    {"fpnma.s2",       f, OpXaSf   (0xd, 1, 2), {F1, F3, F4, F2}, EMPTY},
-    {"fpnma.s3",       f, OpXaSf   (0xd, 1, 3), {F1, F3, F4, F2}, EMPTY},
-
-    {"xmpy.l",         f, OpXaX2F2 (0xe, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"xmpy.lu",                f, OpXaX2F2 (0xe, 1, 0, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"xmpy.h",         f, OpXaX2F2 (0xe, 1, 3, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"xmpy.hu",                f, OpXaX2F2 (0xe, 1, 2, 0), {F1, F3, F4}, PSEUDO, 0, NULL},
-    {"xma.l",          f, OpXaX2 (0xe, 1, 0), {F1, F3, F4, F2}, EMPTY},
-    {"xma.lu",         f, OpXaX2 (0xe, 1, 0), {F1, F3, F4, F2}, PSEUDO, 0, NULL},
-    {"xma.h",          f, OpXaX2 (0xe, 1, 3), {F1, F3, F4, F2}, EMPTY},
-    {"xma.hu",         f, OpXaX2 (0xe, 1, 2), {F1, F3, F4, F2}, EMPTY},
-
-    {"fselect",                f, OpXa (0xe, 0), {F1, F3, F4, F2}, EMPTY},
-
-    {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL}
-  };
-
-#undef f0
-#undef f
-#undef f2
-#undef bF2
-#undef bF4
-#undef bQ
-#undef bRa
-#undef bRb
-#undef bSf
-#undef bTa
-#undef bXa
-#undef bXb
-#undef bX2
-#undef bX6
-#undef mF2
-#undef mF4
-#undef mQ
-#undef mRa
-#undef mRb
-#undef mSf
-#undef mTa
-#undef mXa
-#undef mXb
-#undef mX2
-#undef mX6
-#undef OpXa
-#undef OpXaSf
-#undef OpXaSfF2
-#undef OpXaSfF4
-#undef OpXaSfF2F4
-#undef OpXaX2
-#undef OpRaRbTaSf
-#undef OpTa
-#undef OpXbQSf
-#undef OpXbX6
-#undef OpXbX6F2
-#undef OpXbX6Sf
-#undef EMPTY
diff --git a/tools/debugger/xenitp/ia64-opc-i.c b/tools/debugger/xenitp/ia64-opc-i.c
deleted file mode 100644 (file)
index 69cd969..0000000
+++ /dev/null
@@ -1,338 +0,0 @@
-/* ia64-opc-i.c -- IA-64 `I' opcode table.
-   Copyright 1998, 1999, 2000, 2002, 2005, 2006
-   Free Software Foundation, Inc.
-   Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
-
-   This file is part of GDB, GAS, and the GNU binutils.
-
-   GDB, GAS, and the GNU binutils are free software; you can redistribute
-   them and/or modify them under the terms of the GNU General Public
-   License as published by the Free Software Foundation; either version
-   2, or (at your option) any later version.
-
-   GDB, GAS, and the GNU binutils are distributed in the hope that they
-   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 file; see the file COPYING.  If not, write to the
-   Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
-   02110-1301, USA.  */
-
-#include "ia64-opc.h"
-
-#define I0     IA64_TYPE_I, 0
-#define I      IA64_TYPE_I, 1
-#define I2     IA64_TYPE_I, 2
-
-/* instruction bit fields: */
-#define bC(x)          (((ia64_insn) ((x) & 0x1)) << 12)
-#define bIh(x)         (((ia64_insn) ((x) & 0x1)) << 23)
-#define bTa(x)         (((ia64_insn) ((x) & 0x1)) << 33)
-#define bTag13(x)      (((ia64_insn) ((x) & 0x1)) << 33)
-#define bTb(x)         (((ia64_insn) ((x) & 0x1)) << 36)
-#define bVc(x)         (((ia64_insn) ((x) & 0x1)) << 20)
-#define bVe(x)         (((ia64_insn) ((x) & 0x1)) << 32)
-#define bWh(x)         (((ia64_insn) ((x) & 0x3)) << 20)
-#define bX(x)          (((ia64_insn) ((x) & 0x1)) << 33)
-#define bXb(x)         (((ia64_insn) ((x) & 0x1)) << 22)
-#define bXc(x)         (((ia64_insn) ((x) & 0x1)) << 19)
-#define bX2(x)         (((ia64_insn) ((x) & 0x3)) << 34)
-#define bX2a(x)                (((ia64_insn) ((x) & 0x3)) << 34)
-#define bX2b(x)                (((ia64_insn) ((x) & 0x3)) << 28)
-#define bX2c(x)                (((ia64_insn) ((x) & 0x3)) << 30)
-#define bX3(x)         (((ia64_insn) ((x) & 0x7)) << 33)
-#define bX6(x)         (((ia64_insn) ((x) & 0x3f)) << 27)
-#define bYa(x)         (((ia64_insn) ((x) & 0x1)) << 13)
-#define bYb(x)         (((ia64_insn) ((x) & 0x1)) << 26)
-#define bZa(x)         (((ia64_insn) ((x) & 0x1)) << 36)
-#define bZb(x)         (((ia64_insn) ((x) & 0x1)) << 33)
-
-/* instruction bit masks: */
-#define mC     bC (-1)
-#define mIh    bIh (-1)
-#define mTa    bTa (-1)
-#define mTag13 bTag13 (-1)
-#define mTb    bTb (-1)
-#define mVc    bVc (-1)
-#define mVe    bVe (-1)
-#define mWh    bWh (-1)
-#define mX     bX (-1)
-#define mXb    bXb (-1)
-#define mXc    bXc (-1)
-#define mX2    bX2 (-1)
-#define mX2a   bX2a (-1)
-#define mX2b   bX2b (-1)
-#define mX2c   bX2c (-1)
-#define mX3    bX3 (-1)
-#define mX6    bX6 (-1)
-#define mYa    bYa (-1)
-#define mYb    bYb (-1)
-#define mZa    bZa (-1)
-#define mZb    bZb (-1)
-
-#define OpZaZbVeX2aX2b(a,b,c,d,e,f) \
-       (bOp (a) | bZa (b) | bZb (c) | bVe (d) | bX2a (e) | bX2b (f)), \
-       (mOp | mZa | mZb | mVe | mX2a | mX2b)
-#define OpZaZbVeX2aX2bX2c(a,b,c,d,e,f,g) \
-  (bOp (a) | bZa (b) | bZb (c) | bVe (d) | bX2a (e) | bX2b (f) | bX2c (g)), \
-       (mOp | mZa | mZb | mVe | mX2a | mX2b | mX2c)
-#define OpX2X(a,b,c)           (bOp (a) | bX2 (b) | bX (c)), (mOp | mX2 | mX)
-#define OpX2XYa(a,b,c,d)       (bOp (a) | bX2 (b) | bX (c) | bYa (d)), \
-                               (mOp | mX2 | mX | mYa)
-#define OpX2XYb(a,b,c,d)       (bOp (a) | bX2 (b) | bX (c) | bYb (d)), \
-                               (mOp | mX2 | mX | mYb)
-#define OpX2TaTbYaC(a,b,c,d,e,f) \
-       (bOp (a) | bX2 (b) | bTa (c) | bTb (d) | bYa (e) | bC (f)), \
-       (mOp | mX2 | mTa | mTb | mYa | mC)
-#define OpX2TaTbYaXcC(a,b,c,d,e,f,g) \
-       (bOp (a) | bX2 (b) | bTa (c) | bTb (d) | bYa (e) | bXc (f) | bC (g)), \
-       (mOp | mX2 | mTa | mTb | mYa | mXc | mC)
-#define OpX3(a,b)              (bOp (a) | bX3 (b)), (mOp | mX3)
-#define OpX3X6(a,b,c)          (bOp (a) | bX3 (b) | bX6(c)), \
-                               (mOp | mX3 | mX6)
-#define OpX3X6Yb(a,b,c,d)      (bOp (a) | bX3 (b) | bX6(c) | bYb(d)), \
-                               (mOp | mX3 | mX6 | mYb)
-#define OpX3XbIhWh(a,b,c,d,e) \
-  (bOp (a) | bX3 (b) | bXb (c) | bIh (d) | bWh (e)), \
-  (mOp | mX3 | mXb | mIh | mWh)
-#define OpX3XbIhWhTag13(a,b,c,d,e,f) \
-     (bOp (a) | bX3 (b) | bXb (c) | bIh (d) | bWh (e) | bTag13 (f)), \
-     (mOp | mX3 | mXb | mIh | mWh | mTag13)
-
-#define FULL17 ((ia64_insn)0x10ff001fc0LL)
-
-/* Used to initialise unused fields in ia64_opcode struct,
-   in order to stop gcc from complaining.  */
-#define EMPTY 0,0,NULL
-
-struct ia64_opcode ia64_opcodes_i[] =
-  {
-    /* I-type instruction encodings (sorted according to major opcode).  */
-
-    {"break.i",        I0, OpX3X6 (0, 0, 0x00), {IMMU21}, X_IN_MLX, 0, NULL},
-    {"nop.i",  I0, OpX3X6Yb (0, 0, 0x01, 0), {IMMU21}, X_IN_MLX, 0, NULL},
-    {"hint.i", I0, OpX3X6Yb (0, 0, 0x01, 1), {IMMU21}, X_IN_MLX, 0, NULL},
-    {"chk.s.i",        I0, OpX3 (0, 1), {R2, TGT25b}, EMPTY},
-
-    {"mov", I, OpX3XbIhWhTag13 (0, 7, 0, 0, 1, 0), {B1, R2}, PSEUDO, 0, NULL},
-#define MOV(a,b,c,d) \
-    I, OpX3XbIhWh (0, a, b, c, d), {B1, R2, TAG13b}, EMPTY
-    {"mov.sptk",               MOV (7, 0, 0, 0)},
-    {"mov.sptk.imp",           MOV (7, 0, 1, 0)},
-    {"mov",                    MOV (7, 0, 0, 1)},
-    {"mov.imp",                        MOV (7, 0, 1, 1)},
-    {"mov.dptk",               MOV (7, 0, 0, 2)},
-    {"mov.dptk.imp",           MOV (7, 0, 1, 2)},
-    {"mov.ret.sptk",           MOV (7, 1, 0, 0)},
-    {"mov.ret.sptk.imp",       MOV (7, 1, 1, 0)},
-    {"mov.ret",                        MOV (7, 1, 0, 1)},
-    {"mov.ret.imp",            MOV (7, 1, 1, 1)},
-    {"mov.ret.dptk",           MOV (7, 1, 0, 2)},
-    {"mov.ret.dptk.imp",       MOV (7, 1, 1, 2)},
-#undef MOV
-    {"mov",    I, OpX3X6 (0, 0, 0x31), {R1, B2}, EMPTY},
-    {"mov",    I, OpX3 (0, 3), {PR, R2, IMM17}, EMPTY},
-    /* Don't remove one of the seemingly redundant FULL17-s.  */
-    {"mov",    I, FULL17 | OpX3 (0, 3) | FULL17, {PR, R2}, PSEUDO, 0, NULL},
-    {"mov",    I, OpX3 (0, 2), {PR_ROT, IMM44}, EMPTY},
-    {"mov",    I, OpX3X6 (0, 0, 0x30), {R1, IP}, EMPTY},
-    {"mov",    I, OpX3X6 (0, 0, 0x33), {R1, PR}, EMPTY},
-    {"mov.i",  I, OpX3X6 (0, 0, 0x2a), {AR3, R2}, EMPTY},
-    {"mov.i",  I, OpX3X6 (0, 0, 0x0a), {AR3, IMM8}, EMPTY},
-    {"mov.i",  I, OpX3X6 (0, 0, 0x32), {R1, AR3}, EMPTY},
-    {"zxt1",   I, OpX3X6 (0, 0, 0x10), {R1, R3}, EMPTY},
-    {"zxt2",   I, OpX3X6 (0, 0, 0x11), {R1, R3}, EMPTY},
-    {"zxt4",   I, OpX3X6 (0, 0, 0x12), {R1, R3}, EMPTY},
-    {"sxt1",   I, OpX3X6 (0, 0, 0x14), {R1, R3}, EMPTY},
-    {"sxt2",   I, OpX3X6 (0, 0, 0x15), {R1, R3}, EMPTY},
-    {"sxt4",   I, OpX3X6 (0, 0, 0x16), {R1, R3}, EMPTY},
-    {"czx1.l", I, OpX3X6 (0, 0, 0x18), {R1, R3}, EMPTY},
-    {"czx2.l", I, OpX3X6 (0, 0, 0x19), {R1, R3}, EMPTY},
-    {"czx1.r", I, OpX3X6 (0, 0, 0x1c), {R1, R3}, EMPTY},
-    {"czx2.r", I, OpX3X6 (0, 0, 0x1d), {R1, R3}, EMPTY},
-
-    {"dep",    I, Op (4), {R1, R2, R3, CPOS6c, LEN4}, EMPTY},
-
-    {"shrp",   I, OpX2X (5, 3, 0), {R1, R2, R3, CNT6}, EMPTY},
-
-    {"shr.u",  I, OpX2XYa (5, 1, 0, 0), {R1, R3, POS6},
-     PSEUDO | LEN_EQ_64MCNT, 0, NULL},
-    {"extr.u", I, OpX2XYa (5, 1, 0, 0), {R1, R3, POS6, LEN6}, EMPTY},
-
-    {"shr",    I, OpX2XYa (5, 1, 0, 1), {R1, R3, POS6},
-     PSEUDO | LEN_EQ_64MCNT, 0, NULL},
-    {"extr",   I, OpX2XYa (5, 1, 0, 1), {R1, R3, POS6, LEN6}, EMPTY},
-
-    {"shl",    I, OpX2XYb (5, 1, 1, 0), {R1, R2, CPOS6a},
-     PSEUDO | LEN_EQ_64MCNT, 0, NULL},
-    {"dep.z",  I, OpX2XYb (5, 1, 1, 0), {R1, R2, CPOS6a, LEN6}, EMPTY},
-    {"dep.z",  I, OpX2XYb (5, 1, 1, 1), {R1, IMM8, CPOS6a, LEN6}, EMPTY},
-    {"dep",    I, OpX2X (5, 3, 1), {R1, IMM1, R3, CPOS6b, LEN6}, EMPTY},
-#define TF(a,b,c) \
-       I2, OpX2TaTbYaXcC (5, 0, a, b, 1, 1, c), {P1, P2, IMMU5b}, EMPTY
-#define TFCM(a,b,c) \
-       I2, OpX2TaTbYaXcC (5, 0, a, b, 1, 1, c), {P2, P1, IMMU5b}, PSEUDO, 0, NULL
-    {"tf.z",            TF   (0, 0, 0)},
-    {"tf.nz",           TFCM (0, 0, 0)},
-    {"tf.z.unc",        TF   (0, 0, 1)},
-    {"tf.nz.unc",       TFCM (0, 0, 1)},
-    {"tf.z.and",        TF   (0, 1, 0)},
-    {"tf.nz.andcm",     TFCM (0, 1, 0)},
-    {"tf.nz.and",       TF   (0, 1, 1)},
-    {"tf.z.andcm",      TFCM (0, 1, 1)},
-    {"tf.z.or",                 TF   (1, 0, 0)},
-    {"tf.nz.orcm",      TFCM (1, 0, 0)},
-    {"tf.nz.or",        TF   (1, 0, 1)},
-    {"tf.z.orcm",       TFCM (1, 0, 1)},
-    {"tf.z.or.andcm",   TF   (1, 1, 0)},
-    {"tf.nz.and.orcm",  TFCM (1, 1, 0)},
-    {"tf.nz.or.andcm",  TF   (1, 1, 1)},
-    {"tf.z.and.orcm",   TFCM (1, 1, 1)},
-#undef TF
-#undef TFCM
-#define TBIT(a,b,c,d) \
-        I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P1, P2, R3, POS6}, EMPTY
-#define TBITCM(a,b,c,d)        \
-        I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P2, P1, R3, POS6}, PSEUDO, 0, NULL
-    {"tbit.z",          TBIT   (0, 0, 0, 0)},
-    {"tbit.nz",                 TBITCM (0, 0, 0, 0)},
-    {"tbit.z.unc",      TBIT   (0, 0, 0, 1)},
-    {"tbit.nz.unc",     TBITCM (0, 0, 0, 1)},
-    {"tbit.z.and",      TBIT   (0, 1, 0, 0)},
-    {"tbit.nz.andcm",   TBITCM (0, 1, 0, 0)},
-    {"tbit.nz.and",     TBIT   (0, 1, 0, 1)},
-    {"tbit.z.andcm",    TBITCM (0, 1, 0, 1)},
-    {"tbit.z.or",       TBIT   (1, 0, 0, 0)},
-    {"tbit.nz.orcm",    TBITCM (1, 0, 0, 0)},
-    {"tbit.nz.or",      TBIT   (1, 0, 0, 1)},
-    {"tbit.z.orcm",     TBITCM (1, 0, 0, 1)},
-    {"tbit.z.or.andcm",         TBIT   (1, 1, 0, 0)},
-    {"tbit.nz.and.orcm", TBITCM (1, 1, 0, 0)},
-    {"tbit.nz.or.andcm", TBIT   (1, 1, 0, 1)},
-    {"tbit.z.and.orcm",  TBITCM (1, 1, 0, 1)},
-#undef TBIT
-#undef TBITCM
-#define TNAT(a,b,c,d) \
-       I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P1, P2, R3}, EMPTY
-#define TNATCM(a,b,c,d) \
-       I2, OpX2TaTbYaC (5, 0, a, b, c, d), {P2, P1, R3}, PSEUDO, 0, NULL
-    {"tnat.z",          TNAT   (0, 0, 1, 0)},
-    {"tnat.nz",                 TNATCM (0, 0, 1, 0)},
-    {"tnat.z.unc",      TNAT   (0, 0, 1, 1)},
-    {"tnat.nz.unc",     TNATCM (0, 0, 1, 1)},
-    {"tnat.z.and",      TNAT   (0, 1, 1, 0)},
-    {"tnat.nz.andcm",   TNATCM (0, 1, 1, 0)},
-    {"tnat.nz.and",     TNAT   (0, 1, 1, 1)},
-    {"tnat.z.andcm",    TNATCM (0, 1, 1, 1)},
-    {"tnat.z.or",       TNAT   (1, 0, 1, 0)},
-    {"tnat.nz.orcm",    TNATCM (1, 0, 1, 0)},
-    {"tnat.nz.or",      TNAT   (1, 0, 1, 1)},
-    {"tnat.z.orcm",     TNATCM (1, 0, 1, 1)},
-    {"tnat.z.or.andcm",         TNAT   (1, 1, 1, 0)},
-    {"tnat.nz.and.orcm", TNATCM (1, 1, 1, 0)},
-    {"tnat.nz.or.andcm", TNAT   (1, 1, 1, 1)},
-    {"tnat.z.and.orcm",  TNATCM (1, 1, 1, 1)},
-#undef TNAT
-#undef TNATCM
-
-    {"pmpyshr2",   I, OpZaZbVeX2aX2b (7, 0, 1, 0, 0, 3), {R1, R2, R3, CNT2c}, EMPTY},
-    {"pmpyshr2.u", I, OpZaZbVeX2aX2b (7, 0, 1, 0, 0, 1), {R1, R2, R3, CNT2c}, EMPTY},
-    {"pmpy2.r",           I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 1, 3), {R1, R2, R3}, EMPTY},
-    {"pmpy2.l",           I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 3, 3), {R1, R2, R3}, EMPTY},
-    {"mix1.r",    I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 0, 2), {R1, R2, R3}, EMPTY},
-    {"mix2.r",    I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 0, 2), {R1, R2, R3}, EMPTY},
-    {"mix4.r",    I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 0, 2), {R1, R2, R3}, EMPTY},
-    {"mix1.l",    I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 2, 2), {R1, R2, R3}, EMPTY},
-    {"mix2.l",    I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 2, 2), {R1, R2, R3}, EMPTY},
-    {"mix4.l",    I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 2, 2), {R1, R2, R3}, EMPTY},
-    {"pack2.uss",  I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 0, 0), {R1, R2, R3}, EMPTY},
-    {"pack2.sss",  I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 2, 0), {R1, R2, R3}, EMPTY},
-    {"pack4.sss",  I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 2, 0), {R1, R2, R3}, EMPTY},
-    {"unpack1.h",  I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 0, 1), {R1, R2, R3}, EMPTY},
-    {"unpack2.h",  I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 0, 1), {R1, R2, R3}, EMPTY},
-    {"unpack4.h",  I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 0, 1), {R1, R2, R3}, EMPTY},
-    {"unpack1.l",  I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 2, 1), {R1, R2, R3}, EMPTY},
-    {"unpack2.l",  I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 2, 1), {R1, R2, R3}, EMPTY},
-    {"unpack4.l",  I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 2, 2, 1), {R1, R2, R3}, EMPTY},
-    {"pmin1.u",           I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 1, 0), {R1, R2, R3}, EMPTY},
-    {"pmax1.u",           I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 1, 1), {R1, R2, R3}, EMPTY},
-    {"pmin2",     I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 3, 0), {R1, R2, R3}, EMPTY},
-    {"pmax2",     I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 2, 3, 1), {R1, R2, R3}, EMPTY},
-    {"psad1",     I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 2, 3, 2), {R1, R2, R3}, EMPTY},
-    {"mux1", I, OpZaZbVeX2aX2bX2c (7, 0, 0, 0, 3, 2, 2), {R1, R2, MBTYPE4}, EMPTY},
-    {"mux2", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 3, 2, 2), {R1, R2, MHTYPE8}, EMPTY},
-    {"pshr2",  I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 0, 2, 0), {R1, R3, R2}, EMPTY},
-    {"pshr4",  I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 0, 2, 0), {R1, R3, R2}, EMPTY},
-    {"shr",    I, OpZaZbVeX2aX2bX2c (7, 1, 1, 0, 0, 2, 0), {R1, R3, R2}, EMPTY},
-    {"pshr2.u",        I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 0, 0, 0), {R1, R3, R2}, EMPTY},
-    {"pshr4.u",        I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 0, 0, 0), {R1, R3, R2}, EMPTY},
-    {"shr.u",  I, OpZaZbVeX2aX2bX2c (7, 1, 1, 0, 0, 0, 0), {R1, R3, R2}, EMPTY},
-    {"pshr2",  I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 1, 3, 0), {R1, R3, CNT5}, EMPTY},
-    {"pshr4",  I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 1, 3, 0), {R1, R3, CNT5}, EMPTY},
-    {"pshr2.u",        I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 1, 1, 0), {R1, R3, CNT5}, EMPTY},
-    {"pshr4.u",        I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 1, 1, 0), {R1, R3, CNT5}, EMPTY},
-    {"pshl2",  I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 0, 0, 1), {R1, R2, R3}, EMPTY},
-    {"pshl4",  I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 0, 0, 1), {R1, R2, R3}, EMPTY},
-    {"shl",    I, OpZaZbVeX2aX2bX2c (7, 1, 1, 0, 0, 0, 1), {R1, R2, R3}, EMPTY},
-    {"pshl2",  I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 3, 1, 1), {R1, R2, CCNT5}, EMPTY},
-    {"pshl4",  I, OpZaZbVeX2aX2bX2c (7, 1, 0, 0, 3, 1, 1), {R1, R2, CCNT5}, EMPTY},
-    {"popcnt", I, OpZaZbVeX2aX2bX2c (7, 0, 1, 0, 1, 1, 2), {R1, R3}, EMPTY},
-
-    {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL}
-  };
-
-#undef I0
-#undef I
-#undef I2
-#undef L
-#undef bC
-#undef bIh
-#undef bTa
-#undef bTag13
-#undef bTb
-#undef bVc
-#undef bVe
-#undef bWh
-#undef bX
-#undef bXb
-#undef bX2
-#undef bX2a
-#undef bX2b
-#undef bX2c
-#undef bX3
-#undef bX6
-#undef bY
-#undef bZa
-#undef bZb
-#undef mC
-#undef mIh
-#undef mTa
-#undef mTag13
-#undef mTb
-#undef mVc
-#undef mVe
-#undef mWh
-#undef mX
-#undef mXb
-#undef mX2
-#undef mX2a
-#undef mX2b
-#undef mX2c
-#undef mX3
-#undef mX6
-#undef mY
-#undef mZa
-#undef mZb
-#undef OpZaZbVeX2aX2b
-#undef OpZaZbVeX2aX2bX2c
-#undef OpX2X
-#undef OpX2XYa
-#undef OpX2XYb
-#undef OpX2TaTbYaC
-#undef OpX3
-#undef OpX3X6
-#undef OpX3XbIhWh
-#undef OpX3XbIhWhTag13
-#undef EMPTY
diff --git a/tools/debugger/xenitp/ia64-opc-m.c b/tools/debugger/xenitp/ia64-opc-m.c
deleted file mode 100644 (file)
index d790386..0000000
+++ /dev/null
@@ -1,1118 +0,0 @@
-/* ia64-opc-m.c -- IA-64 `M' opcode table.
-   Copyright 1998, 1999, 2000, 2002, 2005 Free Software Foundation, Inc.
-   Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
-
-   This file is part of GDB, GAS, and the GNU binutils.
-
-   GDB, GAS, and the GNU binutils are free software; you can redistribute
-   them and/or modify them under the terms of the GNU General Public
-   License as published by the Free Software Foundation; either version
-   2, or (at your option) any later version.
-
-   GDB, GAS, and the GNU binutils are distributed in the hope that they
-   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 file; see the file COPYING.  If not, write to the
-   Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
-   02110-1301, USA.  */
-
-#include "ia64-opc.h"
-
-#define M0     IA64_TYPE_M, 0
-#define M      IA64_TYPE_M, 1
-#define M2     IA64_TYPE_M, 2
-
-/* instruction bit fields: */
-#define bM(x)          (((ia64_insn) ((x) & 0x1)) << 36)
-#define bX(x)          (((ia64_insn) ((x) & 0x1)) << 27)
-#define bX2(x)         (((ia64_insn) ((x) & 0x3)) << 31)
-#define bX3(x)         (((ia64_insn) ((x) & 0x7)) << 33)
-#define bX4(x)         (((ia64_insn) ((x) & 0xf)) << 27)
-#define bX6a(x)                (((ia64_insn) ((x) & 0x3f)) << 30)
-#define bX6b(x)                (((ia64_insn) ((x) & 0x3f)) << 27)
-#define bX7(x)         (((ia64_insn) ((x) & 0x1)) << 36)       /* note: alias for bM() */
-#define bY(x)          (((ia64_insn) ((x) & 0x1)) << 26)
-#define bHint(x)       (((ia64_insn) ((x) & 0x3)) << 28)
-
-#define mM     bM (-1)
-#define mX     bX (-1)
-#define mX2    bX2 (-1)
-#define mX3    bX3 (-1)
-#define mX4    bX4 (-1)
-#define mX6a   bX6a (-1)
-#define mX6b   bX6b (-1)
-#define mX7    bX7 (-1)
-#define mY     bY (-1)
-#define mHint  bHint (-1)
-
-#define OpX3(a,b)              (bOp (a) | bX3 (b)), (mOp | mX3)
-#define OpX3X6b(a,b,c)                 (bOp (a) | bX3 (b) | bX6b (c)), \
-                               (mOp | mX3 | mX6b)
-#define OpX3X6bX7(a,b,c,d)     (bOp (a) | bX3 (b) | bX6b (c) | bX7 (d)), \
-                               (mOp | mX3 | mX6b | mX7)
-#define OpX3X4(a,b,c)          (bOp (a) | bX3 (b) | bX4 (c)), \
-                               (mOp | mX3 | mX4)
-#define OpX3X4X2(a,b,c,d)      (bOp (a) | bX3 (b) | bX4 (c) | bX2 (d)), \
-                               (mOp | mX3 | mX4 | mX2)
-#define OpX3X4X2Y(a,b,c,d,e)   (bOp (a) | bX3 (b) | bX4 (c) | bX2 (d) | bY (e)), \
-                               (mOp | mX3 | mX4 | mX2 | mY)
-#define OpX6aHint(a,b,c)       (bOp (a) | bX6a (b) | bHint (c)), \
-                               (mOp | mX6a | mHint)
-#define OpXX6aHint(a,b,c,d)    (bOp (a) | bX (b) | bX6a (c) | bHint (d)), \
-                               (mOp | mX | mX6a | mHint)
-#define OpMXX6a(a,b,c,d) \
-       (bOp (a) | bM (b) | bX (c) | bX6a (d)), (mOp | mM | mX | mX6a)
-#define OpMXX6aHint(a,b,c,d,e) \
-       (bOp (a) | bM (b) | bX (c) | bX6a (d) | bHint (e)), \
-       (mOp | mM | mX | mX6a | mHint)
-
-/* Used to initialise unused fields in ia64_opcode struct,
-   in order to stop gcc from complaining.  */
-#define EMPTY 0,0,NULL
-
-struct ia64_opcode ia64_opcodes_m[] =
-  {
-    /* M-type instruction encodings (sorted according to major opcode).  */
-
-    {"chk.a.nc",       M0, OpX3 (0, 4), {R1, TGT25c}, EMPTY},
-    {"chk.a.clr",      M0, OpX3 (0, 5), {R1, TGT25c}, EMPTY},
-    {"chk.a.nc",       M0, OpX3 (0, 6), {F1, TGT25c}, EMPTY},
-    {"chk.a.clr",      M0, OpX3 (0, 7), {F1, TGT25c}, EMPTY},
-
-    {"invala",         M0, OpX3X4X2 (0, 0, 0, 1), {}, EMPTY},
-    {"fwb",            M0, OpX3X4X2 (0, 0, 0, 2), {}, EMPTY},
-    {"mf",             M0, OpX3X4X2 (0, 0, 2, 2), {}, EMPTY},
-    {"mf.a",           M0, OpX3X4X2 (0, 0, 3, 2), {}, EMPTY},
-    {"srlz.d",         M0, OpX3X4X2 (0, 0, 0, 3), {}, EMPTY},
-    {"srlz.i",         M0, OpX3X4X2 (0, 0, 1, 3), {}, EMPTY},
-    {"sync.i",         M0, OpX3X4X2 (0, 0, 3, 3), {}, EMPTY},
-    {"flushrs",                M0, OpX3X4X2 (0, 0, 0xc, 0), {}, FIRST | NO_PRED, 0, NULL},
-    {"loadrs",         M0, OpX3X4X2 (0, 0, 0xa, 0), {}, FIRST | NO_PRED, 0, NULL},
-    {"invala.e",       M0, OpX3X4X2 (0, 0, 2, 1), {R1}, EMPTY},
-    {"invala.e",       M0, OpX3X4X2 (0, 0, 3, 1), {F1}, EMPTY},
-    {"mov.m",          M, OpX3X4X2 (0, 0, 8, 2), {AR3, IMM8}, EMPTY},
-
-    {"break.m",                M0, OpX3X4X2 (0, 0, 0, 0), {IMMU21}, EMPTY},
-    {"nop.m",          M0, OpX3X4X2Y (0, 0, 1, 0, 0), {IMMU21}, EMPTY},
-    {"hint.m",         M0, OpX3X4X2Y (0, 0, 1, 0, 1), {IMMU21}, EMPTY},
-
-    {"sum",            M0, OpX3X4 (0, 0, 4), {IMMU24}, EMPTY},
-    {"rum",            M0, OpX3X4 (0, 0, 5), {IMMU24}, EMPTY},
-    {"ssm",            M0, OpX3X4 (0, 0, 6), {IMMU24}, PRIV, 0, NULL},
-    {"rsm",            M0, OpX3X4 (0, 0, 7), {IMMU24}, PRIV, 0, NULL},
-
-    {"mov.m",  M, OpX3X6b (1, 0, 0x2a), {AR3, R2}, EMPTY},
-    {"mov.m",  M, OpX3X6b (1, 0, 0x22), {R1, AR3}, EMPTY},
-    {"mov",    M, OpX3X6b (1, 0, 0x2c), {CR3, R2}, PRIV, 0, NULL},
-    {"mov",    M, OpX3X6b (1, 0, 0x24), {R1, CR3}, PRIV, 0, NULL},
-
-    {"alloc",  M, OpX3 (1, 6), {R1, AR_PFS, SOF, SOL, SOR}, FIRST|NO_PRED|MOD_RRBS, 0, NULL},
-    {"alloc",  M, OpX3 (1, 6), {R1, SOF, SOL, SOR}, PSEUDO|FIRST|NO_PRED|MOD_RRBS, 0, NULL},
-
-    {"mov",    M, OpX3X6b (1, 0, 0x2d), {PSR_L, R2}, PRIV, 0, NULL},
-    {"mov",    M, OpX3X6b (1, 0, 0x29), {PSR_UM, R2}, EMPTY},
-    {"mov",    M, OpX3X6b (1, 0, 0x25), {R1, PSR}, PRIV, 0, NULL},
-    {"mov",    M, OpX3X6b (1, 0, 0x21), {R1, PSR_UM}, EMPTY},
-    {"probe.r",        M, OpX3X6b (1, 0, 0x38), {R1, R3, R2}, EMPTY},
-    {"probe.w",        M, OpX3X6b (1, 0, 0x39), {R1, R3, R2}, EMPTY},
-    {"probe.r", M, OpX3X6b (1, 0, 0x18), {R1, R3, IMMU2}, EMPTY},
-    {"probe.w", M, OpX3X6b (1, 0, 0x19), {R1, R3, IMMU2}, EMPTY},
-    {"probe.rw.fault", M0, OpX3X6b (1, 0, 0x31), {R3, IMMU2}, EMPTY},
-    {"probe.r.fault",  M0, OpX3X6b (1, 0, 0x32), {R3, IMMU2}, EMPTY},
-    {"probe.w.fault",  M0, OpX3X6b (1, 0, 0x33), {R3, IMMU2}, EMPTY},
-    {"itc.d",  M0, OpX3X6b (1, 0, 0x2e), {R2}, LAST | PRIV, 0, NULL},
-    {"itc.i",  M0, OpX3X6b (1, 0, 0x2f), {R2}, LAST | PRIV, 0, NULL},
-
-    {"mov",    M, OpX3X6b (1, 0, 0x00), {RR_R3, R2}, PRIV, 0, NULL},
-    {"mov",    M, OpX3X6b (1, 0, 0x01), {DBR_R3, R2}, PRIV, 0, NULL},
-    {"mov",    M, OpX3X6b (1, 0, 0x02), {IBR_R3, R2}, PRIV, 0, NULL},
-    {"mov",    M, OpX3X6b (1, 0, 0x03), {PKR_R3, R2}, PRIV, 0, NULL},
-    {"mov",    M, OpX3X6b (1, 0, 0x04), {PMC_R3, R2}, PRIV, 0, NULL},
-    {"mov",    M, OpX3X6b (1, 0, 0x05), {PMD_R3, R2}, PRIV, 0, NULL},
-    {"mov",    M, OpX3X6b (1, 0, 0x06), {MSR_R3, R2}, PRIV, 0, NULL},
-    {"itr.d",  M, OpX3X6b (1, 0, 0x0e), {DTR_R3, R2}, PRIV, 0, NULL},
-    {"itr.i",  M, OpX3X6b (1, 0, 0x0f), {ITR_R3, R2}, PRIV, 0, NULL},
-
-    {"mov",    M, OpX3X6b (1, 0, 0x10), {R1, RR_R3}, PRIV, 0, NULL},
-    {"mov",    M, OpX3X6b (1, 0, 0x11), {R1, DBR_R3}, PRIV, 0, NULL},
-    {"mov",    M, OpX3X6b (1, 0, 0x12), {R1, IBR_R3}, PRIV, 0, NULL},
-    {"mov",    M, OpX3X6b (1, 0, 0x13), {R1, PKR_R3}, PRIV, 0, NULL},
-    {"mov",    M, OpX3X6b (1, 0, 0x14), {R1, PMC_R3}, PRIV, 0, NULL},
-    {"mov",    M, OpX3X6b (1, 0, 0x15), {R1, PMD_R3}, EMPTY},
-    {"mov",    M, OpX3X6b (1, 0, 0x16), {R1, MSR_R3}, PRIV, 0, NULL},
-    {"mov",    M, OpX3X6b (1, 0, 0x17), {R1, CPUID_R3}, EMPTY},
-
-    {"ptc.l",  M0, OpX3X6b (1, 0, 0x09), {R3, R2}, PRIV, 0, NULL},
-    {"ptc.g",  M0, OpX3X6b (1, 0, 0x0a), {R3, R2}, LAST | PRIV, 0, NULL},
-    {"ptc.ga", M0, OpX3X6b (1, 0, 0x0b), {R3, R2}, LAST | PRIV, 0, NULL},
-    {"ptr.d",  M0, OpX3X6b (1, 0, 0x0c), {R3, R2}, PRIV, 0, NULL},
-    {"ptr.i",  M0, OpX3X6b (1, 0, 0x0d), {R3, R2}, PRIV, 0, NULL},
-
-    {"thash",  M, OpX3X6b (1, 0, 0x1a), {R1, R3}, EMPTY},
-    {"ttag",   M, OpX3X6b (1, 0, 0x1b), {R1, R3}, EMPTY},
-    {"tpa",    M, OpX3X6b (1, 0, 0x1e), {R1, R3}, PRIV, 0, NULL},
-    {"tak",    M, OpX3X6b (1, 0, 0x1f), {R1, R3}, PRIV, 0, NULL},
-
-    {"chk.s.m",        M0, OpX3 (1, 1), {R2, TGT25b}, EMPTY},
-    {"chk.s",  M0, OpX3 (1, 3), {F2, TGT25b}, EMPTY},
-
-    {"fc",     M0, OpX3X6bX7 (1, 0, 0x30, 0), {R3}, EMPTY},
-    {"fc.i",   M0, OpX3X6bX7 (1, 0, 0x30, 1), {R3}, EMPTY},
-    {"ptc.e",  M0, OpX3X6b (1, 0, 0x34), {R3}, PRIV, 0, NULL},
-
-    /* integer load */
-    {"ld1",            M, OpMXX6aHint (4, 0, 0, 0x00, 0), {R1, MR3}, EMPTY},
-    {"ld1.nt1",                M, OpMXX6aHint (4, 0, 0, 0x00, 1), {R1, MR3}, EMPTY},
-    {"ld1.nta",                M, OpMXX6aHint (4, 0, 0, 0x00, 3), {R1, MR3}, EMPTY},
-    {"ld2",            M, OpMXX6aHint (4, 0, 0, 0x01, 0), {R1, MR3}, EMPTY},
-    {"ld2.nt1",                M, OpMXX6aHint (4, 0, 0, 0x01, 1), {R1, MR3}, EMPTY},
-    {"ld2.nta",                M, OpMXX6aHint (4, 0, 0, 0x01, 3), {R1, MR3}, EMPTY},
-    {"ld4",            M, OpMXX6aHint (4, 0, 0, 0x02, 0), {R1, MR3}, EMPTY},
-    {"ld4.nt1",                M, OpMXX6aHint (4, 0, 0, 0x02, 1), {R1, MR3}, EMPTY},
-    {"ld4.nta",                M, OpMXX6aHint (4, 0, 0, 0x02, 3), {R1, MR3}, EMPTY},
-    {"ld8",            M, OpMXX6aHint (4, 0, 0, 0x03, 0), {R1, MR3}, EMPTY},
-    {"ld8.nt1",                M, OpMXX6aHint (4, 0, 0, 0x03, 1), {R1, MR3}, EMPTY},
-    {"ld8.nta",                M, OpMXX6aHint (4, 0, 0, 0x03, 3), {R1, MR3}, EMPTY},
-    {"ld16",           M2, OpMXX6aHint (4, 0, 1, 0x28, 0), {R1, AR_CSD, MR3}, EMPTY},
-    {"ld16",           M, OpMXX6aHint (4, 0, 1, 0x28, 0), {R1, MR3}, PSEUDO, 0, NULL},
-    {"ld16.nt1",       M2, OpMXX6aHint (4, 0, 1, 0x28, 1), {R1, AR_CSD, MR3}, EMPTY},
-    {"ld16.nt1",       M, OpMXX6aHint (4, 0, 1, 0x28, 1), {R1, MR3}, PSEUDO, 0, NULL},
-    {"ld16.nta",       M2, OpMXX6aHint (4, 0, 1, 0x28, 3), {R1, AR_CSD, MR3}, EMPTY},
-    {"ld16.nta",       M, OpMXX6aHint (4, 0, 1, 0x28, 3), {R1, MR3}, PSEUDO, 0, NULL},
-    {"ld1.s",          M, OpMXX6aHint (4, 0, 0, 0x04, 0), {R1, MR3}, EMPTY},
-    {"ld1.s.nt1",      M, OpMXX6aHint (4, 0, 0, 0x04, 1), {R1, MR3}, EMPTY},
-    {"ld1.s.nta",      M, OpMXX6aHint (4, 0, 0, 0x04, 3), {R1, MR3}, EMPTY},
-    {"ld2.s",          M, OpMXX6aHint (4, 0, 0, 0x05, 0), {R1, MR3}, EMPTY},
-    {"ld2.s.nt1",      M, OpMXX6aHint (4, 0, 0, 0x05, 1), {R1, MR3}, EMPTY},
-    {"ld2.s.nta",      M, OpMXX6aHint (4, 0, 0, 0x05, 3), {R1, MR3}, EMPTY},
-    {"ld4.s",          M, OpMXX6aHint (4, 0, 0, 0x06, 0), {R1, MR3}, EMPTY},
-    {"ld4.s.nt1",      M, OpMXX6aHint (4, 0, 0, 0x06, 1), {R1, MR3}, EMPTY},
-    {"ld4.s.nta",      M, OpMXX6aHint (4, 0, 0, 0x06, 3), {R1, MR3}, EMPTY},
-    {"ld8.s",          M, OpMXX6aHint (4, 0, 0, 0x07, 0), {R1, MR3}, EMPTY},
-    {"ld8.s.nt1",      M, OpMXX6aHint (4, 0, 0, 0x07, 1), {R1, MR3}, EMPTY},
-    {"ld8.s.nta",      M, OpMXX6aHint (4, 0, 0, 0x07, 3), {R1, MR3}, EMPTY},
-    {"ld1.a",          M, OpMXX6aHint (4, 0, 0, 0x08, 0), {R1, MR3}, EMPTY},
-    {"ld1.a.nt1",      M, OpMXX6aHint (4, 0, 0, 0x08, 1), {R1, MR3}, EMPTY},
-    {"ld1.a.nta",      M, OpMXX6aHint (4, 0, 0, 0x08, 3), {R1, MR3}, EMPTY},
-    {"ld2.a",          M, OpMXX6aHint (4, 0, 0, 0x09, 0), {R1, MR3}, EMPTY},
-    {"ld2.a.nt1",      M, OpMXX6aHint (4, 0, 0, 0x09, 1), {R1, MR3}, EMPTY},
-    {"ld2.a.nta",      M, OpMXX6aHint (4, 0, 0, 0x09, 3), {R1, MR3}, EMPTY},
-    {"ld4.a",          M, OpMXX6aHint (4, 0, 0, 0x0a, 0), {R1, MR3}, EMPTY},
-    {"ld4.a.nt1",      M, OpMXX6aHint (4, 0, 0, 0x0a, 1), {R1, MR3}, EMPTY},
-    {"ld4.a.nta",      M, OpMXX6aHint (4, 0, 0, 0x0a, 3), {R1, MR3}, EMPTY},
-    {"ld8.a",          M, OpMXX6aHint (4, 0, 0, 0x0b, 0), {R1, MR3}, EMPTY},
-    {"ld8.a.nt1",      M, OpMXX6aHint (4, 0, 0, 0x0b, 1), {R1, MR3}, EMPTY},
-    {"ld8.a.nta",      M, OpMXX6aHint (4, 0, 0, 0x0b, 3), {R1, MR3}, EMPTY},
-    {"ld1.sa",         M, OpMXX6aHint (4, 0, 0, 0x0c, 0), {R1, MR3}, EMPTY},
-    {"ld1.sa.nt1",     M, OpMXX6aHint (4, 0, 0, 0x0c, 1), {R1, MR3}, EMPTY},
-    {"ld1.sa.nta",     M, OpMXX6aHint (4, 0, 0, 0x0c, 3), {R1, MR3}, EMPTY},
-    {"ld2.sa",         M, OpMXX6aHint (4, 0, 0, 0x0d, 0), {R1, MR3}, EMPTY},
-    {"ld2.sa.nt1",     M, OpMXX6aHint (4, 0, 0, 0x0d, 1), {R1, MR3}, EMPTY},
-    {"ld2.sa.nta",     M, OpMXX6aHint (4, 0, 0, 0x0d, 3), {R1, MR3}, EMPTY},
-    {"ld4.sa",         M, OpMXX6aHint (4, 0, 0, 0x0e, 0), {R1, MR3}, EMPTY},
-    {"ld4.sa.nt1",     M, OpMXX6aHint (4, 0, 0, 0x0e, 1), {R1, MR3}, EMPTY},
-    {"ld4.sa.nta",     M, OpMXX6aHint (4, 0, 0, 0x0e, 3), {R1, MR3}, EMPTY},
-    {"ld8.sa",         M, OpMXX6aHint (4, 0, 0, 0x0f, 0), {R1, MR3}, EMPTY},
-    {"ld8.sa.nt1",     M, OpMXX6aHint (4, 0, 0, 0x0f, 1), {R1, MR3}, EMPTY},
-    {"ld8.sa.nta",     M, OpMXX6aHint (4, 0, 0, 0x0f, 3), {R1, MR3}, EMPTY},
-    {"ld1.bias",       M, OpMXX6aHint (4, 0, 0, 0x10, 0), {R1, MR3}, EMPTY},
-    {"ld1.bias.nt1",   M, OpMXX6aHint (4, 0, 0, 0x10, 1), {R1, MR3}, EMPTY},
-    {"ld1.bias.nta",   M, OpMXX6aHint (4, 0, 0, 0x10, 3), {R1, MR3}, EMPTY},
-    {"ld2.bias",       M, OpMXX6aHint (4, 0, 0, 0x11, 0), {R1, MR3}, EMPTY},
-    {"ld2.bias.nt1",   M, OpMXX6aHint (4, 0, 0, 0x11, 1), {R1, MR3}, EMPTY},
-    {"ld2.bias.nta",   M, OpMXX6aHint (4, 0, 0, 0x11, 3), {R1, MR3}, EMPTY},
-    {"ld4.bias",       M, OpMXX6aHint (4, 0, 0, 0x12, 0), {R1, MR3}, EMPTY},
-    {"ld4.bias.nt1",   M, OpMXX6aHint (4, 0, 0, 0x12, 1), {R1, MR3}, EMPTY},
-    {"ld4.bias.nta",   M, OpMXX6aHint (4, 0, 0, 0x12, 3), {R1, MR3}, EMPTY},
-    {"ld8.bias",       M, OpMXX6aHint (4, 0, 0, 0x13, 0), {R1, MR3}, EMPTY},
-    {"ld8.bias.nt1",   M, OpMXX6aHint (4, 0, 0, 0x13, 1), {R1, MR3}, EMPTY},
-    {"ld8.bias.nta",   M, OpMXX6aHint (4, 0, 0, 0x13, 3), {R1, MR3}, EMPTY},
-    {"ld1.acq",                M, OpMXX6aHint (4, 0, 0, 0x14, 0), {R1, MR3}, EMPTY},
-    {"ld1.acq.nt1",    M, OpMXX6aHint (4, 0, 0, 0x14, 1), {R1, MR3}, EMPTY},
-    {"ld1.acq.nta",    M, OpMXX6aHint (4, 0, 0, 0x14, 3), {R1, MR3}, EMPTY},
-    {"ld2.acq",                M, OpMXX6aHint (4, 0, 0, 0x15, 0), {R1, MR3}, EMPTY},
-    {"ld2.acq.nt1",    M, OpMXX6aHint (4, 0, 0, 0x15, 1), {R1, MR3}, EMPTY},
-    {"ld2.acq.nta",    M, OpMXX6aHint (4, 0, 0, 0x15, 3), {R1, MR3}, EMPTY},
-    {"ld4.acq",                M, OpMXX6aHint (4, 0, 0, 0x16, 0), {R1, MR3}, EMPTY},
-    {"ld4.acq.nt1",    M, OpMXX6aHint (4, 0, 0, 0x16, 1), {R1, MR3}, EMPTY},
-    {"ld4.acq.nta",    M, OpMXX6aHint (4, 0, 0, 0x16, 3), {R1, MR3}, EMPTY},
-    {"ld8.acq",                M, OpMXX6aHint (4, 0, 0, 0x17, 0), {R1, MR3}, EMPTY},
-    {"ld8.acq.nt1",    M, OpMXX6aHint (4, 0, 0, 0x17, 1), {R1, MR3}, EMPTY},
-    {"ld8.acq.nta",    M, OpMXX6aHint (4, 0, 0, 0x17, 3), {R1, MR3}, EMPTY},
-    {"ld16.acq",       M2, OpMXX6aHint (4, 0, 1, 0x2c, 0), {R1, AR_CSD, MR3}, EMPTY},
-    {"ld16.acq",       M, OpMXX6aHint (4, 0, 1, 0x2c, 0), {R1, MR3}, PSEUDO, 0, NULL},
-    {"ld16.acq.nt1",   M2, OpMXX6aHint (4, 0, 1, 0x2c, 1), {R1, AR_CSD, MR3}, EMPTY},
-    {"ld16.acq.nt1",   M, OpMXX6aHint (4, 0, 1, 0x2c, 1), {R1, MR3}, PSEUDO, 0, NULL},
-    {"ld16.acq.nta",   M2, OpMXX6aHint (4, 0, 1, 0x2c, 3), {R1, AR_CSD, MR3}, EMPTY},
-    {"ld16.acq.nta",   M, OpMXX6aHint (4, 0, 1, 0x2c, 3), {R1, MR3}, PSEUDO, 0, NULL},
-    {"ld8.fill",       M, OpMXX6aHint (4, 0, 0, 0x1b, 0), {R1, MR3}, EMPTY},
-    {"ld8.fill.nt1",   M, OpMXX6aHint (4, 0, 0, 0x1b, 1), {R1, MR3}, EMPTY},
-    {"ld8.fill.nta",   M, OpMXX6aHint (4, 0, 0, 0x1b, 3), {R1, MR3}, EMPTY},
-    {"ld1.c.clr",      M, OpMXX6aHint (4, 0, 0, 0x20, 0), {R1, MR3}, EMPTY},
-    {"ld1.c.clr.nt1",  M, OpMXX6aHint (4, 0, 0, 0x20, 1), {R1, MR3}, EMPTY},
-    {"ld1.c.clr.nta",  M, OpMXX6aHint (4, 0, 0, 0x20, 3), {R1, MR3}, EMPTY},
-    {"ld2.c.clr",      M, OpMXX6aHint (4, 0, 0, 0x21, 0), {R1, MR3}, EMPTY},
-    {"ld2.c.clr.nt1",  M, OpMXX6aHint (4, 0, 0, 0x21, 1), {R1, MR3}, EMPTY},
-    {"ld2.c.clr.nta",  M, OpMXX6aHint (4, 0, 0, 0x21, 3), {R1, MR3}, EMPTY},
-    {"ld4.c.clr",      M, OpMXX6aHint (4, 0, 0, 0x22, 0), {R1, MR3}, EMPTY},
-    {"ld4.c.clr.nt1",  M, OpMXX6aHint (4, 0, 0, 0x22, 1), {R1, MR3}, EMPTY},
-    {"ld4.c.clr.nta",  M, OpMXX6aHint (4, 0, 0, 0x22, 3), {R1, MR3}, EMPTY},
-    {"ld8.c.clr",      M, OpMXX6aHint (4, 0, 0, 0x23, 0), {R1, MR3}, EMPTY},
-    {"ld8.c.clr.nt1",  M, OpMXX6aHint (4, 0, 0, 0x23, 1), {R1, MR3}, EMPTY},
-    {"ld8.c.clr.nta",  M, OpMXX6aHint (4, 0, 0, 0x23, 3), {R1, MR3}, EMPTY},
-    {"ld1.c.nc",       M, OpMXX6aHint (4, 0, 0, 0x24, 0), {R1, MR3}, EMPTY},
-    {"ld1.c.nc.nt1",   M, OpMXX6aHint (4, 0, 0, 0x24, 1), {R1, MR3}, EMPTY},
-    {"ld1.c.nc.nta",   M, OpMXX6aHint (4, 0, 0, 0x24, 3), {R1, MR3}, EMPTY},
-    {"ld2.c.nc",       M, OpMXX6aHint (4, 0, 0, 0x25, 0), {R1, MR3}, EMPTY},
-    {"ld2.c.nc.nt1",   M, OpMXX6aHint (4, 0, 0, 0x25, 1), {R1, MR3}, EMPTY},
-    {"ld2.c.nc.nta",   M, OpMXX6aHint (4, 0, 0, 0x25, 3), {R1, MR3}, EMPTY},
-    {"ld4.c.nc",       M, OpMXX6aHint (4, 0, 0, 0x26, 0), {R1, MR3}, EMPTY},
-    {"ld4.c.nc.nt1",   M, OpMXX6aHint (4, 0, 0, 0x26, 1), {R1, MR3}, EMPTY},
-    {"ld4.c.nc.nta",   M, OpMXX6aHint (4, 0, 0, 0x26, 3), {R1, MR3}, EMPTY},
-    {"ld8.c.nc",       M, OpMXX6aHint (4, 0, 0, 0x27, 0), {R1, MR3}, EMPTY},
-    {"ld8.c.nc.nt1",   M, OpMXX6aHint (4, 0, 0, 0x27, 1), {R1, MR3}, EMPTY},
-    {"ld8.c.nc.nta",   M, OpMXX6aHint (4, 0, 0, 0x27, 3), {R1, MR3}, EMPTY},
-    {"ld1.c.clr.acq",    M, OpMXX6aHint (4, 0, 0, 0x28, 0), {R1, MR3}, EMPTY},
-    {"ld1.c.clr.acq.nt1", M, OpMXX6aHint (4, 0, 0, 0x28, 1), {R1, MR3}, EMPTY},
-    {"ld1.c.clr.acq.nta", M, OpMXX6aHint (4, 0, 0, 0x28, 3), {R1, MR3}, EMPTY},
-    {"ld2.c.clr.acq",    M, OpMXX6aHint (4, 0, 0, 0x29, 0), {R1, MR3}, EMPTY},
-    {"ld2.c.clr.acq.nt1", M, OpMXX6aHint (4, 0, 0, 0x29, 1), {R1, MR3}, EMPTY},
-    {"ld2.c.clr.acq.nta", M, OpMXX6aHint (4, 0, 0, 0x29, 3), {R1, MR3}, EMPTY},
-    {"ld4.c.clr.acq",    M, OpMXX6aHint (4, 0, 0, 0x2a, 0), {R1, MR3}, EMPTY},
-    {"ld4.c.clr.acq.nt1", M, OpMXX6aHint (4, 0, 0, 0x2a, 1), {R1, MR3}, EMPTY},
-    {"ld4.c.clr.acq.nta", M, OpMXX6aHint (4, 0, 0, 0x2a, 3), {R1, MR3}, EMPTY},
-    {"ld8.c.clr.acq",    M, OpMXX6aHint (4, 0, 0, 0x2b, 0), {R1, MR3}, EMPTY},
-    {"ld8.c.clr.acq.nt1", M, OpMXX6aHint (4, 0, 0, 0x2b, 1), {R1, MR3}, EMPTY},
-    {"ld8.c.clr.acq.nta", M, OpMXX6aHint (4, 0, 0, 0x2b, 3), {R1, MR3}, EMPTY},
-
-    /* Pseudo-op that generates ldxmov relocation.  */
-    {"ld8.mov",                M, OpMXX6aHint (4, 0, 0, 0x03, 0),
-     {R1, MR3, IA64_OPND_LDXMOV}, EMPTY},
-
-    /* Integer load w/increment by register.  */
-#define LDINCREG(c,h) M, OpMXX6aHint (4, 1, 0, c, h), {R1, MR3, R2}, POSTINC, 0, NULL
-    {"ld1",            LDINCREG (0x00, 0)},
-    {"ld1.nt1",                LDINCREG (0x00, 1)},
-    {"ld1.nta",                LDINCREG (0x00, 3)},
-    {"ld2",            LDINCREG (0x01, 0)},
-    {"ld2.nt1",                LDINCREG (0x01, 1)},
-    {"ld2.nta",                LDINCREG (0x01, 3)},
-    {"ld4",            LDINCREG (0x02, 0)},
-    {"ld4.nt1",                LDINCREG (0x02, 1)},
-    {"ld4.nta",                LDINCREG (0x02, 3)},
-    {"ld8",            LDINCREG (0x03, 0)},
-    {"ld8.nt1",                LDINCREG (0x03, 1)},
-    {"ld8.nta",                LDINCREG (0x03, 3)},
-    {"ld1.s",          LDINCREG (0x04, 0)},
-    {"ld1.s.nt1",      LDINCREG (0x04, 1)},
-    {"ld1.s.nta",      LDINCREG (0x04, 3)},
-    {"ld2.s",          LDINCREG (0x05, 0)},
-    {"ld2.s.nt1",      LDINCREG (0x05, 1)},
-    {"ld2.s.nta",      LDINCREG (0x05, 3)},
-    {"ld4.s",          LDINCREG (0x06, 0)},
-    {"ld4.s.nt1",      LDINCREG (0x06, 1)},
-    {"ld4.s.nta",      LDINCREG (0x06, 3)},
-    {"ld8.s",          LDINCREG (0x07, 0)},
-    {"ld8.s.nt1",      LDINCREG (0x07, 1)},
-    {"ld8.s.nta",      LDINCREG (0x07, 3)},
-    {"ld1.a",          LDINCREG (0x08, 0)},
-    {"ld1.a.nt1",      LDINCREG (0x08, 1)},
-    {"ld1.a.nta",      LDINCREG (0x08, 3)},
-    {"ld2.a",          LDINCREG (0x09, 0)},
-    {"ld2.a.nt1",      LDINCREG (0x09, 1)},
-    {"ld2.a.nta",      LDINCREG (0x09, 3)},
-    {"ld4.a",          LDINCREG (0x0a, 0)},
-    {"ld4.a.nt1",      LDINCREG (0x0a, 1)},
-    {"ld4.a.nta",      LDINCREG (0x0a, 3)},
-    {"ld8.a",          LDINCREG (0x0b, 0)},
-    {"ld8.a.nt1",      LDINCREG (0x0b, 1)},
-    {"ld8.a.nta",      LDINCREG (0x0b, 3)},
-    {"ld1.sa",         LDINCREG (0x0c, 0)},
-    {"ld1.sa.nt1",     LDINCREG (0x0c, 1)},
-    {"ld1.sa.nta",     LDINCREG (0x0c, 3)},
-    {"ld2.sa",         LDINCREG (0x0d, 0)},
-    {"ld2.sa.nt1",     LDINCREG (0x0d, 1)},
-    {"ld2.sa.nta",     LDINCREG (0x0d, 3)},
-    {"ld4.sa",         LDINCREG (0x0e, 0)},
-    {"ld4.sa.nt1",     LDINCREG (0x0e, 1)},
-    {"ld4.sa.nta",     LDINCREG (0x0e, 3)},
-    {"ld8.sa",         LDINCREG (0x0f, 0)},
-    {"ld8.sa.nt1",     LDINCREG (0x0f, 1)},
-    {"ld8.sa.nta",     LDINCREG (0x0f, 3)},
-    {"ld1.bias",       LDINCREG (0x10, 0)},
-    {"ld1.bias.nt1",   LDINCREG (0x10, 1)},
-    {"ld1.bias.nta",   LDINCREG (0x10, 3)},
-    {"ld2.bias",       LDINCREG (0x11, 0)},
-    {"ld2.bias.nt1",   LDINCREG (0x11, 1)},
-    {"ld2.bias.nta",   LDINCREG (0x11, 3)},
-    {"ld4.bias",       LDINCREG (0x12, 0)},
-    {"ld4.bias.nt1",   LDINCREG (0x12, 1)},
-    {"ld4.bias.nta",   LDINCREG (0x12, 3)},
-    {"ld8.bias",       LDINCREG (0x13, 0)},
-    {"ld8.bias.nt1",   LDINCREG (0x13, 1)},
-    {"ld8.bias.nta",   LDINCREG (0x13, 3)},
-    {"ld1.acq",                LDINCREG (0x14, 0)},
-    {"ld1.acq.nt1",    LDINCREG (0x14, 1)},
-    {"ld1.acq.nta",    LDINCREG (0x14, 3)},
-    {"ld2.acq",                LDINCREG (0x15, 0)},
-    {"ld2.acq.nt1",    LDINCREG (0x15, 1)},
-    {"ld2.acq.nta",    LDINCREG (0x15, 3)},
-    {"ld4.acq",                LDINCREG (0x16, 0)},
-    {"ld4.acq.nt1",    LDINCREG (0x16, 1)},
-    {"ld4.acq.nta",    LDINCREG (0x16, 3)},
-    {"ld8.acq",                LDINCREG (0x17, 0)},
-    {"ld8.acq.nt1",    LDINCREG (0x17, 1)},
-    {"ld8.acq.nta",    LDINCREG (0x17, 3)},
-    {"ld8.fill",       LDINCREG (0x1b, 0)},
-    {"ld8.fill.nt1",   LDINCREG (0x1b, 1)},
-    {"ld8.fill.nta",   LDINCREG (0x1b, 3)},
-    {"ld1.c.clr",      LDINCREG (0x20, 0)},
-    {"ld1.c.clr.nt1",  LDINCREG (0x20, 1)},
-    {"ld1.c.clr.nta",  LDINCREG (0x20, 3)},
-    {"ld2.c.clr",      LDINCREG (0x21, 0)},
-    {"ld2.c.clr.nt1",  LDINCREG (0x21, 1)},
-    {"ld2.c.clr.nta",  LDINCREG (0x21, 3)},
-    {"ld4.c.clr",      LDINCREG (0x22, 0)},
-    {"ld4.c.clr.nt1",  LDINCREG (0x22, 1)},
-    {"ld4.c.clr.nta",  LDINCREG (0x22, 3)},
-    {"ld8.c.clr",      LDINCREG (0x23, 0)},
-    {"ld8.c.clr.nt1",  LDINCREG (0x23, 1)},
-    {"ld8.c.clr.nta",  LDINCREG (0x23, 3)},
-    {"ld1.c.nc",       LDINCREG (0x24, 0)},
-    {"ld1.c.nc.nt1",   LDINCREG (0x24, 1)},
-    {"ld1.c.nc.nta",   LDINCREG (0x24, 3)},
-    {"ld2.c.nc",       LDINCREG (0x25, 0)},
-    {"ld2.c.nc.nt1",   LDINCREG (0x25, 1)},
-    {"ld2.c.nc.nta",   LDINCREG (0x25, 3)},
-    {"ld4.c.nc",       LDINCREG (0x26, 0)},
-    {"ld4.c.nc.nt1",   LDINCREG (0x26, 1)},
-    {"ld4.c.nc.nta",   LDINCREG (0x26, 3)},
-    {"ld8.c.nc",       LDINCREG (0x27, 0)},
-    {"ld8.c.nc.nt1",   LDINCREG (0x27, 1)},
-    {"ld8.c.nc.nta",   LDINCREG (0x27, 3)},
-    {"ld1.c.clr.acq",    LDINCREG (0x28, 0)},
-    {"ld1.c.clr.acq.nt1", LDINCREG (0x28, 1)},
-    {"ld1.c.clr.acq.nta", LDINCREG (0x28, 3)},
-    {"ld2.c.clr.acq",    LDINCREG (0x29, 0)},
-    {"ld2.c.clr.acq.nt1", LDINCREG (0x29, 1)},
-    {"ld2.c.clr.acq.nta", LDINCREG (0x29, 3)},
-    {"ld4.c.clr.acq",    LDINCREG (0x2a, 0)},
-    {"ld4.c.clr.acq.nt1", LDINCREG (0x2a, 1)},
-    {"ld4.c.clr.acq.nta", LDINCREG (0x2a, 3)},
-    {"ld8.c.clr.acq",    LDINCREG (0x2b, 0)},
-    {"ld8.c.clr.acq.nt1", LDINCREG (0x2b, 1)},
-    {"ld8.c.clr.acq.nta", LDINCREG (0x2b, 3)},
-#undef LDINCREG
-
-    {"st1",            M, OpMXX6aHint (4, 0, 0, 0x30, 0), {MR3, R2}, EMPTY},
-    {"st1.nta",                M, OpMXX6aHint (4, 0, 0, 0x30, 3), {MR3, R2}, EMPTY},
-    {"st2",            M, OpMXX6aHint (4, 0, 0, 0x31, 0), {MR3, R2}, EMPTY},
-    {"st2.nta",                M, OpMXX6aHint (4, 0, 0, 0x31, 3), {MR3, R2}, EMPTY},
-    {"st4",            M, OpMXX6aHint (4, 0, 0, 0x32, 0), {MR3, R2}, EMPTY},
-    {"st4.nta",                M, OpMXX6aHint (4, 0, 0, 0x32, 3), {MR3, R2}, EMPTY},
-    {"st8",            M, OpMXX6aHint (4, 0, 0, 0x33, 0), {MR3, R2}, EMPTY},
-    {"st8.nta",                M, OpMXX6aHint (4, 0, 0, 0x33, 3), {MR3, R2}, EMPTY},
-    {"st16",           M, OpMXX6aHint (4, 0, 1, 0x30, 0), {MR3, R2, AR_CSD}, EMPTY},
-    {"st16",           M, OpMXX6aHint (4, 0, 1, 0x30, 0), {MR3, R2}, PSEUDO, 0, NULL},
-    {"st16.nta",       M, OpMXX6aHint (4, 0, 1, 0x30, 3), {MR3, R2, AR_CSD}, EMPTY},
-    {"st16.nta",       M, OpMXX6aHint (4, 0, 1, 0x30, 3), {MR3, R2}, PSEUDO, 0, NULL},
-    {"st1.rel",                M, OpMXX6aHint (4, 0, 0, 0x34, 0), {MR3, R2}, EMPTY},
-    {"st1.rel.nta",    M, OpMXX6aHint (4, 0, 0, 0x34, 3), {MR3, R2}, EMPTY},
-    {"st2.rel",                M, OpMXX6aHint (4, 0, 0, 0x35, 0), {MR3, R2}, EMPTY},
-    {"st2.rel.nta",    M, OpMXX6aHint (4, 0, 0, 0x35, 3), {MR3, R2}, EMPTY},
-    {"st4.rel",                M, OpMXX6aHint (4, 0, 0, 0x36, 0), {MR3, R2}, EMPTY},
-    {"st4.rel.nta",    M, OpMXX6aHint (4, 0, 0, 0x36, 3), {MR3, R2}, EMPTY},
-    {"st8.rel",                M, OpMXX6aHint (4, 0, 0, 0x37, 0), {MR3, R2}, EMPTY},
-    {"st8.rel.nta",    M, OpMXX6aHint (4, 0, 0, 0x37, 3), {MR3, R2}, EMPTY},
-    {"st16.rel",       M, OpMXX6aHint (4, 0, 1, 0x34, 0), {MR3, R2, AR_CSD}, EMPTY},
-    {"st16.rel",       M, OpMXX6aHint (4, 0, 1, 0x34, 0), {MR3, R2}, PSEUDO, 0, NULL},
-    {"st16.rel.nta",   M, OpMXX6aHint (4, 0, 1, 0x34, 3), {MR3, R2, AR_CSD}, EMPTY},
-    {"st16.rel.nta",   M, OpMXX6aHint (4, 0, 1, 0x34, 3), {MR3, R2}, PSEUDO, 0, NULL},
-    {"st8.spill",      M, OpMXX6aHint (4, 0, 0, 0x3b, 0), {MR3, R2}, EMPTY},
-    {"st8.spill.nta",  M, OpMXX6aHint (4, 0, 0, 0x3b, 3), {MR3, R2}, EMPTY},
-
-#define CMPXCHG(c,h)   M, OpMXX6aHint (4, 0, 1, c, h), {R1, MR3, R2, AR_CCV}, EMPTY
-#define CMPXCHG_P(c,h) M, OpMXX6aHint (4, 0, 1, c, h), {R1, MR3, R2}, PSEUDO, 0, NULL
-#define CMPXCHG16(c,h) M, OpMXX6aHint (4, 0, 1, c, h), {R1, MR3, R2, AR_CSD, AR_CCV}, EMPTY
-#define CMPXCHG16_P(c,h) M, OpMXX6aHint (4, 0, 1, c, h), {R1, MR3, R2}, PSEUDO, 0, NULL
-#define CMPXCHG_acq 0
-#define CMPXCHG_rel 4
-#define CMPXCHG_1 0
-#define CMPXCHG_2 1
-#define CMPXCHG_4 2
-#define CMPXCHG_8 3
-#define CMPXCHGn(n, s) \
-    {"cmpxchg"#n"."#s,       CMPXCHG   (CMPXCHG_##n|CMPXCHG_##s, 0)}, \
-    {"cmpxchg"#n"."#s,       CMPXCHG_P (CMPXCHG_##n|CMPXCHG_##s, 0)}, \
-    {"cmpxchg"#n"."#s".nt1", CMPXCHG   (CMPXCHG_##n|CMPXCHG_##s, 1)}, \
-    {"cmpxchg"#n"."#s".nt1", CMPXCHG_P (CMPXCHG_##n|CMPXCHG_##s, 1)}, \
-    {"cmpxchg"#n"."#s".nta", CMPXCHG   (CMPXCHG_##n|CMPXCHG_##s, 3)}, \
-    {"cmpxchg"#n"."#s".nta", CMPXCHG_P (CMPXCHG_##n|CMPXCHG_##s, 3)}
-#define CMP8XCHG16(s) \
-    {"cmp8xchg16."#s,       CMPXCHG16   (0x20|CMPXCHG_##s, 0)}, \
-    {"cmp8xchg16."#s,       CMPXCHG16_P (0x20|CMPXCHG_##s, 0)}, \
-    {"cmp8xchg16."#s".nt1", CMPXCHG16   (0x20|CMPXCHG_##s, 1)}, \
-    {"cmp8xchg16."#s".nt1", CMPXCHG16_P (0x20|CMPXCHG_##s, 1)}, \
-    {"cmp8xchg16."#s".nta", CMPXCHG16   (0x20|CMPXCHG_##s, 3)}, \
-    {"cmp8xchg16."#s".nta", CMPXCHG16_P (0x20|CMPXCHG_##s, 3)}
-#define CMPXCHG_ALL(s) CMPXCHGn(1, s), \
-                       CMPXCHGn(2, s), \
-                       CMPXCHGn(4, s), \
-                       CMPXCHGn(8, s), \
-                       CMP8XCHG16(s)
-    CMPXCHG_ALL(acq),
-    CMPXCHG_ALL(rel),
-#undef CMPXCHG
-#undef CMPXCHG_P
-#undef CMPXCHG16
-#undef CMPXCHG16_P
-#undef CMPXCHG_acq
-#undef CMPXCHG_rel
-#undef CMPXCHG_1
-#undef CMPXCHG_2
-#undef CMPXCHG_4
-#undef CMPXCHG_8
-#undef CMPXCHGn
-#undef CMPXCHG16
-#undef CMPXCHG_ALL
-    {"xchg1",            M, OpMXX6aHint (4, 0, 1, 0x08, 0), {R1, MR3, R2}, EMPTY},
-    {"xchg1.nt1",        M, OpMXX6aHint (4, 0, 1, 0x08, 1), {R1, MR3, R2}, EMPTY},
-    {"xchg1.nta",        M, OpMXX6aHint (4, 0, 1, 0x08, 3), {R1, MR3, R2}, EMPTY},
-    {"xchg2",            M, OpMXX6aHint (4, 0, 1, 0x09, 0), {R1, MR3, R2}, EMPTY},
-    {"xchg2.nt1",        M, OpMXX6aHint (4, 0, 1, 0x09, 1), {R1, MR3, R2}, EMPTY},
-    {"xchg2.nta",        M, OpMXX6aHint (4, 0, 1, 0x09, 3), {R1, MR3, R2}, EMPTY},
-    {"xchg4",            M, OpMXX6aHint (4, 0, 1, 0x0a, 0), {R1, MR3, R2}, EMPTY},
-    {"xchg4.nt1",        M, OpMXX6aHint (4, 0, 1, 0x0a, 1), {R1, MR3, R2}, EMPTY},
-    {"xchg4.nta",        M, OpMXX6aHint (4, 0, 1, 0x0a, 3), {R1, MR3, R2}, EMPTY},
-    {"xchg8",            M, OpMXX6aHint (4, 0, 1, 0x0b, 0), {R1, MR3, R2}, EMPTY},
-    {"xchg8.nt1",        M, OpMXX6aHint (4, 0, 1, 0x0b, 1), {R1, MR3, R2}, EMPTY},
-    {"xchg8.nta",        M, OpMXX6aHint (4, 0, 1, 0x0b, 3), {R1, MR3, R2}, EMPTY},
-
-    {"fetchadd4.acq",    M, OpMXX6aHint (4, 0, 1, 0x12, 0), {R1, MR3, INC3}, EMPTY},
-    {"fetchadd4.acq.nt1", M, OpMXX6aHint (4, 0, 1, 0x12, 1), {R1, MR3, INC3}, EMPTY},
-    {"fetchadd4.acq.nta", M, OpMXX6aHint (4, 0, 1, 0x12, 3), {R1, MR3, INC3}, EMPTY},
-    {"fetchadd8.acq",    M, OpMXX6aHint (4, 0, 1, 0x13, 0), {R1, MR3, INC3}, EMPTY},
-    {"fetchadd8.acq.nt1", M, OpMXX6aHint (4, 0, 1, 0x13, 1), {R1, MR3, INC3}, EMPTY},
-    {"fetchadd8.acq.nta", M, OpMXX6aHint (4, 0, 1, 0x13, 3), {R1, MR3, INC3}, EMPTY},
-    {"fetchadd4.rel",    M, OpMXX6aHint (4, 0, 1, 0x16, 0), {R1, MR3, INC3}, EMPTY},
-    {"fetchadd4.rel.nt1", M, OpMXX6aHint (4, 0, 1, 0x16, 1), {R1, MR3, INC3}, EMPTY},
-    {"fetchadd4.rel.nta", M, OpMXX6aHint (4, 0, 1, 0x16, 3), {R1, MR3, INC3}, EMPTY},
-    {"fetchadd8.rel",    M, OpMXX6aHint (4, 0, 1, 0x17, 0), {R1, MR3, INC3}, EMPTY},
-    {"fetchadd8.rel.nt1", M, OpMXX6aHint (4, 0, 1, 0x17, 1), {R1, MR3, INC3}, EMPTY},
-    {"fetchadd8.rel.nta", M, OpMXX6aHint (4, 0, 1, 0x17, 3), {R1, MR3, INC3}, EMPTY},
-
-    {"getf.sig",         M, OpMXX6a (4, 0, 1, 0x1c), {R1, F2}, EMPTY},
-    {"getf.exp",         M, OpMXX6a (4, 0, 1, 0x1d), {R1, F2}, EMPTY},
-    {"getf.s",           M, OpMXX6a (4, 0, 1, 0x1e), {R1, F2}, EMPTY},
-    {"getf.d",           M, OpMXX6a (4, 0, 1, 0x1f), {R1, F2}, EMPTY},
-
-    /* Integer load w/increment by immediate.  */
-#define LDINCIMMED(c,h) M, OpX6aHint (5, c, h), {R1, MR3, IMM9b}, POSTINC, 0, NULL
-    {"ld1",            LDINCIMMED (0x00, 0)},
-    {"ld1.nt1",                LDINCIMMED (0x00, 1)},
-    {"ld1.nta",                LDINCIMMED (0x00, 3)},
-    {"ld2",            LDINCIMMED (0x01, 0)},
-    {"ld2.nt1",                LDINCIMMED (0x01, 1)},
-    {"ld2.nta",                LDINCIMMED (0x01, 3)},
-    {"ld4",            LDINCIMMED (0x02, 0)},
-    {"ld4.nt1",                LDINCIMMED (0x02, 1)},
-    {"ld4.nta",                LDINCIMMED (0x02, 3)},
-    {"ld8",            LDINCIMMED (0x03, 0)},
-    {"ld8.nt1",                LDINCIMMED (0x03, 1)},
-    {"ld8.nta",                LDINCIMMED (0x03, 3)},
-    {"ld1.s",          LDINCIMMED (0x04, 0)},
-    {"ld1.s.nt1",      LDINCIMMED (0x04, 1)},
-    {"ld1.s.nta",      LDINCIMMED (0x04, 3)},
-    {"ld2.s",          LDINCIMMED (0x05, 0)},
-    {"ld2.s.nt1",      LDINCIMMED (0x05, 1)},
-    {"ld2.s.nta",      LDINCIMMED (0x05, 3)},
-    {"ld4.s",          LDINCIMMED (0x06, 0)},
-    {"ld4.s.nt1",      LDINCIMMED (0x06, 1)},
-    {"ld4.s.nta",      LDINCIMMED (0x06, 3)},
-    {"ld8.s",          LDINCIMMED (0x07, 0)},
-    {"ld8.s.nt1",      LDINCIMMED (0x07, 1)},
-    {"ld8.s.nta",      LDINCIMMED (0x07, 3)},
-    {"ld1.a",          LDINCIMMED (0x08, 0)},
-    {"ld1.a.nt1",      LDINCIMMED (0x08, 1)},
-    {"ld1.a.nta",      LDINCIMMED (0x08, 3)},
-    {"ld2.a",          LDINCIMMED (0x09, 0)},
-    {"ld2.a.nt1",      LDINCIMMED (0x09, 1)},
-    {"ld2.a.nta",      LDINCIMMED (0x09, 3)},
-    {"ld4.a",          LDINCIMMED (0x0a, 0)},
-    {"ld4.a.nt1",      LDINCIMMED (0x0a, 1)},
-    {"ld4.a.nta",      LDINCIMMED (0x0a, 3)},
-    {"ld8.a",          LDINCIMMED (0x0b, 0)},
-    {"ld8.a.nt1",      LDINCIMMED (0x0b, 1)},
-    {"ld8.a.nta",      LDINCIMMED (0x0b, 3)},
-    {"ld1.sa",         LDINCIMMED (0x0c, 0)},
-    {"ld1.sa.nt1",     LDINCIMMED (0x0c, 1)},
-    {"ld1.sa.nta",     LDINCIMMED (0x0c, 3)},
-    {"ld2.sa",         LDINCIMMED (0x0d, 0)},
-    {"ld2.sa.nt1",     LDINCIMMED (0x0d, 1)},
-    {"ld2.sa.nta",     LDINCIMMED (0x0d, 3)},
-    {"ld4.sa",         LDINCIMMED (0x0e, 0)},
-    {"ld4.sa.nt1",     LDINCIMMED (0x0e, 1)},
-    {"ld4.sa.nta",     LDINCIMMED (0x0e, 3)},
-    {"ld8.sa",         LDINCIMMED (0x0f, 0)},
-    {"ld8.sa.nt1",     LDINCIMMED (0x0f, 1)},
-    {"ld8.sa.nta",     LDINCIMMED (0x0f, 3)},
-    {"ld1.bias",       LDINCIMMED (0x10, 0)},
-    {"ld1.bias.nt1",   LDINCIMMED (0x10, 1)},
-    {"ld1.bias.nta",   LDINCIMMED (0x10, 3)},
-    {"ld2.bias",       LDINCIMMED (0x11, 0)},
-    {"ld2.bias.nt1",   LDINCIMMED (0x11, 1)},
-    {"ld2.bias.nta",   LDINCIMMED (0x11, 3)},
-    {"ld4.bias",       LDINCIMMED (0x12, 0)},
-    {"ld4.bias.nt1",   LDINCIMMED (0x12, 1)},
-    {"ld4.bias.nta",   LDINCIMMED (0x12, 3)},
-    {"ld8.bias",       LDINCIMMED (0x13, 0)},
-    {"ld8.bias.nt1",   LDINCIMMED (0x13, 1)},
-    {"ld8.bias.nta",   LDINCIMMED (0x13, 3)},
-    {"ld1.acq",                LDINCIMMED (0x14, 0)},
-    {"ld1.acq.nt1",    LDINCIMMED (0x14, 1)},
-    {"ld1.acq.nta",    LDINCIMMED (0x14, 3)},
-    {"ld2.acq",                LDINCIMMED (0x15, 0)},
-    {"ld2.acq.nt1",    LDINCIMMED (0x15, 1)},
-    {"ld2.acq.nta",    LDINCIMMED (0x15, 3)},
-    {"ld4.acq",                LDINCIMMED (0x16, 0)},
-    {"ld4.acq.nt1",    LDINCIMMED (0x16, 1)},
-    {"ld4.acq.nta",    LDINCIMMED (0x16, 3)},
-    {"ld8.acq",                LDINCIMMED (0x17, 0)},
-    {"ld8.acq.nt1",    LDINCIMMED (0x17, 1)},
-    {"ld8.acq.nta",    LDINCIMMED (0x17, 3)},
-    {"ld8.fill",       LDINCIMMED (0x1b, 0)},
-    {"ld8.fill.nt1",   LDINCIMMED (0x1b, 1)},
-    {"ld8.fill.nta",   LDINCIMMED (0x1b, 3)},
-    {"ld1.c.clr",      LDINCIMMED (0x20, 0)},
-    {"ld1.c.clr.nt1",  LDINCIMMED (0x20, 1)},
-    {"ld1.c.clr.nta",  LDINCIMMED (0x20, 3)},
-    {"ld2.c.clr",      LDINCIMMED (0x21, 0)},
-    {"ld2.c.clr.nt1",  LDINCIMMED (0x21, 1)},
-    {"ld2.c.clr.nta",  LDINCIMMED (0x21, 3)},
-    {"ld4.c.clr",      LDINCIMMED (0x22, 0)},
-    {"ld4.c.clr.nt1",  LDINCIMMED (0x22, 1)},
-    {"ld4.c.clr.nta",  LDINCIMMED (0x22, 3)},
-    {"ld8.c.clr",      LDINCIMMED (0x23, 0)},
-    {"ld8.c.clr.nt1",  LDINCIMMED (0x23, 1)},
-    {"ld8.c.clr.nta",  LDINCIMMED (0x23, 3)},
-    {"ld1.c.nc",       LDINCIMMED (0x24, 0)},
-    {"ld1.c.nc.nt1",   LDINCIMMED (0x24, 1)},
-    {"ld1.c.nc.nta",   LDINCIMMED (0x24, 3)},
-    {"ld2.c.nc",       LDINCIMMED (0x25, 0)},
-    {"ld2.c.nc.nt1",   LDINCIMMED (0x25, 1)},
-    {"ld2.c.nc.nta",   LDINCIMMED (0x25, 3)},
-    {"ld4.c.nc",       LDINCIMMED (0x26, 0)},
-    {"ld4.c.nc.nt1",   LDINCIMMED (0x26, 1)},
-    {"ld4.c.nc.nta",   LDINCIMMED (0x26, 3)},
-    {"ld8.c.nc",       LDINCIMMED (0x27, 0)},
-    {"ld8.c.nc.nt1",   LDINCIMMED (0x27, 1)},
-    {"ld8.c.nc.nta",   LDINCIMMED (0x27, 3)},
-    {"ld1.c.clr.acq",    LDINCIMMED (0x28, 0)},
-    {"ld1.c.clr.acq.nt1", LDINCIMMED (0x28, 1)},
-    {"ld1.c.clr.acq.nta", LDINCIMMED (0x28, 3)},
-    {"ld2.c.clr.acq",    LDINCIMMED (0x29, 0)},
-    {"ld2.c.clr.acq.nt1", LDINCIMMED (0x29, 1)},
-    {"ld2.c.clr.acq.nta", LDINCIMMED (0x29, 3)},
-    {"ld4.c.clr.acq",    LDINCIMMED (0x2a, 0)},
-    {"ld4.c.clr.acq.nt1", LDINCIMMED (0x2a, 1)},
-    {"ld4.c.clr.acq.nta", LDINCIMMED (0x2a, 3)},
-    {"ld8.c.clr.acq",    LDINCIMMED (0x2b, 0)},
-    {"ld8.c.clr.acq.nt1", LDINCIMMED (0x2b, 1)},
-    {"ld8.c.clr.acq.nta", LDINCIMMED (0x2b, 3)},
-#undef LDINCIMMED
-
-    /* Store w/increment by immediate.  */
-#define STINCIMMED(c,h) M, OpX6aHint (5, c, h), {MR3, R2, IMM9a}, POSTINC, 0, NULL
-    {"st1",            STINCIMMED (0x30, 0)},
-    {"st1.nta",                STINCIMMED (0x30, 3)},
-    {"st2",            STINCIMMED (0x31, 0)},
-    {"st2.nta",                STINCIMMED (0x31, 3)},
-    {"st4",            STINCIMMED (0x32, 0)},
-    {"st4.nta",                STINCIMMED (0x32, 3)},
-    {"st8",            STINCIMMED (0x33, 0)},
-    {"st8.nta",                STINCIMMED (0x33, 3)},
-    {"st1.rel",                STINCIMMED (0x34, 0)},
-    {"st1.rel.nta",    STINCIMMED (0x34, 3)},
-    {"st2.rel",                STINCIMMED (0x35, 0)},
-    {"st2.rel.nta",    STINCIMMED (0x35, 3)},
-    {"st4.rel",                STINCIMMED (0x36, 0)},
-    {"st4.rel.nta",    STINCIMMED (0x36, 3)},
-    {"st8.rel",                STINCIMMED (0x37, 0)},
-    {"st8.rel.nta",    STINCIMMED (0x37, 3)},
-    {"st8.spill",      STINCIMMED (0x3b, 0)},
-    {"st8.spill.nta",  STINCIMMED (0x3b, 3)},
-#undef STINCIMMED
-
-    /* Floating-point load.  */
-    {"ldfs",           M, OpMXX6aHint (6, 0, 0, 0x02, 0), {F1, MR3}, EMPTY},
-    {"ldfs.nt1",       M, OpMXX6aHint (6, 0, 0, 0x02, 1), {F1, MR3}, EMPTY},
-    {"ldfs.nta",       M, OpMXX6aHint (6, 0, 0, 0x02, 3), {F1, MR3}, EMPTY},
-    {"ldfd",           M, OpMXX6aHint (6, 0, 0, 0x03, 0), {F1, MR3}, EMPTY},
-    {"ldfd.nt1",       M, OpMXX6aHint (6, 0, 0, 0x03, 1), {F1, MR3}, EMPTY},
-    {"ldfd.nta",       M, OpMXX6aHint (6, 0, 0, 0x03, 3), {F1, MR3}, EMPTY},
-    {"ldf8",           M, OpMXX6aHint (6, 0, 0, 0x01, 0), {F1, MR3}, EMPTY},
-    {"ldf8.nt1",       M, OpMXX6aHint (6, 0, 0, 0x01, 1), {F1, MR3}, EMPTY},
-    {"ldf8.nta",       M, OpMXX6aHint (6, 0, 0, 0x01, 3), {F1, MR3}, EMPTY},
-    {"ldfe",           M, OpMXX6aHint (6, 0, 0, 0x00, 0), {F1, MR3}, EMPTY},
-    {"ldfe.nt1",       M, OpMXX6aHint (6, 0, 0, 0x00, 1), {F1, MR3}, EMPTY},
-    {"ldfe.nta",       M, OpMXX6aHint (6, 0, 0, 0x00, 3), {F1, MR3}, EMPTY},
-    {"ldfs.s",         M, OpMXX6aHint (6, 0, 0, 0x06, 0), {F1, MR3}, EMPTY},
-    {"ldfs.s.nt1",     M, OpMXX6aHint (6, 0, 0, 0x06, 1), {F1, MR3}, EMPTY},
-    {"ldfs.s.nta",     M, OpMXX6aHint (6, 0, 0, 0x06, 3), {F1, MR3}, EMPTY},
-    {"ldfd.s",         M, OpMXX6aHint (6, 0, 0, 0x07, 0), {F1, MR3}, EMPTY},
-    {"ldfd.s.nt1",     M, OpMXX6aHint (6, 0, 0, 0x07, 1), {F1, MR3}, EMPTY},
-    {"ldfd.s.nta",     M, OpMXX6aHint (6, 0, 0, 0x07, 3), {F1, MR3}, EMPTY},
-    {"ldf8.s",         M, OpMXX6aHint (6, 0, 0, 0x05, 0), {F1, MR3}, EMPTY},
-    {"ldf8.s.nt1",     M, OpMXX6aHint (6, 0, 0, 0x05, 1), {F1, MR3}, EMPTY},
-    {"ldf8.s.nta",     M, OpMXX6aHint (6, 0, 0, 0x05, 3), {F1, MR3}, EMPTY},
-    {"ldfe.s",         M, OpMXX6aHint (6, 0, 0, 0x04, 0), {F1, MR3}, EMPTY},
-    {"ldfe.s.nt1",     M, OpMXX6aHint (6, 0, 0, 0x04, 1), {F1, MR3}, EMPTY},
-    {"ldfe.s.nta",     M, OpMXX6aHint (6, 0, 0, 0x04, 3), {F1, MR3}, EMPTY},
-    {"ldfs.a",         M, OpMXX6aHint (6, 0, 0, 0x0a, 0), {F1, MR3}, EMPTY},
-    {"ldfs.a.nt1",     M, OpMXX6aHint (6, 0, 0, 0x0a, 1), {F1, MR3}, EMPTY},
-    {"ldfs.a.nta",     M, OpMXX6aHint (6, 0, 0, 0x0a, 3), {F1, MR3}, EMPTY},
-    {"ldfd.a",         M, OpMXX6aHint (6, 0, 0, 0x0b, 0), {F1, MR3}, EMPTY},
-    {"ldfd.a.nt1",     M, OpMXX6aHint (6, 0, 0, 0x0b, 1), {F1, MR3}, EMPTY},
-    {"ldfd.a.nta",     M, OpMXX6aHint (6, 0, 0, 0x0b, 3), {F1, MR3}, EMPTY},
-    {"ldf8.a",         M, OpMXX6aHint (6, 0, 0, 0x09, 0), {F1, MR3}, EMPTY},
-    {"ldf8.a.nt1",     M, OpMXX6aHint (6, 0, 0, 0x09, 1), {F1, MR3}, EMPTY},
-    {"ldf8.a.nta",     M, OpMXX6aHint (6, 0, 0, 0x09, 3), {F1, MR3}, EMPTY},
-    {"ldfe.a",         M, OpMXX6aHint (6, 0, 0, 0x08, 0), {F1, MR3}, EMPTY},
-    {"ldfe.a.nt1",     M, OpMXX6aHint (6, 0, 0, 0x08, 1), {F1, MR3}, EMPTY},
-    {"ldfe.a.nta",     M, OpMXX6aHint (6, 0, 0, 0x08, 3), {F1, MR3}, EMPTY},
-    {"ldfs.sa",                M, OpMXX6aHint (6, 0, 0, 0x0e, 0), {F1, MR3}, EMPTY},
-    {"ldfs.sa.nt1",    M, OpMXX6aHint (6, 0, 0, 0x0e, 1), {F1, MR3}, EMPTY},
-    {"ldfs.sa.nta",    M, OpMXX6aHint (6, 0, 0, 0x0e, 3), {F1, MR3}, EMPTY},
-    {"ldfd.sa",                M, OpMXX6aHint (6, 0, 0, 0x0f, 0), {F1, MR3}, EMPTY},
-    {"ldfd.sa.nt1",    M, OpMXX6aHint (6, 0, 0, 0x0f, 1), {F1, MR3}, EMPTY},
-    {"ldfd.sa.nta",    M, OpMXX6aHint (6, 0, 0, 0x0f, 3), {F1, MR3}, EMPTY},
-    {"ldf8.sa",                M, OpMXX6aHint (6, 0, 0, 0x0d, 0), {F1, MR3}, EMPTY},
-    {"ldf8.sa.nt1",    M, OpMXX6aHint (6, 0, 0, 0x0d, 1), {F1, MR3}, EMPTY},
-    {"ldf8.sa.nta",    M, OpMXX6aHint (6, 0, 0, 0x0d, 3), {F1, MR3}, EMPTY},
-    {"ldfe.sa",                M, OpMXX6aHint (6, 0, 0, 0x0c, 0), {F1, MR3}, EMPTY},
-    {"ldfe.sa.nt1",    M, OpMXX6aHint (6, 0, 0, 0x0c, 1), {F1, MR3}, EMPTY},
-    {"ldfe.sa.nta",    M, OpMXX6aHint (6, 0, 0, 0x0c, 3), {F1, MR3}, EMPTY},
-    {"ldf.fill",       M, OpMXX6aHint (6, 0, 0, 0x1b, 0), {F1, MR3}, EMPTY},
-    {"ldf.fill.nt1",   M, OpMXX6aHint (6, 0, 0, 0x1b, 1), {F1, MR3}, EMPTY},
-    {"ldf.fill.nta",   M, OpMXX6aHint (6, 0, 0, 0x1b, 3), {F1, MR3}, EMPTY},
-    {"ldfs.c.clr",     M, OpMXX6aHint (6, 0, 0, 0x22, 0), {F1, MR3}, EMPTY},
-    {"ldfs.c.clr.nt1", M, OpMXX6aHint (6, 0, 0, 0x22, 1), {F1, MR3}, EMPTY},
-    {"ldfs.c.clr.nta", M, OpMXX6aHint (6, 0, 0, 0x22, 3), {F1, MR3}, EMPTY},
-    {"ldfd.c.clr",     M, OpMXX6aHint (6, 0, 0, 0x23, 0), {F1, MR3}, EMPTY},
-    {"ldfd.c.clr.nt1", M, OpMXX6aHint (6, 0, 0, 0x23, 1), {F1, MR3}, EMPTY},
-    {"ldfd.c.clr.nta", M, OpMXX6aHint (6, 0, 0, 0x23, 3), {F1, MR3}, EMPTY},
-    {"ldf8.c.clr",     M, OpMXX6aHint (6, 0, 0, 0x21, 0), {F1, MR3}, EMPTY},
-    {"ldf8.c.clr.nt1", M, OpMXX6aHint (6, 0, 0, 0x21, 1), {F1, MR3}, EMPTY},
-    {"ldf8.c.clr.nta", M, OpMXX6aHint (6, 0, 0, 0x21, 3), {F1, MR3}, EMPTY},
-    {"ldfe.c.clr",     M, OpMXX6aHint (6, 0, 0, 0x20, 0), {F1, MR3}, EMPTY},
-    {"ldfe.c.clr.nt1", M, OpMXX6aHint (6, 0, 0, 0x20, 1), {F1, MR3}, EMPTY},
-    {"ldfe.c.clr.nta", M, OpMXX6aHint (6, 0, 0, 0x20, 3), {F1, MR3}, EMPTY},
-    {"ldfs.c.nc",      M, OpMXX6aHint (6, 0, 0, 0x26, 0), {F1, MR3}, EMPTY},
-    {"ldfs.c.nc.nt1",  M, OpMXX6aHint (6, 0, 0, 0x26, 1), {F1, MR3}, EMPTY},
-    {"ldfs.c.nc.nta",  M, OpMXX6aHint (6, 0, 0, 0x26, 3), {F1, MR3}, EMPTY},
-    {"ldfd.c.nc",      M, OpMXX6aHint (6, 0, 0, 0x27, 0), {F1, MR3}, EMPTY},
-    {"ldfd.c.nc.nt1",  M, OpMXX6aHint (6, 0, 0, 0x27, 1), {F1, MR3}, EMPTY},
-    {"ldfd.c.nc.nta",  M, OpMXX6aHint (6, 0, 0, 0x27, 3), {F1, MR3}, EMPTY},
-    {"ldf8.c.nc",      M, OpMXX6aHint (6, 0, 0, 0x25, 0), {F1, MR3}, EMPTY},
-    {"ldf8.c.nc.nt1",  M, OpMXX6aHint (6, 0, 0, 0x25, 1), {F1, MR3}, EMPTY},
-    {"ldf8.c.nc.nta",  M, OpMXX6aHint (6, 0, 0, 0x25, 3), {F1, MR3}, EMPTY},
-    {"ldfe.c.nc",      M, OpMXX6aHint (6, 0, 0, 0x24, 0), {F1, MR3}, EMPTY},
-    {"ldfe.c.nc.nt1",  M, OpMXX6aHint (6, 0, 0, 0x24, 1), {F1, MR3}, EMPTY},
-    {"ldfe.c.nc.nta",  M, OpMXX6aHint (6, 0, 0, 0x24, 3), {F1, MR3}, EMPTY},
-
-    /* Floating-point load w/increment by register.  */
-#define FLDINCREG(c,h) M, OpMXX6aHint (6, 1, 0, c, h), {F1, MR3, R2}, POSTINC, 0, NULL
-    {"ldfs",           FLDINCREG (0x02, 0)},
-    {"ldfs.nt1",       FLDINCREG (0x02, 1)},
-    {"ldfs.nta",       FLDINCREG (0x02, 3)},
-    {"ldfd",           FLDINCREG (0x03, 0)},
-    {"ldfd.nt1",       FLDINCREG (0x03, 1)},
-    {"ldfd.nta",       FLDINCREG (0x03, 3)},
-    {"ldf8",           FLDINCREG (0x01, 0)},
-    {"ldf8.nt1",       FLDINCREG (0x01, 1)},
-    {"ldf8.nta",       FLDINCREG (0x01, 3)},
-    {"ldfe",           FLDINCREG (0x00, 0)},
-    {"ldfe.nt1",       FLDINCREG (0x00, 1)},
-    {"ldfe.nta",       FLDINCREG (0x00, 3)},
-    {"ldfs.s",         FLDINCREG (0x06, 0)},
-    {"ldfs.s.nt1",     FLDINCREG (0x06, 1)},
-    {"ldfs.s.nta",     FLDINCREG (0x06, 3)},
-    {"ldfd.s",         FLDINCREG (0x07, 0)},
-    {"ldfd.s.nt1",     FLDINCREG (0x07, 1)},
-    {"ldfd.s.nta",     FLDINCREG (0x07, 3)},
-    {"ldf8.s",         FLDINCREG (0x05, 0)},
-    {"ldf8.s.nt1",     FLDINCREG (0x05, 1)},
-    {"ldf8.s.nta",     FLDINCREG (0x05, 3)},
-    {"ldfe.s",         FLDINCREG (0x04, 0)},
-    {"ldfe.s.nt1",     FLDINCREG (0x04, 1)},
-    {"ldfe.s.nta",     FLDINCREG (0x04, 3)},
-    {"ldfs.a",         FLDINCREG (0x0a, 0)},
-    {"ldfs.a.nt1",     FLDINCREG (0x0a, 1)},
-    {"ldfs.a.nta",     FLDINCREG (0x0a, 3)},
-    {"ldfd.a",         FLDINCREG (0x0b, 0)},
-    {"ldfd.a.nt1",     FLDINCREG (0x0b, 1)},
-    {"ldfd.a.nta",     FLDINCREG (0x0b, 3)},
-    {"ldf8.a",         FLDINCREG (0x09, 0)},
-    {"ldf8.a.nt1",     FLDINCREG (0x09, 1)},
-    {"ldf8.a.nta",     FLDINCREG (0x09, 3)},
-    {"ldfe.a",         FLDINCREG (0x08, 0)},
-    {"ldfe.a.nt1",     FLDINCREG (0x08, 1)},
-    {"ldfe.a.nta",     FLDINCREG (0x08, 3)},
-    {"ldfs.sa",                FLDINCREG (0x0e, 0)},
-    {"ldfs.sa.nt1",    FLDINCREG (0x0e, 1)},
-    {"ldfs.sa.nta",    FLDINCREG (0x0e, 3)},
-    {"ldfd.sa",                FLDINCREG (0x0f, 0)},
-    {"ldfd.sa.nt1",    FLDINCREG (0x0f, 1)},
-    {"ldfd.sa.nta",    FLDINCREG (0x0f, 3)},
-    {"ldf8.sa",                FLDINCREG (0x0d, 0)},
-    {"ldf8.sa.nt1",    FLDINCREG (0x0d, 1)},
-    {"ldf8.sa.nta",    FLDINCREG (0x0d, 3)},
-    {"ldfe.sa",                FLDINCREG (0x0c, 0)},
-    {"ldfe.sa.nt1",    FLDINCREG (0x0c, 1)},
-    {"ldfe.sa.nta",    FLDINCREG (0x0c, 3)},
-    {"ldf.fill",       FLDINCREG (0x1b, 0)},
-    {"ldf.fill.nt1",   FLDINCREG (0x1b, 1)},
-    {"ldf.fill.nta",   FLDINCREG (0x1b, 3)},
-    {"ldfs.c.clr",     FLDINCREG (0x22, 0)},
-    {"ldfs.c.clr.nt1", FLDINCREG (0x22, 1)},
-    {"ldfs.c.clr.nta", FLDINCREG (0x22, 3)},
-    {"ldfd.c.clr",     FLDINCREG (0x23, 0)},
-    {"ldfd.c.clr.nt1", FLDINCREG (0x23, 1)},
-    {"ldfd.c.clr.nta", FLDINCREG (0x23, 3)},
-    {"ldf8.c.clr",     FLDINCREG (0x21, 0)},
-    {"ldf8.c.clr.nt1", FLDINCREG (0x21, 1)},
-    {"ldf8.c.clr.nta", FLDINCREG (0x21, 3)},
-    {"ldfe.c.clr",     FLDINCREG (0x20, 0)},
-    {"ldfe.c.clr.nt1", FLDINCREG (0x20, 1)},
-    {"ldfe.c.clr.nta", FLDINCREG (0x20, 3)},
-    {"ldfs.c.nc",      FLDINCREG (0x26, 0)},
-    {"ldfs.c.nc.nt1",  FLDINCREG (0x26, 1)},
-    {"ldfs.c.nc.nta",  FLDINCREG (0x26, 3)},
-    {"ldfd.c.nc",      FLDINCREG (0x27, 0)},
-    {"ldfd.c.nc.nt1",  FLDINCREG (0x27, 1)},
-    {"ldfd.c.nc.nta",  FLDINCREG (0x27, 3)},
-    {"ldf8.c.nc",      FLDINCREG (0x25, 0)},
-    {"ldf8.c.nc.nt1",  FLDINCREG (0x25, 1)},
-    {"ldf8.c.nc.nta",  FLDINCREG (0x25, 3)},
-    {"ldfe.c.nc",      FLDINCREG (0x24, 0)},
-    {"ldfe.c.nc.nt1",  FLDINCREG (0x24, 1)},
-    {"ldfe.c.nc.nta",  FLDINCREG (0x24, 3)},
-#undef FLDINCREG
-
-    /* Floating-point store.  */
-    {"stfs",           M, OpMXX6aHint (6, 0, 0, 0x32, 0), {MR3, F2}, EMPTY},
-    {"stfs.nta",       M, OpMXX6aHint (6, 0, 0, 0x32, 3), {MR3, F2}, EMPTY},
-    {"stfd",           M, OpMXX6aHint (6, 0, 0, 0x33, 0), {MR3, F2}, EMPTY},
-    {"stfd.nta",       M, OpMXX6aHint (6, 0, 0, 0x33, 3), {MR3, F2}, EMPTY},
-    {"stf8",           M, OpMXX6aHint (6, 0, 0, 0x31, 0), {MR3, F2}, EMPTY},
-    {"stf8.nta",       M, OpMXX6aHint (6, 0, 0, 0x31, 3), {MR3, F2}, EMPTY},
-    {"stfe",           M, OpMXX6aHint (6, 0, 0, 0x30, 0), {MR3, F2}, EMPTY},
-    {"stfe.nta",       M, OpMXX6aHint (6, 0, 0, 0x30, 3), {MR3, F2}, EMPTY},
-    {"stf.spill",      M, OpMXX6aHint (6, 0, 0, 0x3b, 0), {MR3, F2}, EMPTY},
-    {"stf.spill.nta",  M, OpMXX6aHint (6, 0, 0, 0x3b, 3), {MR3, F2}, EMPTY},
-
-    /* Floating-point load pair.  */
-    {"ldfps",          M2, OpMXX6aHint (6, 0, 1, 0x02, 0), {F1, F2, MR3}, EMPTY},
-    {"ldfps.nt1",      M2, OpMXX6aHint (6, 0, 1, 0x02, 1), {F1, F2, MR3}, EMPTY},
-    {"ldfps.nta",      M2, OpMXX6aHint (6, 0, 1, 0x02, 3), {F1, F2, MR3}, EMPTY},
-    {"ldfpd",          M2, OpMXX6aHint (6, 0, 1, 0x03, 0), {F1, F2, MR3}, EMPTY},
-    {"ldfpd.nt1",      M2, OpMXX6aHint (6, 0, 1, 0x03, 1), {F1, F2, MR3}, EMPTY},
-    {"ldfpd.nta",      M2, OpMXX6aHint (6, 0, 1, 0x03, 3), {F1, F2, MR3}, EMPTY},
-    {"ldfp8",          M2, OpMXX6aHint (6, 0, 1, 0x01, 0), {F1, F2, MR3}, EMPTY},
-    {"ldfp8.nt1",      M2, OpMXX6aHint (6, 0, 1, 0x01, 1), {F1, F2, MR3}, EMPTY},
-    {"ldfp8.nta",      M2, OpMXX6aHint (6, 0, 1, 0x01, 3), {F1, F2, MR3}, EMPTY},
-    {"ldfps.s",                M2, OpMXX6aHint (6, 0, 1, 0x06, 0), {F1, F2, MR3}, EMPTY},
-    {"ldfps.s.nt1",    M2, OpMXX6aHint (6, 0, 1, 0x06, 1), {F1, F2, MR3}, EMPTY},
-    {"ldfps.s.nta",    M2, OpMXX6aHint (6, 0, 1, 0x06, 3), {F1, F2, MR3}, EMPTY},
-    {"ldfpd.s",                M2, OpMXX6aHint (6, 0, 1, 0x07, 0), {F1, F2, MR3}, EMPTY},
-    {"ldfpd.s.nt1",    M2, OpMXX6aHint (6, 0, 1, 0x07, 1), {F1, F2, MR3}, EMPTY},
-    {"ldfpd.s.nta",    M2, OpMXX6aHint (6, 0, 1, 0x07, 3), {F1, F2, MR3}, EMPTY},
-    {"ldfp8.s",                M2, OpMXX6aHint (6, 0, 1, 0x05, 0), {F1, F2, MR3}, EMPTY},
-    {"ldfp8.s.nt1",    M2, OpMXX6aHint (6, 0, 1, 0x05, 1), {F1, F2, MR3}, EMPTY},
-    {"ldfp8.s.nta",    M2, OpMXX6aHint (6, 0, 1, 0x05, 3), {F1, F2, MR3}, EMPTY},
-    {"ldfps.a",                M2, OpMXX6aHint (6, 0, 1, 0x0a, 0), {F1, F2, MR3}, EMPTY},
-    {"ldfps.a.nt1",    M2, OpMXX6aHint (6, 0, 1, 0x0a, 1), {F1, F2, MR3}, EMPTY},
-    {"ldfps.a.nta",    M2, OpMXX6aHint (6, 0, 1, 0x0a, 3), {F1, F2, MR3}, EMPTY},
-    {"ldfpd.a",                M2, OpMXX6aHint (6, 0, 1, 0x0b, 0), {F1, F2, MR3}, EMPTY},
-    {"ldfpd.a.nt1",    M2, OpMXX6aHint (6, 0, 1, 0x0b, 1), {F1, F2, MR3}, EMPTY},
-    {"ldfpd.a.nta",    M2, OpMXX6aHint (6, 0, 1, 0x0b, 3), {F1, F2, MR3}, EMPTY},
-    {"ldfp8.a",                M2, OpMXX6aHint (6, 0, 1, 0x09, 0), {F1, F2, MR3}, EMPTY},
-    {"ldfp8.a.nt1",    M2, OpMXX6aHint (6, 0, 1, 0x09, 1), {F1, F2, MR3}, EMPTY},
-    {"ldfp8.a.nta",    M2, OpMXX6aHint (6, 0, 1, 0x09, 3), {F1, F2, MR3}, EMPTY},
-    {"ldfps.sa",       M2, OpMXX6aHint (6, 0, 1, 0x0e, 0), {F1, F2, MR3}, EMPTY},
-    {"ldfps.sa.nt1",   M2, OpMXX6aHint (6, 0, 1, 0x0e, 1), {F1, F2, MR3}, EMPTY},
-    {"ldfps.sa.nta",   M2, OpMXX6aHint (6, 0, 1, 0x0e, 3), {F1, F2, MR3}, EMPTY},
-    {"ldfpd.sa",       M2, OpMXX6aHint (6, 0, 1, 0x0f, 0), {F1, F2, MR3}, EMPTY},
-    {"ldfpd.sa.nt1",   M2, OpMXX6aHint (6, 0, 1, 0x0f, 1), {F1, F2, MR3}, EMPTY},
-    {"ldfpd.sa.nta",   M2, OpMXX6aHint (6, 0, 1, 0x0f, 3), {F1, F2, MR3}, EMPTY},
-    {"ldfp8.sa",       M2, OpMXX6aHint (6, 0, 1, 0x0d, 0), {F1, F2, MR3}, EMPTY},
-    {"ldfp8.sa.nt1",   M2, OpMXX6aHint (6, 0, 1, 0x0d, 1), {F1, F2, MR3}, EMPTY},
-    {"ldfp8.sa.nta",   M2, OpMXX6aHint (6, 0, 1, 0x0d, 3), {F1, F2, MR3}, EMPTY},
-    {"ldfps.c.clr",    M2, OpMXX6aHint (6, 0, 1, 0x22, 0), {F1, F2, MR3}, EMPTY},
-    {"ldfps.c.clr.nt1",        M2, OpMXX6aHint (6, 0, 1, 0x22, 1), {F1, F2, MR3}, EMPTY},
-    {"ldfps.c.clr.nta",        M2, OpMXX6aHint (6, 0, 1, 0x22, 3), {F1, F2, MR3}, EMPTY},
-    {"ldfpd.c.clr",    M2, OpMXX6aHint (6, 0, 1, 0x23, 0), {F1, F2, MR3}, EMPTY},
-    {"ldfpd.c.clr.nt1",        M2, OpMXX6aHint (6, 0, 1, 0x23, 1), {F1, F2, MR3}, EMPTY},
-    {"ldfpd.c.clr.nta",        M2, OpMXX6aHint (6, 0, 1, 0x23, 3), {F1, F2, MR3}, EMPTY},
-    {"ldfp8.c.clr",    M2, OpMXX6aHint (6, 0, 1, 0x21, 0), {F1, F2, MR3}, EMPTY},
-    {"ldfp8.c.clr.nt1",        M2, OpMXX6aHint (6, 0, 1, 0x21, 1), {F1, F2, MR3}, EMPTY},
-    {"ldfp8.c.clr.nta",        M2, OpMXX6aHint (6, 0, 1, 0x21, 3), {F1, F2, MR3}, EMPTY},
-    {"ldfps.c.nc",     M2, OpMXX6aHint (6, 0, 1, 0x26, 0), {F1, F2, MR3}, EMPTY},
-    {"ldfps.c.nc.nt1", M2, OpMXX6aHint (6, 0, 1, 0x26, 1), {F1, F2, MR3}, EMPTY},
-    {"ldfps.c.nc.nta", M2, OpMXX6aHint (6, 0, 1, 0x26, 3), {F1, F2, MR3}, EMPTY},
-    {"ldfpd.c.nc",     M2, OpMXX6aHint (6, 0, 1, 0x27, 0), {F1, F2, MR3}, EMPTY},
-    {"ldfpd.c.nc.nt1", M2, OpMXX6aHint (6, 0, 1, 0x27, 1), {F1, F2, MR3}, EMPTY},
-    {"ldfpd.c.nc.nta", M2, OpMXX6aHint (6, 0, 1, 0x27, 3), {F1, F2, MR3}, EMPTY},
-    {"ldfp8.c.nc",     M2, OpMXX6aHint (6, 0, 1, 0x25, 0), {F1, F2, MR3}, EMPTY},
-    {"ldfp8.c.nc.nt1", M2, OpMXX6aHint (6, 0, 1, 0x25, 1), {F1, F2, MR3}, EMPTY},
-    {"ldfp8.c.nc.nta", M2, OpMXX6aHint (6, 0, 1, 0x25, 3), {F1, F2, MR3}, EMPTY},
-
-    /* Floating-point load pair w/increment by immediate.  */
-#define LD(a,b,c) M2, OpMXX6aHint (6, 1, 1, a, b), {F1, F2, MR3, c}, POSTINC, 0, NULL
-    {"ldfps",          LD (0x02, 0, C8)},
-    {"ldfps.nt1",      LD (0x02, 1, C8)},
-    {"ldfps.nta",      LD (0x02, 3, C8)},
-    {"ldfpd",          LD (0x03, 0, C16)},
-    {"ldfpd.nt1",      LD (0x03, 1, C16)},
-    {"ldfpd.nta",      LD (0x03, 3, C16)},
-    {"ldfp8",          LD (0x01, 0, C16)},
-    {"ldfp8.nt1",      LD (0x01, 1, C16)},
-    {"ldfp8.nta",      LD (0x01, 3, C16)},
-    {"ldfps.s",                LD (0x06, 0, C8)},
-    {"ldfps.s.nt1",    LD (0x06, 1, C8)},
-    {"ldfps.s.nta",    LD (0x06, 3, C8)},
-    {"ldfpd.s",                LD (0x07, 0, C16)},
-    {"ldfpd.s.nt1",    LD (0x07, 1, C16)},
-    {"ldfpd.s.nta",    LD (0x07, 3, C16)},
-    {"ldfp8.s",                LD (0x05, 0, C16)},
-    {"ldfp8.s.nt1",    LD (0x05, 1, C16)},
-    {"ldfp8.s.nta",    LD (0x05, 3, C16)},
-    {"ldfps.a",                LD (0x0a, 0, C8)},
-    {"ldfps.a.nt1",    LD (0x0a, 1, C8)},
-    {"ldfps.a.nta",    LD (0x0a, 3, C8)},
-    {"ldfpd.a",                LD (0x0b, 0, C16)},
-    {"ldfpd.a.nt1",    LD (0x0b, 1, C16)},
-    {"ldfpd.a.nta",    LD (0x0b, 3, C16)},
-    {"ldfp8.a",                LD (0x09, 0, C16)},
-    {"ldfp8.a.nt1",    LD (0x09, 1, C16)},
-    {"ldfp8.a.nta",    LD (0x09, 3, C16)},
-    {"ldfps.sa",       LD (0x0e, 0, C8)},
-    {"ldfps.sa.nt1",   LD (0x0e, 1, C8)},
-    {"ldfps.sa.nta",   LD (0x0e, 3, C8)},
-    {"ldfpd.sa",       LD (0x0f, 0, C16)},
-    {"ldfpd.sa.nt1",   LD (0x0f, 1, C16)},
-    {"ldfpd.sa.nta",   LD (0x0f, 3, C16)},
-    {"ldfp8.sa",       LD (0x0d, 0, C16)},
-    {"ldfp8.sa.nt1",   LD (0x0d, 1, C16)},
-    {"ldfp8.sa.nta",   LD (0x0d, 3, C16)},
-    {"ldfps.c.clr",    LD (0x22, 0, C8)},
-    {"ldfps.c.clr.nt1",        LD (0x22, 1, C8)},
-    {"ldfps.c.clr.nta",        LD (0x22, 3, C8)},
-    {"ldfpd.c.clr",    LD (0x23, 0, C16)},
-    {"ldfpd.c.clr.nt1",        LD (0x23, 1, C16)},
-    {"ldfpd.c.clr.nta",        LD (0x23, 3, C16)},
-    {"ldfp8.c.clr",    LD (0x21, 0, C16)},
-    {"ldfp8.c.clr.nt1",        LD (0x21, 1, C16)},
-    {"ldfp8.c.clr.nta",        LD (0x21, 3, C16)},
-    {"ldfps.c.nc",     LD (0x26, 0, C8)},
-    {"ldfps.c.nc.nt1", LD (0x26, 1, C8)},
-    {"ldfps.c.nc.nta", LD (0x26, 3, C8)},
-    {"ldfpd.c.nc",     LD (0x27, 0, C16)},
-    {"ldfpd.c.nc.nt1", LD (0x27, 1, C16)},
-    {"ldfpd.c.nc.nta", LD (0x27, 3, C16)},
-    {"ldfp8.c.nc",     LD (0x25, 0, C16)},
-    {"ldfp8.c.nc.nt1", LD (0x25, 1, C16)},
-    {"ldfp8.c.nc.nta", LD (0x25, 3, C16)},
-#undef LD
-
-    /* Line prefetch.  */
-    {"lfetch",                 M0, OpMXX6aHint (6, 0, 0, 0x2c, 0), {MR3}, EMPTY},
-    {"lfetch.nt1",             M0, OpMXX6aHint (6, 0, 0, 0x2c, 1), {MR3}, EMPTY},
-    {"lfetch.nt2",             M0, OpMXX6aHint (6, 0, 0, 0x2c, 2), {MR3}, EMPTY},
-    {"lfetch.nta",             M0, OpMXX6aHint (6, 0, 0, 0x2c, 3), {MR3}, EMPTY},
-    {"lfetch.excl",            M0, OpMXX6aHint (6, 0, 0, 0x2d, 0), {MR3}, EMPTY},
-    {"lfetch.excl.nt1",                M0, OpMXX6aHint (6, 0, 0, 0x2d, 1), {MR3}, EMPTY},
-    {"lfetch.excl.nt2",                M0, OpMXX6aHint (6, 0, 0, 0x2d, 2), {MR3}, EMPTY},
-    {"lfetch.excl.nta",                M0, OpMXX6aHint (6, 0, 0, 0x2d, 3), {MR3}, EMPTY},
-    {"lfetch.fault",           M0, OpMXX6aHint (6, 0, 0, 0x2e, 0), {MR3}, EMPTY},
-    {"lfetch.fault.nt1",       M0, OpMXX6aHint (6, 0, 0, 0x2e, 1), {MR3}, EMPTY},
-    {"lfetch.fault.nt2",       M0, OpMXX6aHint (6, 0, 0, 0x2e, 2), {MR3}, EMPTY},
-    {"lfetch.fault.nta",       M0, OpMXX6aHint (6, 0, 0, 0x2e, 3), {MR3}, EMPTY},
-    {"lfetch.fault.excl",      M0, OpMXX6aHint (6, 0, 0, 0x2f, 0), {MR3}, EMPTY},
-    {"lfetch.fault.excl.nt1",  M0, OpMXX6aHint (6, 0, 0, 0x2f, 1), {MR3}, EMPTY},
-    {"lfetch.fault.excl.nt2",  M0, OpMXX6aHint (6, 0, 0, 0x2f, 2), {MR3}, EMPTY},
-    {"lfetch.fault.excl.nta",  M0, OpMXX6aHint (6, 0, 0, 0x2f, 3), {MR3}, EMPTY},
-
-    /* Line prefetch w/increment by register.  */
-#define LFETCHINCREG(c,h) M0, OpMXX6aHint (6, 1, 0, c, h), {MR3, R2}, POSTINC, 0, NULL
-    {"lfetch",                 LFETCHINCREG (0x2c, 0)},
-    {"lfetch.nt1",             LFETCHINCREG (0x2c, 1)},
-    {"lfetch.nt2",             LFETCHINCREG (0x2c, 2)},
-    {"lfetch.nta",             LFETCHINCREG (0x2c, 3)},
-    {"lfetch.excl",            LFETCHINCREG (0x2d, 0)},
-    {"lfetch.excl.nt1",                LFETCHINCREG (0x2d, 1)},
-    {"lfetch.excl.nt2",                LFETCHINCREG (0x2d, 2)},
-    {"lfetch.excl.nta",                LFETCHINCREG (0x2d, 3)},
-    {"lfetch.fault",           LFETCHINCREG (0x2e, 0)},
-    {"lfetch.fault.nt1",       LFETCHINCREG (0x2e, 1)},
-    {"lfetch.fault.nt2",       LFETCHINCREG (0x2e, 2)},
-    {"lfetch.fault.nta",       LFETCHINCREG (0x2e, 3)},
-    {"lfetch.fault.excl",      LFETCHINCREG (0x2f, 0)},
-    {"lfetch.fault.excl.nt1",  LFETCHINCREG (0x2f, 1)},
-    {"lfetch.fault.excl.nt2",  LFETCHINCREG (0x2f, 2)},
-    {"lfetch.fault.excl.nta",  LFETCHINCREG (0x2f, 3)},
-#undef LFETCHINCREG
-
-    /* Semaphore operations.  */
-    {"setf.sig",       M, OpMXX6a (6, 0, 1, 0x1c), {F1, R2}, EMPTY},
-    {"setf.exp",       M, OpMXX6a (6, 0, 1, 0x1d), {F1, R2}, EMPTY},
-    {"setf.s",         M, OpMXX6a (6, 0, 1, 0x1e), {F1, R2}, EMPTY},
-    {"setf.d",         M, OpMXX6a (6, 0, 1, 0x1f), {F1, R2}, EMPTY},
-
-    /* Floating-point load w/increment by immediate.  */
-#define FLDINCIMMED(c,h) M, OpX6aHint (7, c, h), {F1, MR3, IMM9b}, POSTINC, 0, NULL
-    {"ldfs",           FLDINCIMMED (0x02, 0)},
-    {"ldfs.nt1",       FLDINCIMMED (0x02, 1)},
-    {"ldfs.nta",       FLDINCIMMED (0x02, 3)},
-    {"ldfd",           FLDINCIMMED (0x03, 0)},
-    {"ldfd.nt1",       FLDINCIMMED (0x03, 1)},
-    {"ldfd.nta",       FLDINCIMMED (0x03, 3)},
-    {"ldf8",           FLDINCIMMED (0x01, 0)},
-    {"ldf8.nt1",       FLDINCIMMED (0x01, 1)},
-    {"ldf8.nta",       FLDINCIMMED (0x01, 3)},
-    {"ldfe",           FLDINCIMMED (0x00, 0)},
-    {"ldfe.nt1",       FLDINCIMMED (0x00, 1)},
-    {"ldfe.nta",       FLDINCIMMED (0x00, 3)},
-    {"ldfs.s",         FLDINCIMMED (0x06, 0)},
-    {"ldfs.s.nt1",     FLDINCIMMED (0x06, 1)},
-    {"ldfs.s.nta",     FLDINCIMMED (0x06, 3)},
-    {"ldfd.s",         FLDINCIMMED (0x07, 0)},
-    {"ldfd.s.nt1",     FLDINCIMMED (0x07, 1)},
-    {"ldfd.s.nta",     FLDINCIMMED (0x07, 3)},
-    {"ldf8.s",         FLDINCIMMED (0x05, 0)},
-    {"ldf8.s.nt1",     FLDINCIMMED (0x05, 1)},
-    {"ldf8.s.nta",     FLDINCIMMED (0x05, 3)},
-    {"ldfe.s",         FLDINCIMMED (0x04, 0)},
-    {"ldfe.s.nt1",     FLDINCIMMED (0x04, 1)},
-    {"ldfe.s.nta",     FLDINCIMMED (0x04, 3)},
-    {"ldfs.a",         FLDINCIMMED (0x0a, 0)},
-    {"ldfs.a.nt1",     FLDINCIMMED (0x0a, 1)},
-    {"ldfs.a.nta",     FLDINCIMMED (0x0a, 3)},
-    {"ldfd.a",         FLDINCIMMED (0x0b, 0)},
-    {"ldfd.a.nt1",     FLDINCIMMED (0x0b, 1)},
-    {"ldfd.a.nta",     FLDINCIMMED (0x0b, 3)},
-    {"ldf8.a",         FLDINCIMMED (0x09, 0)},
-    {"ldf8.a.nt1",     FLDINCIMMED (0x09, 1)},
-    {"ldf8.a.nta",     FLDINCIMMED (0x09, 3)},
-    {"ldfe.a",         FLDINCIMMED (0x08, 0)},
-    {"ldfe.a.nt1",     FLDINCIMMED (0x08, 1)},
-    {"ldfe.a.nta",     FLDINCIMMED (0x08, 3)},
-    {"ldfs.sa",                FLDINCIMMED (0x0e, 0)},
-    {"ldfs.sa.nt1",    FLDINCIMMED (0x0e, 1)},
-    {"ldfs.sa.nta",    FLDINCIMMED (0x0e, 3)},
-    {"ldfd.sa",                FLDINCIMMED (0x0f, 0)},
-    {"ldfd.sa.nt1",    FLDINCIMMED (0x0f, 1)},
-    {"ldfd.sa.nta",    FLDINCIMMED (0x0f, 3)},
-    {"ldf8.sa",                FLDINCIMMED (0x0d, 0)},
-    {"ldf8.sa.nt1",    FLDINCIMMED (0x0d, 1)},
-    {"ldf8.sa.nta",    FLDINCIMMED (0x0d, 3)},
-    {"ldfe.sa",                FLDINCIMMED (0x0c, 0)},
-    {"ldfe.sa.nt1",    FLDINCIMMED (0x0c, 1)},
-    {"ldfe.sa.nta",    FLDINCIMMED (0x0c, 3)},
-    {"ldf.fill",       FLDINCIMMED (0x1b, 0)},
-    {"ldf.fill.nt1",   FLDINCIMMED (0x1b, 1)},
-    {"ldf.fill.nta",   FLDINCIMMED (0x1b, 3)},
-    {"ldfs.c.clr",     FLDINCIMMED (0x22, 0)},
-    {"ldfs.c.clr.nt1", FLDINCIMMED (0x22, 1)},
-    {"ldfs.c.clr.nta", FLDINCIMMED (0x22, 3)},
-    {"ldfd.c.clr",     FLDINCIMMED (0x23, 0)},
-    {"ldfd.c.clr.nt1", FLDINCIMMED (0x23, 1)},
-    {"ldfd.c.clr.nta", FLDINCIMMED (0x23, 3)},
-    {"ldf8.c.clr",     FLDINCIMMED (0x21, 0)},
-    {"ldf8.c.clr.nt1", FLDINCIMMED (0x21, 1)},
-    {"ldf8.c.clr.nta", FLDINCIMMED (0x21, 3)},
-    {"ldfe.c.clr",     FLDINCIMMED (0x20, 0)},
-    {"ldfe.c.clr.nt1", FLDINCIMMED (0x20, 1)},
-    {"ldfe.c.clr.nta", FLDINCIMMED (0x20, 3)},
-    {"ldfs.c.nc",      FLDINCIMMED (0x26, 0)},
-    {"ldfs.c.nc.nt1",  FLDINCIMMED (0x26, 1)},
-    {"ldfs.c.nc.nta",  FLDINCIMMED (0x26, 3)},
-    {"ldfd.c.nc",      FLDINCIMMED (0x27, 0)},
-    {"ldfd.c.nc.nt1",  FLDINCIMMED (0x27, 1)},
-    {"ldfd.c.nc.nta",  FLDINCIMMED (0x27, 3)},
-    {"ldf8.c.nc",      FLDINCIMMED (0x25, 0)},
-    {"ldf8.c.nc.nt1",  FLDINCIMMED (0x25, 1)},
-    {"ldf8.c.nc.nta",  FLDINCIMMED (0x25, 3)},
-    {"ldfe.c.nc",      FLDINCIMMED (0x24, 0)},
-    {"ldfe.c.nc.nt1",  FLDINCIMMED (0x24, 1)},
-    {"ldfe.c.nc.nta",  FLDINCIMMED (0x24, 3)},
-#undef FLDINCIMMED
-
-    /* Floating-point store w/increment by immediate.  */
-#define FSTINCIMMED(c,h) M, OpX6aHint (7, c, h), {MR3, F2, IMM9a}, POSTINC, 0, NULL
-    {"stfs",           FSTINCIMMED (0x32, 0)},
-    {"stfs.nta",       FSTINCIMMED (0x32, 3)},
-    {"stfd",           FSTINCIMMED (0x33, 0)},
-    {"stfd.nta",       FSTINCIMMED (0x33, 3)},
-    {"stf8",           FSTINCIMMED (0x31, 0)},
-    {"stf8.nta",       FSTINCIMMED (0x31, 3)},
-    {"stfe",           FSTINCIMMED (0x30, 0)},
-    {"stfe.nta",       FSTINCIMMED (0x30, 3)},
-    {"stf.spill",      FSTINCIMMED (0x3b, 0)},
-    {"stf.spill.nta",  FSTINCIMMED (0x3b, 3)},
-#undef FSTINCIMMED
-
-    /* Line prefetch w/increment by immediate.  */
-#define LFETCHINCIMMED(c,h) M0, OpX6aHint (7, c, h), {MR3, IMM9b}, POSTINC, 0, NULL
-    {"lfetch",                 LFETCHINCIMMED (0x2c, 0)},
-    {"lfetch.nt1",             LFETCHINCIMMED (0x2c, 1)},
-    {"lfetch.nt2",             LFETCHINCIMMED (0x2c, 2)},
-    {"lfetch.nta",             LFETCHINCIMMED (0x2c, 3)},
-    {"lfetch.excl",            LFETCHINCIMMED (0x2d, 0)},
-    {"lfetch.excl.nt1",                LFETCHINCIMMED (0x2d, 1)},
-    {"lfetch.excl.nt2",                LFETCHINCIMMED (0x2d, 2)},
-    {"lfetch.excl.nta",                LFETCHINCIMMED (0x2d, 3)},
-    {"lfetch.fault",           LFETCHINCIMMED (0x2e, 0)},
-    {"lfetch.fault.nt1",       LFETCHINCIMMED (0x2e, 1)},
-    {"lfetch.fault.nt2",       LFETCHINCIMMED (0x2e, 2)},
-    {"lfetch.fault.nta",       LFETCHINCIMMED (0x2e, 3)},
-    {"lfetch.fault.excl",      LFETCHINCIMMED (0x2f, 0)},
-    {"lfetch.fault.excl.nt1",  LFETCHINCIMMED (0x2f, 1)},
-    {"lfetch.fault.excl.nt2",  LFETCHINCIMMED (0x2f, 2)},
-    {"lfetch.fault.excl.nta",  LFETCHINCIMMED (0x2f, 3)},
-#undef LFETCHINCIMMED
-
-    {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL}
-  };
-
-#undef M0
-#undef M
-#undef M2
-#undef bM
-#undef bX
-#undef bX2
-#undef bX3
-#undef bX4
-#undef bX6a
-#undef bX6b
-#undef bHint
-#undef mM
-#undef mX
-#undef mX2
-#undef mX3
-#undef mX4
-#undef mX6a
-#undef mX6b
-#undef mHint
-#undef OpX3
-#undef OpX3X6b
-#undef OpX3X4
-#undef OpX3X4X2
-#undef OpX6aHint
-#undef OpXX6aHint
-#undef OpMXX6a
-#undef OpMXX6aHint
-#undef EMPTY
diff --git a/tools/debugger/xenitp/ia64-opc-x.c b/tools/debugger/xenitp/ia64-opc-x.c
deleted file mode 100644 (file)
index fcbe92e..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-/* ia64-opc-x.c -- IA-64 `X' opcode table.
-   Copyright 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
-   Contributed by Timothy Wall <twall@cygnus.com>
-
-   This file is part of GDB, GAS, and the GNU binutils.
-
-   GDB, GAS, and the GNU binutils are free software; you can redistribute
-   them and/or modify them under the terms of the GNU General Public
-   License as published by the Free Software Foundation; either version
-   2, or (at your option) any later version.
-
-   GDB, GAS, and the GNU binutils are distributed in the hope that they
-   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 file; see the file COPYING.  If not, write to the
-   Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
-   02110-1301, USA.  */
-
-#include "ia64-opc.h"
-
-/* Identify the specific X-unit type.  */
-#define X0      IA64_TYPE_X, 0
-#define X      IA64_TYPE_X, 1
-
-/* Instruction bit fields:  */
-#define bBtype(x)      (((ia64_insn) ((x) & 0x7)) << 6)
-#define bD(x)          (((ia64_insn) ((x) & 0x1)) << 35)
-#define bPa(x)         (((ia64_insn) ((x) & 0x1)) << 12)
-#define bPr(x)         (((ia64_insn) ((x) & 0x3f)) << 0)
-#define bVc(x)         (((ia64_insn) ((x) & 0x1)) << 20)
-#define bWha(x)                (((ia64_insn) ((x) & 0x3)) << 33)
-#define bX3(x)         (((ia64_insn) ((x) & 0x7)) << 33)
-#define bX6(x)         (((ia64_insn) ((x) & 0x3f)) << 27)
-#define bY(x)          (((ia64_insn) ((x) & 0x1)) << 26)
-
-#define mBtype         bBtype (-1)
-#define mD             bD (-1)
-#define mPa            bPa (-1)
-#define mPr            bPr (-1)
-#define mVc             bVc (-1)
-#define mWha           bWha (-1)
-#define mX3             bX3 (-1)
-#define mX6            bX6 (-1)
-#define mY             bY (-1)
-
-#define OpX3X6(a,b,c)          (bOp (a) | bX3 (b) | bX6(c)), \
-                               (mOp | mX3 | mX6)
-#define OpX3X6Y(a,b,c,d)       (bOp (a) | bX3 (b) | bX6(c) | bY(d)), \
-                               (mOp | mX3 | mX6 | mY)
-#define OpVc(a,b)              (bOp (a) | bVc (b)), (mOp | mVc)
-#define OpPaWhaD(a,b,c,d) \
-       (bOp (a) | bPa (b) | bWha (c) | bD (d)), (mOp | mPa | mWha | mD)
-#define OpBtypePaWhaD(a,b,c,d,e) \
-       (bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e)), \
-       (mOp | mBtype | mPa | mWha | mD)
-#define OpBtypePaWhaDPr(a,b,c,d,e,f) \
-       (bOp (a) | bBtype (b) | bPa (c) | bWha (d) | bD (e) | bPr (f)), \
-       (mOp | mBtype | mPa | mWha | mD | mPr)
-
-struct ia64_opcode ia64_opcodes_x[] =
-  {
-    {"break.x",        X0, OpX3X6 (0, 0, 0x00), {IMMU62}, 0, 0, NULL},
-    {"nop.x",  X0, OpX3X6Y (0, 0, 0x01, 0), {IMMU62}, 0, 0, NULL},
-    {"hint.x", X0, OpX3X6Y (0, 0, 0x01, 1), {IMMU62}, 0, 0, NULL},
-    {"movl",   X,  OpVc (6, 0), {R1, IMMU64}, 0, 0, NULL},
-#define BRL(a,b) \
-      X0, OpBtypePaWhaDPr (0xC, 0, a, 0, b, 0), {TGT64}, PSEUDO, 0, NULL
-    {"brl.few",         BRL (0, 0)},
-    {"brl",             BRL (0, 0)},
-    {"brl.few.clr",    BRL (0, 1)},
-    {"brl.clr",                BRL (0, 1)},
-    {"brl.many",       BRL (1, 0)},
-    {"brl.many.clr",   BRL (1, 1)},
-#undef BRL
-#define BRL(a,b,c) \
-      X0, OpBtypePaWhaD (0xC, 0, a, b, c), {TGT64}, 0, 0, NULL
-#define BRLP(a,b,c) \
-      X0, OpBtypePaWhaD (0xC, 0, a, b, c), {TGT64}, PSEUDO, 0, NULL
-    {"brl.cond.sptk.few",      BRL (0, 0, 0)},
-    {"brl.cond.sptk",          BRLP (0, 0, 0)},
-    {"brl.cond.sptk.few.clr",  BRL (0, 0, 1)},
-    {"brl.cond.sptk.clr",      BRLP (0, 0, 1)},
-    {"brl.cond.spnt.few",      BRL (0, 1, 0)},
-    {"brl.cond.spnt",          BRLP (0, 1, 0)},
-    {"brl.cond.spnt.few.clr",  BRL (0, 1, 1)},
-    {"brl.cond.spnt.clr",      BRLP (0, 1, 1)},
-    {"brl.cond.dptk.few",      BRL (0, 2, 0)},
-    {"brl.cond.dptk",          BRLP (0, 2, 0)},
-    {"brl.cond.dptk.few.clr",  BRL (0, 2, 1)},
-    {"brl.cond.dptk.clr",      BRLP (0, 2, 1)},
-    {"brl.cond.dpnt.few",      BRL (0, 3, 0)},
-    {"brl.cond.dpnt",          BRLP (0, 3, 0)},
-    {"brl.cond.dpnt.few.clr",  BRL (0, 3, 1)},
-    {"brl.cond.dpnt.clr",      BRLP (0, 3, 1)},
-    {"brl.cond.sptk.many",     BRL (1, 0, 0)},
-    {"brl.cond.sptk.many.clr", BRL (1, 0, 1)},
-    {"brl.cond.spnt.many",     BRL (1, 1, 0)},
-    {"brl.cond.spnt.many.clr", BRL (1, 1, 1)},
-    {"brl.cond.dptk.many",     BRL (1, 2, 0)},
-    {"brl.cond.dptk.many.clr", BRL (1, 2, 1)},
-    {"brl.cond.dpnt.many",     BRL (1, 3, 0)},
-    {"brl.cond.dpnt.many.clr", BRL (1, 3, 1)},
-    {"brl.sptk.few",           BRL (0, 0, 0)},
-    {"brl.sptk",               BRLP (0, 0, 0)},
-    {"brl.sptk.few.clr",       BRL (0, 0, 1)},
-    {"brl.sptk.clr",           BRLP (0, 0, 1)},
-    {"brl.spnt.few",           BRL (0, 1, 0)},
-    {"brl.spnt",               BRLP (0, 1, 0)},
-    {"brl.spnt.few.clr",       BRL (0, 1, 1)},
-    {"brl.spnt.clr",           BRLP (0, 1, 1)},
-    {"brl.dptk.few",           BRL (0, 2, 0)},
-    {"brl.dptk",               BRLP (0, 2, 0)},
-    {"brl.dptk.few.clr",       BRL (0, 2, 1)},
-    {"brl.dptk.clr",           BRLP (0, 2, 1)},
-    {"brl.dpnt.few",           BRL (0, 3, 0)},
-    {"brl.dpnt",               BRLP (0, 3, 0)},
-    {"brl.dpnt.few.clr",       BRL (0, 3, 1)},
-    {"brl.dpnt.clr",           BRLP (0, 3, 1)},
-    {"brl.sptk.many",          BRL (1, 0, 0)},
-    {"brl.sptk.many.clr",      BRL (1, 0, 1)},
-    {"brl.spnt.many",          BRL (1, 1, 0)},
-    {"brl.spnt.many.clr",      BRL (1, 1, 1)},
-    {"brl.dptk.many",          BRL (1, 2, 0)},
-    {"brl.dptk.many.clr",      BRL (1, 2, 1)},
-    {"brl.dpnt.many",          BRL (1, 3, 0)},
-    {"brl.dpnt.many.clr",      BRL (1, 3, 1)},
-#undef BRL
-#undef BRLP
-#define BRL(a,b,c) X, OpPaWhaD (0xD, a, b, c), {B1, TGT64}, 0, 0, NULL
-#define BRLP(a,b,c) X, OpPaWhaD (0xD, a, b, c), {B1, TGT64}, PSEUDO, 0, NULL
-    {"brl.call.sptk.few",      BRL (0, 0, 0)},
-    {"brl.call.sptk",          BRLP (0, 0, 0)},
-    {"brl.call.sptk.few.clr",  BRL (0, 0, 1)},
-    {"brl.call.sptk.clr",      BRLP (0, 0, 1)},
-    {"brl.call.spnt.few",      BRL (0, 1, 0)},
-    {"brl.call.spnt",          BRLP (0, 1, 0)},
-    {"brl.call.spnt.few.clr",  BRL (0, 1, 1)},
-    {"brl.call.spnt.clr",      BRLP (0, 1, 1)},
-    {"brl.call.dptk.few",      BRL (0, 2, 0)},
-    {"brl.call.dptk",          BRLP (0, 2, 0)},
-    {"brl.call.dptk.few.clr",  BRL (0, 2, 1)},
-    {"brl.call.dptk.clr",      BRLP (0, 2, 1)},
-    {"brl.call.dpnt.few",      BRL (0, 3, 0)},
-    {"brl.call.dpnt",          BRLP (0, 3, 0)},
-    {"brl.call.dpnt.few.clr",  BRL (0, 3, 1)},
-    {"brl.call.dpnt.clr",      BRLP (0, 3, 1)},
-    {"brl.call.sptk.many",     BRL (1, 0, 0)},
-    {"brl.call.sptk.many.clr", BRL (1, 0, 1)},
-    {"brl.call.spnt.many",     BRL (1, 1, 0)},
-    {"brl.call.spnt.many.clr", BRL (1, 1, 1)},
-    {"brl.call.dptk.many",     BRL (1, 2, 0)},
-    {"brl.call.dptk.many.clr", BRL (1, 2, 1)},
-    {"brl.call.dpnt.many",     BRL (1, 3, 0)},
-    {"brl.call.dpnt.many.clr", BRL (1, 3, 1)},
-#undef BRL
-#undef BRLP
-    {NULL, 0, 0, 0, 0, {0}, 0, 0, NULL}
-  };
-
-#undef X0
-#undef X
-
-#undef bBtype
-#undef bD
-#undef bPa
-#undef bPr
-#undef bVc
-#undef bWha
-#undef bX3
-#undef bX6
-
-#undef mBtype
-#undef mD
-#undef mPa
-#undef mPr
-#undef mVc
-#undef mWha
-#undef mX3
-#undef mX6
-
-#undef OpX3X6
-#undef OpVc
-#undef OpPaWhaD
-#undef OpBtypePaWhaD
-#undef OpBtypePaWhaDPr
diff --git a/tools/debugger/xenitp/ia64-opc.c b/tools/debugger/xenitp/ia64-opc.c
deleted file mode 100644 (file)
index 7e67a7f..0000000
+++ /dev/null
@@ -1,727 +0,0 @@
-/* ia64-opc.c -- Functions to access the compacted opcode table
-   Copyright 1999, 2000, 2001, 2003, 2005 Free Software Foundation, Inc.
-   Written by Bob Manson of Cygnus Solutions, <manson@cygnus.com>
-
-   This file is part of GDB, GAS, and the GNU binutils.
-
-   GDB, GAS, and the GNU binutils are free software; you can redistribute
-   them and/or modify them under the terms of the GNU General Public
-   License as published by the Free Software Foundation; either version
-   2, or (at your option) any later version.
-
-   GDB, GAS, and the GNU binutils are distributed in the hope that they
-   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 file; see the file COPYING.  If not, write to the
-   Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
-   02110-1301, USA.  */
-
-#include "ia64-asmtab.h"
-#include "ia64-asmtab.c"
-
-static void get_opc_prefix (const char **, char *);
-static short int find_string_ent (const char *);
-static short int find_main_ent (short int);
-static short int find_completer (short int, short int, const char *);
-static ia64_insn apply_completer (ia64_insn, int);
-static int extract_op_bits (int, int, int);
-static int extract_op (int, int *, unsigned int *);
-static int opcode_verify (ia64_insn, int, enum ia64_insn_type);
-static int locate_opcode_ent (ia64_insn, enum ia64_insn_type);
-static struct ia64_opcode *make_ia64_opcode
-  (ia64_insn, const char *, int, int);
-static struct ia64_opcode *ia64_find_matching_opcode
-  (const char *, short int);
-
-const struct ia64_templ_desc ia64_templ_desc[16] =
-  {
-    { 0, { IA64_UNIT_M, IA64_UNIT_I, IA64_UNIT_I }, "MII" },   /* 0 */
-    { 2, { IA64_UNIT_M, IA64_UNIT_I, IA64_UNIT_I }, "MII" },
-    { 0, { IA64_UNIT_M, IA64_UNIT_L, IA64_UNIT_X }, "MLX" },
-    { 0, { 0, },                                   "-3-" },
-    { 0, { IA64_UNIT_M, IA64_UNIT_M, IA64_UNIT_I }, "MMI" },   /* 4 */
-    { 1, { IA64_UNIT_M, IA64_UNIT_M, IA64_UNIT_I }, "MMI" },
-    { 0, { IA64_UNIT_M, IA64_UNIT_F, IA64_UNIT_I }, "MFI" },
-    { 0, { IA64_UNIT_M, IA64_UNIT_M, IA64_UNIT_F }, "MMF" },
-    { 0, { IA64_UNIT_M, IA64_UNIT_I, IA64_UNIT_B }, "MIB" },   /* 8 */
-    { 0, { IA64_UNIT_M, IA64_UNIT_B, IA64_UNIT_B }, "MBB" },
-    { 0, { 0, },                                   "-a-" },
-    { 0, { IA64_UNIT_B, IA64_UNIT_B, IA64_UNIT_B }, "BBB" },
-    { 0, { IA64_UNIT_M, IA64_UNIT_M, IA64_UNIT_B }, "MMB" },   /* c */
-    { 0, { 0, },                                   "-d-" },
-    { 0, { IA64_UNIT_M, IA64_UNIT_F, IA64_UNIT_B }, "MFB" },
-    { 0, { 0, },                                   "-f-" },
-  };
-
-
-/* Copy the prefix contained in *PTR (up to a '.' or a NUL) to DEST.
-   PTR will be adjusted to point to the start of the next portion
-   of the opcode, or at the NUL character. */
-
-static void
-get_opc_prefix (const char **ptr, char *dest)
-{
-  char *c = strchr (*ptr, '.');
-  if (c != NULL)
-    {
-      memcpy (dest, *ptr, c - *ptr);
-      dest[c - *ptr] = '\0';
-      *ptr = c + 1;
-    }
-  else
-    {
-      int l = strlen (*ptr);
-      memcpy (dest, *ptr, l);
-      dest[l] = '\0';
-      *ptr += l;
-    }
-}
-\f
-/* Find the index of the entry in the string table corresponding to
-   STR; return -1 if one does not exist. */
-
-static short
-find_string_ent (const char *str)
-{
-  short start = 0;
-  short end = sizeof (ia64_strings) / sizeof (const char *);
-  short i = (start + end) / 2;
-
-  if (strcmp (str, ia64_strings[end - 1]) > 0)
-    {
-      return -1;
-    }
-  while (start <= end)
-    {
-      int c = strcmp (str, ia64_strings[i]);
-      if (c < 0)
-       {
-         end = i - 1;
-       }
-      else if (c == 0)
-       {
-         return i;
-       }
-      else
-       {
-         start = i + 1;
-       }
-      i = (start + end) / 2;
-    }
-  return -1;
-}
-\f
-/* Find the opcode in the main opcode table whose name is STRINGINDEX, or
-   return -1 if one does not exist. */
-
-static short
-find_main_ent (short nameindex)
-{
-  short start = 0;
-  short end = sizeof (main_table) / sizeof (struct ia64_main_table);
-  short i = (start + end) / 2;
-
-  if (nameindex < main_table[0].name_index
-      || nameindex > main_table[end - 1].name_index)
-    {
-      return -1;
-    }
-  while (start <= end)
-    {
-      if (nameindex < main_table[i].name_index)
-       {
-         end = i - 1;
-       }
-      else if (nameindex == main_table[i].name_index)
-       {
-         while (i > 0 && main_table[i - 1].name_index == nameindex)
-           {
-             i--;
-           }
-         return i;
-       }
-      else
-       {
-         start = i + 1;
-       }
-      i = (start + end) / 2;
-    }
-  return -1;
-}
-\f
-/* Find the index of the entry in the completer table that is part of
-   MAIN_ENT (starting from PREV_COMPLETER) that matches NAME, or
-   return -1 if one does not exist. */
-
-static short
-find_completer (short main_ent, short prev_completer, const char *name)
-{
-  short name_index = find_string_ent (name);
-
-  if (name_index < 0)
-    {
-      return -1;
-    }
-
-  if (prev_completer == -1)
-    {
-      prev_completer = main_table[main_ent].completers;
-    }
-  else
-    {
-      prev_completer = completer_table[prev_completer].subentries;
-    }
-
-  while (prev_completer != -1)
-    {
-      if (completer_table[prev_completer].name_index == name_index)
-       {
-         return prev_completer;
-       }
-      prev_completer = completer_table[prev_completer].alternative;
-    }
-  return -1;
-}
-\f
-/* Apply the completer referred to by COMPLETER_INDEX to OPCODE, and
-   return the result. */
-
-static ia64_insn
-apply_completer (ia64_insn opcode, int completer_index)
-{
-  ia64_insn mask = completer_table[completer_index].mask;
-  ia64_insn bits = completer_table[completer_index].bits;
-  int shiftamt = (completer_table[completer_index].offset & 63);
-
-  mask = mask << shiftamt;
-  bits = bits << shiftamt;
-  opcode = (opcode & ~mask) | bits;
-  return opcode;
-}
-\f
-/* Extract BITS number of bits starting from OP_POINTER + BITOFFSET in
-   the dis_table array, and return its value.  (BITOFFSET is numbered
-   starting from MSB to LSB, so a BITOFFSET of 0 indicates the MSB of the
-   first byte in OP_POINTER.) */
-
-static int
-extract_op_bits (int op_pointer, int bitoffset, int bits)
-{
-  int res = 0;
-
-  op_pointer += (bitoffset / 8);
-
-  if (bitoffset % 8)
-    {
-      unsigned int op = dis_table[op_pointer++];
-      int numb = 8 - (bitoffset % 8);
-      int mask = (1 << numb) - 1;
-      int bata = (bits < numb) ? bits : numb;
-      int delta = numb - bata;
-
-      res = (res << bata) | ((op & mask) >> delta);
-      bitoffset += bata;
-      bits -= bata;
-    }
-  while (bits >= 8)
-    {
-      res = (res << 8) | (dis_table[op_pointer++] & 255);
-      bits -= 8;
-    }
-  if (bits > 0)
-    {
-      unsigned int op = (dis_table[op_pointer++] & 255);
-      res = (res << bits) | (op >> (8 - bits));
-    }
-  return res;
-}
-\f
-/* Examine the state machine entry at OP_POINTER in the dis_table
-   array, and extract its values into OPVAL and OP.  The length of the
-   state entry in bits is returned. */
-
-static int
-extract_op (int op_pointer, int *opval, unsigned int *op)
-{
-  int oplen = 5;
-
-  *op = dis_table[op_pointer];
-
-  if ((*op) & 0x40)
-    {
-      opval[0] = extract_op_bits (op_pointer, oplen, 5);
-      oplen += 5;
-    }
-  switch ((*op) & 0x30)
-    {
-    case 0x10:
-      {
-       opval[1] = extract_op_bits (op_pointer, oplen, 8);
-       oplen += 8;
-       opval[1] += op_pointer;
-       break;
-      }
-    case 0x20:
-      {
-       opval[1] = extract_op_bits (op_pointer, oplen, 16);
-       if (! (opval[1] & 32768))
-         {
-           opval[1] += op_pointer;
-         }
-       oplen += 16;
-       break;
-      }
-    case 0x30:
-      {
-       oplen--;
-       opval[2] = extract_op_bits (op_pointer, oplen, 12);
-       oplen += 12;
-       opval[2] |= 32768;
-       break;
-      }
-    }
-  if (((*op) & 0x08) && (((*op) & 0x30) != 0x30))
-    {
-      opval[2] = extract_op_bits (op_pointer, oplen, 16);
-      oplen += 16;
-      if (! (opval[2] & 32768))
-       {
-         opval[2] += op_pointer;
-       }
-    }
-  return oplen;
-}
-\f
-/* Returns a non-zero value if the opcode in the main_table list at
-   PLACE matches OPCODE and is of type TYPE. */
-
-static int
-opcode_verify (ia64_insn opcode, int place, enum ia64_insn_type type)
-{
-  if (main_table[place].opcode_type != type)
-    {
-      return 0;
-    }
-  if (main_table[place].flags
-      & (IA64_OPCODE_F2_EQ_F3 | IA64_OPCODE_LEN_EQ_64MCNT))
-    {
-      const struct ia64_operand *o1, *o2;
-      ia64_insn f2, f3;
-
-      if (main_table[place].flags & IA64_OPCODE_F2_EQ_F3)
-       {
-         o1 = elf64_ia64_operands + IA64_OPND_F2;
-         o2 = elf64_ia64_operands + IA64_OPND_F3;
-         (*o1->extract) (o1, opcode, &f2);
-         (*o2->extract) (o2, opcode, &f3);
-         if (f2 != f3)
-           return 0;
-       }
-      else
-       {
-         ia64_insn len, count;
-
-         /* length must equal 64-count: */
-         o1 = elf64_ia64_operands + IA64_OPND_LEN6;
-         o2 = elf64_ia64_operands + main_table[place].operands[2];
-         (*o1->extract) (o1, opcode, &len);
-         (*o2->extract) (o2, opcode, &count);
-         if (len != 64 - count)
-           return 0;
-       }
-    }
-  return 1;
-}
-\f
-/* Find an instruction entry in the ia64_dis_names array that matches
-   opcode OPCODE and is of type TYPE.  Returns either a positive index
-   into the array, or a negative value if an entry for OPCODE could
-   not be found.  Checks all matches and returns the one with the highest
-   priority. */
-
-static int
-locate_opcode_ent (ia64_insn opcode, enum ia64_insn_type type)
-{
-  int currtest[41];
-  int bitpos[41];
-  int op_ptr[41];
-  int currstatenum = 0;
-  short found_disent = -1;
-  short found_priority = -1;
-
-  currtest[currstatenum] = 0;
-  op_ptr[currstatenum] = 0;
-  bitpos[currstatenum] = 40;
-
-  while (1)
-    {
-      int op_pointer = op_ptr[currstatenum];
-      unsigned int op;
-      int currbitnum = bitpos[currstatenum];
-      int oplen;
-      int opval[3] = {0};
-      int next_op;
-      int currbit;
-
-      oplen = extract_op (op_pointer, opval, &op);
-
-      bitpos[currstatenum] = currbitnum;
-
-      /* Skip opval[0] bits in the instruction. */
-      if (op & 0x40)
-       {
-         currbitnum -= opval[0];
-       }
-
-      /* The value of the current bit being tested. */
-      currbit = opcode & (((ia64_insn) 1) << currbitnum) ? 1 : 0;
-      next_op = -1;
-
-      /* We always perform the tests specified in the current state in
-        a particular order, falling through to the next test if the
-        previous one failed. */
-      switch (currtest[currstatenum])
-       {
-       case 0:
-         currtest[currstatenum]++;
-         if (currbit == 0 && (op & 0x80))
-           {
-             /* Check for a zero bit.  If this test solely checks for
-                a zero bit, we can check for up to 8 consecutive zero
-                bits (the number to check is specified by the lower 3
-                bits in the state code.)
-
-                If the state instruction matches, we go to the very
-                next state instruction; otherwise, try the next test. */
-
-             if ((op & 0xf8) == 0x80)
-               {
-                 int count = op & 0x7;
-                 int x;
-
-                 for (x = 0; x <= count; x++)
-                   {
-                     int i =
-                       opcode & (((ia64_insn) 1) << (currbitnum - x)) ? 1 : 0;
-                     if (i)
-                       {
-                         break;
-                       }
-                   }
-                 if (x > count)
-                   {
-                     next_op = op_pointer + ((oplen + 7) / 8);
-                     currbitnum -= count;
-                     break;
-                   }
-               }
-             else if (! currbit)
-               {
-                 next_op = op_pointer + ((oplen + 7) / 8);
-                 break;
-               }
-           }
-         /* FALLTHROUGH */
-       case 1:
-         /* If the bit in the instruction is one, go to the state
-            instruction specified by opval[1]. */
-         currtest[currstatenum]++;
-         if (currbit && (op & 0x30) != 0 && ((op & 0x30) != 0x30))
-           {
-             next_op = opval[1];
-             break;
-           }
-         /* FALLTHROUGH */
-       case 2:
-         /* Don't care.  Skip the current bit and go to the state
-            instruction specified by opval[2].
-
-            An encoding of 0x30 is special; this means that a 12-bit
-            offset into the ia64_dis_names[] array is specified.  */
-         currtest[currstatenum]++;
-         if ((op & 0x08) || ((op & 0x30) == 0x30))
-           {
-             next_op = opval[2];
-             break;
-           }
-       }
-
-      /* If bit 15 is set in the address of the next state, an offset
-        in the ia64_dis_names array was specified instead.  We then
-        check to see if an entry in the list of opcodes matches the
-        opcode we were given; if so, we have succeeded.  */
-
-      if ((next_op >= 0) && (next_op & 32768))
-       {
-         short disent = next_op & 32767;
-          short priority = -1;
-
-         if (next_op > 65535)
-           {
-             abort ();
-           }
-
-         /* Run through the list of opcodes to check, trying to find
-            one that matches.  */
-         while (disent >= 0)
-           {
-             int place = ia64_dis_names[disent].insn_index;
-
-              priority = ia64_dis_names[disent].priority;
-
-             if (opcode_verify (opcode, place, type)
-                  && priority > found_priority)
-               {
-                 break;
-               }
-             if (ia64_dis_names[disent].next_flag)
-               {
-                 disent++;
-               }
-             else
-               {
-                 disent = -1;
-               }
-           }
-
-         if (disent >= 0)
-           {
-              found_disent = disent;
-              found_priority = priority;
-           }
-          /* Try the next test in this state, regardless of whether a match
-             was found. */
-          next_op = -2;
-       }
-
-      /* next_op == -1 is "back up to the previous state".
-        next_op == -2 is "stay in this state and try the next test".
-        Otherwise, transition to the state indicated by next_op. */
-
-      if (next_op == -1)
-       {
-         currstatenum--;
-         if (currstatenum < 0)
-           {
-              return found_disent;
-           }
-       }
-      else if (next_op >= 0)
-       {
-         currstatenum++;
-         bitpos[currstatenum] = currbitnum - 1;
-         op_ptr[currstatenum] = next_op;
-         currtest[currstatenum] = 0;
-       }
-    }
-}
-\f
-/* Construct an ia64_opcode entry based on OPCODE, NAME and PLACE. */
-
-static struct ia64_opcode *
-make_ia64_opcode (ia64_insn opcode, const char *name, int place, int depind)
-{
-  struct ia64_opcode *res =
-    (struct ia64_opcode *) malloc (sizeof (struct ia64_opcode));
-  res->name = strdup (name);
-  res->type = main_table[place].opcode_type;
-  res->num_outputs = main_table[place].num_outputs;
-  res->opcode = opcode;
-  res->mask = main_table[place].mask;
-  res->operands[0] = main_table[place].operands[0];
-  res->operands[1] = main_table[place].operands[1];
-  res->operands[2] = main_table[place].operands[2];
-  res->operands[3] = main_table[place].operands[3];
-  res->operands[4] = main_table[place].operands[4];
-  res->flags = main_table[place].flags;
-  res->ent_index = place;
-  res->dependencies = &op_dependencies[depind];
-  return res;
-}
-\f
-/* Determine the ia64_opcode entry for the opcode specified by INSN
-   and TYPE.  If a valid entry is not found, return NULL. */
-struct ia64_opcode *
-ia64_dis_opcode (ia64_insn insn, enum ia64_insn_type type)
-{
-  int disent = locate_opcode_ent (insn, type);
-
-  if (disent < 0)
-    {
-      return NULL;
-    }
-  else
-    {
-      unsigned int cb = ia64_dis_names[disent].completer_index;
-      static char name[128];
-      int place = ia64_dis_names[disent].insn_index;
-      int ci = main_table[place].completers;
-      ia64_insn tinsn = main_table[place].opcode;
-
-      strcpy (name, ia64_strings [main_table[place].name_index]);
-
-      while (cb)
-       {
-         if (cb & 1)
-           {
-             int cname = completer_table[ci].name_index;
-
-             tinsn = apply_completer (tinsn, ci);
-
-             if (ia64_strings[cname][0] != '\0')
-               {
-                 strcat (name, ".");
-                 strcat (name, ia64_strings[cname]);
-               }
-             if (cb != 1)
-               {
-                 ci = completer_table[ci].subentries;
-               }
-           }
-         else
-           {
-             ci = completer_table[ci].alternative;
-           }
-         if (ci < 0)
-           {
-             abort ();
-           }
-         cb = cb >> 1;
-       }
-      if (tinsn != (insn & main_table[place].mask))
-       {
-         abort ();
-       }
-      return make_ia64_opcode (insn, name, place,
-                               completer_table[ci].dependencies);
-    }
-}
-\f
-/* Search the main_opcode table starting from PLACE for an opcode that
-   matches NAME.  Return NULL if one is not found. */
-
-static struct ia64_opcode *
-ia64_find_matching_opcode (const char *name, short place)
-{
-  char op[129];
-  const char *suffix;
-  short name_index;
-
-  if (strlen (name) > 128)
-    {
-      return NULL;
-    }
-  suffix = name;
-  get_opc_prefix (&suffix, op);
-  name_index = find_string_ent (op);
-  if (name_index < 0)
-    {
-      return NULL;
-    }
-
-  while (main_table[place].name_index == name_index)
-    {
-      const char *curr_suffix = suffix;
-      ia64_insn curr_insn = main_table[place].opcode;
-      short completer = -1;
-
-      do {
-       if (suffix[0] == '\0')
-         {
-           completer = find_completer (place, completer, suffix);
-         }
-       else
-         {
-           get_opc_prefix (&curr_suffix, op);
-           completer = find_completer (place, completer, op);
-         }
-       if (completer != -1)
-         {
-           curr_insn = apply_completer (curr_insn, completer);
-         }
-      } while (completer != -1 && curr_suffix[0] != '\0');
-
-      if (completer != -1 && curr_suffix[0] == '\0'
-         && completer_table[completer].terminal_completer)
-       {
-          int depind = completer_table[completer].dependencies;
-         return make_ia64_opcode (curr_insn, name, place, depind);
-       }
-      else
-       {
-         place++;
-       }
-    }
-  return NULL;
-}
-\f
-/* Find the next opcode after PREV_ENT that matches PREV_ENT, or return NULL
-   if one does not exist.
-
-   It is the caller's responsibility to invoke ia64_free_opcode () to
-   release any resources used by the returned entry. */
-
-struct ia64_opcode *
-ia64_find_next_opcode (struct ia64_opcode *prev_ent)
-{
-  return ia64_find_matching_opcode (prev_ent->name,
-                                   prev_ent->ent_index + 1);
-}
-
-/* Find the first opcode that matches NAME, or return NULL if it does
-   not exist.
-
-   It is the caller's responsibility to invoke ia64_free_opcode () to
-   release any resources used by the returned entry. */
-
-struct ia64_opcode *
-ia64_find_opcode (const char *name)
-{
-  char op[129];
-  const char *suffix;
-  short place;
-  short name_index;
-
-  if (strlen (name) > 128)
-    {
-      return NULL;
-    }
-  suffix = name;
-  get_opc_prefix (&suffix, op);
-  name_index = find_string_ent (op);
-  if (name_index < 0)
-    {
-      return NULL;
-    }
-
-  place = find_main_ent (name_index);
-
-  if (place < 0)
-    {
-      return NULL;
-    }
-  return ia64_find_matching_opcode (name, place);
-}
-
-/* Free any resources used by ENT. */
-void
-ia64_free_opcode (struct ia64_opcode *ent)
-{
-  free ((void *)ent->name);
-  free (ent);
-}
-
-const struct ia64_dependency *
-ia64_find_dependency (int index)
-{
-  index = DEP(index);
-
-  if (index < 0
-      || index >= (int)(sizeof(dependencies) / sizeof(dependencies[0])))
-    return NULL;
-
-  return &dependencies[index];
-}
diff --git a/tools/debugger/xenitp/ia64-opc.h b/tools/debugger/xenitp/ia64-opc.h
deleted file mode 100644 (file)
index 4aff188..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-/* ia64-opc.h -- IA-64 opcode table.
-   Copyright 1998, 1999, 2000, 2002, 2005, 2006
-   Free Software Foundation, Inc.
-   Contributed by David Mosberger-Tang <davidm@hpl.hp.com>
-
-   This file is part of GDB, GAS, and the GNU binutils.
-
-   GDB, GAS, and the GNU binutils are free software; you can redistribute
-   them and/or modify them under the terms of the GNU General Public
-   License as published by the Free Software Foundation; either version
-   2, or (at your option) any later version.
-
-   GDB, GAS, and the GNU binutils are distributed in the hope that they
-   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 file; see the file COPYING.  If not, write to the
-   Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
-   02110-1301, USA.  */
-
-#ifndef IA64_OPC_H
-#define IA64_OPC_H
-
-#include "ia64.h"
-
-/* define a couple of abbreviations: */
-
-#define bOp(x) (((ia64_insn) ((x) & 0xf)) << 37)
-#define mOp    bOp (-1)
-#define Op(x)  bOp (x), mOp
-
-#define FIRST          IA64_OPCODE_FIRST
-#define X_IN_MLX       IA64_OPCODE_X_IN_MLX
-#define LAST           IA64_OPCODE_LAST
-#define PRIV           IA64_OPCODE_PRIV
-#define NO_PRED                IA64_OPCODE_NO_PRED
-#define SLOT2          IA64_OPCODE_SLOT2
-#define PSEUDO         IA64_OPCODE_PSEUDO
-#define F2_EQ_F3       IA64_OPCODE_F2_EQ_F3
-#define LEN_EQ_64MCNT  IA64_OPCODE_LEN_EQ_64MCNT
-#define MOD_RRBS        IA64_OPCODE_MOD_RRBS
-#define POSTINC                IA64_OPCODE_POSTINC
-
-#define AR_CCV IA64_OPND_AR_CCV
-#define AR_PFS IA64_OPND_AR_PFS
-#define AR_CSD IA64_OPND_AR_CSD
-#define C1     IA64_OPND_C1
-#define C8     IA64_OPND_C8
-#define C16    IA64_OPND_C16
-#define GR0    IA64_OPND_GR0
-#define IP     IA64_OPND_IP
-#define PR     IA64_OPND_PR
-#define PR_ROT IA64_OPND_PR_ROT
-#define PSR    IA64_OPND_PSR
-#define PSR_L  IA64_OPND_PSR_L
-#define PSR_UM IA64_OPND_PSR_UM
-
-#define AR3    IA64_OPND_AR3
-#define B1     IA64_OPND_B1
-#define B2     IA64_OPND_B2
-#define CR3    IA64_OPND_CR3
-#define F1     IA64_OPND_F1
-#define F2     IA64_OPND_F2
-#define F3     IA64_OPND_F3
-#define F4     IA64_OPND_F4
-#define P1     IA64_OPND_P1
-#define P2     IA64_OPND_P2
-#define R1     IA64_OPND_R1
-#define R2     IA64_OPND_R2
-#define R3     IA64_OPND_R3
-#define R3_2   IA64_OPND_R3_2
-
-#define CPUID_R3 IA64_OPND_CPUID_R3
-#define DBR_R3 IA64_OPND_DBR_R3
-#define DTR_R3 IA64_OPND_DTR_R3
-#define ITR_R3 IA64_OPND_ITR_R3
-#define IBR_R3 IA64_OPND_IBR_R3
-#define MR3    IA64_OPND_MR3
-#define MSR_R3 IA64_OPND_MSR_R3
-#define PKR_R3 IA64_OPND_PKR_R3
-#define PMC_R3 IA64_OPND_PMC_R3
-#define PMD_R3 IA64_OPND_PMD_R3
-#define RR_R3  IA64_OPND_RR_R3
-
-#define CCNT5  IA64_OPND_CCNT5
-#define CNT2a  IA64_OPND_CNT2a
-#define CNT2b  IA64_OPND_CNT2b
-#define CNT2c  IA64_OPND_CNT2c
-#define CNT5   IA64_OPND_CNT5
-#define CNT6   IA64_OPND_CNT6
-#define CPOS6a IA64_OPND_CPOS6a
-#define CPOS6b IA64_OPND_CPOS6b
-#define CPOS6c IA64_OPND_CPOS6c
-#define IMM1   IA64_OPND_IMM1
-#define IMM14  IA64_OPND_IMM14
-#define IMM17  IA64_OPND_IMM17
-#define IMM22  IA64_OPND_IMM22
-#define IMM44  IA64_OPND_IMM44
-#define SOF    IA64_OPND_SOF
-#define SOL    IA64_OPND_SOL
-#define SOR    IA64_OPND_SOR
-#define IMM8   IA64_OPND_IMM8
-#define IMM8U4 IA64_OPND_IMM8U4
-#define IMM8M1 IA64_OPND_IMM8M1
-#define IMM8M1U4 IA64_OPND_IMM8M1U4
-#define IMM8M1U8 IA64_OPND_IMM8M1U8
-#define IMM9a  IA64_OPND_IMM9a
-#define IMM9b  IA64_OPND_IMM9b
-#define IMMU2  IA64_OPND_IMMU2
-#define IMMU21 IA64_OPND_IMMU21
-#define IMMU24 IA64_OPND_IMMU24
-#define IMMU62 IA64_OPND_IMMU62
-#define IMMU64 IA64_OPND_IMMU64
-#define IMMU5b IA64_OPND_IMMU5b
-#define IMMU7a IA64_OPND_IMMU7a
-#define IMMU7b IA64_OPND_IMMU7b
-#define IMMU9  IA64_OPND_IMMU9
-#define INC3   IA64_OPND_INC3
-#define LEN4   IA64_OPND_LEN4
-#define LEN6   IA64_OPND_LEN6
-#define MBTYPE4        IA64_OPND_MBTYPE4
-#define MHTYPE8        IA64_OPND_MHTYPE8
-#define POS6   IA64_OPND_POS6
-#define TAG13  IA64_OPND_TAG13
-#define TAG13b IA64_OPND_TAG13b
-#define TGT25  IA64_OPND_TGT25
-#define TGT25b IA64_OPND_TGT25b
-#define TGT25c IA64_OPND_TGT25c
-#define TGT64   IA64_OPND_TGT64
-
-#endif
diff --git a/tools/debugger/xenitp/ia64.h b/tools/debugger/xenitp/ia64.h
deleted file mode 100644 (file)
index 8b5036f..0000000
+++ /dev/null
@@ -1,396 +0,0 @@
-/* ia64.h -- Header file for ia64 opcode table
-   Copyright (C) 1998, 1999, 2000, 2002, 2005, 2006
-   Free Software Foundation, Inc.
-   Contributed by David Mosberger-Tang <davidm@hpl.hp.com> */
-
-#ifndef opcode_ia64_h
-#define opcode_ia64_h
-
-#include <sys/types.h>
-
-#include "dis-asm.h"
-
-
-typedef BFD_HOST_U_64_BIT ia64_insn;
-
-enum ia64_insn_type
-  {
-    IA64_TYPE_NIL = 0, /* illegal type */
-    IA64_TYPE_A,       /* integer alu (I- or M-unit) */
-    IA64_TYPE_I,       /* non-alu integer (I-unit) */
-    IA64_TYPE_M,       /* memory (M-unit) */
-    IA64_TYPE_B,       /* branch (B-unit) */
-    IA64_TYPE_F,       /* floating-point (F-unit) */
-    IA64_TYPE_X,       /* long encoding (X-unit) */
-    IA64_TYPE_DYN,     /* Dynamic opcode */
-    IA64_NUM_TYPES
-  };
-
-enum ia64_unit
-  {
-    IA64_UNIT_NIL = 0, /* illegal unit */
-    IA64_UNIT_I,       /* integer unit */
-    IA64_UNIT_M,       /* memory unit */
-    IA64_UNIT_B,       /* branching unit */
-    IA64_UNIT_F,       /* floating-point unit */
-    IA64_UNIT_L,       /* long "unit" */
-    IA64_UNIT_X,       /* may be integer or branch unit */
-    IA64_NUM_UNITS
-  };
-
-/* Changes to this enumeration must be propagated to the operand table in
-   bfd/cpu-ia64-opc.c
- */
-enum ia64_opnd
-  {
-    IA64_OPND_NIL,     /* no operand---MUST BE FIRST!*/
-
-    /* constants */
-    IA64_OPND_AR_CSD,  /* application register csd (ar.csd) */
-    IA64_OPND_AR_CCV,  /* application register ccv (ar.ccv) */
-    IA64_OPND_AR_PFS,  /* application register pfs (ar.pfs) */
-    IA64_OPND_C1,      /* the constant 1 */
-    IA64_OPND_C8,      /* the constant 8 */
-    IA64_OPND_C16,     /* the constant 16 */
-    IA64_OPND_GR0,     /* gr0 */
-    IA64_OPND_IP,      /* instruction pointer (ip) */
-    IA64_OPND_PR,      /* predicate register (pr) */
-    IA64_OPND_PR_ROT,  /* rotating predicate register (pr.rot) */
-    IA64_OPND_PSR,     /* processor status register (psr) */
-    IA64_OPND_PSR_L,   /* processor status register L (psr.l) */
-    IA64_OPND_PSR_UM,  /* processor status register UM (psr.um) */
-
-    /* register operands: */
-    IA64_OPND_AR3,     /* third application register # (bits 20-26) */
-    IA64_OPND_B1,      /* branch register # (bits 6-8) */
-    IA64_OPND_B2,      /* branch register # (bits 13-15) */
-    IA64_OPND_CR3,     /* third control register # (bits 20-26) */
-    IA64_OPND_F1,      /* first floating-point register # */
-    IA64_OPND_F2,      /* second floating-point register # */
-    IA64_OPND_F3,      /* third floating-point register # */
-    IA64_OPND_F4,      /* fourth floating-point register # */
-    IA64_OPND_P1,      /* first predicate # */
-    IA64_OPND_P2,      /* second predicate # */
-    IA64_OPND_R1,      /* first register # */
-    IA64_OPND_R2,      /* second register # */
-    IA64_OPND_R3,      /* third register # */
-    IA64_OPND_R3_2,    /* third register # (limited to gr0-gr3) */
-
-    /* memory operands: */
-    IA64_OPND_MR3,     /* memory at addr of third register # */
-
-    /* indirect operands: */
-    IA64_OPND_CPUID_R3,        /* cpuid[reg] */
-    IA64_OPND_DBR_R3,  /* dbr[reg] */
-    IA64_OPND_DTR_R3,  /* dtr[reg] */
-    IA64_OPND_ITR_R3,  /* itr[reg] */
-    IA64_OPND_IBR_R3,  /* ibr[reg] */
-    IA64_OPND_MSR_R3,  /* msr[reg] */
-    IA64_OPND_PKR_R3,  /* pkr[reg] */
-    IA64_OPND_PMC_R3,  /* pmc[reg] */
-    IA64_OPND_PMD_R3,  /* pmd[reg] */
-    IA64_OPND_RR_R3,   /* rr[reg] */
-
-    /* immediate operands: */
-    IA64_OPND_CCNT5,   /* 5-bit count (31 - bits 20-24) */
-    IA64_OPND_CNT2a,   /* 2-bit count (1 + bits 27-28) */
-    IA64_OPND_CNT2b,   /* 2-bit count (bits 27-28): 1, 2, 3 */
-    IA64_OPND_CNT2c,   /* 2-bit count (bits 30-31): 0, 7, 15, or 16 */
-    IA64_OPND_CNT5,    /* 5-bit count (bits 14-18) */
-    IA64_OPND_CNT6,    /* 6-bit count (bits 27-32) */
-    IA64_OPND_CPOS6a,  /* 6-bit count (63 - bits 20-25) */
-    IA64_OPND_CPOS6b,  /* 6-bit count (63 - bits 14-19) */
-    IA64_OPND_CPOS6c,  /* 6-bit count (63 - bits 31-36) */
-    IA64_OPND_IMM1,    /* signed 1-bit immediate (bit 36) */
-    IA64_OPND_IMMU2,   /* unsigned 2-bit immediate (bits 13-14) */
-    IA64_OPND_IMMU5b,  /* unsigned 5-bit immediate (32 + bits 14-18) */
-    IA64_OPND_IMMU7a,  /* unsigned 7-bit immediate (bits 13-19) */
-    IA64_OPND_IMMU7b,  /* unsigned 7-bit immediate (bits 20-26) */
-    IA64_OPND_SOF,     /* 8-bit stack frame size */
-    IA64_OPND_SOL,     /* 8-bit size of locals */
-    IA64_OPND_SOR,     /* 6-bit number of rotating registers (scaled by 8) */
-    IA64_OPND_IMM8,    /* signed 8-bit immediate (bits 13-19 & 36) */
-    IA64_OPND_IMM8U4,  /* cmp4*u signed 8-bit immediate (bits 13-19 & 36) */
-    IA64_OPND_IMM8M1,  /* signed 8-bit immediate -1 (bits 13-19 & 36) */
-    IA64_OPND_IMM8M1U4,        /* cmp4*u signed 8-bit immediate -1 (bits 13-19 & 36)*/
-    IA64_OPND_IMM8M1U8,        /* cmp*u signed 8-bit immediate -1 (bits 13-19 & 36) */
-    IA64_OPND_IMMU9,   /* unsigned 9-bit immediate (bits 33-34, 20-26) */
-    IA64_OPND_IMM9a,   /* signed 9-bit immediate (bits 6-12, 27, 36) */
-    IA64_OPND_IMM9b,   /* signed 9-bit immediate (bits 13-19, 27, 36) */
-    IA64_OPND_IMM14,   /* signed 14-bit immediate (bits 13-19, 27-32, 36) */
-    IA64_OPND_IMM17,   /* signed 17-bit immediate (2*bits 6-12, 24-31, 36) */
-    IA64_OPND_IMMU21,  /* unsigned 21-bit immediate (bits 6-25, 36) */
-    IA64_OPND_IMM22,   /* signed 22-bit immediate (bits 13-19, 22-36) */
-    IA64_OPND_IMMU24,  /* unsigned 24-bit immediate (bits 6-26, 31-32, 36) */
-    IA64_OPND_IMM44,   /* signed 44-bit immediate (2^16*bits 6-32, 36) */
-    IA64_OPND_IMMU62,  /* unsigned 62-bit immediate */
-    IA64_OPND_IMMU64,  /* unsigned 64-bit immediate (lotsa bits...) */
-    IA64_OPND_INC3,    /* signed 3-bit (bits 13-15): +/-1, 4, 8, 16 */
-    IA64_OPND_LEN4,    /* 4-bit count (bits 27-30 + 1) */
-    IA64_OPND_LEN6,    /* 6-bit count (bits 27-32 + 1) */
-    IA64_OPND_MBTYPE4, /* 4-bit mux type (bits 20-23) */
-    IA64_OPND_MHTYPE8, /* 8-bit mux type (bits 20-27) */
-    IA64_OPND_POS6,    /* 6-bit count (bits 14-19) */
-    IA64_OPND_TAG13,   /* signed 13-bit tag (ip + 16*bits 6-12, 33-34) */
-    IA64_OPND_TAG13b,  /* signed 13-bit tag (ip + 16*bits 24-32) */
-    IA64_OPND_TGT25,   /* signed 25-bit (ip + 16*bits 6-25, 36) */
-    IA64_OPND_TGT25b,  /* signed 25-bit (ip + 16*bits 6-12, 20-32, 36) */
-    IA64_OPND_TGT25c,  /* signed 25-bit (ip + 16*bits 13-32, 36) */
-    IA64_OPND_TGT64,    /* 64-bit (ip + 16*bits 13-32, 36, 2-40(L)) */
-    IA64_OPND_LDXMOV,  /* any symbol, generates R_IA64_LDXMOV.  */
-
-    IA64_OPND_COUNT    /* # of operand types (MUST BE LAST!) */
-  };
-
-enum ia64_dependency_mode
-{
-  IA64_DV_RAW,
-  IA64_DV_WAW,
-  IA64_DV_WAR,
-};
-
-enum ia64_dependency_semantics
-{
-  IA64_DVS_NONE,
-  IA64_DVS_IMPLIED,
-  IA64_DVS_IMPLIEDF,
-  IA64_DVS_DATA,
-  IA64_DVS_INSTR,
-  IA64_DVS_SPECIFIC,
-  IA64_DVS_STOP,
-  IA64_DVS_OTHER,
-};
-
-enum ia64_resource_specifier
-{
-  IA64_RS_ANY,
-  IA64_RS_AR_K,
-  IA64_RS_AR_UNAT,
-  IA64_RS_AR, /* 8-15, 20, 22-23, 31, 33-35, 37-39, 41-43, 45-47, 67-111 */
-  IA64_RS_ARb, /* 48-63, 112-127 */
-  IA64_RS_BR,
-  IA64_RS_CFM,
-  IA64_RS_CPUID,
-  IA64_RS_CR_IRR,
-  IA64_RS_CR_LRR,
-  IA64_RS_CR, /* 3-7,10-15,18,26-63,75-79,82-127 */
-  IA64_RS_DBR,
-  IA64_RS_FR,
-  IA64_RS_FRb,
-  IA64_RS_GR0,
-  IA64_RS_GR,
-  IA64_RS_IBR,
-  IA64_RS_INSERVICE, /* CR[EOI] or CR[IVR] */
-  IA64_RS_MSR,
-  IA64_RS_PKR,
-  IA64_RS_PMC,
-  IA64_RS_PMD,
-  IA64_RS_PR,  /* non-rotating, 1-15 */
-  IA64_RS_PRr, /* rotating, 16-62 */
-  IA64_RS_PR63,
-  IA64_RS_RR,
-
-  IA64_RS_ARX, /* ARs not in RS_AR or RS_ARb */
-  IA64_RS_CRX, /* CRs not in RS_CR */
-  IA64_RS_PSR, /* PSR bits */
-  IA64_RS_RSE, /* implementation-specific RSE resources */
-  IA64_RS_AR_FPSR,
-};
-
-enum ia64_rse_resource
-{
-  IA64_RSE_N_STACKED_PHYS,
-  IA64_RSE_BOF,
-  IA64_RSE_STORE_REG,
-  IA64_RSE_LOAD_REG,
-  IA64_RSE_BSPLOAD,
-  IA64_RSE_RNATBITINDEX,
-  IA64_RSE_CFLE,
-  IA64_RSE_NDIRTY,
-};
-
-/* Information about a given resource dependency */
-struct ia64_dependency
-{
-  /* Name of the resource */
-  const char *name;
-  /* Does this dependency need further specification? */
-  enum ia64_resource_specifier specifier;
-  /* Mode of dependency */
-  enum ia64_dependency_mode mode;
-  /* Dependency semantics */
-  enum ia64_dependency_semantics semantics;
-  /* Register index, if applicable (distinguishes AR, CR, and PSR deps) */
-#define REG_NONE (-1)
-  int regindex;
-  /* Special info on semantics */
-  const char *info;
-};
-
-/* Two arrays of indexes into the ia64_dependency table.
-   chks are dependencies to check for conflicts when an opcode is
-   encountered; regs are dependencies to register (mark as used) when an
-   opcode is used.  chks correspond to readers (RAW) or writers (WAW or
-   WAR) of a resource, while regs correspond to writers (RAW or WAW) and
-   readers (WAR) of a resource.  */
-struct ia64_opcode_dependency
-{
-  int nchks;
-  const unsigned short *chks;
-  int nregs;
-  const unsigned short *regs;
-};
-
-/* encode/extract the note/index for a dependency */
-#define RDEP(N,X) (((N)<<11)|(X))
-#define NOTE(X) (((X)>>11)&0x1F)
-#define DEP(X) ((X)&0x7FF)
-
-/* A template descriptor describes the execution units that are active
-   for each of the three slots.  It also specifies the location of
-   instruction group boundaries that may be present between two slots.  */
-struct ia64_templ_desc
-  {
-    int group_boundary;        /* 0=no boundary, 1=between slot 0 & 1, etc. */
-    enum ia64_unit exec_unit[3];
-    const char *name;
-  };
-
-/* The opcode table is an array of struct ia64_opcode.  */
-
-struct ia64_opcode
-  {
-    /* The opcode name.  */
-    const char *name;
-
-    /* The type of the instruction: */
-    enum ia64_insn_type type;
-
-    /* Number of output operands: */
-    int num_outputs;
-
-    /* The opcode itself.  Those bits which will be filled in with
-       operands are zeroes.  */
-    ia64_insn opcode;
-
-    /* The opcode mask.  This is used by the disassembler.  This is a
-       mask containing ones indicating those bits which must match the
-       opcode field, and zeroes indicating those bits which need not
-       match (and are presumably filled in by operands).  */
-    ia64_insn mask;
-
-    /* An array of operand codes.  Each code is an index into the
-       operand table.  They appear in the order which the operands must
-       appear in assembly code, and are terminated by a zero.  */
-    enum ia64_opnd operands[5];
-
-    /* One bit flags for the opcode.  These are primarily used to
-       indicate specific processors and environments support the
-       instructions.  The defined values are listed below. */
-    unsigned int flags;
-
-    /* Used by ia64_find_next_opcode (). */
-    short ent_index;
-
-    /* Opcode dependencies. */
-    const struct ia64_opcode_dependency *dependencies;
-  };
-
-/* Values defined for the flags field of a struct ia64_opcode.  */
-
-#define IA64_OPCODE_FIRST      (1<<0)  /* must be first in an insn group */
-#define IA64_OPCODE_X_IN_MLX   (1<<1)  /* insn is allowed in X slot of MLX */
-#define IA64_OPCODE_LAST       (1<<2)  /* must be last in an insn group */
-#define IA64_OPCODE_PRIV       (1<<3)  /* privileged instruct */
-#define IA64_OPCODE_SLOT2      (1<<4)  /* insn allowed in slot 2 only */
-#define IA64_OPCODE_NO_PRED    (1<<5)  /* insn cannot be predicated */
-#define IA64_OPCODE_PSEUDO     (1<<6)  /* insn is a pseudo-op */
-#define IA64_OPCODE_F2_EQ_F3   (1<<7)  /* constraint: F2 == F3 */
-#define IA64_OPCODE_LEN_EQ_64MCNT      (1<<8)  /* constraint: LEN == 64-CNT */
-#define IA64_OPCODE_MOD_RRBS    (1<<9) /* modifies all rrbs in CFM */
-#define IA64_OPCODE_POSTINC    (1<<10) /* postincrement MR3 operand */
-
-/* A macro to extract the major opcode from an instruction.  */
-#define IA64_OP(i)     (((i) >> 37) & 0xf)
-
-enum ia64_operand_class
-  {
-    IA64_OPND_CLASS_CST,       /* constant */
-    IA64_OPND_CLASS_REG,       /* register */
-    IA64_OPND_CLASS_IND,       /* indirect register */
-    IA64_OPND_CLASS_ABS,       /* absolute value */
-    IA64_OPND_CLASS_REL,       /* IP-relative value */
-  };
-
-/* The operands table is an array of struct ia64_operand.  */
-
-struct ia64_operand
-{
-  enum ia64_operand_class class;
-
-  /* Set VALUE as the operand bits for the operand of type SELF in the
-     instruction pointed to by CODE.  If an error occurs, *CODE is not
-     modified and the returned string describes the cause of the
-     error.  If no error occurs, NULL is returned.  */
-  const char *(*insert) (const struct ia64_operand *self, ia64_insn value,
-                        ia64_insn *code);
-
-  /* Extract the operand bits for an operand of type SELF from
-     instruction CODE store them in *VALUE.  If an error occurs, the
-     cause of the error is described by the string returned.  If no
-     error occurs, NULL is returned.  */
-  const char *(*extract) (const struct ia64_operand *self, ia64_insn code,
-                         ia64_insn *value);
-
-  /* A string whose meaning depends on the operand class.  */
-
-  const char *str;
-
-  struct bit_field
-    {
-      /* The number of bits in the operand.  */
-      int bits;
-
-      /* How far the operand is left shifted in the instruction.  */
-      int shift;
-    }
-  field[4];            /* no operand has more than this many bit-fields */
-
-  unsigned int flags;
-
-  const char *desc;    /* brief description */
-};
-
-/* Values defined for the flags field of a struct ia64_operand.  */
-
-/* Disassemble as signed decimal (instead of hex): */
-#define IA64_OPND_FLAG_DECIMAL_SIGNED  (1<<0)
-/* Disassemble as unsigned decimal (instead of hex): */
-#define IA64_OPND_FLAG_DECIMAL_UNSIGNED        (1<<1)
-
-extern const struct ia64_templ_desc ia64_templ_desc[16];
-
-/* The tables are sorted by major opcode number and are otherwise in
-   the order in which the disassembler should consider instructions.  */
-extern struct ia64_opcode ia64_opcodes_a[];
-extern struct ia64_opcode ia64_opcodes_i[];
-extern struct ia64_opcode ia64_opcodes_m[];
-extern struct ia64_opcode ia64_opcodes_b[];
-extern struct ia64_opcode ia64_opcodes_f[];
-extern struct ia64_opcode ia64_opcodes_d[];
-
-
-extern struct ia64_opcode *ia64_find_opcode (const char *name);
-extern struct ia64_opcode *ia64_find_next_opcode (struct ia64_opcode *ent);
-
-extern struct ia64_opcode *ia64_dis_opcode (ia64_insn insn,
-                                           enum ia64_insn_type type);
-
-extern void ia64_free_opcode (struct ia64_opcode *ent);
-extern const struct ia64_dependency *ia64_find_dependency (int index);
-
-/* To avoid circular library dependencies, this array is implemented
-   in bfd/cpu-ia64-opc.c: */
-extern const struct ia64_operand elf64_ia64_operands[IA64_OPND_COUNT];
-
-#endif /* opcode_ia64_h */
diff --git a/tools/debugger/xenitp/xenitp.c b/tools/debugger/xenitp/xenitp.c
deleted file mode 100644 (file)
index 812810c..0000000
+++ /dev/null
@@ -1,1732 +0,0 @@
-/* tools/debugger/xenitp.c  - A low-level debugger.
-   Based on xenctxt.c, but heavily modified.
-   Copyright 2007 Tristan Gingold <tgingold@free.fr>
-   Xenitp 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; either version 2 of the License, or
-   (at your option) any later version.
-
-   Xenitp 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 program.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include <time.h>
-#include <stdlib.h>
-#include <sys/mman.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <errno.h>
-#include <argp.h>
-#include <signal.h>
-#include <string.h>
-#include <getopt.h>
-
-#include "xenctrl.h"
-#include <xen/sys/privcmd.h>
-#include "dis-asm.h"
-
-#ifdef __HYPERVISOR_ia64_debug_op
-#define HAVE_DEBUG_OP
-#include <xen/arch-ia64/debug_op.h>
-#endif
-
-static xc_interface *xc_handle = 0;
-static int domid = 0;
-static vcpu_guest_context_t *cur_ctx;
-static int cur_vcpu;
-
-#define PSR_BN              (1UL << 44)
-#define PSR_SS              (1UL << 40)
-#define PSR_DB              (1UL << 24)
-#define PSR_TB              (1UL << 26)
-#define PSR_DD              (1UL << 39)
-#define PSR_ID              (1UL << 37)
-#define PSR_IT              (1UL << 36)
-#define PSR_DT              (1UL << 17)
-#define PSR_RI_SHIFT             41
-#define CFM_SOF_MASK            0x3f
-
-int virt_to_phys (int is_inst, unsigned long vaddr, unsigned long *paddr);
-
-/* wrapper for vcpu_gest_context_any_t */
-static int xc_ia64_vcpu_getcontext(xc_interface *xc_handle,
-                                   uint32_t domid,
-                                   uint32_t vcpu,
-                                   vcpu_guest_context_t *ctxt)
-{
-    return xc_vcpu_getcontext(xc_handle, domid, vcpu,
-                              (vcpu_guest_context_any_t *)ctxt);
-}
-
-static inline unsigned int ctx_slot (vcpu_guest_context_t *ctx)
-{
-    return (ctx->regs.psr >> PSR_RI_SHIFT) & 3;
-}
-
-unsigned char *
-target_map_memory (unsigned long paddr)
-{
-    static unsigned long cur_page = (unsigned long)-1;
-    static unsigned char *cur_map = NULL;
-
-    if ((paddr >> XC_PAGE_SHIFT) != cur_page) {
-        if (cur_map) {
-            munmap (cur_map, XC_PAGE_SIZE);
-            cur_map = NULL;
-        }
-        cur_page = paddr >> XC_PAGE_SHIFT;
-        cur_map = xc_map_foreign_range (xc_handle, domid, XC_PAGE_SIZE,
-                                        PROT_READ, cur_page);
-        if (cur_map == NULL) {
-            perror ("cannot map page");
-            cur_page = -1;
-            return NULL;
-        }
-    }
-    return cur_map + (paddr & (XC_PAGE_SIZE - 1));
-}
-
-/* Get LENGTH bytes from info's buffer, at target address memaddr.
-   Transfer them to myaddr.  */
-int
-target_read_memory (bfd_vma memaddr, bfd_byte *myaddr,
-                    unsigned int length, struct disassemble_info *info)
-{
-    int i;
-    unsigned long paddr;
-
-    if (cur_ctx->regs.psr & PSR_IT) {
-        if (virt_to_phys (1, memaddr, &paddr) != 0)
-            return EIO;
-    }
-    else {
-        /* Clear UC.  */
-        paddr = memaddr & ~(1UL << 63);
-    }
-
-    for (i = 0; i < length; i++) {
-        unsigned char *p = target_map_memory (paddr + i);
-
-        if (p == NULL)
-            return EIO;
-        myaddr[i] = *p;
-    }
-    return 0;
-}
-
-/* Print an error message.  We can assume that this is in response to
-   an error return from buffer_read_memory.  */
-void
-perror_memory (int status, bfd_vma memaddr, struct disassemble_info *info)
-{
-    if (status != EIO)
-        /* Can't happen.  */
-        (*info->fprintf_func) (info->stream, "Unknown error %d\n", status);
-    else
-        /* Actually, address between memaddr and memaddr + len was
-           out of bounds.  */
-        (*info->fprintf_func) (info->stream,
-                               "Address 0x%" PRIx64 " is out of bounds.\n",
-                               memaddr);
-}
-
-/* This could be in a separate file, to save miniscule amounts of space
-   in statically linked executables.  */
-
-/* Just print the address is hex.  This is included for completeness even
-   though both GDB and objdump provide their own (to print symbolic
-   addresses).  */
-
-void
-generic_print_address (bfd_vma addr, struct disassemble_info *info)
-{
-    (*info->fprintf_func) (info->stream, "0x%" PRIx64, addr);
-}
-
-/* Just return the given address.  */
-
-int
-generic_symbol_at_address (bfd_vma addr, struct disassemble_info * info)
-{
-    return 1;
-}
-
-bfd_boolean
-generic_symbol_is_valid (asymbol * sym ATTRIBUTE_UNUSED,
-                         struct disassemble_info *info ATTRIBUTE_UNUSED)
-{
-    return 1;
-}
-
-bfd_vma bfd_getl32 (const bfd_byte *addr)
-{
-    unsigned long v;
-
-    v = (unsigned long) addr[0];
-    v |= (unsigned long) addr[1] << 8;
-    v |= (unsigned long) addr[2] << 16;
-    v |= (unsigned long) addr[3] << 24;
-
-    return (bfd_vma) v;
-}
-
-bfd_vma bfd_getl64 (const bfd_byte *addr)
-{
-    unsigned long v;
-
-    v = (unsigned long) addr[0];
-    v |= (unsigned long) addr[1] << 8;
-    v |= (unsigned long) addr[2] << 16;
-    v |= (unsigned long) addr[3] << 24;
-    v |= (unsigned long) addr[4] << 32;
-    v |= (unsigned long) addr[5] << 40;
-    v |= (unsigned long) addr[6] << 48;
-    v |= (unsigned long) addr[7] << 56;
-
-    return (bfd_vma) v;
-}
-
-bfd_vma bfd_getb32 (const bfd_byte *addr)
-{
-    unsigned long v;
-
-    v = (unsigned long) addr[0] << 24;
-    v |= (unsigned long) addr[1] << 16;
-    v |= (unsigned long) addr[2] << 8;
-    v |= (unsigned long) addr[3];
-
-    return (bfd_vma) v;
-}
-
-bfd_vma bfd_getl16 (const bfd_byte *addr)
-{
-    unsigned long v;
-
-    v = (unsigned long) addr[0];
-    v |= (unsigned long) addr[1] << 8;
-
-    return (bfd_vma) v;
-}
-
-bfd_vma bfd_getb16 (const bfd_byte *addr)
-{
-    unsigned long v;
-
-    v = (unsigned long) addr[0] << 24;
-    v |= (unsigned long) addr[1] << 16;
-
-    return (bfd_vma) v;
-}
-
-void
-init_disassemble_info (struct disassemble_info *info, void *stream,
-                      fprintf_ftype fprintf_func)
-{
-    memset (info, 0, sizeof (*info));
-
-    info->flavour = bfd_target_unknown_flavour;
-    info->arch = bfd_arch_unknown;
-    info->endian = BFD_ENDIAN_UNKNOWN;
-    info->octets_per_byte = 1;
-    info->fprintf_func = fprintf_func;
-    info->stream = stream;
-    info->read_memory_func = target_read_memory;
-    info->memory_error_func = perror_memory;
-    info->print_address_func = generic_print_address;
-    info->symbol_at_address_func = generic_symbol_at_address;
-    info->symbol_is_valid = generic_symbol_is_valid;
-    info->display_endian = BFD_ENDIAN_UNKNOWN;
-}
-
-
-void target_disas (FILE *out, unsigned long code, unsigned long size)
-{
-    unsigned long pc;
-    int count;
-    struct disassemble_info disasm_info;
-
-    INIT_DISASSEMBLE_INFO(disasm_info, out, fprintf);
-
-    disasm_info.read_memory_func = target_read_memory;
-#if 0
-    disasm_info.buffer = NULL;
-    disasm_info.buffer_vma = (unsigned long)code;
-    disasm_info.buffer_length = size;
-#endif
-
-    disasm_info.endian = BFD_ENDIAN_LITTLE;
-    disasm_info.mach = 0; //bfd_mach_ia64;
-
-    for (pc = code; pc < code + size; pc += count) {
-        int slot = (pc & 0x0f) / 6;
-        fprintf (out, "0x%016lx+%d:%c ", pc & ~0x0fUL, slot,
-                 ((pc & ~0x0fUL) == cur_ctx->regs.ip
-                  && slot == ctx_slot (cur_ctx)) ? '*' : ' ');
-
-        count = print_insn_ia64 (pc, &disasm_info);
-
-#if 0
-        {
-            int i;
-            uint8_t b;
-
-            fprintf (out, " {");
-            for (i = 0; i < count; i++) {
-                target_read_memory (pc + i, &b, 1, &disasm_info);
-                fprintf (out, " %02x", b);
-            }
-            fprintf (out, " }");
-        }
-#endif
-        fprintf (out, "\n");
-        if (count < 0)
-            break;
-    }
-}
-
-
-#define PTE_ED_SHIFT              52
-#define PTE_ED_MASK                1
-#define PTE_PPN_SHIFT             12
-#define PTE_PPN_MASK    0x3fffffffff
-#define PTE_AR_SHIFT               9
-#define PTE_AR_MASK                7
-#define PTE_PL_SHIFT               7
-#define PTE_PL_MASK                3
-#define PTE_D_SHIFT                6
-#define PTE_D_MASK                 1
-#define PTE_A_SHIFT                5
-#define PTE_A_MASK                 1
-#define PTE_MA_SHIFT               2
-#define PTE_MA_MASK                7
-#define PTE_P_SHIFT                0
-#define PTE_P_MASK                 1
-#define ITIR_KEY_SHIFT             8
-#define ITIR_KEY_MASK       0xffffff
-#define ITIR_PS_SHIFT              2
-#define ITIR_PS_MASK            0x3f
-#define ITIR_PS_MIN               12
-#define ITIR_PS_MAX               28
-#define RR_RID_SHIFT               8
-#define RR_RID_MASK         0xffffff
-#define RR_PS_SHIFT                2
-#define RR_PS_MASK              0x3f
-#define RR_VE_MASK                 1
-
-static const char *get_ps (int ps_val)
-{
-    static const char ps[][5] = {"  4K", "  8K", " 16K", "    ",
-                                 " 64K", "    ", "256K", "    ",
-                                 "  1M", "    ", "  4M", "    ",
-                                 " 16M", "    ", " 64M", "    ",
-                                 "256M"};
-    return ((ps_val >= ITIR_PS_MIN && ps_val <= ITIR_PS_MAX) ?
-            ps[ps_val - ITIR_PS_MIN] : "    ");
-
-}
-
-static void print_a_tr (int i, const struct ia64_tr_entry *tr)
-{
-    int ps_val, ma_val;
-    unsigned long pa;
-
-    static const char ma[][4] = {"WB ", "   ", "   ", "   ",
-                                 "UC ", "UCE", "WC ", "Nat"};
-
-    ps_val =  tr->itir >> ITIR_PS_SHIFT & ITIR_PS_MASK;
-    ma_val =  tr->pte  >> PTE_MA_SHIFT  & PTE_MA_MASK;
-    pa     = (tr->pte  >> PTE_PPN_SHIFT & PTE_PPN_MASK) << PTE_PPN_SHIFT;
-    pa     = (pa >> ps_val) << ps_val;
-    printf (" [%2d] %ld %06lx %016lx %013lx %02d %s %ld  %ld  %ld  %ld "
-           "%ld %d %s %06lx\n", i,
-           tr->pte >> PTE_P_SHIFT    & PTE_P_MASK,
-           tr->rid >> RR_RID_SHIFT   & RR_RID_MASK,
-           tr->vadr, pa, ps_val, get_ps (ps_val),
-           tr->pte >> PTE_ED_SHIFT   & PTE_ED_MASK,
-           tr->pte >> PTE_PL_SHIFT   & PTE_PL_MASK,
-           tr->pte >> PTE_AR_SHIFT   & PTE_AR_MASK,
-           tr->pte >> PTE_A_SHIFT    & PTE_A_MASK,
-           tr->pte >> PTE_D_SHIFT    & PTE_D_MASK,
-           ma_val, ma[ma_val],
-           tr->itir >> ITIR_KEY_SHIFT & ITIR_KEY_MASK);
-}
-
-void print_ctx (vcpu_guest_context_t *ctx)
-{
-    struct vcpu_guest_context_regs *regs = &ctx->regs;
-    int i;
-    unsigned int rbs_size, cfm_sof;
-
-    rbs_size = (regs->ar.bsp - regs->ar.bspstore) / 8;
-    cfm_sof = (regs->cfm & CFM_SOF_MASK);
-    printf ("bspstore: %016lx  bsp: %016lx rbs_size=%d, sof=%d\n",
-            regs->ar.bspstore, regs->ar.bsp, rbs_size, cfm_sof);
-
-    for (i = 0; i < cfm_sof; i++) {
-        int off = cfm_sof - i;
-        unsigned int rbs_off =
-            (((62 - ((rbs_size + regs->rbs_voff) % 64) + off)) / 63) + off;
-        if (rbs_off > rbs_size)
-            break;
-        printf (" r%02d: %016lx%s", 32 + i,
-                regs->rbs[rbs_size - rbs_off],
-                (i % 3) != 2 ? "  " : "\n");
-    }
-    if ((i % 3) != 0)
-        printf ("\n");
-
-    printf ("\n");
-    printf (" r1:  %016lx  ", regs->r[1]);
-    printf (" r2:  %016lx  ", regs->r[2]);
-    printf (" r3:  %016lx\n", regs->r[3]);
-    printf (" r4:  %016lx  ", regs->r[4]);
-    printf (" r5:  %016lx  ", regs->r[5]);
-    printf (" r6:  %016lx\n", regs->r[6]);
-    printf (" r7:  %016lx  ", regs->r[7]);
-    printf (" r8:  %016lx  ", regs->r[8]);
-    printf (" r9:  %016lx\n", regs->r[9]);
-    printf (" r10: %016lx  ", regs->r[10]);
-    printf (" r11: %016lx  ", regs->r[11]);
-    printf (" sp:  %016lx\n", regs->r[12]);
-    printf (" tp:  %016lx  ", regs->r[13]);
-    printf (" r14: %016lx  ", regs->r[14]);
-    printf (" r15: %016lx\n", regs->r[15]);
-    printf (" r16: %016lx  ", regs->r[16]);
-    printf (" r17: %016lx  ", regs->r[17]);
-    printf (" r18: %016lx\n", regs->r[18]);
-    printf (" r19: %016lx  ", regs->r[19]);
-    printf (" r20: %016lx  ", regs->r[20]);
-    printf (" r21: %016lx\n", regs->r[21]);
-    printf (" r22: %016lx  ", regs->r[22]);
-    printf (" r23: %016lx  ", regs->r[23]);
-    printf (" r24: %016lx\n", regs->r[24]);
-    printf (" r25: %016lx  ", regs->r[25]);
-    printf (" r26: %016lx  ", regs->r[26]);
-    printf (" r27: %016lx\n", regs->r[27]);
-    printf (" r28: %016lx  ", regs->r[28]);
-    printf (" r29: %016lx  ", regs->r[29]);
-    printf (" r30: %016lx\n", regs->r[30]);
-    printf (" r31: %016lx  ", regs->r[31]);
-    printf ("                        ");
-    printf (" b0:  %016lx\n", regs->b[0]);
-
-    printf ("\n");
-    printf (" psr: %016lx  ", regs->psr);
-    printf (" cfm: %016lx  ", regs->cfm);
-    printf (" pr:  %016lx\n", regs->pr);
-
-    printf ("\n");
-    printf (" ip:  %016lx+%d", regs->ip, (int)(regs->psr >> PSR_RI_SHIFT) & 3);
-    printf ("\n");
-    target_disas (stdout, regs->ip, 16);
-}
-
-void print_br (vcpu_guest_context_t *ctx)
-{
-    struct vcpu_guest_context_regs *regs = &ctx->regs;
-
-    printf (" b0:  %016lx  ", regs->b[0]);
-    printf (" b1:  %016lx  ", regs->b[1]);
-    printf (" b2:  %016lx\n", regs->b[2]);
-    printf (" b3:  %016lx  ", regs->b[3]);
-    printf (" b4:  %016lx  ", regs->b[4]);
-    printf (" b5:  %016lx\n", regs->b[5]);
-    printf (" b6:  %016lx  ", regs->b[6]);
-    printf (" b7:  %016lx\n", regs->b[7]);
-}
-
-void print_regs (vcpu_guest_context_t *ctx)
-{
-    struct vcpu_guest_context_regs *regs = &ctx->regs;
-
-    printf (" r1:  %016lx  ", regs->r[1]);
-    printf (" r2:  %016lx  ", regs->r[2]);
-    printf (" r3:  %016lx\n", regs->r[3]);
-    printf (" r4:  %016lx  ", regs->r[4]);
-    printf (" r5:  %016lx  ", regs->r[5]);
-    printf (" r6:  %016lx\n", regs->r[6]);
-    printf (" r7:  %016lx  ", regs->r[7]);
-    printf (" r8:  %016lx  ", regs->r[8]);
-    printf (" r9:  %016lx\n", regs->r[9]);
-    printf (" r10: %016lx  ", regs->r[10]);
-    printf (" r11: %016lx  ", regs->r[11]);
-    printf (" sp:  %016lx\n", regs->r[12]);
-    printf (" tp:  %016lx  ", regs->r[13]);
-    printf (" r14: %016lx  ", regs->r[14]);
-    printf (" r15: %016lx\n", regs->r[15]);
-
-    printf ("      Bank %d (current)                         Bank %d\n",
-            (regs->psr & PSR_BN) ? 1 : 0, (regs->psr & PSR_BN) ? 0 : 1);
-    printf ("16:%016lx ", regs->r[16]);
-    printf ("17:%016lx ", regs->r[17]);
-    printf ("16:%016lx ", regs->bank[0]);
-    printf ("17:%016lx\n", regs->bank[1]);
-    printf ("18:%016lx ", regs->r[18]);
-    printf ("19:%016lx ", regs->r[19]);
-    printf ("18:%016lx ", regs->bank[2]);
-    printf ("19:%016lx\n", regs->bank[3]);
-    printf ("20:%016lx ", regs->r[20]);
-    printf ("21:%016lx ", regs->r[21]);
-    printf ("20:%016lx ", regs->bank[4]);
-    printf ("21:%016lx\n", regs->bank[5]);
-    printf ("22:%016lx ", regs->r[22]);
-    printf ("23:%016lx ", regs->r[23]);
-    printf ("22:%016lx ", regs->bank[6]);
-    printf ("23:%016lx\n", regs->bank[7]);
-    printf ("24:%016lx ", regs->r[24]);
-    printf ("25:%016lx ", regs->r[25]);
-    printf ("24:%016lx ", regs->bank[8]);
-    printf ("25:%016lx\n", regs->bank[9]);
-    printf ("26:%016lx ", regs->r[26]);
-    printf ("27:%016lx ", regs->r[27]);
-    printf ("26:%016lx ", regs->bank[10]);
-    printf ("27:%016lx\n", regs->bank[11]);
-    printf ("28:%016lx ", regs->r[28]);
-    printf ("29:%016lx ", regs->r[29]);
-    printf ("28:%016lx ", regs->bank[12]);
-    printf ("29:%016lx\n", regs->bank[13]);
-    printf ("30:%016lx ", regs->r[30]);
-    printf ("31:%016lx ", regs->r[31]);
-    printf ("30:%016lx ", regs->bank[14]);
-    printf ("31:%016lx\n", regs->bank[15]);
-    printf ("\n");
-}
-
-void print_cr (vcpu_guest_context_t *ctx)
-{
-    struct vcpu_guest_context_regs *regs = &ctx->regs;
-
-    printf (" dcr:  %016lx  ", regs->cr.dcr);
-    printf (" itm:  %016lx  ", regs->cr.itm);
-    printf (" iva:  %016lx\n", regs->cr.iva);
-    printf (" pta:  %016lx  ", regs->cr.pta);
-    printf (" ipsr: %016lx  ", regs->cr.ipsr);
-    printf (" isr:  %016lx\n", regs->cr.isr);
-    printf (" iip:  %016lx  ", regs->cr.iip);
-    printf (" ifa:  %016lx  ", regs->cr.ifa);
-    printf (" itir: %016lx\n", regs->cr.itir);
-    printf (" iipa: %016lx  ", regs->cr.iipa);
-    printf (" ifs:  %016lx  ", regs->cr.ifs);
-    printf (" iim:  %016lx\n", regs->cr.iim);
-    printf (" iha:  %016lx  ", regs->cr.iha);
-    printf (" lid:  %016lx  ", regs->cr.lid);
-    printf (" ivr:  %016lx\n", regs->cr.ivr);
-    printf (" tpr:  %016lx  ", regs->cr.tpr);
-    printf (" eoi:  %016lx  ", regs->cr.eoi);
-    printf (" irr0: %016lx\n", regs->cr.irr[0]);
-    printf (" irr1: %016lx  ", regs->cr.irr[1]);
-    printf (" irr2: %016lx  ", regs->cr.irr[2]);
-    printf (" irr3: %016lx\n", regs->cr.irr[3]);
-    printf (" itv:  %016lx  ", regs->cr.itv);
-    printf (" pmv:  %016lx  ", regs->cr.pmv);
-    printf (" cmcv: %016lx\n", regs->cr.cmcv);
-    printf (" lrr0: %016lx  ", regs->cr.lrr0);
-    printf (" lrr1: %016lx  ", regs->cr.lrr1);
-    printf (" ev_cb:%016lx\n", ctx->event_callback_ip);
-}
-
-void print_ar (vcpu_guest_context_t *ctx)
-{
-    struct vcpu_guest_context_regs *regs = &ctx->regs;
-
-    printf (" kr0:  %016lx  ", regs->ar.kr[0]);
-    printf (" kr1:  %016lx  ", regs->ar.kr[1]);
-    printf (" kr2:  %016lx\n", regs->ar.kr[2]);
-    printf (" kr3:  %016lx  ", regs->ar.kr[3]);
-    printf (" kr4:  %016lx  ", regs->ar.kr[4]);
-    printf (" kr5:  %016lx\n", regs->ar.kr[5]);
-    printf (" kr6:  %016lx  ", regs->ar.kr[6]);
-    printf (" kr7:  %016lx  ", regs->ar.kr[7]);
-    printf (" rsc:  %016lx\n", regs->ar.rsc);
-    printf (" bsp:  %016lx  ", regs->ar.bsp);
-    printf (" bsps: %016lx  ", regs->ar.bspstore);
-    printf (" rnat: %016lx\n", regs->ar.rnat);
-    printf (" csd:  %016lx  ", regs->ar.csd);
-    printf (" ccv:  %016lx  ", regs->ar.ccv);
-    printf (" unat: %016lx\n", regs->ar.unat);
-    printf (" fpsr: %016lx  ", regs->ar.fpsr);
-    printf (" itc:  %016lx\n", regs->ar.itc);
-    printf (" pfs:  %016lx  ", regs->ar.pfs);
-    printf (" lc:   %016lx  ", regs->ar.lc);
-    printf (" ec:   %016lx\n", regs->ar.ec);
-}
-
-void print_a_rr (int num, unsigned long rr)
-{
-    int ps_val = (rr >> RR_PS_SHIFT) & RR_PS_MASK;
-
-    printf (" [%d]  %06lx %02x %s %ld\n",
-            num, (rr >> RR_RID_SHIFT) & RR_RID_MASK,
-            ps_val, get_ps (ps_val), rr & RR_VE_MASK);
-}
-
-void print_rr (vcpu_guest_context_t *ctx)
-{
-    struct vcpu_guest_context_regs *regs = &ctx->regs;
-    int i;
-
-    printf (" rr:  rid    ps      ve\n");
-    for (i = 0; i < 8; i++)
-        print_a_rr (i, regs->rr[i]);
-}
-
-void print_db (vcpu_guest_context_t *ctx)
-{
-    struct vcpu_guest_context_regs *regs = &ctx->regs;
-    int i;
-
-    for (i = 0; i < 7; i += 2)
-        printf ("  ibr[%d]:  %016lx   ibr[%d]:  %016lx\n",
-                i, regs->ibr[i], i + 1, regs->ibr[i + 1]);
-    printf ("\n");
-    for (i = 0; i < 7; i += 2)
-        printf ("  dbr[%d]:  %016lx   dbr[%d]:  %016lx\n",
-                i, regs->dbr[i], i + 1, regs->dbr[i + 1]);
-}
-
-struct bit_descr {
-    const char *name;
-    unsigned char sz;
-};
-
-const struct bit_descr psr_bits[] = 
-    {
-        {"", 1 },    {"be", 1 },  {"up", 1 },  {"ac", 1 },
-        {"mfl", 1 }, {"mfh", 1 }, {"", 7 },
-        {"ic", 1 },  {"i", 1 },   {"pk", 1 },
-        {"", 1 },    {"dt", 1 },  {"dfl", 1 }, {"dfh", 1 },
-        {"sp", 1 },  {"pp", 1 },  {"di", 1 },  {"si", 1 },
-        {"db", 1 },  {"lp", 1 },  {"tb", 1 },  {"rt", 1 },
-        {"", 4 },
-        {"cpl", 2 }, {"is", 1 },  {"mc", 1 },
-        {"it", 1 },  {"id", 1 },  {"da", 1 },  {"dd", 1 },
-        {"ss", 1 },  {"ri", 2 },  {"ed", 1 },
-        {"bn", 1 },  {"ia", 1 },  {"vm", 1 },
-        {NULL, 0 }
-    };
-
-void print_bits (const struct bit_descr *desc, unsigned long val)
-{
-    const struct bit_descr *d;
-    unsigned int off;
-
-    /* Reverse order.  */
-    for (d = desc, off = 0; d->name; d++)
-        off += d->sz;
-
-    d--;
-
-    while (1) {
-        off -= d->sz;
-        if (*d->name) {
-            if (d->sz != 1 || ((val >> off) & 1))
-                printf (" %s", d->name);
-            if (d->sz != 1)
-                printf ("=%lx", (val >> off) & ((1 << d->sz) - 1));
-        }
-        if (d == desc)
-            break;
-        d--;
-    }
-}
-        
-void print_tr (vcpu_guest_context_t *ctx)
-{
-    struct vcpu_tr_regs *tr = &ctx->regs.tr;
-    int i;
-
-    printf ("\n itr: P rid    va               pa            ps      ed pl "
-            "ar a d ma    key\n");
-
-    for (i = 0; i < sizeof (tr->itrs) / sizeof (tr->itrs[0]); i++)
-        print_a_tr (i, &tr->itrs[i]);
-
-    printf ("\n dtr: P rid    va               pa            ps      ed pl "
-            "ar a d ma    key\n");
-
-    for (i = 0; i < sizeof (tr->dtrs) / sizeof (tr->dtrs[0]); i++)
-        print_a_tr (i, &tr->dtrs[i]);
-}
-
-int lock_pages (void *addr, size_t len);
-void unlock_pages (void *addr, size_t len);
-int do_xen_hypercall (xc_interface *xc_handle, privcmd_hypercall_t *hypercall);
-
-#ifdef HAVE_DEBUG_OP
-static int do_ia64_debug_op (xc_interface *xc_handle,
-                            unsigned long cmd, unsigned long domain,
-                            xen_ia64_debug_op_t *op)
-{
-    int ret = -1;
-    privcmd_hypercall_t hypercall;
-
-    hypercall.op     = __HYPERVISOR_ia64_debug_op;
-    hypercall.arg[0] = cmd;
-    hypercall.arg[1] = domain;
-    hypercall.arg[2] = (unsigned long)op;
-
-    if (lock_pages (op, sizeof (*op)) != 0) {
-        perror ("Could not lock memory for Xen hypercall");
-        goto out1;
-    }
-
-    ret = do_xen_hypercall (xc_handle, &hypercall);
-    if (ret  < 0) {
-        if (errno == EACCES)
-            fprintf (stderr,"domctl operation failed -- need to "
-                     "rebuild the user-space tool set?\n");
-    }
-
-    unlock_pages (op, sizeof (*op));
-
-out1:
-    return ret;
-}
-#endif
-
-static volatile int ctrl_c_hit;
-
-void ctrl_c_handler (int sig)
-{
-    ctrl_c_hit = 1;
-}
-
-int wait_domain (int vcpu, vcpu_guest_context_t *ctx)
-{
-    struct timespec ts;
-    xc_dominfo_t dominfo;
-    int ret;
-    int cnt = 0;
-
-    ts.tv_sec = 0;
-    ts.tv_nsec = 10*1000*1000;
-
-    ret = xc_domain_unpause (xc_handle, domid);
-    if (ret < 0)
-        perror ("xc_domain_unpause");
-
-    ctrl_c_hit = 0;
-
-    while (1) {
-        ret = xc_domain_getinfo (xc_handle, domid, 1, &dominfo);
-        if (ret < 0)
-            perror ("xc_domain_getinfo");
-
-        if (dominfo.paused)
-            break;
-
-        if (ctrl_c_hit) {
-            fflush (stdout);
-            /* Force pause.  */
-            ret = xc_domain_pause (xc_handle, domid);
-            if (ret < 0)
-                perror ("xc_domain_pause");
-
-            break;
-        }
-                
-        printf ("%c\b", "/-\\|"[(cnt++) % 4]);
-        fflush (stdout);
-        nanosleep (&ts, NULL);
-    }
-    return xc_ia64_vcpu_getcontext (xc_handle, domid, vcpu, ctx);
-}
-
-int virt_to_phys (int is_inst, unsigned long vaddr, unsigned long *paddr)
-{
-    struct vcpu_tr_regs *trs = &cur_ctx->regs.tr;
-    struct ia64_tr_entry *tr;
-    int i;
-    int num;
-
-    /* Search in tr.  */
-    if (is_inst) {
-        tr = trs->itrs;
-        num = sizeof (trs->itrs) / sizeof (trs->itrs[0]);
-    }
-    else {
-        tr = trs->dtrs;
-        num = sizeof (trs->dtrs) / sizeof (trs->dtrs[0]);
-    }
-    for (i = 0; i < num; i++, tr++) {
-        int ps_val = (tr->itir >> ITIR_PS_SHIFT) & ITIR_PS_MASK;
-        unsigned long ps_mask = (-1L) << ps_val;
-
-        if ((tr->vadr & ps_mask) == (vaddr & ps_mask)) {
-            *paddr = ((tr->pte & (PTE_PPN_MASK << PTE_PPN_SHIFT)) & ps_mask) |
-                     (vaddr & ~ps_mask);
-            return 0;
-        }
-    }
-    return -1;
-}
-
-unsigned long *
-get_reg_addr (const char *name)
-{
-    if (strcmp (name, "ip") == 0)
-        return &cur_ctx->regs.ip;
-    else if (strcmp (name, "psr") == 0)
-        return &cur_ctx->regs.psr;
-    else if (strcmp (name, "iip") == 0)
-        return &cur_ctx->regs.cr.iip;
-    else if (strcmp (name, "b0") == 0)
-        return &cur_ctx->regs.b[0];
-    else
-        return 0;
-}
-
-enum prio_expr {EXPR_BASE, EXPR_SUM, EXPR_LOGIC, EXPR_PROD};
-
-int parse_expr (char **buf, unsigned long *res, enum prio_expr prio);
-
-int next_char (char **buf)
-{
-    char *b;
-
-    b = *buf;
-    while (isspace ((unsigned char)*b))
-        b++;
-    *buf = b;
-    return *b;
-}
-
-int parse_unary (char **buf, unsigned long *res)
-{
-    char c;
-
-    c = next_char (buf);
-    switch (c) {
-    case '0' ... '9':
-        {
-            char *e;
-            *res = strtoul (*buf, &e, 0);
-            if (e == *buf) {
-                printf ("bad literal\n");
-                return -1;
-            }
-            *buf = e;
-        }
-        break;
-    case '+':
-        (*buf)++;
-        return parse_unary (buf, res);
-    case '$':
-        {
-            char *b;
-            char *e;
-            char c;
-            unsigned long *reg;
-            int len;
-
-            b = *buf;
-            e = b + 1;
-
-            while ((*e >= 'a' && *e <= 'z') ||
-                   (*e >= 'A' && *e <= 'Z') ||
-                   (*e >= '0' && *e <= '9') ||
-                   (*e == '_' || *e == '.'))
-                e++;
-
-            if (b == e) {
-                printf ("identifier missing after '$'\n");
-                return -1;
-            }
-
-            b++;
-            len = e - b;
-
-            c = b[len];
-            b[len] = 0;
-            reg = get_reg_addr (b);
-            b[len] = c;
-
-            if (reg != NULL)
-                *res = *reg;
-            else if (strncmp (b, "d2p", len) == 0 ||
-                     strncmp (b, "i2p", len) == 0) {
-                unsigned long vaddr;
-
-                *buf = e;
-                if (parse_unary (buf, &vaddr) != 0)
-                    return -1;
-                if (virt_to_phys (*b == 'i', vaddr, res) != 0) {
-                    printf ("cannot find vaddr %016lx in tr\n", vaddr);
-                    return -1;
-                }
-                return 0;
-            }
-            else {
-                printf ("unknown symbol\n");
-                return -1;
-            }
-            *buf = e;
-        }
-        break;
-    case '(':
-        (*buf)++;
-        if (parse_expr (buf, res, EXPR_BASE) != 0)
-            return -1;
-
-        if (next_char (buf) != ')') {
-            printf ("missing ')'\n");
-            return -1;
-        }
-        else
-            (*buf)++;
-        break;
-    default:
-        printf ("unknown operand '%c' in expression\n", c);
-        return -1;
-    }
-
-    return 0;
-}
-
-int parse_expr (char **buf, unsigned long *res, enum prio_expr prio)
-{
-    unsigned long val = 0;
-    unsigned long val1;
-    char c;
-
-    if (parse_unary (buf, &val) != 0)
-        return -1;
-
-    while (1) {
-        c = next_char (buf);
-        switch (c) {
-        case '+':
-        case '-':
-            if (prio > EXPR_SUM)
-                return 0;
-            (*buf)++;
-            if (parse_expr (buf, &val1, EXPR_SUM) < 0)
-                return -1;
-            if (c == '+')
-                val += val1;
-            else
-                val -= val1;
-            break;
-        case '*':
-            if (prio > EXPR_PROD)
-                return 0;
-
-            (*buf)++;
-            if (parse_expr (buf, &val1, EXPR_SUM) < 0)
-                return -1;
-
-            val *= val1;
-            break;
-        default:
-            *res = val;
-            return 0;
-        }
-    }
-}
-
-char *parse_arg (char **buf)
-{
-    char *res;
-    char *b = *buf;
-
-    /* Eat leading spaces.  */
-    while (isspace ((unsigned char)*b))
-        b++;
-
-    res = b;
-    while (*b && !isspace ((unsigned char)*b))
-        b++;
-
-    /* Set the NUL terminator.  */
-    if (*b)
-        *b++ = 0;
-
-    *buf = b;
-    return res;
-}
-
-vcpu_guest_context_any_t *vcpu_ctx_any;
-
-int vcpu_setcontext (int vcpu)
-{
-    int ret;
-
-    ret = xc_vcpu_setcontext (xc_handle, domid, vcpu, &vcpu_ctx_any[vcpu]);
-    if (ret < 0)
-        perror ("xc_vcpu_setcontext");
-
-    return ret;
-}
-
-enum cmd_status { CMD_ERROR, CMD_OK, CMD_REPEAT, CMD_QUIT };
-
-struct command_desc
-{
-    const char *name;
-    const char *help;
-    enum cmd_status (*cmd)(char *line);
-};
-
-static enum cmd_status
-cmd_registers (char *line)
-{
-    print_ctx (cur_ctx);
-    return CMD_OK;
-}
-
-static enum cmd_status
-cmd_sstep (char *line)
-{
-    /* Set psr.dd and psr.id to skip over current breakpoint.  */
-    cur_ctx->regs.psr |= PSR_SS | PSR_DD | PSR_ID;
-    cur_ctx->regs.psr &= ~PSR_TB;
-    if (vcpu_setcontext (cur_vcpu) < 0)
-        return CMD_ERROR;
-
-    if (wait_domain (cur_vcpu, cur_ctx) < 0) {
-        perror ("wait_domain");
-        return CMD_ERROR;
-    }
-
-    print_ctx (cur_ctx);
-
-    return CMD_REPEAT;
-}
-
-static enum cmd_status
-cmd_go (char *line)
-{
-    unsigned long n = 1;
-
-    if (*line != 0) {
-        if (parse_expr (&line, &n, 0) < 0)
-            return CMD_ERROR;
-    }
-    while (n > 0) {
-        /* Set psr.dd and psr.id to skip over current breakpoint.  */
-        if ((cur_ctx->regs.psr & (PSR_SS | PSR_TB | PSR_DB)) != 0) {
-            cur_ctx->regs.psr &= ~(PSR_SS | PSR_TB);
-            cur_ctx->regs.psr |= PSR_DD | PSR_ID;
-            if (vcpu_setcontext (cur_vcpu) < 0)
-                return CMD_ERROR;
-        }
-
-        if (wait_domain (cur_vcpu, cur_ctx) < 0) {
-            perror ("wait_domain");
-            return CMD_ERROR;
-        }
-        print_ctx (cur_ctx);
-        n--;
-    }
-
-    return CMD_REPEAT;
-}
-
-static enum cmd_status
-cmd_cb (char *line)
-{
-    if ((cur_ctx->regs.psr & (PSR_SS | PSR_TB)) != PSR_TB) {
-        cur_ctx->regs.psr &= ~PSR_SS;
-        cur_ctx->regs.psr |= PSR_TB;
-        if (vcpu_setcontext (cur_vcpu) < 0)
-            return CMD_ERROR;
-    }
-
-    if (wait_domain (cur_vcpu, cur_ctx) < 0) {
-        perror ("wait_domain");
-        return CMD_ERROR;
-    }
-
-    print_ctx (cur_ctx);
-
-    return CMD_REPEAT;
-}
-
-static int quit_paused;
-
-static enum cmd_status
-cmd_quit (char *line)
-{
-    if (!strcmp (line, "paused"))
-        quit_paused = 1;
-    return CMD_QUIT;
-}
-
-static enum cmd_status
-cmd_echo (char *line)
-{
-    printf ("%s", line);
-    return CMD_OK;
-}
-
-static enum cmd_status
-cmd_disassemble (char *args)
-{
-    static unsigned long addr;
-    unsigned long end_addr = addr + 16;
-
-    if (*args != 0) {
-        if (parse_expr (&args, &addr, 0) < 0)
-            return CMD_ERROR;
-        if (*args != 0) {
-            if (parse_expr (&args, &end_addr, 0) < 0)
-                return CMD_ERROR;
-        }
-        else 
-            end_addr = addr + 16;
-    }
-    target_disas (stdout, addr, end_addr - addr);
-    addr = end_addr;
-    return CMD_REPEAT;
-}
-
-static enum cmd_status
-cmd_dump (char *args)
-{
-    static unsigned long addr;
-    unsigned long end_addr = addr + 256;
-    unsigned long p;
-
-    if (*args != 0) {
-        if (parse_expr (&args, &addr, 0) < 0)
-            return CMD_ERROR;
-        if (*args != 0) {
-            if (parse_expr (&args, &end_addr, 0) < 0)
-                return CMD_ERROR;
-        }
-        else 
-            end_addr = addr + 256;
-    }
-    for (p = addr; p < end_addr; p += 16) {
-        int i;
-        printf ("%016lx:", p);
-        for (i = 0; i < 16; i++) {
-            unsigned char *m = target_map_memory (p + i);
-            printf ("%c%02x", i == 8 ? '-' : ' ', *m);
-        }
-        printf ("\n");
-    }
-    addr = end_addr;
-    return CMD_REPEAT;
-}
-
-static enum cmd_status
-cmd_break (char *args)
-{
-    unsigned long addr;
-    int i;
-
-    for (i = 0; i < 4; i++)
-        if (cur_ctx->regs.ibr[2 * i] == 0 && cur_ctx->regs.ibr[2 * i + 1] == 0)
-            break;
-
-    if (i == 4) {
-        printf ("no availabe break points\n");
-        return CMD_ERROR;
-    }
-
-    if (parse_expr (&args, &addr, 0) < 0)
-        return CMD_ERROR;
-
-    cur_ctx->regs.ibr[2 * i] = addr;
-    cur_ctx->regs.ibr[2 * i + 1] = 0x87fffffffffffff0UL;
-    cur_ctx->regs.psr |= PSR_DB;
-
-    if (vcpu_setcontext (cur_vcpu) < 0)
-        return CMD_ERROR;
-    else
-        return CMD_OK;
-}
-
-static enum cmd_status
-cmd_watch (char *args)
-{
-    unsigned long addr;
-    unsigned long mask;
-    int i;
-
-    for (i = 0; i < 4; i++)
-        if (cur_ctx->regs.dbr[2 * i] == 0 && cur_ctx->regs.dbr[2 * i + 1] == 0)
-            break;
-
-    if (i == 4) {
-        printf ("no availabe watch points\n");
-        return CMD_ERROR;
-    }
-
-    if (parse_expr (&args, &addr, 0) < 0)
-        return CMD_ERROR;
-
-    if (*args == 0)
-        mask = 3;
-    else if (parse_expr (&args, &mask, 0) < 0)
-        return CMD_ERROR;
-
-    cur_ctx->regs.dbr[2 * i] = addr;
-    cur_ctx->regs.dbr[2 * i + 1] = ~((1UL << mask) - 1) | (0xc7UL << 56);
-    cur_ctx->regs.psr |= PSR_DB;
-
-    if (vcpu_setcontext (cur_vcpu) < 0)
-        return CMD_ERROR;
-    else {
-        printf ("Watchpoint %d set\n", i);
-        return CMD_OK;
-    }
-}
-
-static enum cmd_status
-cmd_delete (char *args)
-{
-    unsigned long num;
-
-    if (parse_expr (&args, &num, 0) < 0)
-        return CMD_ERROR;
-
-    if (num < 4) {
-        cur_ctx->regs.ibr[2 * num] = 0;
-        cur_ctx->regs.ibr[2 * num + 1] = 0;
-    }
-    else if (num < 8) {
-        num -= 4;
-        cur_ctx->regs.dbr[2 * num] = 0;
-        cur_ctx->regs.dbr[2 * num + 1] = 0;
-    }
-    else {
-        printf ("breakpoint out of range\n");
-        return CMD_ERROR;
-    }
-
-    cur_ctx->regs.psr |= PSR_DB;
-
-    if (vcpu_setcontext (cur_vcpu) < 0)
-        return CMD_ERROR;
-    else
-        return CMD_OK;
-}
-
-static enum cmd_status
-cmd_disable (char *args)
-{
-    unsigned long num;
-
-    if (parse_expr (&args, &num, 0) < 0)
-        return CMD_ERROR;
-
-    if (num >= 4) {
-        printf ("breakpoint out of range\n");
-        return CMD_ERROR;
-    }
-
-    cur_ctx->regs.ibr[2 * num + 1] &= ~(1UL << 63);
-
-    if (vcpu_setcontext (cur_vcpu) < 0)
-        return CMD_ERROR;
-    else
-        return CMD_OK;
-}
-
-static enum cmd_status
-cmd_enable (char *args)
-{
-    unsigned long num;
-
-    if (parse_expr (&args, &num, 0) < 0)
-        return CMD_ERROR;
-
-    if (num >= 4) {
-        printf ("breakpoint out of range\n");
-        return CMD_ERROR;
-    }
-
-    cur_ctx->regs.ibr[2 * num + 1] |= 1UL << 63;
-
-    if (vcpu_setcontext (cur_vcpu) < 0)
-        return CMD_ERROR;
-    else
-        return CMD_OK;
-}
-
-static enum cmd_status
-cmd_print (char *args)
-{
-    unsigned long addr;
-
-    if (parse_expr (&args, &addr, 0) < 0)
-        return CMD_ERROR;
-
-    printf ("res: 0x%016lx = %ld\n", addr, addr);
-
-    return CMD_OK;
-}
-
-struct bit_xlat {
-    unsigned int bit;
-    const char *name;
-};
-
-static const struct bit_xlat debug_flags[] = {
-    { XEN_IA64_DEBUG_ON_KERN_SSTEP, "sstep" },
-    { XEN_IA64_DEBUG_ON_KERN_DEBUG, "debug" },
-    { XEN_IA64_DEBUG_ON_KERN_TBRANCH, "tbranch" },
-    { XEN_IA64_DEBUG_ON_EXTINT, "extint" },
-    { XEN_IA64_DEBUG_ON_EXCEPT, "except" },
-    { XEN_IA64_DEBUG_ON_EVENT, "event" },
-    { XEN_IA64_DEBUG_ON_PRIVOP, "privop" },
-    { XEN_IA64_DEBUG_ON_PAL, "pal" },
-    { XEN_IA64_DEBUG_ON_SAL, "sal" },
-    { XEN_IA64_DEBUG_ON_EFI, "efi" },
-    { XEN_IA64_DEBUG_ON_RFI, "rfi" },
-    { XEN_IA64_DEBUG_ON_MMU, "mmu" },
-    { XEN_IA64_DEBUG_ON_BAD_MPA, "mpa" },
-    { XEN_IA64_DEBUG_FORCE_SS, "ss" },
-    { XEN_IA64_DEBUG_FORCE_DB, "db" },
-    { XEN_IA64_DEBUG_ON_TR, "tr" },
-    { XEN_IA64_DEBUG_ON_TC, "tc" },
-#if 0
-    { XEN_IA64_DEBUG_ON_KEYS, "keys" },
-    { XEN_IA64_DEBUG_ON_MOV_TO_CR, "mov_to_cr" },
-    { XEN_IA64_DEBUG_ON_VHPT, "vhpt" },
-    { XEN_IA64_DEBUG_ON_IOSAPIC, "iosapic" },
-#endif
-    { 0, NULL }
-};
-
-static enum cmd_status
-cmd_disp (char *arg)
-{
-    if (strcmp (arg, "br") == 0)
-        print_br (cur_ctx);
-    else if (strcmp (arg, "regs") == 0)
-        print_regs (cur_ctx);
-    else if (strcmp (arg, "cr") == 0)
-        print_cr (cur_ctx);
-    else if (strcmp (arg, "ar") == 0)
-        print_ar (cur_ctx);
-    else if (strcmp (arg, "tr") == 0)
-        print_tr (cur_ctx);
-    else if (strcmp (arg, "rr") == 0)
-        print_rr (cur_ctx);
-    else if (strcmp (arg, "db") == 0)
-        print_db (cur_ctx);
-    else if (strcmp (arg, "psr") == 0) {
-        printf ("psr:");
-        print_bits (psr_bits, cur_ctx->regs.psr);
-        printf ("\n");
-    }
-    else if (strcmp (arg, "ipsr") == 0) {
-        printf ("ipsr:");
-        print_bits (psr_bits, cur_ctx->regs.cr.ipsr);
-        printf ("\n");
-    }
-    else if (strcmp (arg, "break") == 0) {
-        int i;
-
-        for (i = 0; i < 4; i++)
-            if (cur_ctx->regs.ibr[2 * i + 1])
-                printf ("%d: 0x%016lx %s\n", i, cur_ctx->regs.ibr[2 * i],
-                        (cur_ctx->regs.ibr[2 * i + 1] & (1UL << 63)) ?
-                        "enabled" : "disabled");
-        for (i = 0; i < 4; i++)
-            if (cur_ctx->regs.dbr[2 * i + 1])
-                printf ("%d: 0x%016lx %s\n", i, cur_ctx->regs.dbr[2 * i],
-                        (cur_ctx->regs.dbr[2 * i + 1] & (1UL << 63)) ?
-                        "enabled" : "disabled");
-    }
-    else if (strcmp (arg, "domain") == 0) {
-        xc_dominfo_t dominfo;
-#ifdef HAVE_DEBUG_OP
-        xen_ia64_debug_op_t debug_op;
-        int i;
-#endif
-        if (xc_domain_getinfo (xc_handle, domid, 1, &dominfo) < 0) {
-            perror ("xc_domain_getinfo");
-            return 0;
-        }
-
-        printf ("id=%d nr_pages=%lu shared_info_frame=%lu max_mem=%luKB\n",
-                dominfo.domid, dominfo.nr_pages, dominfo.shared_info_frame,
-                dominfo.max_memkb);
-        printf ("  nr_online_vcpu=%u max_vcpu_id=%u\n",
-                dominfo.nr_online_vcpus, dominfo.max_vcpu_id);
-        printf ("  status:");
-        if (dominfo.dying)
-            printf (" dying");
-        if (dominfo.crashed)
-            printf (" crashed");
-        if (dominfo.shutdown)
-            printf (" shutdown(%u)", dominfo.shutdown_reason);
-        if (dominfo.paused)
-            printf (" paused");
-        if (dominfo.blocked)
-            printf (" blocked");
-        if (dominfo.running)
-            printf (" running");
-        if (dominfo.hvm)
-            printf (" hvm");
-        if (dominfo.debugged)
-            printf (" debug");
-        printf ("\n");
-
-#ifdef HAVE_DEBUG_OP
-        if (do_ia64_debug_op (xc_handle, XEN_IA64_DEBUG_OP_GET_FLAGS,
-                              domid, &debug_op) < 0) {
-            perror ("xc_domain_getinfo");
-            return 0;
-        }
-        printf ("debug flags: %08lx: ", debug_op.flags);
-        for (i = 0; debug_flags[i].name; i++)
-            if (debug_flags[i].bit & debug_op.flags)
-                printf (" %s", debug_flags[i].name);
-        printf ("\n");
-#endif
-    }
-    else if (*arg == 0)
-        printf ("choose among br, regs, cr, ar, tr, rr, db\n");
-    else {
-        printf ("cannot disp '%s'\n", arg);
-        return CMD_ERROR;
-    }
-    return CMD_OK;
-}
-
-static enum cmd_status
-cmd_bev (char *arg)
-{
-    xen_ia64_debug_op_t debug_op;
-    int i;
-
-    if (do_ia64_debug_op (xc_handle, XEN_IA64_DEBUG_OP_GET_FLAGS,
-                          domid, &debug_op) < 0) {
-        perror ("get debug flags");
-        return CMD_ERROR;
-    }
-    if (arg == NULL || arg[0] == 0) {
-        printf ("debug flags: %08lx:\n", debug_op.flags);
-        for (i = 0; debug_flags[i].name; i++)
-            printf (" %c%s\n",
-                    (debug_flags[i].bit & debug_op.flags) ? '+' : '-',
-                    debug_flags[i].name);
-        return CMD_OK;
-    }
-    else {
-        char *p = strtok ((char *)arg, " ");
-
-        while (p != NULL) {
-            unsigned int flag = 0;
-
-            for (i = 0; debug_flags[i].name; i++)
-                if (strcmp (p, debug_flags[i].name) == 0
-                    || ((p[0] == '-' || p[0] == '+')
-                        && strcmp (p + 1, debug_flags[i].name) == 0)) {
-                    flag = debug_flags[i].bit;
-                    break;
-                }
-            if (flag == 0) {
-                printf ("unknown event %s\n", p);
-                return CMD_ERROR;
-            }
-            if (p[0] == '-')
-                debug_op.flags &= ~flag;
-            else
-                debug_op.flags |= flag;
-
-            p = strtok (NULL, " ");
-        }
-        if (do_ia64_debug_op (xc_handle, XEN_IA64_DEBUG_OP_SET_FLAGS,
-                              domid, &debug_op) < 0) {
-            perror ("set debug flags");
-            return CMD_ERROR;
-        }
-        /* Disabling force_SS and force_DB requires setting psr.  */
-        if (vcpu_setcontext (cur_vcpu) < 0)
-            return CMD_ERROR;
-        else
-            return CMD_OK;
-    }
-}
-
-static enum cmd_status
-cmd_set (char *line)
-{
-    char *reg;
-    unsigned long *addr;
-    unsigned long val;
-
-    reg = parse_arg (&line);
-
-    addr = get_reg_addr (reg);
-    if (addr == NULL) {
-        printf ("unknown register %s\n", reg);
-        return CMD_ERROR;
-    }
-
-    if (parse_expr (&line, &val, 0) < 0)
-        return CMD_ERROR;
-
-    *addr = val;
-
-    if (vcpu_setcontext (cur_vcpu) < 0)
-        return CMD_ERROR;
-    else
-        return CMD_OK;
-}
-
-const struct command_desc commands[];
-
-static enum cmd_status
-cmd_help (char *line)
-{
-    int i;
-
-    for (i = 0; commands[i].name; i++)
-        printf ("%s -- %s\n", commands[i].name, commands[i].help);
-
-    return CMD_OK;
-}
-
-const struct command_desc commands[] = {
-    { "registers", "display current registers", cmd_registers },
-    { "sstep", "single step", cmd_sstep },
-    { "go", "resume execution", cmd_go },
-    { "quit", "quit debugger", cmd_quit },
-    { "echo", "display parameters", cmd_echo },
-    { "disassemble", "disassemble memory", cmd_disassemble },
-    { "dump", "dump memory", cmd_dump },
-    { "break", "set a break point", cmd_break },
-    { "watch", "set a watch point", cmd_watch },
-    { "cb", "resume until branch", cmd_cb },
-    { "delete", "delete a break point", cmd_delete },
-    { "disable", "disable a break point", cmd_disable },
-    { "enable", "enable a break point", cmd_enable },
-    { "print", "print an expression", cmd_print },
-    { "disp", "disp br/regs/cr/ar/tr/rr/db/psr/break/domain", cmd_disp},
-    { "bev", "break on event", cmd_bev},
-    { "set", "set reg val", cmd_set},
-    { "help", "disp help", cmd_help },
-    { NULL, NULL, NULL }
-};
-
-
-enum cmd_status do_command (int vcpu, char *line)
-{
-    char *cmd;
-    char *args;
-    int i;
-    const struct command_desc *desc;
-    static const struct command_desc *last_desc;
-    enum cmd_status status;
-    int flag_ambiguous;
-
-    cur_vcpu = vcpu;
-    cur_ctx = &vcpu_ctx_any[vcpu].c;
-
-    /* Handle repeat last-command.  */
-    if (*line == 0) {
-        if (last_desc != NULL)
-            return (*last_desc->cmd)("");
-        else
-            return CMD_OK;
-    }
-    last_desc = NULL;
-
-    cmd = parse_arg (&line);
-    args = line;
-
-    desc = NULL;
-    flag_ambiguous = 0;
-
-    for (i = 0; commands[i].name; i++) {
-        const char *n = commands[i].name;
-        char *c = cmd;
-
-        while (*n == *c && *n)
-            n++, c++;
-
-        if (*c == 0) {
-            /* Match.  */
-            if (desc != NULL) {
-                if (!flag_ambiguous)
-                    printf ("ambiguous command: %s", desc->name);
-                printf (", %s", commands[i].name);
-                flag_ambiguous = 1;
-            }
-            else
-                desc = &commands[i];
-        }
-    }
-
-    if (flag_ambiguous) {
-        printf ("\n");
-        return CMD_ERROR;
-    }
-    else if (!desc) {
-        printf ("command not found, try help\n");
-        return CMD_ERROR;
-    }
-
-    status = (*desc->cmd)(args);
-    if (status == CMD_REPEAT)
-        last_desc = desc;
-    return status;
-}
-
-void xenitp (int vcpu)
-{
-    int ret;
-    struct sigaction sa;
-    xc_dominfo_t dominfo;
-
-    xc_handle = xc_interface_open (); /* for accessing control interface */
-
-    ret = xc_domain_getinfo (xc_handle, domid, 1, &dominfo);
-    if (ret < 0) {
-        perror ("xc_domain_getinfo");
-        exit (-1);
-    }
-
-    vcpu_ctx_any = calloc (sizeof(vcpu_ctx_any), dominfo.max_vcpu_id + 1);
-    if (!vcpu_ctx_any) {
-        perror ("vcpu context array alloc");
-        exit (-1);
-    }
-    cur_ctx = &vcpu_ctx_any[vcpu].c;
-
-    if (xc_domain_setdebugging (xc_handle, domid, 1) != 0)
-        perror ("setdebugging");
-
-    ret = xc_domain_pause (xc_handle, domid);
-    if (ret < 0) {
-        perror ("xc_domain_pause");
-        exit (-1);
-    }
-
-    ret = xc_ia64_vcpu_getcontext (xc_handle, domid, vcpu, cur_ctx);
-    if (ret < 0) {
-        perror ("xc_ia64_vcpu_getcontext");
-        exit (-1);
-    }
-
-    print_ctx (cur_ctx);
-
-    /* Catch ctrl-c.  */
-    sa.sa_handler = &ctrl_c_handler;
-    sa.sa_flags = 0;
-    sigemptyset (&sa.sa_mask);
-    if (sigaction (SIGINT, &sa, NULL) != 0)
-        perror ("sigaction");
-
-    while (1) {
-        char buf[128];
-        int len;
-
-        printf ("XenITP> ");
-        fflush (stdout);
-
-        if (fgets (buf, sizeof (buf), stdin) == NULL)
-            break;
-
-        len = strlen ((char *)buf);
-        if (len >= 1 && buf[len - 1] == '\n')
-            buf[len - 1] = 0;
-
-        ret = do_command (vcpu, buf);
-        if (ret == CMD_QUIT)
-            break;
-    }
-
-    /* Clear debug bits.  */
-    if ((cur_ctx->regs.psr & (PSR_SS | PSR_TB | PSR_DB)) != 0) {
-        cur_ctx->regs.psr &= ~(PSR_SS | PSR_TB | PSR_DB);
-        cur_ctx->regs.psr |= PSR_DD | PSR_ID;
-        vcpu_setcontext (cur_vcpu);
-    }
-
-    /* Disable debugging.  */
-    if (xc_domain_setdebugging (xc_handle, domid, 0) != 0)
-            perror ("setdebugging");
-
-    if (!quit_paused) {
-        ret = xc_domain_unpause (xc_handle, domid);
-        if (ret < 0) {
-            perror ("xc_domain_unpause");
-            exit (-1);
-        }
-    }
-
-    ret = xc_interface_close (xc_handle);
-    if (ret < 0) {
-        perror ("xc_interface_close");
-        exit (-1);
-    }
-}
-
-static void usage (void)
-{
-    printf ("usage:\n");
-    printf ("  xenitp <DOMAIN> [VCPU]\n");
-
-}
-
-int main (int argc, char **argv)
-{
-    int ch;
-    static const char *sopts = "h"
-        ;
-    static const struct option lopts[] = {
-        {"help", 0, NULL, 'h'},
-        {0, 0, 0, 0}
-    };
-    int vcpu = 0;
-
-    while ((ch = getopt_long (argc, argv, sopts, lopts, NULL)) != -1) {
-        switch (ch) {
-        case 'h':
-            usage ();
-            exit (-1);
-        case '?':
-            fprintf (stderr, "%s --help for more options\n", argv[0]);
-            exit (-1);
-        }
-    }
-
-    argv += optind;
-    argc -= optind;
-
-    if (argc < 1 || argc > 2) {
-        usage ();
-        exit (-1);
-    }
-
-    domid = atoi (argv[0]);
-    if (domid == 0) {
-        fprintf (stderr, "cannot trace dom0\n");
-        exit (-1);
-    }
-
-    if (argc == 2)
-        vcpu = atoi (argv[1]);
-
-    xenitp (vcpu);
-
-    return 0;
-}
-
-/*
- * Local variables:
- * mode: C
- * c-set-style: "BSD"
- * c-basic-offset: 4
- * tab-width: 4
- * indent-tabs-mode: nil
- * End:
- */
index cbff41b93e8e857e0bfe6e71457064618530e0f6..9ed41f1670155f3c0f529e3a4a9c5fae95acf614 100644 (file)
@@ -13,7 +13,7 @@ xen/.dir:
        mkdir -p xen/libelf
        ln -sf $(XEN_ROOT)/xen/include/public/COPYING xen
        ln -sf $(wildcard $(XEN_ROOT)/xen/include/public/*.h) xen
-       ln -sf $(addprefix $(XEN_ROOT)/xen/include/public/,arch-ia64 arch-x86 hvm io xsm) xen
+       ln -sf $(addprefix $(XEN_ROOT)/xen/include/public/,arch-x86 hvm io xsm) xen
        ln -sf ../xen-sys/$(XEN_OS) xen/sys
        ln -sf $(addprefix $(XEN_ROOT)/xen/include/xen/,libelf.h elfstructs.h) xen/libelf/
        ln -s ../xen-foreign xen/foreign
@@ -21,8 +21,6 @@ xen/.dir:
 
 .PHONY: install
 install: all
-       $(INSTALL_DIR) $(DESTDIR)$(INCLUDEDIR)/xen/arch-ia64
-       $(INSTALL_DIR) $(DESTDIR)$(INCLUDEDIR)/xen/arch-ia64/hvm
        $(INSTALL_DIR) $(DESTDIR)$(INCLUDEDIR)/xen/arch-x86
        $(INSTALL_DIR) $(DESTDIR)$(INCLUDEDIR)/xen/arch-x86/hvm
        $(INSTALL_DIR) $(DESTDIR)$(INCLUDEDIR)/xen/foreign
@@ -32,8 +30,6 @@ install: all
        $(INSTALL_DIR) $(DESTDIR)$(INCLUDEDIR)/xen/xsm
        $(INSTALL_DATA) xen/COPYING $(DESTDIR)$(INCLUDEDIR)/xen
        $(INSTALL_DATA) xen/*.h $(DESTDIR)$(INCLUDEDIR)/xen
-       $(INSTALL_DATA) xen/arch-ia64/*.h $(DESTDIR)$(INCLUDEDIR)/xen/arch-ia64
-       $(INSTALL_DATA) xen/arch-ia64/hvm/*.h $(DESTDIR)$(INCLUDEDIR)/xen/arch-ia64/hvm
        $(INSTALL_DATA) xen/arch-x86/*.h $(DESTDIR)$(INCLUDEDIR)/xen/arch-x86
        $(INSTALL_DATA) xen/arch-x86/hvm/*.h $(DESTDIR)$(INCLUDEDIR)/xen/arch-x86/hvm
        $(INSTALL_DATA) xen/foreign/*.h $(DESTDIR)$(INCLUDEDIR)/xen/foreign
index 0de9018310936064ef5d7bfa0ec7fb344bc9e25c..8b22b1096093bfa35ecf918ffa839b71eeb29f0f 100644 (file)
@@ -3,7 +3,7 @@ include $(XEN_ROOT)/tools/Rules.mk
 
 ROOT = $(XEN_ROOT)/xen/include/public
 
-architectures := x86_32 x86_64 ia64
+architectures := x86_32 x86_64
 headers := $(patsubst %, %.h, $(architectures))
 
 .PHONY: all clean check-headers
@@ -28,8 +28,5 @@ x86_32.h: mkheader.py structs.py $(ROOT)/arch-x86/xen-x86_32.h $(ROOT)/arch-x86/
 x86_64.h: mkheader.py structs.py $(ROOT)/arch-x86/xen-x86_64.h $(ROOT)/arch-x86/xen.h $(ROOT)/xen.h
        $(PYTHON) $< $* $@ $(filter %.h,$^)
 
-ia64.h: mkheader.py structs.py $(ROOT)/arch-ia64.h $(ROOT)/xen.h
-       $(PYTHON) $< $* $@ $(filter %.h,$^)
-
 checker.c: mkchecker.py structs.py
        $(PYTHON) $< $@ $(architectures)
index 8b249e3dfcbc15299707506d2ebf826607833e15..797a8805b968fbd66e04b10a6cf1784c6ba7700f 100644 (file)
@@ -47,20 +47,6 @@ header["x86_64"] = """
 #define __x86_64___X86_64 1
 """;
 
-# ia64
-inttypes["ia64"] = {
-    "unsigned long" : "__align8__ uint64_t",
-    "long"          : "__align8__ uint64_t",
-    "xen_pfn_t"     : "__align8__ uint64_t",
-    "long double"   : "__align16__ ldouble_t",
-};
-header["ia64"] = """
-#define __align8__ __attribute__((aligned (8)))
-#define __align16__ __attribute__((aligned (16)))
-typedef unsigned char ldouble_t[16];
-""";
-
-
 ###########################################################################
 # main
 
index 5f2908502b5cf09556bb0644a6033030c002034a..c58df4d9b63fcb9ad7fbbbe898c4f43c6e7d18da 100644 (file)
@@ -1,18 +1,18 @@
 
-structs                   |  x86_32  x86_64    ia64
+structs                   |  x86_32  x86_64
 
-start_info                |    1112    1168    1168
-trap_info                 |       8      16       -
-pt_fpreg                  |       -       -      16
-cpu_user_regs             |      68     200       -
-xen_ia64_boot_param       |       -       -      96
-ia64_tr_entry             |       -       -      32
-vcpu_tr_regs              |       -       -     768
-vcpu_guest_context_regs   |       -       -   22176
-vcpu_guest_context        |    2800    5168   22208
-arch_vcpu_info            |      24      16       0
-vcpu_time_info            |      32      32      32
-vcpu_info                 |      64      64      48
-arch_shared_info          |     268     280     272
-shared_info               |    2584    3368    4384
+start_info                |    1112    1168
+trap_info                 |       8      16
+pt_fpreg                  |       -       -
+cpu_user_regs             |      68     200
+xen_ia64_boot_param       |       -       -
+ia64_tr_entry             |       -       -
+vcpu_tr_regs              |       -       -
+vcpu_guest_context_regs   |       -       -
+vcpu_guest_context        |    2800    5168
+arch_vcpu_info            |      24      16
+vcpu_time_info            |      32      32
+vcpu_info                 |      64      64
+arch_shared_info          |     268     280
+shared_info               |    2584    3368
 
index ca38cbd6e3ef9469ffa4d417d1c43a38524f9280..441ba4d94068cfc93cf790160de3b4daf342d1b8 100644 (file)
@@ -7,7 +7,6 @@ MINOR    = 0
 CTRL_SRCS-y       :=
 CTRL_SRCS-y       += xc_core.c
 CTRL_SRCS-$(CONFIG_X86) += xc_core_x86.c
-CTRL_SRCS-$(CONFIG_IA64) += xc_core_ia64.c
 CTRL_SRCS-$(CONFIG_ARM) += xc_core_arm.c
 CTRL_SRCS-y       += xc_cpupool.c
 CTRL_SRCS-y       += xc_domain.c
@@ -65,7 +64,6 @@ GUEST_SRCS-y                 += xc_dom_compat_linux.c
 GUEST_SRCS-$(CONFIG_X86)     += xc_dom_x86.c
 GUEST_SRCS-$(CONFIG_X86)     += xc_cpuid_x86.c
 GUEST_SRCS-$(CONFIG_X86)     += xc_hvm_build_x86.c
-GUEST_SRCS-$(CONFIG_IA64)    += xc_dom_ia64.c
 GUEST_SRCS-$(CONFIG_ARM)     += xc_dom_arm.c
 GUEST_SRCS-$(CONFIG_ARM)     += xc_hvm_build_arm.c
 
diff --git a/tools/libxc/ia64/Makefile b/tools/libxc/ia64/Makefile
deleted file mode 100644 (file)
index 81f472a..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-ifneq ($(stubdom),y)
-CTRL_SRCS-y += ia64/xc_ia64_stubs.c
-
-GUEST_SRCS-y += ia64/xc_ia64_hvm_build.c
-GUEST_SRCS-y += ia64/xc_ia64_linux_save.c
-GUEST_SRCS-y += ia64/xc_ia64_linux_restore.c
-
-GUEST_SRCS-y += ia64/xc_dom_ia64_util.c
-GUEST_SRCS-y += ia64/dom_fw_acpi.c
-
-GUEST_SRCS-y += ia64/xc_ia64_dom_fwloader.c
-
-DOMFW_SRCS_BASE := dom_fw_common.c dom_fw_domu.c dom_fw_asm.S
-endif
-DOMFW_SRCS := $(addprefix ia64/, $(DOMFW_SRCS_BASE))
-$(DOMFW_SRCS):
-       ln -sf $(XEN_ROOT)/xen/arch/ia64/xen/$(@F) $@
-
-GUEST_SRCS-y += $(patsubst %.S, %.c, $(DOMFW_SRCS))
-
-CFLAGS += -Iia64
-
-DOMFW_ASM_HDRS_BASE := bundle.h dom_fw.h dom_fw_common.h dom_fw_domu.h
-DOMFW_ASM_HDRS := $(addprefix ia64/asm/, $(DOMFW_ASM_HDRS_BASE))
-$(DOMFW_ASM_HDRS): ia64/asm
-       ln -sf $(XEN_ROOT)/xen/include/asm-ia64/$(@F) $@
-build: $(DOMFW_ASM_HDR)
-
-.PHONY: mk-symlinks-acpi mk-symlinks-misc ia64-clean
-
-IA64_HDR_DIRS := ia64/asm ia64/xen ia64/acpi ia64/acpi/platform
-$(IA64_HDR_DIRS):
-       mkdir -p $@
-
-IA64_EMPTY_FILES := ia64/asm/acpi.h ia64/xen/list.h 
-$(IA64_EMPTY_FILES): $(IA64_HDR_DIRS)
-       echo "/* automatically created dummy empty header file. */" > $@
-
-mk-symlinks-acpi: $(IA64_HDR_DIRS) $(IA64_EMPTY_FILES) $(DOMFW_ASM_HDRS)
-       ( cd ia64/acpi && ln -sf $(XEN_ROOT)/xen/include/acpi/*.h .)
-       ( cd ia64/acpi/platform && ln -sf $(XEN_ROOT)/xen/include/acpi/platform/*.h .)
-       ( cd ia64/xen && ln -sf $(XEN_ROOT)/xen/include/xen/acpi.h .)
-mk-symlinks-misc: $(IA64_HDR_DIRS)
-       ( cd ia64/asm && ln -sf $(XEN_ROOT)/xen/include/asm-ia64/linux-xen/asm/kregs.h .)
-       ( cd ia64/asm && ln -sf $(XEN_ROOT)/xen/include/asm-ia64/linux/asm/fpswa.h .)
-build: mk-symlinks-acpi mk-symlinks-misc
-
-clean: ia64-clean
-ia64-clean:
-       rm -rf $(DOMFW_SRCS) $(DOMFW_ASM_HDRS) $(IA64_EMPTY_FILES) $(IA64_HDR_DIRS)
diff --git a/tools/libxc/ia64/ac_ia64_tools.h b/tools/libxc/ia64/ac_ia64_tools.h
deleted file mode 100644 (file)
index 658ab33..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * ac_ia64_tools.h
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- *
- */
-
-#ifndef AC_IA64_TOOLS_H
-#define AC_IA64_TOOLS_H
-
-#define ACPI_MACHINE_WIDTH 64
-#define COMPILER_DEPENDENT_UINT64 unsigned long long
-#define COMPILER_DEPENDENT_INT64 long long
-typedef unsigned long long u64;
-typedef long long s64;
-typedef unsigned u32;
-typedef int s32;
-typedef unsigned char u8;
-typedef unsigned short u16;
-#define __iomem
-#define asmlinkage
-#define CONFIG_ACPI_BOOT
-
-#endif /* AC_IA64_TOOLS_H */
-
-/*
- * Local variables:
- * mode: C
- * c-set-style: "BSD"
- * c-basic-offset: 4
- * tab-width: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/tools/libxc/ia64/dom_fw_acpi.c b/tools/libxc/ia64/dom_fw_acpi.c
deleted file mode 100644 (file)
index 5ac9b52..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/*******************************************************************************
- *
- * FUNCTION:    acpi_tb_checksum
- *
- * PARAMETERS:  Buffer          - Pointer to memory region to be checked
- *              Length          - Length of this memory region
- *
- * RETURN:      Checksum (u8)
- *
- * DESCRIPTION: Calculates circular checksum of memory region.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- *
- ******************************************************************************/
-
-/* stolen from xen/drivers/acpi/tables/tbutils.c */
-
-#include <inttypes.h>
-#include "xc_dom_ia64_util.h"
-#include <xen/acpi.h>
-#include <acpi/actables.h>
-
-u8 acpi_tb_checksum(u8 * buffer, acpi_native_uint length)
-{
-       u8 sum = 0;
-       u8 *end = buffer + length;
-
-       while (buffer < end) {
-               sum = (u8) (sum + *(buffer++));
-       }
-
-       return sum;
-}
diff --git a/tools/libxc/ia64/sal.h b/tools/libxc/ia64/sal.h
deleted file mode 100644 (file)
index 6ed475e..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * definitions from
- * xen/include/asm-ia64/linux/asm/sal.h
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef XC_IA64_SAL_H
-#define XC_IA64_SAL_H
-
-/*
- * The SAL system table is followed by a variable number of variable
- * length descriptors.  The structure of these descriptors follows
- * below.
- * The defininition follows SAL specs from July 2000
- */
-struct ia64_sal_systab {
-       uint8_t signature[4];   /* should be "SST_" */
-       uint32_t size;          /* size of this table in bytes */
-       uint8_t sal_rev_minor;
-       uint8_t sal_rev_major;
-       uint16_t entry_count;   /* # of entries in variable portion */
-       uint8_t checksum;
-       uint8_t reserved1[7];
-       uint8_t sal_a_rev_minor;
-       uint8_t sal_a_rev_major;
-       uint8_t sal_b_rev_minor;
-       uint8_t sal_b_rev_major;
-       /* oem_id & product_id: terminating NUL is missing if string is exactly 32 bytes long. */
-       uint8_t oem_id[32];
-       uint8_t product_id[32]; /* ASCII product id  */
-       uint8_t reserved2[8];
-};
-
-enum sal_systab_entry_type {
-       SAL_DESC_ENTRY_POINT = 0,
-       SAL_DESC_MEMORY = 1,
-       SAL_DESC_PLATFORM_FEATURE = 2,
-       SAL_DESC_TR = 3,
-       SAL_DESC_PTC = 4,
-       SAL_DESC_AP_WAKEUP = 5
-};
-
-typedef struct ia64_sal_desc_entry_point {
-       uint8_t type;
-       uint8_t reserved1[7];
-       uint64_t pal_proc;
-       uint64_t sal_proc;
-       uint64_t gp;
-       uint8_t reserved2[16];
-}ia64_sal_desc_entry_point_t;
-
-#define IA64_SAL_AP_EXTERNAL_INT 0
-
-typedef struct ia64_sal_desc_ap_wakeup {
-       uint8_t type;
-       uint8_t mechanism;              /* 0 == external interrupt */
-       uint8_t reserved1[6];
-       uint64_t vector;                /* interrupt vector in range 0x10-0xff */
-} ia64_sal_desc_ap_wakeup_t ;
-
-//XXX should move xen_sal_data to arch-ia64.h?
-/* These are data in domain memory for SAL emulator.  */
-struct xen_sal_data {
-    /* OS boot rendez vous.  */
-    unsigned long boot_rdv_ip;
-    unsigned long boot_rdv_r1;
-
-    /* There are these for EFI_SET_VIRTUAL_ADDRESS_MAP emulation. */
-    int efi_virt_mode;          /* phys : 0 , virt : 1 */
-};
-
-#endif /* XC_IA64_SAL_H */
diff --git a/tools/libxc/ia64/xc_dom_ia64_util.c b/tools/libxc/ia64/xc_dom_ia64_util.c
deleted file mode 100644 (file)
index bc83dbb..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- *
- * Copyright (c) 2007 Isaku Yamahata <yamahata at valinux co jp>
- *                    VA Linux Systems Japan K.K.
- *
- */
-
-#include <assert.h>
-#include "xg_private.h"
-#include "xc_dom.h"
-#include "asm/dom_fw.h"
-#include "asm/dom_fw_common.h"
-#include "ia64/xc_dom_ia64_util.h"
-
-uint32_t
-xen_ia64_version(struct xc_dom_image *dom)
-{
-    return xc_version(dom->xch, XENVER_version, NULL);   
-}
-
-int
-xen_ia64_fpswa_revision(struct xc_dom_image *dom, unsigned int *revision)
-{
-    int ret;
-    DECLARE_HYPERCALL;
-    DECLARE_HYPERCALL_BOUNCE(revision, sizeof(*revision), XC_HYPERCALL_BUFFER_BOUNCE_BOTH);
-
-    if (xc_hypercall_bounce_pre(dom->xch, revision) )
-    {
-        PERROR("Could not lock memory for xen fpswa hypercall");
-        return -1;
-    }
-
-    hypercall.op     = __HYPERVISOR_ia64_dom0vp_op;
-    hypercall.arg[0] = IA64_DOM0VP_fpswa_revision;
-    hypercall.arg[1] = HYPERCALL_BUFFER_AS_ARG(revision);
-
-    ret = do_xen_hypercall(dom->xch, &hypercall);
-
-    xc_hypercall_bounce_post(dom->xch, revision);
-
-    return ret;
-}
-
-int xen_ia64_is_running_on_sim(struct xc_dom_image *dom)
-{
-    /*
-     * This is only used by dom_fw_init() as
-     * "!xen_ia64_is_dom0() || xen_ia64_is_running_on_sim()".
-     * So this doesn't affect the result.
-     */
-    return 0;
-}
-
-int
-xen_ia64_is_dom0(struct xc_dom_image *unused)
-{
-    /* libxc is for non-dom0 domain builder */
-    return 0;
-}
-
-void*
-xen_ia64_dom_fw_map(struct xc_dom_image *dom, unsigned long mpaddr)
-{
-    unsigned long page_size = XC_DOM_PAGE_SIZE(dom);
-    void* ret;
-    
-    ret = xc_map_foreign_range(dom->xch, dom->guest_domid,
-                               page_size, PROT_READ | PROT_WRITE,
-                               mpaddr / page_size);
-    if (ret != NULL)
-        ret = (void*)((unsigned long)ret | (mpaddr & (page_size - 1)));
-
-    return ret;
-}
-
-void
-xen_ia64_dom_fw_unmap(struct xc_dom_image *dom, void *vaddr)
-{
-    unsigned long page_size = XC_DOM_PAGE_SIZE(dom);
-    munmap((void*)((unsigned long)vaddr & ~(page_size - 1)), page_size);
-}
-
-int
-xen_ia64_is_vcpu_allocated(struct xc_dom_image *dom, uint32_t vcpu)
-{
-    // return d->vcpu[vcpu] != NULL;
-
-    int rc;
-    xc_vcpuinfo_t info;
-    xc_interface *xch = dom->xch;
-
-    rc = xc_vcpu_getinfo(xch, dom->guest_domid,
-                         vcpu, &info);
-    if (rc == 0)
-        return 1;
-
-    if (errno != ESRCH)
-        PERROR("Could not get vcpu info");
-    return 0;
-}
-
-int
-xen_ia64_dom_fw_setup(struct xc_dom_image *d, uint64_t brkimm,
-                      unsigned long bp_mpa, unsigned long maxmem)
-{
-    int rc = 0;
-    void *imva_hypercall_base = NULL;
-    struct fw_tables *fw_tables = NULL;
-    struct fake_acpi_tables *imva = NULL;
-    struct xen_ia64_boot_param *bp = NULL;
-
-    BUILD_BUG_ON(sizeof(struct fw_tables) >
-                 (FW_TABLES_END_PADDR_MIN - FW_TABLES_BASE_PADDR));
-
-    /* Create page for hypercalls.  */
-    imva_hypercall_base = xen_ia64_dom_fw_map(d, FW_HYPERCALL_BASE_PADDR);
-    if (imva_hypercall_base == NULL) {
-        rc = -errno;
-        goto out;
-    }
-
-    /* Create page for FW tables.  */
-    fw_tables = (struct fw_tables*)xen_ia64_dom_fw_map(d, FW_TABLES_BASE_PADDR);
-    if (fw_tables == NULL) {
-        rc = -errno;
-        goto out;
-    }
-    memset(fw_tables, 0, FW_TABLES_END_PADDR_MIN - FW_TABLES_BASE_PADDR);
-    BUILD_BUG_ON(FW_END_PADDR_MIN != FW_TABLES_END_PADDR_MIN);
-    fw_tables->fw_tables_size = FW_TABLES_END_PADDR_MIN - FW_TABLES_BASE_PADDR;
-    fw_tables->fw_end_paddr = FW_END_PADDR_MIN;
-    fw_tables->fw_tables_end_paddr = FW_TABLES_END_PADDR_MIN;
-    fw_tables->num_mds = 0;
-        
-    /* Create page for acpi tables.  */
-    imva = (struct fake_acpi_tables *)
-        xen_ia64_dom_fw_map(d, FW_ACPI_BASE_PADDR);
-    if (imva == NULL) {
-        rc = -errno;
-        goto out;
-    }
-    dom_fw_fake_acpi(d, imva);
-
-    /* Create page for boot_param.  */
-    bp = xen_ia64_dom_fw_map(d, bp_mpa);
-    if (bp == NULL) {
-        rc = -errno;
-        goto out;
-    }
-    rc = dom_fw_init(d, brkimm, bp, fw_tables,
-                     (unsigned long)imva_hypercall_base, maxmem);
-    BUG_ON(fw_tables->fw_tables_size < sizeof(*fw_tables) +
-           sizeof(fw_tables->efi_memmap[0]) * fw_tables->num_mds);
-
-    /* clear domain builder internal use member */
-    fw_tables->fw_tables_size = 0;
-    fw_tables->fw_end_paddr = 0;
-    fw_tables->fw_tables_end_paddr = 0;
-    fw_tables->num_mds = 0;
-    
- out:
-    if (imva_hypercall_base != NULL)
-        xen_ia64_dom_fw_unmap(d, imva_hypercall_base);
-    if (fw_tables != NULL)
-        xen_ia64_dom_fw_unmap(d, fw_tables);
-    if (imva != NULL)
-        xen_ia64_dom_fw_unmap(d, imva);
-    if (bp != NULL)
-        xen_ia64_dom_fw_unmap(d, bp);
-
-    return rc;
-}
-
-/*
- * Local variables:
- * mode: C
- * c-set-style: "BSD"
- * c-basic-offset: 4
- * tab-width: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/tools/libxc/ia64/xc_dom_ia64_util.h b/tools/libxc/ia64/xc_dom_ia64_util.h
deleted file mode 100644 (file)
index 82082ad..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#ifndef XC_IA64_DOM_IA64_UTIL_H
-#define XC_IA64_DOM_IA64_UTIL_H
-
-struct xc_dom_image;
-uint32_t xen_ia64_version(struct xc_dom_image *dom); 
-void* xen_ia64_dom_fw_map(struct xc_dom_image *dom, unsigned long mpaddr);
-void xen_ia64_dom_fw_unmap(struct xc_dom_image *dom, void *addr); 
-int xen_ia64_fpswa_revision(struct xc_dom_image *dom, unsigned int *revision);
-int xen_ia64_is_vcpu_allocated(struct xc_dom_image *dom, uint32_t vcpu); 
-int xen_ia64_is_running_on_sim(struct xc_dom_image *dom);
-int xen_ia64_is_dom0(struct xc_dom_image *dom);
-
-int
-xen_ia64_dom_fw_setup(struct xc_dom_image *d, uint64_t brkimm,
-                      unsigned long bp_mpa, unsigned long maxmem);
-#define efi_systable_init_dom0(tables) assert(0)
-#define complete_dom0_memmap(d, tables) ({assert(0);0;})
-
-/* Defined in xc_dom_ia64.c  */
-extern int start_info_ia64(struct xc_dom_image *dom);
-extern int shared_info_ia64(struct xc_dom_image *dom, void *ptr);
-
-#define FW_MEM_BASE 0xff000000UL
-#define FW_MEM_SIZE 0x01000000UL
-
-#ifdef __XEN_TOOLS__
-/* Necessary for including the acpi header chain when not in kernel context */
-typedef struct { } spinlock_t;
-#endif
-#endif /* XC_IA64_DOM_IA64_UTIL_H */
diff --git a/tools/libxc/ia64/xc_ia64.h b/tools/libxc/ia64/xc_ia64.h
deleted file mode 100644 (file)
index faf3376..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- *
- * Copyright (c) 2007 Isaku Yamahata <yamahata at valinux co jp>
- *                    VA Linux Systems Japan K.K.
- *
- */
-
-#ifndef _XC_IA64_H_
-#define _XC_IA64_H_
-
-int xc_ia64_copy_memmap(xc_interface *xc_handle, uint32_t domid,
-                        shared_info_t *live_shinfo,
-                        xen_ia64_memmap_info_t **memmap_info_p,
-                        unsigned long *memmap_info_num_pages_p);
-
-struct xen_ia64_p2m_table {
-    unsigned long size;
-    unsigned long *p2m;
-};
-
-void xc_ia64_p2m_init(struct xen_ia64_p2m_table *p2m_table);
-int xc_ia64_p2m_map(struct xen_ia64_p2m_table *p2m_table, xc_interface *xc_handle,
-                    uint32_t domid, struct xen_ia64_memmap_info *memmap_info,
-                    unsigned long flag);
-void xc_ia64_p2m_unmap(struct xen_ia64_p2m_table *p2m_table);
-int xc_ia64_p2m_present(struct xen_ia64_p2m_table *p2m_table,
-                        unsigned long gpfn);
-int xc_ia64_p2m_allocated(struct xen_ia64_p2m_table *p2m_table,
-                          unsigned long gpfn);
-
-unsigned long xc_ia64_p2m_mfn(struct xen_ia64_p2m_table *p2m_table,
-                              unsigned long gpfn);
-
-
-#endif /* _XC_IA64_H_ */
-
-/*
- * Local variables:
- * mode: C
- * c-set-style: "BSD"
- * c-basic-offset: 4
- * tab-width: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/tools/libxc/ia64/xc_ia64_dom_fwloader.c b/tools/libxc/ia64/xc_ia64_dom_fwloader.c
deleted file mode 100644 (file)
index cdf3333..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#include <stdlib.h>
-#include <inttypes.h>
-#include <asm/kregs.h>
-
-#include <xen/xen.h>
-#include <xen/foreign/ia64.h>
-#include <xen/io/protocols.h>
-
-#include "xg_private.h"
-#include "xc_dom.h"
-
-#include "ia64/xc_dom_ia64_util.h"
-
-static const char fw_magic[16] = {'X', 'e', 'n', '-',
-                                  'i', 'a', '6', '4',
-                                  '-', 'f', 'w', 0,
-                                  0, 0, 0, 0};
-#define FW_LOAD 0xff800000UL
-#define FW_SIZE (8 * 1024 * 1024)
-
-static int xc_dom_probe_fw_kernel(struct xc_dom_image *dom)
-{
-    if (dom->kernel_size != FW_SIZE)
-        return -EINVAL;
-    if (memcmp (dom->kernel_blob, fw_magic, sizeof (fw_magic)))
-        return -EINVAL;
-    return 0;
-}
-
-static int xc_dom_parse_fw_kernel(struct xc_dom_image *dom)
-{
-    dom->kernel_seg.vstart = FW_LOAD;
-    dom->kernel_seg.vend = FW_LOAD + FW_SIZE;
-    dom->parms.virt_base = FW_MEM_BASE;
-    dom->parms.virt_entry = FW_LOAD + sizeof (fw_magic);
-    dom->ramdisk_blob = NULL; /* No ramdisk yet.  */
-    dom->guest_type = "hvm-3.0-ia64-sioemu";
-    return 0;
-}
-
-static int xc_dom_load_fw_kernel(struct xc_dom_image *dom)
-{
-    char *dest;
-    unsigned long i;
-
-    dest = xc_dom_vaddr_to_ptr(dom, dom->kernel_seg.vstart);
-    memcpy(dest, dom->kernel_blob, FW_SIZE);
-
-    /* Synchronize cache.  */
-    for (i = 0; i < FW_SIZE; i += 32)
-        asm volatile ("fc.i %0" :: "r"(dest + i) : "memory");
-
-    return 0;
-}
-
-/* ------------------------------------------------------------------------ */
-
-static int alloc_magic_pages(struct xc_dom_image *dom)
-{
-    /* allocate special pages */
-    /* Note: do not use 0 for console or xenstore otherwise clear_page won't
-       clear the page.  */
-    dom->start_info_pfn = 0;
-    dom->console_pfn = 1;
-    dom->xenstore_pfn = 2;
-    return 0;
-}
-
-extern unsigned long xc_ia64_fpsr_default(void);
-
-static int vcpu_ia64(struct xc_dom_image *dom, void *ptr)
-{
-    vcpu_guest_context_ia64_t *ctxt = ptr;
-
-    DOMPRINTF_CALLED(dom->xch);
-
-    /* clear everything */
-    memset(ctxt, 0, sizeof(*ctxt));
-
-    ctxt->flags = 0;
-    ctxt->regs.ip = dom->parms.virt_entry;
-#ifdef __ia64__                        /* FIXME */
-    ctxt->regs.ar.fpsr = xc_ia64_fpsr_default();
-#endif
-    ctxt->regs.cr.isr = 1UL << 63;
-    ctxt->regs.psr = IA64_PSR_AC | IA64_PSR_BN;
-    ctxt->regs.cr.dcr = 0;
-    ctxt->regs.cr.pta = 15 << 2;
-
-    return 0;
-}
-
-static struct xc_dom_arch xc_dom_arch_ia64_fw = {
-    .guest_type = "hvm-3.0-ia64-sioemu",
-    .native_protocol = XEN_IO_PROTO_ABI_IA64,
-    .page_shift = PAGE_SHIFT_IA64,
-    .alloc_magic_pages = alloc_magic_pages,
-    .start_info = start_info_ia64,
-    .shared_info = shared_info_ia64,
-    .vcpu = vcpu_ia64,
-};
-
-/* ------------------------------------------------------------------------ */
-
-static struct xc_dom_loader fw_loader = {
-    .name = "xen-ia64-fw",
-    .probe = xc_dom_probe_fw_kernel,
-    .parser = xc_dom_parse_fw_kernel,
-    .loader = xc_dom_load_fw_kernel,
-};
-
-static void __init register_fwloader(void)
-{
-    xc_dom_register_arch_hooks(&xc_dom_arch_ia64_fw);
-    xc_dom_register_loader(&fw_loader);
-}
-
-/*
- * Local variables:
- * mode: C
- * c-set-style: "BSD"
- * c-basic-offset: 4
- * tab-width: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/tools/libxc/ia64/xc_ia64_hvm_build.c b/tools/libxc/ia64/xc_ia64_hvm_build.c
deleted file mode 100644 (file)
index 3f9273f..0000000
+++ /dev/null
@@ -1,1215 +0,0 @@
-/*
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#include <asm/kregs.h>
-#include "xg_private.h"
-#include "xenguest.h"
-#include "xc_private.h"
-#include "xc_elf.h"
-#include "xc_efi.h"
-#include <stdlib.h>
-#include <unistd.h>
-#include <assert.h>
-#include <zlib.h>
-#include "xen/arch-ia64.h"
-#include <xen/hvm/ioreq.h>
-#include <xen/hvm/params.h>
-
-static int
-xc_ia64_copy_to_domain_pages(xc_interface *xch, uint32_t domid, void* src_page,
-                             unsigned long dst_pfn, int nr_pages)
-{
-    // N.B. gva should be page aligned
-    int i;
-
-    for (i = 0; i < nr_pages; i++) {
-        if (xc_copy_to_domain_page(xch, domid, dst_pfn + i,
-                                   src_page + (i << PAGE_SHIFT)))
-            return -1;
-    }
-
-    return 0;
-}
-
-#define HOB_SIGNATURE         0x3436474953424f48        // "HOBSIG64"
-#define GFW_HOB_START         ((4UL<<30)-(14UL<<20))    // 4G - 14M
-#define GFW_HOB_SIZE          (1UL<<20)                 // 1M
-
-typedef struct {
-    unsigned long signature;
-    unsigned int  type;
-    unsigned int  length;
-} HOB_GENERIC_HEADER;
-
-/*
- * INFO HOB is the first data data in one HOB list
- * it contains the control information of the HOB list
- */
-typedef struct {
-    HOB_GENERIC_HEADER  header;
-    unsigned long       length;    // current length of hob
-    unsigned long       cur_pos;   // current poisiton of hob
-    unsigned long       buf_size;  // size of hob buffer
-} HOB_INFO;
-
-typedef struct{
-    unsigned long start;
-    unsigned long size;
-} hob_mem_t;
-
-typedef enum {
-    HOB_TYPE_INFO=0,
-    HOB_TYPE_TERMINAL,
-    HOB_TYPE_MEM,
-    HOB_TYPE_PAL_BUS_GET_FEATURES_DATA,
-    HOB_TYPE_PAL_CACHE_SUMMARY,
-    HOB_TYPE_PAL_MEM_ATTRIB,
-    HOB_TYPE_PAL_CACHE_INFO,
-    HOB_TYPE_PAL_CACHE_PROT_INFO,
-    HOB_TYPE_PAL_DEBUG_INFO,
-    HOB_TYPE_PAL_FIXED_ADDR,
-    HOB_TYPE_PAL_FREQ_BASE,
-    HOB_TYPE_PAL_FREQ_RATIOS,
-    HOB_TYPE_PAL_HALT_INFO,
-    HOB_TYPE_PAL_PERF_MON_INFO,
-    HOB_TYPE_PAL_PROC_GET_FEATURES,
-    HOB_TYPE_PAL_PTCE_INFO,
-    HOB_TYPE_PAL_REGISTER_INFO,
-    HOB_TYPE_PAL_RSE_INFO,
-    HOB_TYPE_PAL_TEST_INFO,
-    HOB_TYPE_PAL_VM_SUMMARY,
-    HOB_TYPE_PAL_VM_INFO,
-    HOB_TYPE_PAL_VM_PAGE_SIZE,
-    HOB_TYPE_NR_VCPU,
-    HOB_TYPE_NVRAM,
-    HOB_TYPE_MAX
-} hob_type_t;
-
-static int hob_init(void  *buffer ,unsigned long buf_size);
-static int add_pal_hob(void* hob_buf);
-static int add_mem_hob(void* hob_buf, unsigned long dom_mem_size);
-static int add_vcpus_hob(void* hob_buf, unsigned long nr_vcpu);
-static int add_nvram_hob(void* hob_buf, unsigned long nvram_addr);
-static int build_hob(xc_interface *xch,
-                     void* hob_buf, unsigned long hob_buf_size,
-                     unsigned long dom_mem_size, unsigned long vcpus,
-                     unsigned long nvram_addr);
-static int load_hob(xc_interface *xch,uint32_t dom, void *hob_buf);
-
-static int
-xc_ia64_build_hob(xc_interface *xch, uint32_t dom,
-                  unsigned long memsize, unsigned long vcpus,
-                  unsigned long nvram_addr)
-{
-    char   *hob_buf;
-
-    hob_buf = malloc(GFW_HOB_SIZE);
-    if (hob_buf == NULL) {
-        PERROR("Could not allocate hob");
-        return -1;
-    }
-
-    if (build_hob(xch, hob_buf, GFW_HOB_SIZE, memsize, vcpus, nvram_addr) < 0) {
-        free(hob_buf);
-        PERROR("Could not build hob");
-        return -1;
-    }
-
-    if (load_hob(xch, dom, hob_buf) < 0) {
-        free(hob_buf);
-        PERROR("Could not load hob");
-        return -1;
-    }
-    free(hob_buf);
-    return 0;
-
-}
-
-static int
-hob_init(void *buffer, unsigned long buf_size)
-{
-    HOB_INFO *phit;
-    HOB_GENERIC_HEADER *terminal;
-
-    if (sizeof(HOB_INFO) + sizeof(HOB_GENERIC_HEADER) > buf_size) {
-        // buffer too small
-        return -1;
-    }
-
-    phit = (HOB_INFO*)buffer;
-    phit->header.signature = HOB_SIGNATURE;
-    phit->header.type = HOB_TYPE_INFO;
-    phit->header.length = sizeof(HOB_INFO);
-    phit->length = sizeof(HOB_INFO) + sizeof(HOB_GENERIC_HEADER);
-    phit->cur_pos = 0;
-    phit->buf_size = buf_size;
-
-    terminal = (HOB_GENERIC_HEADER*)(buffer + sizeof(HOB_INFO));
-    terminal->signature = HOB_SIGNATURE;
-    terminal->type = HOB_TYPE_TERMINAL;
-    terminal->length = sizeof(HOB_GENERIC_HEADER);
-
-    return 0;
-}
-
-/*
- *  Add a new HOB to the HOB List.
- *
- *  hob_start  -  start address of hob buffer
- *  type       -  type of the hob to be added
- *  data       -  data of the hob to be added
- *  data_size  -  size of the data
- */
-static int
-hob_add(void* hob_start, int type, void* data, int data_size)
-{
-    HOB_INFO *phit;
-    HOB_GENERIC_HEADER *newhob, *tail;
-
-    phit = (HOB_INFO*)hob_start;
-
-    if (phit->length + data_size > phit->buf_size) {
-        // no space for new hob
-        return -1;
-    }
-
-    //append new HOB
-    newhob = (HOB_GENERIC_HEADER*)(hob_start + phit->length -
-                                   sizeof(HOB_GENERIC_HEADER));
-    newhob->signature = HOB_SIGNATURE;
-    newhob->type = type;
-    newhob->length = data_size + sizeof(HOB_GENERIC_HEADER);
-    memcpy((void*)newhob + sizeof(HOB_GENERIC_HEADER), data, data_size);
-
-    // append terminal HOB
-    tail = (HOB_GENERIC_HEADER*)(hob_start + phit->length + data_size);
-    tail->signature = HOB_SIGNATURE;
-    tail->type = HOB_TYPE_TERMINAL;
-    tail->length = sizeof(HOB_GENERIC_HEADER);
-
-    // adjust HOB list length
-    phit->length += sizeof(HOB_GENERIC_HEADER) + data_size;
-
-    return 0;
-}
-
-static int
-get_hob_size(xc_interface *xch, void* hob_buf)
-{
-    HOB_INFO *phit = (HOB_INFO*)hob_buf;
-
-    if (phit->header.signature != HOB_SIGNATURE) {
-        PERROR("xc_get_hob_size:Incorrect signature");
-        return -1;
-    }
-    return phit->length;
-}
-
-static int
-build_hob(xc_interface *xch, void* hob_buf, unsigned long hob_buf_size,
-          unsigned long dom_mem_size, unsigned long vcpus,
-          unsigned long nvram_addr)
-{
-    //Init HOB List
-    if (hob_init(hob_buf, hob_buf_size) < 0) {
-        PERROR("buffer too small");
-        goto err_out;
-    }
-
-    if (add_mem_hob(hob_buf,dom_mem_size) < 0) {
-        PERROR("Add memory hob failed, buffer too small");
-        goto err_out;
-    }
-
-    if (add_vcpus_hob(hob_buf, vcpus) < 0) {
-        PERROR("Add NR_VCPU hob failed, buffer too small");
-        goto err_out;
-    }
-
-    if (add_pal_hob( hob_buf ) < 0) {
-        PERROR("Add PAL hob failed, buffer too small");
-        goto err_out;
-    }
-
-    if (add_nvram_hob( hob_buf, nvram_addr ) < 0) {
-        PERROR("Add nvram hob failed, buffer too small");
-        goto err_out;
-    }
-
-    return 0;
-
-err_out:
-    return -1;
-}
-
-static int
-load_hob(xc_interface *xch, uint32_t dom, void *hob_buf)
-{
-    // hob_buf should be page aligned
-    int hob_size;
-    int nr_pages;
-
-    hob_size = get_hob_size(xch, hob_buf);
-    if (hob_size < 0) {
-        PERROR("Invalid hob data");
-        return -1;
-    }
-
-    if (hob_size > GFW_HOB_SIZE) {
-        PERROR("No enough memory for hob data");
-        return -1;
-    }
-
-    nr_pages = (hob_size + PAGE_SIZE -1) >> PAGE_SHIFT;
-
-    return xc_ia64_copy_to_domain_pages(xch, dom, hob_buf,
-                                        GFW_HOB_START >> PAGE_SHIFT, nr_pages);
-}
-
-#define MIN(x, y) (((x) < (y)) ? (x) : (y))
-static int
-add_mem_hob(void* hob_buf, unsigned long dom_mem_size)
-{
-    hob_mem_t memhob;
-
-    // less than 3G accounting VGA RAM hole
-    memhob.start = 0;
-    if (dom_mem_size < VGA_IO_START)
-        memhob.size = dom_mem_size;
-    else
-        memhob.size = MIN(dom_mem_size + VGA_IO_SIZE, 0xC0000000);
-
-    if (hob_add(hob_buf, HOB_TYPE_MEM, &memhob, sizeof(memhob)) < 0)
-        return -1;
-
-    if (dom_mem_size > 0xC0000000) {
-        // 4G ~ 4G+remain
-        memhob.start = 0x100000000; //4G
-        memhob.size = dom_mem_size + VGA_IO_SIZE - 0xC0000000;
-        if (hob_add(hob_buf, HOB_TYPE_MEM, &memhob, sizeof(memhob)) < 0)
-            return -1;
-    }
-    return 0;
-}
-
-static int 
-add_vcpus_hob(void* hob_buf, unsigned long vcpus)
-{
-    return hob_add(hob_buf, HOB_TYPE_NR_VCPU, &vcpus, sizeof(vcpus));
-}
-
-static int
-add_nvram_hob(void *hob_buf, unsigned long nvram_addr)
-{
-    return hob_add(hob_buf, HOB_TYPE_NVRAM, &nvram_addr, sizeof(nvram_addr));
-}
-
-static const unsigned char config_pal_bus_get_features_data[24] = {
-    0, 0, 0, 32, 0, 0, 240, 189, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
-
-static const unsigned char config_pal_cache_summary[16] = {
-    3, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0
-};
-
-static const unsigned char config_pal_mem_attrib[8] = {
-    241, 0, 0, 0, 0, 0, 0, 0
-};
-
-static const unsigned char config_pal_cache_info[152] = {
-    3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    6, 4, 6, 7, 255, 1, 0, 1, 0, 64, 0, 0, 12, 12,
-    49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 6, 7, 0, 1,
-    0, 1, 0, 64, 0, 0, 12, 12, 49, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 6, 8, 7, 7, 255, 7, 0, 11, 0, 0, 16, 0,
-    12, 17, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 8, 7,
-    7, 7, 5, 9, 11, 0, 0, 4, 0, 12, 15, 49, 0, 254, 255,
-    255, 255, 255, 255, 255, 255, 2, 8, 7, 7, 7, 5, 9,
-    11, 0, 0, 4, 0, 12, 15, 49, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 3, 12, 7, 7, 7, 14, 1, 3, 0, 0, 192, 0, 12, 20, 49, 0
-};
-
-static const unsigned char config_pal_cache_prot_info[200] = {
-    3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    45, 0, 16, 8, 0, 76, 12, 64, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    8, 0, 16, 4, 0, 76, 44, 68, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32,
-    0, 16, 8, 0, 81, 44, 72, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0,
-    112, 12, 0, 79, 124, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 254, 255, 255, 255, 255, 255, 255, 255,
-    32, 0, 112, 12, 0, 79, 124, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 0, 160,
-    12, 0, 84, 124, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0
-};
-
-static const unsigned char config_pal_debug_info[16] = {
-    2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0
-};
-
-static const unsigned char config_pal_fixed_addr[8] = {
-    0, 0, 0, 0, 0, 0, 0, 0
-};
-
-static const unsigned char config_pal_freq_base[8] = {
-    109, 219, 182, 13, 0, 0, 0, 0
-};
-
-static const unsigned char config_pal_freq_ratios[24] = {
-    11, 1, 0, 0, 77, 7, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 4,
-    0, 0, 0, 7, 0, 0, 0
-};
-
-static const unsigned char config_pal_halt_info[64] = {
-    0, 0, 0, 0, 0, 0, 0, 48, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
-
-static const unsigned char config_pal_perf_mon_info[136] = {
-    12, 47, 18, 8, 0, 0, 0, 0, 241, 255, 0, 0, 255, 7, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 241, 255, 0, 0, 223, 0, 255, 255,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 240, 255, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 240, 255, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0
-};
-
-static const unsigned char config_pal_proc_get_features[104] = {
-    3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 64, 6, 64, 49, 0, 0, 0, 0, 64, 6, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0,
-    231, 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0,
-    63, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0
-};
-
-static const unsigned char config_pal_ptce_info[24] = {
-    0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0
-};
-
-static const unsigned char config_pal_register_info[64] = {
-    255, 0, 47, 127, 17, 17, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0,
-    255, 208, 128, 238, 238, 0, 0, 248, 255, 255, 255, 255, 255, 0, 0, 7, 3,
-    251, 3, 0, 0, 0, 0, 255, 7, 3, 0, 0, 0, 0, 0, 248, 252, 4,
-    252, 255, 255, 255, 255, 2, 248, 252, 255, 255, 255, 255, 255
-};
-
-static const unsigned char config_pal_rse_info[16] = {
-    96, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
-
-static const unsigned char config_pal_test_info[48] = {
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-};
-
-static const unsigned char config_pal_vm_summary[16] = {
-    101, 18, 15, 2, 7, 7, 4, 2, 59, 18, 0, 0, 0, 0, 0, 0
-};
-
-static const unsigned char config_pal_vm_info[104] = {
-    2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
-    32, 32, 0, 0, 0, 0, 0, 0, 112, 85, 21, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 0, 0, 0, 1, 32, 32, 0, 0, 0, 0, 0, 0, 112, 85,
-    21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 128, 128, 0,
-    4, 0, 0, 0, 0, 112, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
-    0, 0, 0, 1, 128, 128, 0, 4, 0, 0, 0, 0, 112, 85, 0, 0, 0, 0, 0
-};
-
-static const unsigned char config_pal_vm_page_size[16] = {
-    0, 112, 85, 21, 0, 0, 0, 0, 0, 112, 85, 21, 0, 0, 0, 0
-};
-
-typedef struct{
-    hob_type_t type;
-    void* data;
-    unsigned long size;
-} hob_batch_t;
-
-static const hob_batch_t hob_batch[]={
-    {   HOB_TYPE_PAL_BUS_GET_FEATURES_DATA,
-        &config_pal_bus_get_features_data,
-        sizeof(config_pal_bus_get_features_data)
-    },
-    {   HOB_TYPE_PAL_CACHE_SUMMARY,
-        &config_pal_cache_summary,
-        sizeof(config_pal_cache_summary)
-    },
-    {   HOB_TYPE_PAL_MEM_ATTRIB,
-        &config_pal_mem_attrib,
-        sizeof(config_pal_mem_attrib)
-    },
-    {   HOB_TYPE_PAL_CACHE_INFO,
-        &config_pal_cache_info,
-        sizeof(config_pal_cache_info)
-    },
-    {   HOB_TYPE_PAL_CACHE_PROT_INFO,
-        &config_pal_cache_prot_info,
-        sizeof(config_pal_cache_prot_info)
-    },
-    {   HOB_TYPE_PAL_DEBUG_INFO,
-        &config_pal_debug_info,
-        sizeof(config_pal_debug_info)
-    },
-    {   HOB_TYPE_PAL_FIXED_ADDR,
-        &config_pal_fixed_addr,
-        sizeof(config_pal_fixed_addr)
-    },
-    {   HOB_TYPE_PAL_FREQ_BASE,
-        &config_pal_freq_base,
-        sizeof(config_pal_freq_base)
-    },
-    {   HOB_TYPE_PAL_FREQ_RATIOS,
-        &config_pal_freq_ratios,
-        sizeof(config_pal_freq_ratios)
-    },
-    {   HOB_TYPE_PAL_HALT_INFO,
-        &config_pal_halt_info,
-        sizeof(config_pal_halt_info)
-    },
-    {   HOB_TYPE_PAL_PERF_MON_INFO,
-        &config_pal_perf_mon_info,
-        sizeof(config_pal_perf_mon_info)
-    },
-    {   HOB_TYPE_PAL_PROC_GET_FEATURES,
-        &config_pal_proc_get_features,
-        sizeof(config_pal_proc_get_features)
-    },
-    {   HOB_TYPE_PAL_PTCE_INFO,
-        &config_pal_ptce_info,
-        sizeof(config_pal_ptce_info)
-    },
-    {   HOB_TYPE_PAL_REGISTER_INFO,
-        &config_pal_register_info,
-        sizeof(config_pal_register_info)
-    },
-    {   HOB_TYPE_PAL_RSE_INFO,
-        &config_pal_rse_info,
-        sizeof(config_pal_rse_info)
-    },
-    {   HOB_TYPE_PAL_TEST_INFO,
-        &config_pal_test_info,
-        sizeof(config_pal_test_info)
-    },
-    {   HOB_TYPE_PAL_VM_SUMMARY,
-        &config_pal_vm_summary,
-        sizeof(config_pal_vm_summary)
-    },
-    {   HOB_TYPE_PAL_VM_INFO,
-        &config_pal_vm_info,
-        sizeof(config_pal_vm_info)
-    },
-    {   HOB_TYPE_PAL_VM_PAGE_SIZE,
-        &config_pal_vm_page_size,
-        sizeof(config_pal_vm_page_size)
-    },
-};
-
-static int
-add_pal_hob(void* hob_buf)
-{
-    int i;
-    for (i = 0; i < sizeof(hob_batch)/sizeof(hob_batch_t); i++) {
-        if (hob_add(hob_buf, hob_batch[i].type, hob_batch[i].data,
-                    hob_batch[i].size) < 0)
-            return -1;
-    }
-    return 0;
-}
-
-// The most significant bit of nvram file descriptor:
-// 1: valid; 0: invalid
-#define VALIDATE_NVRAM_FD(x) ((1UL<<(sizeof(x)*8 - 1)) | x)
-#define IS_VALID_NVRAM_FD(x) ((uint64_t)x >> (sizeof(x)*8 - 1))
-static uint64_t 
-nvram_init(xc_interface *xch, const char *nvram_path)
-{
-    uint64_t fd = 0;
-    fd = open(nvram_path, O_CREAT|O_RDWR, 0644);
-
-    if ( fd < 0 )
-    {
-        PERROR("Nvram open failed at %s. Guest will boot without"
-               " nvram support!\n", nvram_path);       
-        return -1;
-    }
-
-    return VALIDATE_NVRAM_FD(fd);
-}
-
-static int 
-copy_from_nvram_to_GFW(xc_interface *xch, uint32_t dom, int nvram_fd)
-{
-    unsigned int nr_pages = NVRAM_SIZE >> PAGE_SHIFT;
-    struct stat file_stat;
-    char buf[NVRAM_SIZE] = {0};
-
-    if ( fstat(nvram_fd, &file_stat) < 0 )
-    {
-        PERROR("Cannot get Nvram file info! Guest will boot without "
-               "nvram support!\n");
-        return -1;
-    }
-
-    if ( 0 == file_stat.st_size )
-    {
-        DPRINTF("Nvram file create successful!\n");
-        return 0;
-    }
-
-    if ( read(nvram_fd, buf, NVRAM_SIZE) != NVRAM_SIZE )
-    {
-        PERROR("Load nvram fail. guest will boot without"
-               " nvram support!\n");
-        return -1;
-    }
-
-    return  xc_ia64_copy_to_domain_pages(xch, dom, buf,
-                                         NVRAM_START >> PAGE_SHIFT, nr_pages);
-}
-
-
-/*
- *Check is the address where NVRAM data located valid
- */
-static int is_valid_address(xc_interface *xch, void *addr)
-{
-    struct nvram_save_addr *p = (struct nvram_save_addr *)addr;        
-
-    if ( p->signature == NVRAM_VALID_SIG )
-        return 1;
-    else {
-        PERROR("Invalid nvram signature. Nvram save failed!");
-        return 0;
-    }
-}
-
-/*
- * GFW use 4k page. when doing foreign map, we should 16k align
- * the address and map one more page to guarantee all 64k nvram data 
- * can be got.
- */
-static int
-copy_from_GFW_to_nvram(xc_interface *xch, uint32_t dom, int nvram_fd)
-{
-    xen_pfn_t *pfn_list = NULL;
-    char *tmp_ptr = NULL;
-    unsigned int nr_pages = 0;
-    uint64_t addr_from_GFW_4k_align = 0;
-    uint32_t offset = 0;
-    uint64_t nvram_base_addr = 0;
-    char buf[NVRAM_SIZE] = {0};
-    int i;
-
-    // map one more page 
-    nr_pages = (NVRAM_SIZE + PAGE_SIZE) >> PAGE_SHIFT;
-    pfn_list = (xen_pfn_t *)malloc(sizeof(xen_pfn_t) * nr_pages);
-    if ( NULL == pfn_list )
-    {
-        PERROR("Cannot allocate memory for nvram save!");
-        close(nvram_fd);
-        return -1;
-    }
-
-    /* 
-     * GFW allocate memory dynamicly to save nvram data
-     * and save address of the dynamic memory at NVRAM_START. 
-     * To save nvram data to file, we must get the dynamic
-     * memory address first.
-     */
-    pfn_list[0] = NVRAM_START >> PAGE_SHIFT;
-    tmp_ptr = (char *)xc_map_foreign_range(xch, dom, PAGE_SIZE,
-                                           PROT_READ | PROT_WRITE, pfn_list[0]);
-
-    if ( NULL == tmp_ptr )
-    {
-        PERROR("Cannot get nvram data from GFW!");
-        free(pfn_list);
-        close(nvram_fd);
-        return -1;
-    }
-
-    /* Check is NVRAM data vaild */
-    if ( !is_valid_address(xch, tmp_ptr) )
-    {
-        free(pfn_list);
-        munmap(tmp_ptr, PAGE_SIZE);
-        close(nvram_fd);
-        return -1;
-    }
-
-    addr_from_GFW_4k_align = ((struct nvram_save_addr *)tmp_ptr)->addr;
-    munmap(tmp_ptr, PAGE_SIZE);
-
-    // align address to 16k
-    offset = addr_from_GFW_4k_align % ( 16 * MEM_K );
-    addr_from_GFW_4k_align = addr_from_GFW_4k_align - offset;
-    for ( i=0; i<nr_pages; i++ )
-        pfn_list[i] = (addr_from_GFW_4k_align >> PAGE_SHIFT) + i;
-
-    tmp_ptr = (char *)xc_map_foreign_pages(xch, dom,
-                                           PROT_READ | PROT_WRITE,
-                                           pfn_list, nr_pages);
-    if ( NULL == tmp_ptr )
-    {
-        PERROR("Cannot get nvram data from GFW!");
-        free(pfn_list);
-        close(nvram_fd);
-        return -1;
-    }
-
-    // calculate nvram data base addrees
-    nvram_base_addr = (uint64_t)(tmp_ptr + offset);
-
-    memcpy(buf, (void *)nvram_base_addr, NVRAM_SIZE);
-    free(pfn_list);
-    munmap(tmp_ptr, NVRAM_SIZE + PAGE_SIZE);
-
-    lseek(nvram_fd, 0, SEEK_SET);
-    if ( write(nvram_fd, buf, NVRAM_SIZE) != NVRAM_SIZE )
-    {
-        PERROR("Save to nvram fail!");
-        return -1;
-    }
-
-    close(nvram_fd);
-
-    DPRINTF("Nvram save successful!\n");
-
-    return 0;
-}
-
-int xc_ia64_save_to_nvram(xc_interface *xch, uint32_t dom) 
-{
-    xc_dominfo_t info;
-    uint64_t nvram_fd = 0;
-
-    if ( xc_domain_getinfo(xch, dom, 1, &info) != 1 )
-    {
-        PERROR("Could not get info for domain");
-        return -1;
-    }
-
-    if ( !info.hvm )
-        return 0;
-
-    xc_get_hvm_param(xch, dom, HVM_PARAM_NVRAM_FD, &nvram_fd);
-
-    if ( !IS_VALID_NVRAM_FD(nvram_fd) )
-        PERROR("Nvram not initialized. Nvram save failed!");
-    else
-        copy_from_GFW_to_nvram(xch, dom, (int)nvram_fd);       
-
-    // although save to nvram maybe fail, we don't return any error number
-    // to Xend. This is quite logical because damage of NVRAM on native would 
-    // not block OS's executive path. Return error number will cause an
-    // exception of Xend and block XenU when it destroy.
-    return 0;
-}
-
-#define NVRAM_DIR         "/var/lib/xen/nvram/"
-#define NVRAM_FILE_PREFIX "nvram_"
-
-int xc_ia64_nvram_init(xc_interface *xch, char *dom_name, uint32_t dom)
-{
-    uint64_t nvram_fd;
-    char nvram_path[PATH_MAX] = NVRAM_DIR;
-
-    if ( access(nvram_path, R_OK|W_OK|X_OK) == -1 ) {
-        if ( errno != ENOENT )
-        {
-            PERROR("Error stat'ing NVRAM dir %s.", nvram_path);
-            return -1;
-        }
-        if ( mkdir(nvram_path, 0755) == -1 )
-        {
-            PERROR("Unable to create NVRAM store directory %s.", nvram_path);
-            return -1;
-        }
-    }
-
-    if ( access(nvram_path, R_OK|W_OK|X_OK) == -1 ) {
-        errno = EACCES;
-        PERROR("No RWX permission to NVRAM store directory %s.", nvram_path);
-        return -1;
-    }
-
-    if ( strlen(nvram_path) + strlen(NVRAM_FILE_PREFIX) +
-         strlen(dom_name) + 1 > sizeof(nvram_path) )
-    {
-        PERROR("Nvram file path is too long!");
-        return -1;
-    }
-    strcat(nvram_path, NVRAM_FILE_PREFIX);
-    strcat(nvram_path, dom_name);
-
-    nvram_fd = nvram_init(xch, nvram_path);
-    if ( nvram_fd == (uint64_t)(-1) )
-    {
-        xc_set_hvm_param(xch, dom, HVM_PARAM_NVRAM_FD, 0);
-        return -1;
-    }
-
-    xc_set_hvm_param(xch, dom, HVM_PARAM_NVRAM_FD, nvram_fd);
-    return 0; 
-}
-
-#define GFW_PAGES (GFW_SIZE >> PAGE_SHIFT)
-#define VGA_START_PAGE (VGA_IO_START >> PAGE_SHIFT)
-#define VGA_END_PAGE ((VGA_IO_START + VGA_IO_SIZE) >> PAGE_SHIFT)
-
-static void
-xc_ia64_setup_md(efi_memory_desc_t *md,
-                 unsigned long start, unsigned long end)
-{
-    md->type = EFI_CONVENTIONAL_MEMORY;
-    md->pad = 0;
-    md->phys_addr = start;
-    md->virt_addr = 0;
-    md->num_pages = (end - start) >> EFI_PAGE_SHIFT;
-    md->attribute = EFI_MEMORY_WB;
-}
-
-static inline unsigned long 
-min(unsigned long lhs, unsigned long rhs)
-{
-    return (lhs < rhs)? lhs: rhs;
-}
-
-static int
-xc_ia64_setup_memmap_info(xc_interface *xch, uint32_t dom,
-                          unsigned long dom_memsize, /* in bytes */
-                          unsigned long *pfns_special_pages, 
-                          unsigned long nr_special_pages,
-                          unsigned long memmap_info_pfn,
-                          unsigned long memmap_info_num_pages)
-{
-    xen_ia64_memmap_info_t* memmap_info;
-    efi_memory_desc_t *md;
-    uint64_t nr_mds;
-    
-    memmap_info = xc_map_foreign_range(xch, dom,
-                                       PAGE_SIZE * memmap_info_num_pages,
-                                       PROT_READ | PROT_WRITE,
-                                       memmap_info_pfn);
-    if (memmap_info == NULL) {
-        PERROR("Could not map memmmap_info page.");
-        return -1;
-    }
-    memset(memmap_info, 0, PAGE_SIZE * memmap_info_num_pages);
-
-    /*
-     * [0, VGA_IO_START = 0xA0000)
-     * [VGA_IO_START + VGA_IO_SIZE = 0xC0000, MMIO_START = 3GB)
-     * [IO_PAGE_START (> 3GB), IO_PAGE_START + IO_PAGE_SIZE)
-     * [STORE_PAGE_START, STORE_PAGE_START + STORE_PAGE_SIZE)
-     * [BUFFER_IO_PAGE_START, BUFFER_IO_PAGE_START + BUFFER_IO_PAGE_SIZE)
-     * [BUFFER_PIO_PAGE_START, BUFFER_PIO_PAGE_START + BUFFER_PIO_PAGE_SIZE)
-     * [memmap_info_pfn << PAGE_SHIFT,
-     *                          (memmap_info_pfn << PAGE_SHIFT) + PAGE_SIZE)
-     * [GFW_START=4GB - GFW_SIZE, GFW_START + GFW_SIZE = 4GB)
-     * [4GB, ...)
-     */ 
-    md = (efi_memory_desc_t*)&memmap_info->memdesc;
-    xc_ia64_setup_md(md, 0, min(VGA_IO_START, dom_memsize));
-    md++;
-
-    if (dom_memsize > VGA_IO_START) {
-        xc_ia64_setup_md(md, VGA_IO_START + VGA_IO_SIZE,
-                         min(MMIO_START, dom_memsize + VGA_IO_SIZE));
-        md++;
-    }
-    xc_ia64_setup_md(md, IO_PAGE_START, IO_PAGE_START + IO_PAGE_SIZE);
-    md++;
-    xc_ia64_setup_md(md, STORE_PAGE_START, STORE_PAGE_START + STORE_PAGE_SIZE);
-    md++;
-    xc_ia64_setup_md(md, BUFFER_IO_PAGE_START,
-                     BUFFER_IO_PAGE_START + BUFFER_IO_PAGE_SIZE);
-    md++;
-    xc_ia64_setup_md(md, BUFFER_PIO_PAGE_START,
-                     BUFFER_PIO_PAGE_START + BUFFER_PIO_PAGE_SIZE);
-    md++;
-    xc_ia64_setup_md(md, memmap_info_pfn << PAGE_SHIFT,
-                     (memmap_info_pfn << PAGE_SHIFT) +
-                     PAGE_SIZE * memmap_info_num_pages);
-    md++;
-    xc_ia64_setup_md(md, GFW_START, GFW_START + GFW_SIZE);
-    md++;
-    if (dom_memsize + VGA_IO_SIZE > MMIO_START) {
-        xc_ia64_setup_md(md, 4 * MEM_G, dom_memsize + VGA_IO_SIZE + (1 * MEM_G));
-        md++;
-    }
-    nr_mds = md - (efi_memory_desc_t*)&memmap_info->memdesc;
-    
-    assert(nr_mds <=
-           (PAGE_SIZE * memmap_info_num_pages -
-            offsetof(typeof(*memmap_info), memdesc))/sizeof(*md));
-    memmap_info->efi_memmap_size = nr_mds * sizeof(*md);
-    memmap_info->efi_memdesc_size = sizeof(*md);
-    memmap_info->efi_memdesc_version = EFI_MEMORY_DESCRIPTOR_VERSION;
-
-    munmap(memmap_info, PAGE_SIZE * memmap_info_num_pages);
-    return 0;
-}
-
-/* setup shared_info page */
-static int
-xc_ia64_setup_shared_info(xc_interface *xch, uint32_t dom,
-                          unsigned long shared_info_pfn,
-                          unsigned long memmap_info_pfn,
-                          unsigned long memmap_info_num_pages)
-{
-    shared_info_t *shared_info;
-
-    shared_info = xc_map_foreign_range(xch, dom, PAGE_SIZE,
-                                       PROT_READ | PROT_WRITE,
-                                       shared_info_pfn);
-    if (shared_info == NULL) {
-        PERROR("Could not map shared_info");
-        return -1;
-    }
-    memset(shared_info, 0, sizeof(*shared_info));
-    shared_info->arch.memmap_info_num_pages = memmap_info_num_pages;
-    shared_info->arch.memmap_info_pfn = memmap_info_pfn;
-    munmap(shared_info, PAGE_SIZE);
-    return 0;
-}
-
-/*
- * In this function, we will allocate memory and build P2M/M2P table for VTI
- * guest.  Frist, a pfn list will be initialized discontiguous, normal memory
- * begins with 0, GFW memory and other five pages at their place defined in
- * xen/include/public/arch-ia64.h xc_domain_populate_physmap_exact() called
- * five times, to set parameter 'extent_order' to different value, this is
- * convenient to allocate discontiguous memory with different size.
- */
-static int
-setup_guest(xc_interface *xch, uint32_t dom, unsigned long memsize,
-            char *image, unsigned long image_size)
-{
-    xen_pfn_t *pfn_list;
-    unsigned long dom_memsize = memsize;
-    unsigned long nr_pages = memsize >> PAGE_SHIFT;
-    unsigned long vcpus;
-    unsigned long nr_special_pages;
-    unsigned long memmap_info_pfn;
-    unsigned long memmap_info_num_pages;
-    unsigned long nvram_start = NVRAM_START, nvram_fd = 0; 
-    int rc;
-    unsigned long i;
-    unsigned long pfn;
-    const struct hvm_special_page {
-        int             param;
-        xen_pfn_t       pfn;
-    } special_pages[] = {
-        // pfn-sorted array
-        { HVM_PARAM_IOREQ_PFN,          IO_PAGE_START         >> PAGE_SHIFT},
-        { HVM_PARAM_STORE_PFN,          STORE_PAGE_START      >> PAGE_SHIFT},
-        { HVM_PARAM_BUFIOREQ_PFN,       BUFFER_IO_PAGE_START  >> PAGE_SHIFT}, 
-        { HVM_PARAM_BUFPIOREQ_PFN,      BUFFER_PIO_PAGE_START >> PAGE_SHIFT},
-    };
-    DECLARE_DOMCTL;
-
-
-    if ((image_size > 12 * MEM_M) || (image_size & (PAGE_SIZE - 1))) {
-        PERROR("Guest firmware size is incorrect [%ld]?", image_size);
-        return -1;
-    }
-
-    pfn_list = malloc(nr_pages * sizeof(xen_pfn_t));
-    if (pfn_list == NULL) {
-        PERROR("Could not allocate memory.");
-        return -1;
-    }
-
-    //
-    // Populate
-    // [0, VGA_IO_START) (VGA_IO_SIZE hole)
-    // [VGA_IO_START + VGA_IO_SIZE, MMIO_START) (1GB hole)
-    // [4GB, end)
-    //                     
-    i = 0;
-    for (pfn = 0;
-         pfn < MIN((dom_memsize >> PAGE_SHIFT), VGA_START_PAGE);
-         pfn++)
-        pfn_list[i++] = pfn;
-    for (pfn = VGA_END_PAGE;
-         pfn < (MIN(dom_memsize + VGA_IO_SIZE, MMIO_START) >> PAGE_SHIFT);
-         pfn++)
-        pfn_list[i++] = pfn;
-    for (pfn = ((4 * MEM_G) >> PAGE_SHIFT); 
-         pfn < ((dom_memsize + VGA_IO_SIZE + 1 * MEM_G) >> PAGE_SHIFT);
-         pfn++)
-        pfn_list[i++] = pfn;
-
-    rc = xc_domain_populate_physmap_exact(xch, dom, nr_pages, 0, 0,
-                                           &pfn_list[0]);
-    if (rc != 0) {
-        PERROR("Could not allocate normal memory for Vti guest.");
-        goto error_out;
-    }
-
-    // We allocate additional pfn for GFW and other five pages, so
-    // the pfn_list is not contiguous.  Due to this we must support
-    // old interface xc_ia64_get_pfn_list().
-    for (i = 0; i < GFW_PAGES; i++) 
-        pfn_list[i] = (GFW_START >> PAGE_SHIFT) + i;
-
-    rc = xc_domain_populate_physmap_exact(xch, dom, GFW_PAGES,
-                                           0, 0, &pfn_list[0]);
-    if (rc != 0) {
-        PERROR("Could not allocate GFW memory for Vti guest.");
-        goto error_out;
-    }
-
-    for (i = 0; i < sizeof(special_pages) / sizeof(special_pages[0]); i++)
-        pfn_list[i] = special_pages[i].pfn;
-
-    nr_special_pages = i;
-    memmap_info_pfn = pfn_list[nr_special_pages - 1] + 1;
-    memmap_info_num_pages = 1;
-    pfn_list[nr_special_pages] = memmap_info_pfn;
-    nr_special_pages++;
-
-    rc = xc_domain_populate_physmap_exact(xch, dom, nr_special_pages,
-                                           0, 0, &pfn_list[0]);
-    if (rc != 0) {
-        PERROR("Could not allocate IO page or store page or buffer io page.");
-        goto error_out;
-    }
-
-    domctl.u.arch_setup.flags = 0;
-    domctl.u.arch_setup.bp = 0;
-    domctl.u.arch_setup.maxmem = GFW_START + GFW_SIZE;
-    if (dom_memsize + VGA_IO_SIZE > MMIO_START)
-        domctl.u.arch_setup.maxmem = dom_memsize + VGA_IO_SIZE + 1 * MEM_G;
-    domctl.cmd = XEN_DOMCTL_arch_setup;
-    domctl.domain = (domid_t)dom;
-    if (xc_domctl(xch, &domctl))
-        goto error_out;
-
-    // Load guest firmware 
-    if (xc_ia64_copy_to_domain_pages(xch, dom, image,
-                            (GFW_START + GFW_SIZE - image_size) >> PAGE_SHIFT,
-                            image_size >> PAGE_SHIFT)) {
-        PERROR("Could not load guest firmware into domain");
-        goto error_out;
-    }
-
-    domctl.cmd = XEN_DOMCTL_getdomaininfo;
-    domctl.domain = (domid_t)dom;
-    if (xc_domctl(xch, &domctl) < 0) {
-        PERROR("Could not get info on domain");
-        goto error_out;
-    }
-
-    if (xc_ia64_setup_memmap_info(xch, dom, dom_memsize,
-                                  pfn_list, nr_special_pages,
-                                  memmap_info_pfn, memmap_info_num_pages)) {
-        PERROR("Could not build memmap info");
-        goto error_out;
-    }
-    if (xc_ia64_setup_shared_info(xch, dom,
-                                  domctl.u.getdomaininfo.shared_info_frame,
-                                  memmap_info_pfn, memmap_info_num_pages)) {
-        PERROR("Could not setup shared_info");
-        goto error_out;
-    }
-
-    xc_get_hvm_param(xch, dom, HVM_PARAM_NVRAM_FD, &nvram_fd);
-    if ( !IS_VALID_NVRAM_FD(nvram_fd) )
-        nvram_start = 0;
-    else if ( copy_from_nvram_to_GFW(xch, dom, (int)nvram_fd ) == -1 ) {
-        nvram_start = 0;
-        close(nvram_fd);
-    }
-
-    vcpus = domctl.u.getdomaininfo.max_vcpu_id + 1;
-
-    // Hand-off state passed to guest firmware 
-    if (xc_ia64_build_hob(xch, dom, dom_memsize, vcpus, nvram_start) < 0) {
-        PERROR("Could not build hob");
-        goto error_out;
-    }
-
-    // zero clear all special pages
-    for (i = 0; i < sizeof(special_pages) / sizeof(special_pages[0]); i++) {
-        xc_set_hvm_param(xch, dom,
-                         special_pages[i].param, special_pages[i].pfn);
-        if (xc_clear_domain_page(xch, dom, special_pages[i].pfn))
-            goto error_out;
-    }
-
-    free(pfn_list);
-    return 0;
-
-error_out:
-    return -1;
-}
-
-int
-xc_hvm_build(xc_interface *xch, uint32_t domid, const struct xc_hvm_build_args *args)
-{
-    vcpu_guest_context_any_t st_ctxt_any;
-    vcpu_guest_context_t *ctxt = &st_ctxt_any.c;
-    char *image = NULL;
-    unsigned long image_size;
-
-    image = xc_read_image(xch, args->image_file_name, &image_size);
-    if (image == NULL) {
-        PERROR("Could not read guest firmware image %s", image_name);
-        goto error_out;
-    }
-
-    image_size = (image_size + PAGE_SIZE - 1) & PAGE_MASK;
-
-    if (setup_guest(xch, domid, (unsigned long)args->mem_size, image,
-                    image_size) < 0) {
-        ERROR("Error constructing guest OS");
-        goto error_out;
-    }
-
-    free(image);
-
-    memset(&st_ctxt_any, 0, sizeof(st_ctxt_any));
-    ctxt->regs.ip = 0x80000000ffffffb0UL;
-    ctxt->regs.ar.fpsr = xc_ia64_fpsr_default();
-    ctxt->regs.cr.itir = 14 << 2;
-    ctxt->regs.psr = IA64_PSR_AC | IA64_PSR_BN;
-    ctxt->regs.cr.dcr = 0;
-    ctxt->regs.cr.pta = 15 << 2;
-    return xc_vcpu_setcontext(xch, domid, 0, &st_ctxt_any);
-
-error_out:
-    free(image);
-    return -1;
-}
-
-/* xc_hvm_build_target_mem: 
- * Create a domain for a pre-ballooned virtualized Linux, using
- * files/filenames.  If target < memsize, domain is created with
- * memsize pages marked populate-on-demand, and with a PoD cache size
- * of target.  If target == memsize, pages are populated normally.
- *
- * XXX:PoD isn't supported yet so setting target does nothing.
- */
-int xc_hvm_build_target_mem(xc_interface *xch,
-                            uint32_t domid,
-                            int memsize,
-                            int target,
-                            const char *image_name)
-{
-    struct xc_hvm_build_args args;
-
-    args.mem_size = (uint64_t)memsize << 20;
-    args.mem_target = (uint64_t)target << 20;
-    args.image_file_name = image_name;
-
-    return xc_hvm_build(xch, domid, &args);
-}
-
-/*
- * From asm/pgtable.h
- */
-#define _PAGE_P_BIT     0
-#define _PAGE_A_BIT     5
-#define _PAGE_D_BIT     6
-
-#define _PAGE_P         (1 << _PAGE_P_BIT)      /* page present bit */
-#define _PAGE_A         (1 << _PAGE_A_BIT)      /* page accessed bit */
-#define _PAGE_D         (1 << _PAGE_D_BIT)      /* page dirty bit */
-
-#define _PAGE_MA_WB     (0x0 <<  2)     /* write back memory attribute */
-#define _PAGE_MA_UC     (0x4 <<  2)     /* uncacheable memory attribute */
-#define _PAGE_AR_RW     (2 <<  9)       /* read & write */
-
-int
-xc_ia64_set_os_type(xc_interface *xch, char *guest_os_type, uint32_t dom)
-{
-    DECLARE_DOMCTL;
-
-    domctl.cmd = XEN_DOMCTL_set_opt_feature;
-    domctl.domain = (domid_t)dom;
-
-    if (!guest_os_type || !strlen(guest_os_type) ||
-        !strcmp("default", guest_os_type)) {
-
-        /* Nothing */
-        return 0;
-
-    } else if (!strcmp("windows", guest_os_type)) {
-        DPRINTF("Enabling Windows guest OS optimizations\n");
-
-        /* Windows identity maps regions 4 & 5 */
-        domctl.u.set_opt_feature.optf.cmd = XEN_IA64_OPTF_IDENT_MAP_REG4;
-        domctl.u.set_opt_feature.optf.on = XEN_IA64_OPTF_ON;
-        domctl.u.set_opt_feature.optf.pgprot = (_PAGE_P | _PAGE_A | _PAGE_D |
-                                                _PAGE_MA_WB | _PAGE_AR_RW);
-        domctl.u.set_opt_feature.optf.key = 0;
-        if (xc_domctl(xch, &domctl))
-            PERROR("Failed to set region 4 identity mapping for Windows "
-                   "guest OS type.\n");
-
-        domctl.u.set_opt_feature.optf.cmd = XEN_IA64_OPTF_IDENT_MAP_REG5;
-        domctl.u.set_opt_feature.optf.on = XEN_IA64_OPTF_ON;
-        domctl.u.set_opt_feature.optf.pgprot = (_PAGE_P | _PAGE_A | _PAGE_D |
-                                                _PAGE_MA_UC | _PAGE_AR_RW);
-        domctl.u.set_opt_feature.optf.key = 0;
-        if (xc_domctl(xch, &domctl))
-            PERROR("Failed to set region 5 identity mapping for Windows "
-                   "guest OS type.\n");
-        return 0;
-
-    } else if (!strcmp("linux", guest_os_type)) {
-        DPRINTF("Enabling Linux guest OS optimizations\n");
-
-        /* Linux identity maps regions 7 */
-        domctl.u.set_opt_feature.optf.cmd = XEN_IA64_OPTF_IDENT_MAP_REG7;
-        domctl.u.set_opt_feature.optf.on = XEN_IA64_OPTF_ON;
-        domctl.u.set_opt_feature.optf.pgprot = (_PAGE_P | _PAGE_A | _PAGE_D |
-                                                _PAGE_MA_WB | _PAGE_AR_RW);
-        domctl.u.set_opt_feature.optf.key = 0;
-        if (xc_domctl(xch, &domctl))
-            PERROR("Failed to set region 7 identity mapping for Linux "
-                   "guest OS type.\n");
-        return 0;
-    }
-
-    DPRINTF("Unknown guest_os_type (%s), using defaults\n", guest_os_type);
-
-    return 0;
-}
-
-/*
- * Local variables:
- * mode: C
- * c-set-style: "BSD"
- * c-basic-offset: 4
- * tab-width: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/tools/libxc/ia64/xc_ia64_linux_restore.c b/tools/libxc/ia64/xc_ia64_linux_restore.c
deleted file mode 100644 (file)
index d199cbf..0000000
+++ /dev/null
@@ -1,739 +0,0 @@
-/******************************************************************************
- * xc_ia64_linux_restore.c
- *
- * Restore the state of a Linux session.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- *
- * Copyright (c) 2003, K A Fraser.
- *  Rewritten for ia64 by Tristan Gingold <tristan.gingold@bull.net>
- *
- * Copyright (c) 2007 Isaku Yamahata <yamahata@valinux.co.jp>
- *   Use foreign p2m exposure.
- *   VTi domain support
- */
-
-#include <stdlib.h>
-#include <unistd.h>
-
-#include "xg_private.h"
-#include "xc_ia64_save_restore.h"
-#include "xc_ia64.h"
-#include "xc_efi.h"
-#include "xen/hvm/params.h"
-
-#define PFN_TO_KB(_pfn) ((_pfn) << (PAGE_SHIFT - 10))
-
-/* number of pfns this guest has (i.e. number of entries in the P2M) */
-static unsigned long p2m_size;
-
-/* number of 'in use' pfns in the guest (i.e. #P2M entries with a valid mfn) */
-static unsigned long nr_pfns;
-
-static int
-populate_page_if_necessary(xc_interface *xch, uint32_t dom, unsigned long gmfn,
-                           struct xen_ia64_p2m_table *p2m_table)
-{
-    if (xc_ia64_p2m_present(p2m_table, gmfn))
-        return 0;
-
-    return xc_domain_populate_physmap_exact(xch, dom, 1, 0, 0, &gmfn);
-}
-
-static int
-read_page(xc_interface *xch, int io_fd, uint32_t dom, unsigned long pfn)
-{
-    void *mem;
-
-    mem = xc_map_foreign_range(xch, dom, PAGE_SIZE,
-                               PROT_READ|PROT_WRITE, pfn);
-    if (mem == NULL) {
-        ERROR("cannot map page");
-        return -1;
-    }
-    if (read_exact(io_fd, mem, PAGE_SIZE)) {
-        ERROR("Error when reading from state file (5)");
-        munmap(mem, PAGE_SIZE);
-        return -1;
-    }
-    munmap(mem, PAGE_SIZE);
-    return 0;
-}
-
-/*
- * Get the list of PFNs that are not in the psuedo-phys map.
- * Although we allocate pages on demand, balloon driver may 
- * decreased simaltenously. So we have to free the freed
- * pages here.
- */
-static int
-xc_ia64_recv_unallocated_list(xc_interface *xch, int io_fd, uint32_t dom,
-                              struct xen_ia64_p2m_table *p2m_table)
-{
-    int rc = -1;
-    unsigned int i;
-    unsigned int count;
-    unsigned long *pfntab = NULL;
-    unsigned int nr_frees;
-
-    if (read_exact(io_fd, &count, sizeof(count))) {
-        ERROR("Error when reading pfn count");
-        goto out;
-    }
-
-    pfntab = malloc(sizeof(unsigned long) * count);
-    if (pfntab == NULL) {
-        ERROR("Out of memory");
-        goto out;
-    }
-
-    if (read_exact(io_fd, pfntab, sizeof(unsigned long)*count)) {
-        ERROR("Error when reading pfntab");
-        goto out;
-    }
-
-    nr_frees = 0;
-    for (i = 0; i < count; i++) {
-        if (xc_ia64_p2m_allocated(p2m_table, pfntab[i])) {
-            pfntab[nr_frees] = pfntab[i];
-            nr_frees++;
-        }
-    }
-    if (nr_frees > 0) {
-        if (xc_domain_decrease_reservation_exact(xch, dom, nr_frees,
-                                                  0, pfntab) < 0) {
-            PERROR("Could not decrease reservation");
-            goto out;
-        } else
-            DPRINTF("Decreased reservation by %d / %d pages\n",
-                    nr_frees, count);
-    }
-
-    rc = 0;
-    
- out:
-    if (pfntab != NULL)
-        free(pfntab);
-    return rc;
-}
-
-static int
-xc_ia64_recv_vcpu_context(xc_interface *xch, int io_fd, uint32_t dom,
-                          uint32_t vcpu, vcpu_guest_context_any_t *ctxt_any)
-{
-    vcpu_guest_context_t *ctxt = &ctxt_any->c;
-    if (read_exact(io_fd, ctxt, sizeof(*ctxt))) {
-        ERROR("Error when reading ctxt");
-        return -1;
-    }
-
-    fprintf(stderr, "ip=%016lx, b0=%016lx\n", ctxt->regs.ip, ctxt->regs.b[0]);
-
-    /* Initialize and set registers.  */
-    ctxt->flags = VGCF_EXTRA_REGS | VGCF_SET_CR_IRR | VGCF_online |
-        VGCF_SET_AR_ITC;
-    if (xc_vcpu_setcontext(xch, dom, vcpu, ctxt_any) != 0) {
-        ERROR("Couldn't set vcpu context");
-        return -1;
-    }
-
-    /* Just a check.  */
-    ctxt->flags = 0;
-    if (xc_vcpu_getcontext(xch, dom, vcpu, ctxt_any)) {
-        ERROR("Could not get vcpu context");
-        return -1;
-    }
-
-    return 0;
-}
-
-/* Read shared info.  */
-static int
-xc_ia64_recv_shared_info(xc_interface *xch, int io_fd, uint32_t dom,
-                         unsigned long shared_info_frame,
-                         unsigned long *start_info_pfn)
-{
-    unsigned int i;
-
-    /* The new domain's shared-info frame. */
-    shared_info_t *shared_info;
-    
-    /* Read shared info.  */
-    shared_info = xc_map_foreign_range(xch, dom, PAGE_SIZE,
-                                       PROT_READ|PROT_WRITE,
-                                       shared_info_frame);
-    if (shared_info == NULL) {
-        ERROR("cannot map page");
-        return -1;
-    }
-
-    if (read_exact(io_fd, shared_info, PAGE_SIZE)) {
-        ERROR("Error when reading shared_info page");
-        munmap(shared_info, PAGE_SIZE);
-        return -1;
-    }
-
-    /* clear any pending events and the selector */
-    memset(&(shared_info->evtchn_pending[0]), 0,
-           sizeof (shared_info->evtchn_pending));
-    for (i = 0; i < XEN_LEGACY_MAX_VCPUS; i++)
-        shared_info->vcpu_info[i].evtchn_pending_sel = 0;
-
-    if (start_info_pfn != NULL)
-        *start_info_pfn = shared_info->arch.start_info_pfn;
-
-    munmap (shared_info, PAGE_SIZE);
-
-    return 0;
-}
-
-static int
-xc_ia64_recv_vcpumap(xc_interface *xch,
-                     const xc_dominfo_t *info, int io_fd, uint64_t **vcpumapp)
-{
-    uint64_t max_virt_cpus;
-    unsigned long vcpumap_size;
-    uint64_t *vcpumap = NULL;
-
-    *vcpumapp = NULL;
-    
-    if (read_exact(io_fd, &max_virt_cpus, sizeof(max_virt_cpus))) {
-        ERROR("error reading max_virt_cpus");
-        return -1;
-    }
-    if (max_virt_cpus < info->max_vcpu_id) {
-        ERROR("too large max_virt_cpus %i < %i\n",
-              max_virt_cpus, info->max_vcpu_id);
-        return -1;
-    }
-    vcpumap_size = bitmap_size(max_virt_cpus);
-    rc = bitmap_alloc(&vcpumap, max_virt_cpus);
-    if (rc < 0) {
-        ERROR("memory alloc for vcpumap");
-        return rc;
-    }
-    if (read_exact(io_fd, vcpumap, vcpumap_size)) {
-        ERROR("read vcpumap");
-        free(vcpumap);
-        return -1;
-    }
-
-    *vcpumapp = vcpumap;
-    return 0;
-}
-
-static int
-xc_ia64_pv_recv_vcpu_context(xc_interface *xch, int io_fd, int32_t dom,
-                             uint32_t vcpu)
-{
-    int rc = -1;
-
-    /* A copy of the CPU context of the guest. */
-    vcpu_guest_context_any_t ctxt_any;
-    vcpu_guest_context_t *ctxt = &ctxt_any.c;
-
-    if (xc_ia64_recv_vcpu_context(xch, io_fd, dom, vcpu, &ctxt_any))
-        goto out;
-
-    /* Then get privreg page.  */
-    if (read_page(xch, io_fd, dom, ctxt->privregs_pfn) < 0) {
-        ERROR("Could not read vcpu privregs");
-        goto out;
-    }
-
-    rc = 0;
-
- out:
-    return rc;
-}
-
-static int
-xc_ia64_pv_recv_shared_info(xc_interface *xch, int io_fd, int32_t dom, 
-                            unsigned long shared_info_frame,
-                            struct xen_ia64_p2m_table *p2m_table,
-                            unsigned int store_evtchn,
-                            unsigned long *store_mfn,
-                            unsigned int console_evtchn,
-                            unsigned long *console_mfn)
-{
-    unsigned long gmfn;
-
-    /* A temporary mapping of the guest's start_info page. */
-    start_info_t *start_info;
-    
-    /* Read shared info.  */
-    if (xc_ia64_recv_shared_info(xch, io_fd, dom,
-                                 shared_info_frame, &gmfn))
-        return -1;
-
-    /* Uncanonicalise the suspend-record frame number and poke resume rec. */
-    if (populate_page_if_necessary(xch, dom, gmfn, p2m_table)) {
-        ERROR("cannot populate page 0x%lx", gmfn);
-        return -1;
-    }
-    start_info = xc_map_foreign_range(xch, dom, PAGE_SIZE,
-                                      PROT_READ | PROT_WRITE, gmfn);
-    if (start_info == NULL) {
-        ERROR("cannot map start_info page");
-        return -1;
-    }
-    start_info->nr_pages = p2m_size;
-    start_info->shared_info = shared_info_frame << PAGE_SHIFT;
-    start_info->flags = 0;
-    *store_mfn = start_info->store_mfn;
-    start_info->store_evtchn = store_evtchn;
-    *console_mfn = start_info->console.domU.mfn;
-    start_info->console.domU.evtchn = console_evtchn;
-    munmap(start_info, PAGE_SIZE);
-
-    return 0;
-}
-
-static int
-xc_ia64_pv_recv_context_ver_one_or_two(xc_interface *xch, int io_fd, uint32_t dom,
-                                       unsigned long shared_info_frame,
-                                       struct xen_ia64_p2m_table *p2m_table,
-                                       unsigned int store_evtchn,
-                                       unsigned long *store_mfn,
-                                       unsigned int console_evtchn,
-                                       unsigned long *console_mfn)
-{
-    int rc;
-
-    /* vcpu 0 context */
-    rc = xc_ia64_pv_recv_vcpu_context(xch, io_fd, dom, 0);
-    if (rc)
-        return rc;
-
-
-    /* shared_info */
-    rc = xc_ia64_pv_recv_shared_info(xch, io_fd, dom, shared_info_frame,
-                                     p2m_table, store_evtchn, store_mfn,
-                                     console_evtchn, console_mfn);
-    return rc;
-}
-
-static int
-xc_ia64_pv_recv_context_ver_three(xc_interface *xch, int io_fd, uint32_t dom,
-                                  unsigned long shared_info_frame,
-                                  struct xen_ia64_p2m_table *p2m_table,
-                                  unsigned int store_evtchn,
-                                  unsigned long *store_mfn,
-                                  unsigned int console_evtchn,
-                                  unsigned long *console_mfn)
-{
-    int rc = -1;
-    xc_dominfo_t info;
-    unsigned int i;
-    
-    /* vcpu map */
-    uint64_t *vcpumap = NULL;
-    
-    if (xc_domain_getinfo(xch, dom, 1, &info) != 1) {
-        ERROR("Could not get domain info");
-        return -1;
-    }
-    rc = xc_ia64_recv_vcpumap(xch, &info, io_fd, &vcpumap);
-    if (rc != 0)
-        goto out;
-
-    /* vcpu context */
-    for (i = 0; i <= info.max_vcpu_id; i++) {
-        if (!test_bit(i, vcpumap))
-            continue;
-
-        rc = xc_ia64_pv_recv_vcpu_context(xch, io_fd, dom, i);
-        if (rc != 0)
-            goto out;
-    }    
-
-    /* shared_info */
-    rc = xc_ia64_pv_recv_shared_info(xch, io_fd, dom, shared_info_frame,
-                                     p2m_table, store_evtchn, store_mfn,
-                                     console_evtchn, console_mfn);
- out:
-    if (vcpumap != NULL)
-        free(vcpumap);
-    return rc;
-}
-
-static int
-xc_ia64_pv_recv_context(unsigned long format_version,
-                        xc_interface *xch, int io_fd, uint32_t dom,
-                        unsigned long shared_info_frame,
-                        struct xen_ia64_p2m_table *p2m_table,
-                        unsigned int store_evtchn,
-                        unsigned long *store_mfn,
-                        unsigned int console_evtchn,
-                        unsigned long *console_mfn)
-{
-    int rc;
-    switch (format_version) {
-    case XC_IA64_SR_FORMAT_VER_ONE:
-    case XC_IA64_SR_FORMAT_VER_TWO:
-        rc = xc_ia64_pv_recv_context_ver_one_or_two(xch, io_fd, dom,
-                                                    shared_info_frame,
-                                                    p2m_table, store_evtchn,
-                                                    store_mfn, console_evtchn,
-                                                    console_mfn);
-        break;
-    case XC_IA64_SR_FORMAT_VER_THREE:
-        rc = xc_ia64_pv_recv_context_ver_three(xch, io_fd, dom,
-                                               shared_info_frame,
-                                               p2m_table, store_evtchn,
-                                               store_mfn, console_evtchn,
-                                               console_mfn);
-        break;
-    default:
-        ERROR("Unsupported format version");
-        rc = -1;
-        break;
-    }
-    return rc;
-}
-
-static int
-xc_ia64_hvm_recv_context(xc_interface *xch, int io_fd, uint32_t dom,
-                         unsigned long shared_info_frame,
-                         struct xen_ia64_p2m_table *p2m_table,
-                         unsigned int store_evtchn, unsigned long *store_mfn,
-                         unsigned int console_evtchn,
-                         unsigned long *console_mfn)
-{
-    int rc = -1;
-    xc_dominfo_t info;
-    unsigned int i;
-    
-    /* cpumap */
-    uint64_t *vcpumap = NULL;
-
-    /* HVM: magic frames for ioreqs and xenstore comms */
-    const int hvm_params[] = {
-        HVM_PARAM_STORE_PFN,
-        HVM_PARAM_IOREQ_PFN,
-        HVM_PARAM_BUFIOREQ_PFN,
-        HVM_PARAM_BUFPIOREQ_PFN,
-    };
-    const int NR_PARAMS = sizeof(hvm_params) / sizeof(hvm_params[0]);
-    /* ioreq_pfn, bufioreq_pfn, store_pfn */
-    uint64_t magic_pfns[NR_PARAMS];
-
-    /* HVM: a buffer for holding HVM contxt */
-    uint64_t rec_size = 0;
-    uint8_t *hvm_buf = NULL;
-
-    /* Read shared info.  */
-    if (xc_ia64_recv_shared_info(xch, io_fd, dom, shared_info_frame,
-                                 NULL))
-        goto out;
-
-    /* vcpu map */
-    if (xc_domain_getinfo(xch, dom, 1, &info) != 1) {
-        ERROR("Could not get domain info");
-        goto out;
-    }
-    if (xc_ia64_recv_vcpumap(xch, &info, io_fd, &vcpumap))
-        goto out;
-    
-    /* vcpu context */
-    for (i = 0; i <= info.max_vcpu_id; i++) {
-        /* A copy of the CPU context of the guest. */
-        vcpu_guest_context_any_t ctxt_any;
-
-        if (!test_bit(i, vcpumap))
-            continue;
-
-        if (xc_ia64_recv_vcpu_context(xch, io_fd, dom, i, &ctxt_any))
-            goto out;
-
-        /* system context of vcpu is recieved as hvm context. */
-    }    
-
-    /* Set HVM-specific parameters */
-    if (read_exact(io_fd, magic_pfns, sizeof(magic_pfns))) {
-        ERROR("error reading magic page addresses");
-        goto out;
-    }
-
-    /* These comms pages need to be zeroed at the start of day */
-    for (i = 0; i < NR_PARAMS; i++) {
-        rc = xc_clear_domain_page(xch, dom, magic_pfns[i]);
-        if (rc != 0) {
-            ERROR("error zeroing magic pages: %i", rc);
-            goto out;
-        }
-        rc = xc_set_hvm_param(xch, dom, hvm_params[i], magic_pfns[i]);
-        if (rc != 0) {
-            ERROR("error setting HVM params: %i", rc);
-            goto out;
-        }
-    }
-    rc = xc_set_hvm_param(xch, dom,
-                          HVM_PARAM_STORE_EVTCHN, store_evtchn);
-    if (rc != 0) {
-        ERROR("error setting HVM params: %i", rc);
-        goto out;
-    }
-    rc = -1;
-    *store_mfn = magic_pfns[0];
-
-    /* Read HVM context */
-    if (read_exact(io_fd, &rec_size, sizeof(rec_size))) {
-        ERROR("error read hvm context size!\n");
-        goto out;
-    }
-
-    hvm_buf = malloc(rec_size);
-    if (hvm_buf == NULL) {
-        ERROR("memory alloc for hvm context buffer failed");
-        errno = ENOMEM;
-        goto out;
-    }
-
-    if (read_exact(io_fd, hvm_buf, rec_size)) {
-        ERROR("error loading the HVM context");
-        goto out;
-    }
-
-    rc = xc_domain_hvm_setcontext(xch, dom, hvm_buf, rec_size);
-    if (rc != 0) {
-        ERROR("error setting the HVM context");
-        goto out;
-    }
-       
-    rc = 0;
-
-out:
-    if (vcpumap != NULL)
-        free(vcpumap);
-    if (hvm_buf != NULL)
-        free(hvm_buf);
-    return rc;
-}
-
-/*
- * hvm domain requires IO pages allocated when XEN_DOMCTL_arch_setup
- */
-static int
-xc_ia64_hvm_domain_setup(xc_interface *xch, uint32_t dom)
-{
-    int rc;
-    xen_pfn_t pfn_list[] = {
-        IO_PAGE_START >> PAGE_SHIFT,
-        BUFFER_IO_PAGE_START >> PAGE_SHIFT,
-        BUFFER_PIO_PAGE_START >> PAGE_SHIFT,
-    };
-    unsigned long nr_pages = sizeof(pfn_list) / sizeof(pfn_list[0]);
-
-    rc = xc_domain_populate_physmap_exact(xch, dom, nr_pages,
-                                           0, 0, &pfn_list[0]);
-    if (rc != 0)
-        PERROR("Could not allocate IO page or buffer io page.");
-    return rc;
-}
-
-int
-xc_domain_restore(xc_interface *xch, int io_fd, uint32_t dom,
-                  unsigned int store_evtchn, unsigned long *store_mfn,
-                  unsigned int console_evtchn, unsigned long *console_mfn,
-                  unsigned int hvm, unsigned int pae, int superpages,
-                  int no_incr_generationid,
-                  unsigned long *vm_generationid_addr)
-{
-    DECLARE_DOMCTL;
-    int rc = 1;
-    unsigned long ver;
-
-    /* The new domain's shared-info frame number. */
-    unsigned long shared_info_frame;
-
-    struct xen_ia64_p2m_table p2m_table;
-    xc_ia64_p2m_init(&p2m_table);
-
-    /* For info only */
-    nr_pfns = 0;
-
-    if ( read_exact(io_fd, &p2m_size, sizeof(unsigned long)) )
-    {
-        ERROR("read: p2m_size");
-        goto out;
-    }
-    DPRINTF("xc_linux_restore start: p2m_size = %lx\n", p2m_size);
-
-    if (read_exact(io_fd, &ver, sizeof(unsigned long))) {
-        ERROR("Error when reading version");
-        goto out;
-    }
-    if (ver != XC_IA64_SR_FORMAT_VER_ONE &&
-        ver != XC_IA64_SR_FORMAT_VER_TWO &&
-        ver != XC_IA64_SR_FORMAT_VER_THREE) {
-        ERROR("version of save doesn't match");
-        goto out;
-    }
-
-    if (read_exact(io_fd, &domctl.u.arch_setup, sizeof(domctl.u.arch_setup))) {
-        ERROR("read: domain setup");
-        goto out;
-    }
-
-    if (hvm && xc_ia64_hvm_domain_setup(xch, dom) != 0)
-        goto out;
-    
-    /* Build firmware (will be overwritten).  */
-    domctl.domain = (domid_t)dom;
-    domctl.u.arch_setup.flags &= ~XEN_DOMAINSETUP_query;
-    domctl.u.arch_setup.bp = 0; /* indicate domain restore */
-    
-    domctl.cmd = XEN_DOMCTL_arch_setup;
-    if (xc_domctl(xch, &domctl))
-        goto out;
-
-    /* Get the domain's shared-info frame. */
-    domctl.cmd = XEN_DOMCTL_getdomaininfo;
-    domctl.domain = (domid_t)dom;
-    if (xc_domctl(xch, &domctl) < 0) {
-        ERROR("Could not get information on new domain");
-        goto out;
-    }
-    shared_info_frame = domctl.u.getdomaininfo.shared_info_frame;
-
-    if (ver == XC_IA64_SR_FORMAT_VER_THREE ||
-        ver == XC_IA64_SR_FORMAT_VER_TWO) {
-        unsigned int memmap_info_num_pages;
-        unsigned long memmap_size;
-        xen_ia64_memmap_info_t *memmap_info;
-
-        if (read_exact(io_fd, &memmap_info_num_pages,
-                        sizeof(memmap_info_num_pages))) {
-            ERROR("read: memmap_info_num_pages");
-            goto out;
-        }
-        memmap_size = memmap_info_num_pages * PAGE_SIZE;
-        memmap_info = malloc(memmap_size);
-        if (memmap_info == NULL) {
-            ERROR("Could not allocate memory for memmap_info");
-            goto out;
-        }
-        if (read_exact(io_fd, memmap_info, memmap_size)) {
-            ERROR("read: memmap_info");
-            goto out;
-        }
-        if (xc_ia64_p2m_map(&p2m_table, xch,
-                            dom, memmap_info, IA64_DOM0VP_EFP_ALLOC_PTE)) {
-            ERROR("p2m mapping");
-            goto out;
-        }
-        free(memmap_info);
-    } else if (ver == XC_IA64_SR_FORMAT_VER_ONE) {
-        xen_ia64_memmap_info_t *memmap_info;
-        efi_memory_desc_t *memdesc;
-        uint64_t buffer[(sizeof(*memmap_info) + sizeof(*memdesc) +
-                         sizeof(uint64_t) - 1) / sizeof(uint64_t)];
-
-        memset(buffer, 0, sizeof(buffer));
-        memmap_info = (xen_ia64_memmap_info_t *)buffer;
-        memdesc = (efi_memory_desc_t*)&memmap_info->memdesc[0];
-        memmap_info->efi_memmap_size = sizeof(*memdesc);
-        memmap_info->efi_memdesc_size = sizeof(*memdesc);
-        memmap_info->efi_memdesc_version = EFI_MEMORY_DESCRIPTOR_VERSION;
-
-        memdesc->type = EFI_MEMORY_DESCRIPTOR_VERSION;
-        memdesc->phys_addr = 0;
-        memdesc->virt_addr = 0;
-        memdesc->num_pages = nr_pfns << (PAGE_SHIFT - EFI_PAGE_SHIFT);
-        memdesc->attribute = EFI_MEMORY_WB;
-
-        if (xc_ia64_p2m_map(&p2m_table, xch,
-                            dom, memmap_info, IA64_DOM0VP_EFP_ALLOC_PTE)) {
-            ERROR("p2m mapping");
-            goto out;
-        }
-    } else {
-        ERROR("unknown version");
-        goto out;
-    }
-
-    DPRINTF("Reloading memory pages:   0%%\n");
-
-    while (1) {
-        unsigned long gmfn;
-        if (read_exact(io_fd, &gmfn, sizeof(unsigned long))) {
-            ERROR("Error when reading batch size");
-            goto out;
-        }
-        if (gmfn == INVALID_MFN)
-            break;
-
-        if (populate_page_if_necessary(xch, dom, gmfn, &p2m_table) < 0) {
-            ERROR("can not populate page 0x%lx", gmfn);
-            goto out;
-        }
-        if (read_page(xch, io_fd, dom, gmfn) < 0)
-            goto out;
-    }
-
-    DPRINTF("Received all pages\n");
-
-    if (xc_ia64_recv_unallocated_list(xch, io_fd, dom, &p2m_table))
-        goto out;
-
-    if (!hvm)
-        rc = xc_ia64_pv_recv_context(ver, 
-                                     xch, io_fd, dom, shared_info_frame,
-                                     &p2m_table, store_evtchn, store_mfn,
-                                     console_evtchn, console_mfn);
-    else
-        rc = xc_ia64_hvm_recv_context(xch, io_fd, dom, shared_info_frame,
-                                      &p2m_table, store_evtchn, store_mfn,
-                                      console_evtchn, console_mfn);
-    if (rc)
-        goto out;
-
-    /*
-     * Safety checking of saved context:
-     *  1. user_regs is fine, as Xen checks that on context switch.
-     *  2. fpu_ctxt is fine, as it can't hurt Xen.
-     *  3. trap_ctxt needs the code selectors checked.
-     *  4. ldt base must be page-aligned, no more than 8192 ents, ...
-     *  5. gdt already done, and further checking is done by Xen.
-     *  6. check that kernel_ss is safe.
-     *  7. pt_base is already done.
-     *  8. debugregs are checked by Xen.
-     *  9. callback code selectors need checking.
-     */
-    DPRINTF("Domain ready to be built.\n");
-
-    rc = 0;
-
- out:
-    xc_ia64_p2m_unmap(&p2m_table);
-
-    if ((rc != 0) && (dom != 0))
-        xc_domain_destroy(xch, dom);
-
-    DPRINTF("Restore exit with rc=%d\n", rc);
-
-    return rc;
-}
-
-/*
- * Local variables:
- * mode: C
- * c-set-style: "BSD"
- * c-basic-offset: 4
- * tab-width: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/tools/libxc/ia64/xc_ia64_linux_save.c b/tools/libxc/ia64/xc_ia64_linux_save.c
deleted file mode 100644 (file)
index 3440da3..0000000
+++ /dev/null
@@ -1,801 +0,0 @@
-/******************************************************************************
- * xc_ia64_linux_save.c
- *
- * Save the state of a running Linux session.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- *
- * Copyright (c) 2003, K A Fraser.
- *  Rewritten for ia64 by Tristan Gingold <tristan.gingold@bull.net>
- *
- * Copyright (c) 2007 Isaku Yamahata <yamahata@valinux.co.jp>
- *   Use foreign p2m exposure.
- *   VTi domain support.
- */
-
-#include <inttypes.h>
-#include <time.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <sys/time.h>
-
-#include "xg_private.h"
-#include "xc_bitops.h"
-#include "xc_ia64.h"
-#include "xc_ia64_save_restore.h"
-#include "xc_efi.h"
-#include "xen/hvm/params.h"
-
-/*
-** Default values for important tuning parameters. Can override by passing
-** non-zero replacement values to xc_linux_save().
-**
-** XXX SMH: should consider if want to be able to override MAX_MBIT_RATE too.
-**
-*/
-#define DEF_MAX_ITERS    (4 - 1)        /* limit us to 4 times round loop  */
-#define DEF_MAX_FACTOR   3              /* never send more than 3x nr_pfns */
-
-/*
-** During (live) save/migrate, we maintain a number of bitmaps to track
-** which pages we have to send, and to skip.
-*/
-
-static int
-suspend_and_state(int (*suspend)(void*), void* data,
-                  xc_interface *xch, int io_fd,
-                  int dom, xc_dominfo_t *info)
-{
-    if ( !(*suspend)(data) ) {
-        ERROR("Suspend request failed");
-        return -1;
-    }
-
-    if ( (xc_domain_getinfo(xch, dom, 1, info) != 1) ||
-         !info->shutdown || (info->shutdown_reason != SHUTDOWN_suspend) ) {
-        ERROR("Could not get domain info");
-        return -1;
-    }
-
-    return 0;
-}
-
-static inline int
-md_is_not_ram(const efi_memory_desc_t *md)
-{
-    return ((md->type != EFI_CONVENTIONAL_MEMORY) ||
-            (md->attribute != EFI_MEMORY_WB) ||
-            (md->num_pages == 0));
-}
-
-/*
- * Send through a list of all the PFNs that were not in map at the close.
- * We send pages which was allocated. However balloon driver may 
- * decreased after sending page. So we have to check the freed
- * page after pausing the domain.
- */
-static int
-xc_ia64_send_unallocated_list(xc_interface *xch, int io_fd, 
-                              struct xen_ia64_p2m_table *p2m_table,
-                              xen_ia64_memmap_info_t *memmap_info, 
-                              void *memmap_desc_start, void *memmap_desc_end)
-{
-    void *p;
-    efi_memory_desc_t *md;
-
-    unsigned long N;
-    unsigned long pfntab[1024];
-    unsigned int j;
-
-    j = 0;
-    for (p = memmap_desc_start;
-         p < memmap_desc_end;
-         p += memmap_info->efi_memdesc_size) {
-        md = p;
-
-        if (md_is_not_ram(md))
-            continue;
-
-        for (N = md->phys_addr >> PAGE_SHIFT;
-             N < (md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT)) >>
-                 PAGE_SHIFT;
-             N++) {
-            if (!xc_ia64_p2m_allocated(p2m_table, N))
-                j++;
-        }
-    }
-    if (write_exact(io_fd, &j, sizeof(unsigned int))) {
-        ERROR("Error when writing to state file (6a)");
-        return -1;
-    }
-        
-    j = 0;
-    for (p = memmap_desc_start;
-         p < memmap_desc_end;
-         p += memmap_info->efi_memdesc_size) {
-        md = p;
-
-        if (md_is_not_ram(md))
-            continue;
-
-        for (N = md->phys_addr >> PAGE_SHIFT;
-             N < (md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT)) >>
-                 PAGE_SHIFT;
-             N++) {
-            if (!xc_ia64_p2m_allocated(p2m_table, N))
-                pfntab[j++] = N;
-            if (j == sizeof(pfntab)/sizeof(pfntab[0])) {
-                if (write_exact(io_fd, &pfntab, sizeof(pfntab[0]) * j)) {
-                    ERROR("Error when writing to state file (6b)");
-                    return -1;
-                }
-                j = 0;
-            }
-        }
-    }
-    if (j > 0) {
-        if (write_exact(io_fd, &pfntab, sizeof(pfntab[0]) * j)) {
-            ERROR("Error when writing to state file (6c)");
-            return -1;
-        }
-    }
-
-    return 0;
-}
-
-static int
-xc_ia64_send_vcpu_context(xc_interface *xch, int io_fd, uint32_t dom,
-                          uint32_t vcpu, vcpu_guest_context_any_t *ctxt_any)
-{
-    vcpu_guest_context_t *ctxt = &ctxt_any->c;
-    if (xc_vcpu_getcontext(xch, dom, vcpu, ctxt_any)) {
-        ERROR("Could not get vcpu context");
-        return -1;
-    }
-
-    if (write_exact(io_fd, ctxt, sizeof(*ctxt))) {
-        ERROR("Error when writing to state file (1)");
-        return -1;
-    }
-
-    fprintf(stderr, "ip=%016lx, b0=%016lx\n", ctxt->regs.ip, ctxt->regs.b[0]);
-    return 0;
-}
-
-static int
-xc_ia64_send_shared_info(xc_interface *xch, int io_fd, shared_info_t *live_shinfo)
-{
-    if (write_exact(io_fd, live_shinfo, PAGE_SIZE)) {
-        ERROR("Error when writing to state file (1)");
-        return -1;
-    }
-    return 0;
-}
-
-static int
-xc_ia64_send_vcpumap(xc_interface *xch, int io_fd, uint32_t dom,
-                     const xc_dominfo_t *info, uint64_t max_virt_cpus,
-                     uint64_t **vcpumapp)
-{
-    int rc = -1;
-    unsigned int i;
-    unsigned long vcpumap_size;
-    uint64_t *vcpumap = NULL;
-
-    vcpumap_size = bitmap_size(max_virt_cpus);
-    vcpumap = bitmap_alloc(max_virt_cpus);
-    if (!vcpumap) {
-        ERROR("memory alloc for vcpumap");
-        goto out;
-    }
-
-    for (i = 0; i <= info->max_vcpu_id; i++) {
-        xc_vcpuinfo_t vinfo;
-        if ((xc_vcpu_getinfo(xch, dom, i, &vinfo) == 0) && vinfo.online)
-            set_bit(i, vcpumap);
-    }
-
-    if (write_exact(io_fd, &max_virt_cpus, sizeof(max_virt_cpus))) {
-        ERROR("write max_virt_cpus");
-        goto out;
-    }
-
-    if (write_exact(io_fd, vcpumap, vcpumap_size)) {
-        ERROR("write vcpumap");
-        goto out;
-    }
-
-    rc = 0;
-
- out:
-    if (rc != 0 && vcpumap != NULL) {
-        free(vcpumap);
-        vcpumap = NULL;
-    }
-    *vcpumapp = vcpumap;
-    return rc;
-}
-
-
-static int
-xc_ia64_pv_send_context(xc_interface *xch, int io_fd, uint32_t dom,
-                        const xc_dominfo_t *info, shared_info_t *live_shinfo)
-{
-    int rc = -1;
-    unsigned int i;
-
-    /* vcpu map */
-    uint64_t *vcpumap = NULL;
-    if (xc_ia64_send_vcpumap(xch, io_fd, dom, info, XEN_LEGACY_MAX_VCPUS,
-                             &vcpumap))
-        goto out;
-
-    /* vcpu context */
-    for (i = 0; i <= info->max_vcpu_id; i++) {
-        /* A copy of the CPU context of the guest. */
-        vcpu_guest_context_any_t ctxt_any;
-        vcpu_guest_context_t *ctxt = &ctxt_any.c;
-
-        char *mem;
-
-        if (!test_bit(i, vcpumap))
-            continue;
-
-        if (xc_ia64_send_vcpu_context(xch, io_fd, dom, i, &ctxt_any))
-            goto out;
-
-        mem = xc_map_foreign_range(xch, dom, PAGE_SIZE,
-                                   PROT_READ|PROT_WRITE, ctxt->privregs_pfn);
-        if (mem == NULL) {
-            ERROR("cannot map privreg page");
-            goto out;
-        }
-        if (write_exact(io_fd, mem, PAGE_SIZE)) {
-            ERROR("Error when writing privreg to state file (5)");
-            munmap(mem, PAGE_SIZE);
-            goto out;
-        }
-        munmap(mem, PAGE_SIZE);
-    }    
-
-    rc = xc_ia64_send_shared_info(xch, io_fd, live_shinfo);
-
- out:
-    if (vcpumap != NULL)
-        free(vcpumap);
-    return rc;
-}
-
-static int
-xc_ia64_hvm_send_context(xc_interface *xch, int io_fd, uint32_t dom,
-                         const xc_dominfo_t *info, shared_info_t *live_shinfo)
-{
-    int rc = -1;
-    unsigned int i;
-
-    /* vcpu map */
-    uint64_t *vcpumap = NULL;
-
-    /* HVM: magic frames for ioreqs and xenstore comms */
-    const int hvm_params[] = {
-        HVM_PARAM_STORE_PFN,
-        HVM_PARAM_IOREQ_PFN,
-        HVM_PARAM_BUFIOREQ_PFN,
-        HVM_PARAM_BUFPIOREQ_PFN,
-    };
-    const int NR_PARAMS = sizeof(hvm_params) / sizeof(hvm_params[0]);
-    /* ioreq_pfn, bufioreq_pfn, store_pfn */
-    uint64_t magic_pfns[NR_PARAMS];
-
-    /* HVM: a buffer for holding HVM contxt */
-    uint64_t rec_size;
-    uint64_t hvm_buf_size = 0;
-    uint8_t *hvm_buf = NULL;
-
-    if (xc_ia64_send_shared_info(xch, io_fd, live_shinfo))
-        return -1;
-
-    /* vcpu map */
-    if (xc_ia64_send_vcpumap(xch, io_fd, dom, info, XEN_LEGACY_MAX_VCPUS,
-                             &vcpumap))
-        goto out;
-
-    /* vcpu context */
-    for (i = 0; i <= info->max_vcpu_id; i++) {
-        /* A copy of the CPU context of the guest. */
-        vcpu_guest_context_any_t ctxt_any;
-
-        if (!test_bit(i, vcpumap))
-            continue;
-
-        if (xc_ia64_send_vcpu_context(xch, io_fd, dom, i, &ctxt_any))
-            goto out;
-
-        /* system context of vcpu is sent as hvm context. */
-    }    
-
-    /* Save magic-page locations. */
-    memset(magic_pfns, 0, sizeof(magic_pfns));
-    for (i = 0; i < NR_PARAMS; i++) {
-        if (xc_get_hvm_param(xch, dom, hvm_params[i], &magic_pfns[i])) {
-            PERROR("Error when xc_get_hvm_param");
-            goto out;
-        }
-    }
-
-    if (write_exact(io_fd, magic_pfns, sizeof(magic_pfns))) {
-        ERROR("Error when writing to state file (7)");
-        goto out;
-    }
-
-    /* Need another buffer for HVM context */
-    hvm_buf_size = xc_domain_hvm_getcontext(xch, dom, 0, 0);
-    if (hvm_buf_size == -1) {
-        ERROR("Couldn't get HVM context size from Xen");
-        goto out;
-    }
-
-    hvm_buf = malloc(hvm_buf_size);
-    if (!hvm_buf) {
-        ERROR("Couldn't allocate memory");
-        goto out;
-    }
-
-    /* Get HVM context from Xen and save it too */
-    rec_size = xc_domain_hvm_getcontext(xch, dom, hvm_buf, hvm_buf_size);
-    if (rec_size == -1) {
-        ERROR("HVM:Could not get hvm buffer");
-        goto out;
-    }
-        
-    if (write_exact(io_fd, &rec_size, sizeof(rec_size))) {
-        ERROR("error write hvm buffer size");
-        goto out;
-    }
-        
-    if (write_exact(io_fd, hvm_buf, rec_size)) {
-        ERROR("write HVM info failed!\n");
-        goto out;
-    }
-
-    rc = 0;
-out:
-    if (hvm_buf != NULL)
-        free(hvm_buf);
-    if (vcpumap != NULL)
-        free(vcpumap);
-    return rc;
-}
-
-int
-xc_domain_save(xc_interface *xch, int io_fd, uint32_t dom, uint32_t max_iters,
-               uint32_t max_factor, uint32_t flags,
-               struct save_callbacks* callbacks, int hvm,
-               unsigned long vm_generationid_addr)
-{
-    DECLARE_DOMCTL;
-    xc_dominfo_t info;
-
-    int rc = 1;
-
-    int debug = (flags & XCFLAGS_DEBUG);
-    int live  = (flags & XCFLAGS_LIVE);
-
-    /* The new domain's shared-info frame number. */
-    unsigned long shared_info_frame;
-
-    /* Live mapping of shared info structure */
-    shared_info_t *live_shinfo = NULL;
-
-    /* Iteration number.  */
-    int iter;
-
-    /* Number of pages sent in the last iteration (live only).  */
-    unsigned int sent_last_iter;
-
-    /* Number of pages sent (live only).  */
-    unsigned int total_sent = 0;
-
-    /* total number of pages used by the current guest */
-    unsigned long p2m_size;
-
-    /* Size of the shadow bitmap (live only).  */
-    unsigned int bitmap_size = 0;
-
-    /* True if last iteration.  */
-    int last_iter = 0;
-
-    /* Bitmap of pages to be sent.  */
-    DECLARE_HYPERCALL_BUFFER(unsigned long, to_send);
-    /* Bitmap of pages not to be sent (because dirtied).  */
-    DECLARE_HYPERCALL_BUFFER(unsigned long, to_skip);
-
-    char *mem;
-
-    /* for foreign p2m exposure */
-    unsigned long memmap_info_num_pages;
-    /* Unsigned int was used before. To keep file format compatibility. */
-    unsigned int memmap_info_num_pages_to_send;
-    unsigned long memmap_size = 0;
-    xen_ia64_memmap_info_t *memmap_info = NULL;
-    void *memmap_desc_start;
-    void *memmap_desc_end;
-    void *p;
-    efi_memory_desc_t *md;
-    struct xen_ia64_p2m_table p2m_table;
-
-    if ( hvm && !callbacks->switch_qemu_logdirty )
-    {
-        ERROR("No switch_qemu_logdirty callback given.");
-        errno = EINVAL;
-        return 1;
-    }
-
-    xc_ia64_p2m_init(&p2m_table);
-
-    if (debug)
-        fprintf(stderr, "xc_linux_save (ia64): started dom=%d\n", dom);
-
-    /* If no explicit control parameters given, use defaults */
-    if (!max_iters)
-        max_iters = DEF_MAX_ITERS;
-    if (!max_factor)
-        max_factor = DEF_MAX_FACTOR;
-
-    //initialize_mbit_rate();
-
-    if (xc_domain_getinfo(xch, dom, 1, &info) != 1) {
-        ERROR("Could not get domain info");
-        return 1;
-    }
-
-    shared_info_frame = info.shared_info_frame;
-
-#if 0
-    /* cheesy sanity check */
-    if ((info.max_memkb >> (PAGE_SHIFT - 10)) > max_mfn) {
-        ERROR("Invalid state record -- pfn count out of range: %lu",
-            (info.max_memkb >> (PAGE_SHIFT - 10)));
-        goto out;
-     }
-#endif
-
-    /* Map the shared info frame */
-    live_shinfo = xc_map_foreign_range(xch, dom, PAGE_SIZE,
-                                       PROT_READ, shared_info_frame);
-    if (!live_shinfo) {
-        ERROR("Couldn't map live_shinfo");
-        goto out;
-    }
-
-    p2m_size = xc_domain_maximum_gpfn(xch, dom) + 1;
-
-    /* This is expected by xm restore.  */
-    if (write_exact(io_fd, &p2m_size, sizeof(unsigned long))) {
-        ERROR("write: p2m_size");
-        goto out;
-    }
-
-    /* xc_linux_restore starts to read here.  */
-    /* Write a version number.  This can avoid searching for a stupid bug
-       if the format change.
-       The version is hard-coded, don't forget to change the restore code
-       too!  */
-    {
-        unsigned long version = XC_IA64_SR_FORMAT_VER_CURRENT;
-
-        if (write_exact(io_fd, &version, sizeof(unsigned long))) {
-            ERROR("write: version");
-            goto out;
-        }
-    }
-
-    domctl.cmd = XEN_DOMCTL_arch_setup;
-    domctl.domain = (domid_t)dom;
-    domctl.u.arch_setup.flags = XEN_DOMAINSETUP_query;
-    if (xc_domctl(xch, &domctl) < 0) {
-        ERROR("Could not get domain setup");
-        goto out;
-    }
-    if (write_exact(io_fd, &domctl.u.arch_setup,
-                     sizeof(domctl.u.arch_setup))) {
-        ERROR("write: domain setup");
-        goto out;
-    }
-
-    /* Domain is still running at this point */
-    if (live) {
-
-        if (xc_shadow_control(xch, dom,
-                              XEN_DOMCTL_SHADOW_OP_ENABLE_LOGDIRTY,
-                              NULL, 0, NULL, 0, NULL ) < 0) {
-            ERROR("Couldn't enable shadow mode");
-            goto out;
-        }
-
-        last_iter = 0;
-
-        bitmap_size = ((p2m_size + BITS_PER_LONG-1) & ~(BITS_PER_LONG-1)) / 8;
-        to_send = xc_hypercall_buffer_alloc(xch, to_send, bitmap_size);
-        to_skip = xc_hypercall_buffer_alloc(xch, to_skip, bitmap_size);
-
-        if (!to_send || !to_skip) {
-            ERROR("Couldn't allocate bitmap array");
-            goto out;
-        }
-
-        /* Initially all the pages must be sent.  */
-        memset(to_send, 0xff, bitmap_size);
-
-        /* Enable qemu-dm logging dirty pages to xen */
-        if (hvm && callbacks->switch_qemu_logdirty(dom, 1, callbacks->data)) {
-            ERROR("Unable to enable qemu log-dirty mode");
-            goto out;
-        }
-    } else {
-
-        /* This is a non-live suspend. Issue the call back to get the
-           domain suspended */
-
-        last_iter = 1;
-
-        if (suspend_and_state(callbacks->suspend, callbacks->data, xch,
-                              io_fd, dom, &info)) {
-            ERROR("Domain appears not to have suspended");
-            goto out;
-        }
-
-    }
-
-    /* copy before use in case someone updating them */
-    if (xc_ia64_copy_memmap(xch, info.domid, live_shinfo,
-                            &memmap_info, &memmap_info_num_pages) != 0) {
-        PERROR("Could not copy memmap");
-        goto out;
-    }
-    memmap_size = memmap_info_num_pages << PAGE_SHIFT;
-
-    if (xc_ia64_p2m_map(&p2m_table, xch, dom, memmap_info, 0) < 0) {
-        PERROR("xc_ia64_p2m_map");
-        goto out;
-    }
-    memmap_info_num_pages_to_send = memmap_info_num_pages;
-    if (write_exact(io_fd, &memmap_info_num_pages_to_send,
-                    sizeof(memmap_info_num_pages_to_send))) {
-        PERROR("write: arch.memmap_info_num_pages");
-        goto out;
-    }
-    if (write_exact(io_fd, memmap_info, memmap_size)) {
-        PERROR("write: memmap_info");
-        goto out;
-    }
-
-    sent_last_iter = p2m_size;
-
- copypages:
-    for (iter = 1; ; iter++) {
-        unsigned int sent_this_iter, skip_this_iter;
-        unsigned long N;
-
-        sent_this_iter = 0;
-        skip_this_iter = 0;
-
-        /* Dirtied pages won't be saved.
-           slightly wasteful to peek the whole array evey time,
-           but this is fast enough for the moment. */
-        if (!last_iter) {
-            if (xc_shadow_control(xch, dom,
-                                  XEN_DOMCTL_SHADOW_OP_PEEK,
-                                  HYPERCALL_BUFFER(to_skip), p2m_size,
-                                  NULL, 0, NULL) != p2m_size) {
-                ERROR("Error peeking shadow bitmap");
-                goto out;
-            }
-        }
-
-        /* Start writing out the saved-domain record. */
-        memmap_desc_start = &memmap_info->memdesc;
-        memmap_desc_end = memmap_desc_start + memmap_info->efi_memmap_size;
-        for (p = memmap_desc_start;
-             p < memmap_desc_end;
-             p += memmap_info->efi_memdesc_size) {
-            md = p;
-            if (md_is_not_ram(md))
-                continue;
-            
-            for (N = md->phys_addr >> PAGE_SHIFT;
-                 N < (md->phys_addr + (md->num_pages << EFI_PAGE_SHIFT)) >>
-                     PAGE_SHIFT;
-                 N++) {
-
-                if (!xc_ia64_p2m_allocated(&p2m_table, N))
-                    continue;
-
-                if (!last_iter) {
-                    if (test_bit(N, to_skip) && test_bit(N, to_send))
-                        skip_this_iter++;
-                    if (test_bit(N, to_skip) || !test_bit(N, to_send))
-                        continue;
-                } else if (live) {
-                    if (!test_bit(N, to_send))
-                        continue;
-                }
-
-                if (debug)
-                    fprintf(stderr, "xc_linux_save: page %lx (%lu/%lu)\n",
-                            xc_ia64_p2m_mfn(&p2m_table, N),
-                            N, p2m_size);
-
-                mem = xc_map_foreign_range(xch, dom, PAGE_SIZE,
-                                           PROT_READ|PROT_WRITE, N);
-                if (mem == NULL) {
-                    /* The page may have move.
-                       It will be remarked dirty.
-                       FIXME: to be tracked.  */
-                    fprintf(stderr, "cannot map mfn page %lx gpfn %lx: %s\n",
-                            xc_ia64_p2m_mfn(&p2m_table, N),
-                            N, xc_strerror(xch, errno));
-                    goto out;
-                }
-
-                if (write_exact(io_fd, &N, sizeof(N))) {
-                    ERROR("write: p2m_size");
-                    munmap(mem, PAGE_SIZE);
-                    goto out;
-                }
-
-                if (write(io_fd, mem, PAGE_SIZE) != PAGE_SIZE) {
-                    ERROR("Error when writing to state file (5)");
-                    munmap(mem, PAGE_SIZE);
-                    goto out;
-                }
-                munmap(mem, PAGE_SIZE);
-                sent_this_iter++;
-                total_sent++;
-            }
-        }
-
-        if (last_iter)
-            break;
-
-        DPRINTF(" %d: sent %d, skipped %d\n",
-                iter, sent_this_iter, skip_this_iter );
-
-        if (live) {
-            if ( /* ((sent_this_iter > sent_last_iter) && RATE_IS_MAX()) || */
-                (iter >= max_iters) || (sent_this_iter+skip_this_iter < 50) ||
-                (total_sent > p2m_size*max_factor)) {
-                DPRINTF("Start last iteration\n");
-                last_iter = 1;
-
-                if (suspend_and_state(callbacks->suspend, callbacks->data,
-                                      xch, io_fd, dom, &info)) {
-                    ERROR("Domain appears not to have suspended");
-                    goto out;
-                }
-            }
-
-            /* Pages to be sent are pages which were dirty.  */
-            if (xc_shadow_control(xch, dom,
-                                  XEN_DOMCTL_SHADOW_OP_CLEAN,
-                                  HYPERCALL_BUFFER(to_send), p2m_size,
-                                  NULL, 0, NULL ) != p2m_size) {
-                ERROR("Error flushing shadow PT");
-                goto out;
-            }
-
-            sent_last_iter = sent_this_iter;
-
-            //print_stats(xch, dom, sent_this_iter, &stats, 1);
-        }
-    }
-
-    fprintf(stderr, "All memory is saved\n");
-
-    /* terminate */
-    {
-        unsigned long pfn = INVALID_MFN;
-        if (write_exact(io_fd, &pfn, sizeof(pfn))) {
-            ERROR("Error when writing to state file (6)");
-            goto out;
-        }
-    }
-
-    if (xc_ia64_send_unallocated_list(xch, io_fd, &p2m_table,
-                                      memmap_info,
-                                      memmap_desc_start, memmap_desc_end))
-        goto out;
-
-    if (!hvm)
-        rc = xc_ia64_pv_send_context(xch, io_fd,
-                                     dom, &info, live_shinfo);
-    else
-        rc = xc_ia64_hvm_send_context(xch, io_fd,
-                                      dom, &info, live_shinfo);
-    if (rc)
-        goto out;
-
-    /* Success! */
-    rc = 0;
-
- out:
-   if ( !rc && callbacks->postcopy )
-       callbacks->postcopy(callbacks->data);
-
-   /* Flush last write and discard cache for file. */
-   discard_file_cache(xch, io_fd, 1 /* flush */);
-
-   /* checkpoint_cb can spend arbitrarily long in between rounds */
-   if (!rc && callbacks->checkpoint &&
-       callbacks->checkpoint(callbacks->data) > 0)
-   {
-       /* reset stats timer */
-       //print_stats(xch, dom, 0, &stats, 0);
-
-       rc = 1;
-       /* last_iter = 1; */
-       if ( suspend_and_state(callbacks->suspend, callbacks->data, xch,
-                              io_fd, dom, &info) )
-       {
-           ERROR("Domain appears not to have suspended");
-           goto out;
-       }
-       DPRINTF("SUSPEND shinfo %08lx\n", info.shared_info_frame);
-       //print_stats(xch, dom, 0, &stats, 1);
-
-       if ( xc_shadow_control(xch, dom,
-                              XEN_DOMCTL_SHADOW_OP_CLEAN, HYPERCALL_BUFFER(to_send),
-                              p2m_size, NULL, 0, NULL) != p2m_size )
-       {
-           ERROR("Error flushing shadow PT");
-       }
-
-       goto copypages;
-   }
-
-    if (live) {
-        if (xc_shadow_control(xch, dom,
-                              XEN_DOMCTL_SHADOW_OP_OFF,
-                              NULL, 0, NULL, 0, NULL ) < 0) {
-            DPRINTF("Warning - couldn't disable shadow mode");
-        }
-        if ( hvm &&
-             callbacks->switch_qemu_logdirty(dom, 0, callbacks->data) ) {
-            DPRINTF("Warning - couldn't disable qemu log-dirty mode");
-        }
-    }
-
-    xc_hypercall_buffer_free(xch, to_send);
-    xc_hypercall_buffer_free(xch, to_skip);
-    if (live_shinfo)
-        munmap(live_shinfo, PAGE_SIZE);
-    if (memmap_info)
-        free(memmap_info);
-    xc_ia64_p2m_unmap(&p2m_table);
-
-    fprintf(stderr,"Save exit rc=%d\n",rc);
-
-    return !!rc;
-}
-
-/*
- * Local variables:
- * mode: C
- * c-set-style: "BSD"
- * c-basic-offset: 4
- * tab-width: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/tools/libxc/ia64/xc_ia64_save_restore.h b/tools/libxc/ia64/xc_ia64_save_restore.h
deleted file mode 100644 (file)
index d392fc8..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/******************************************************************************
- * xc_ia64_save_restore.h
- *
- * Copyright (c) 2006 Isaku Yamahata <yamahata at valinux co jp>
- *                    VA Linux Systems Japan K.K.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- *
- */
-
-#ifndef XC_IA64_SAVE_RESTORE_H
-#define XC_IA64_SR_H
-
-        /* introduced changeset 10692:306d7857928c of xen-ia64-unstable.ht */
-#define XC_IA64_SR_FORMAT_VER_ONE       1UL
-        /* using foreign p2m exposure version */
-#define XC_IA64_SR_FORMAT_VER_TWO       2UL
-        /* only pv change: send vcpumap and all vcpu context */
-#define XC_IA64_SR_FORMAT_VER_THREE     3UL
-#define XC_IA64_SR_FORMAT_VER_MAX       3UL
-
-#define XC_IA64_SR_FORMAT_VER_CURRENT   XC_IA64_SR_FORMAT_VER_THREE
-
-
-#endif /* XC_IA64_SAVE_RESTORE_H */
-
-/*
- * Local variables:
- * mode: C
- * c-set-style: "BSD"
- * c-basic-offset: 4
- * tab-width: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/tools/libxc/ia64/xc_ia64_stubs.c b/tools/libxc/ia64/xc_ia64_stubs.c
deleted file mode 100644 (file)
index 9691acb..0000000
+++ /dev/null
@@ -1,282 +0,0 @@
-/*
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- */
-
-#include "xg_private.h"
-#include "xc_efi.h"
-#include "xc_ia64.h"
-
-/* this is a very ugly way of getting FPSR_DEFAULT.  struct ia64_fpreg is
- * mysteriously declared in two places: /usr/include/asm/fpu.h and
- * /usr/include/bits/sigcontext.h.  The former also defines FPSR_DEFAULT,
- * the latter doesn't but is included (indirectly) by xg_private.h */
-#define __ASSEMBLY__
-#include <asm/fpu.h>
-#undef __IA64_UL
-#define __IA64_UL(x)           ((unsigned long)(x))
-#undef __ASSEMBLY__
-
-unsigned long
-xc_ia64_fpsr_default(void)
-{
-    return FPSR_DEFAULT;
-}
-
-
-/* It is possible to get memmap_info and memmap by
-   foreign domain page mapping. But it's racy. Use hypercall to avoid race. */
-static int
-xc_ia64_get_memmap(xc_interface *xch,
-                   uint32_t domid, char *buf, unsigned long bufsize)
-{
-    privcmd_hypercall_t hypercall;
-    DECLARE_HYPERCALL_BOUNCE(buf, bufsize, XC_HYPERCALL_BUFFER_BOUNCE_OUT);
-    int ret;
-
-    if ( xc_hypercall_bounce_pre(xch, pfn_buf) )
-    {
-        PERROR("xc_get_pfn_list: pfn_buf bounce failed");
-        return -1;
-    }
-
-    hypercall.op = __HYPERVISOR_ia64_dom0vp_op;
-    hypercall.arg[0] = IA64_DOM0VP_get_memmap;
-    hypercall.arg[1] = domid;
-    hypercall.arg[2] = HYPERCALL_BUFFER_AS_ARG(buf);
-    hypercall.arg[3] = bufsize;
-    hypercall.arg[4] = 0;
-
-    ret = do_xen_hypercall(xch, &hypercall);
-    xc_hypercall_bounce_post(xc, buf);
-    return ret;
-}
-
-int
-xc_ia64_copy_memmap(xc_interface *xch, uint32_t domid, shared_info_t *live_shinfo,
-                    xen_ia64_memmap_info_t **memmap_info_p,
-                    unsigned long *memmap_info_num_pages_p)
-{
-    unsigned long gpfn_max_prev;
-    unsigned long gpfn_max_post;
-
-    unsigned long num_pages;
-    unsigned long num_pages_post;
-    unsigned long memmap_size;
-    xen_ia64_memmap_info_t *memmap_info;
-
-    int ret;
-
-    gpfn_max_prev = xc_domain_maximum_gpfn(xch, domid);
-    if (gpfn_max_prev < 0)
-        return -1;
-
- again:
-    num_pages = live_shinfo->arch.memmap_info_num_pages;
-    if (num_pages == 0) {
-        ERROR("num_pages 0x%x", num_pages);
-        return -1;
-    }
-
-    memmap_size = num_pages << PAGE_SHIFT;
-    memmap_info = malloc(memmap_size);
-    if (memmap_info == NULL)
-        return -1;
-    ret = xc_ia64_get_memmap(xch,
-                             domid, (char*)memmap_info, memmap_size);
-    if (ret != 0) {
-        free(memmap_info);
-        return -1;
-    }
-    xen_rmb();
-    num_pages_post = live_shinfo->arch.memmap_info_num_pages;
-    if (num_pages != num_pages_post) {
-        free(memmap_info);
-        num_pages = num_pages_post;
-        goto again;
-    }
-
-    gpfn_max_post = xc_domain_maximum_gpfn(xch, domid);
-    if (gpfn_max_prev < 0) {
-        free(memmap_info);
-        return -1;
-    }
-    if (gpfn_max_post > gpfn_max_prev) {
-        free(memmap_info);
-        gpfn_max_prev = gpfn_max_post;
-        goto again;
-    }
-
-    /* reject unknown memmap */
-    if (memmap_info->efi_memdesc_size != sizeof(efi_memory_desc_t) ||
-        (memmap_info->efi_memmap_size / memmap_info->efi_memdesc_size) == 0 ||
-        memmap_info->efi_memmap_size >
-        (num_pages << PAGE_SHIFT) - sizeof(memmap_info) ||
-        memmap_info->efi_memdesc_version != EFI_MEMORY_DESCRIPTOR_VERSION) {
-        PERROR("unknown memmap header. defaulting to compat mode.");
-        free(memmap_info);
-        return -1;
-    }
-
-    *memmap_info_p = memmap_info;
-    if (memmap_info_num_pages_p != NULL)
-        *memmap_info_num_pages_p = num_pages;
-
-    return 0;
-}
-
-/*
- * XXX from xen/include/asm-ia64/linux-xen/asm/pgtable.h
- * Should PTRS_PER_PTE be exported by arch-ia64.h?
- */
-#define PTRS_PER_PTE    (1UL << (PAGE_SHIFT - 3))
-
-static void*
-xc_ia64_map_foreign_p2m(xc_interface *xch, uint32_t dom,
-                        struct xen_ia64_memmap_info *memmap_info,
-                        unsigned long flags, unsigned long *p2m_size_p)
-{
-    DECLARE_HYPERCALL_BOUNCE(memmap_info, sizeof(*memmap_info) + memmap_info->efi_memmap_size, XC_HYPERCALL_BOUNCE_BUFFER_IN);
-    unsigned long gpfn_max;
-    unsigned long p2m_size;
-    void *addr;
-    privcmd_hypercall_t hypercall;
-    int ret;
-    int saved_errno;
-
-    gpfn_max = xc_domain_maximum_gpfn(xch, dom);
-    if (gpfn_max < 0)
-        return NULL;
-    p2m_size =
-        (((gpfn_max + 1) + PTRS_PER_PTE - 1) / PTRS_PER_PTE) << PAGE_SHIFT;
-    addr = mmap(NULL, p2m_size, PROT_READ, MAP_SHARED, xch->fd, 0);
-    if (addr == MAP_FAILED)
-        return NULL;
-    if (xc_hypercall_bounce_pre(xc, memmap_info)) {
-        saved_errno = errno;
-        munmap(addr, p2m_size);
-        errno = saved_errno;
-        return NULL;
-    }
-
-    hypercall.op = __HYPERVISOR_ia64_dom0vp_op;
-    hypercall.arg[0] = IA64_DOM0VP_expose_foreign_p2m;
-    hypercall.arg[1] = (unsigned long)addr;
-    hypercall.arg[2] = dom;
-    hypercall.arg[3] = HYPERCALL_BUFFER_AS_ARG(memmap_info);
-    hypercall.arg[4] = flags;
-
-    ret = do_xen_hypercall(xch, &hypercall);
-    saved_errno = errno;
-    xc_hypercall_bounce_post(xch, memmap_info);
-    if (ret < 0) {
-        munmap(addr, p2m_size);
-        errno = saved_errno;
-        return NULL;
-    }
-
-    *p2m_size_p = p2m_size;
-    return addr;
-}
-
-void
-xc_ia64_p2m_init(struct xen_ia64_p2m_table *p2m_table)
-{
-    p2m_table->size = 0;
-    p2m_table->p2m = NULL;
-}
-
-int
-xc_ia64_p2m_map(struct xen_ia64_p2m_table *p2m_table, xc_interface *xch,
-                uint32_t domid, struct xen_ia64_memmap_info *memmap_info,
-                unsigned long flag)
-{
-    p2m_table->p2m = xc_ia64_map_foreign_p2m(xch, domid, memmap_info,
-                                             flag, &p2m_table->size);
-    if (p2m_table->p2m == NULL) {
-        PERROR("Could not map foreign p2m. falling back to old method");
-        return -1;
-    }
-    return 0;
-}
-
-void
-xc_ia64_p2m_unmap(struct xen_ia64_p2m_table *p2m_table)
-{
-    if (p2m_table->p2m == NULL)
-        return;
-    munmap(p2m_table->p2m, p2m_table->size);
-    //p2m_table->p2m = NULL;
-    //p2m_table->size = 0;
-}
-
-/*
- * XXX from xen/include/asm-ia64/linux-xen/asm/pgtable.h
- * Should those be exported by arch-ia64.h?
- */
-#define _PAGE_P_BIT             0
-#define _PAGE_P                 (1UL << _PAGE_P_BIT)      /* page present bit */
-#define _PAGE_PGC_ALLOCATED_BIT 59      /* _PGC_allocated */
-#define _PAGE_PGC_ALLOCATED     (1UL << _PAGE_PGC_ALLOCATED_BIT)
-#define _PAGE_IO_BIT            60
-#define _PAGE_IO                (1UL << _PAGE_IO_BIT)
-
-#define IA64_MAX_PHYS_BITS      50      /* max. number of physical address bits (architected) */
-#define _PAGE_PPN_MASK  (((1UL << IA64_MAX_PHYS_BITS) - 1) & ~0xfffUL)
-
-int
-xc_ia64_p2m_present(struct xen_ia64_p2m_table *p2m_table, unsigned long gpfn)
-{
-    if (sizeof(p2m_table->p2m[0]) * gpfn < p2m_table->size) {
-        unsigned long pte = p2m_table->p2m[gpfn];
-        return !!((pte & _PAGE_P) && !(pte & _PAGE_IO));
-    }
-    return 0;
-}
-
-int
-xc_ia64_p2m_allocated(struct xen_ia64_p2m_table *p2m_table, unsigned long gpfn)
-{
-    if (sizeof(p2m_table->p2m[0]) * gpfn < p2m_table->size) {
-        unsigned long pte = p2m_table->p2m[gpfn];
-        return !!((pte & _PAGE_P) && (pte & _PAGE_PGC_ALLOCATED) &&
-                  !(pte & _PAGE_IO));
-    }
-    return 0;
-}
-
-unsigned long
-xc_ia64_p2m_mfn(struct xen_ia64_p2m_table *p2m_table, unsigned long gpfn)
-{
-    unsigned long pte;
-    
-    if (sizeof(p2m_table->p2m[0]) * gpfn >= p2m_table->size)
-        return INVALID_MFN;
-    pte = p2m_table->p2m[gpfn];
-    if (pte & _PAGE_IO)
-        return INVALID_MFN;
-    if (!(pte & _PAGE_P))
-        return INVALID_MFN;
-    return (pte & _PAGE_PPN_MASK) >> PAGE_SHIFT;
-}
-
-/*
- * Local variables:
- * mode: C
- * c-set-style: "BSD"
- * c-basic-offset: 4
- * tab-width: 4
- * indent-tabs-mode: nil
- * End:
- */
index d711f1b727202587bfc3d9f52b4e30ee4ee14f49..802fcaeff4aee5612a7151e733bdbb499923898b 100644 (file)
@@ -31,7 +31,6 @@
  *  |    .shstrtab                                           |
  *  |    .note.Xen                                           |
  *  |    .xen_prstatus                                       |
- *  |    .xen_ia64_mmapped_regs if ia64                      |
  *  |    .xen_shared_info if present                         |
  *  |    .xen_pages                                          |
  *  |    .xen_p2m or .xen_pfn                                |
@@ -48,9 +47,6 @@
  *  |.xen_prstatus                                           |
  *  |       vcpu_guest_context_t[nr_vcpus]                   |
  *  +--------------------------------------------------------+
- *  |.xen_ia64_mmapped_regs if ia64 pv                       |
- *  |       mmapped_regs_t[nr_vcpus]                         |
- *  +--------------------------------------------------------+
  *  |.xen_shared_info if possible                            |
  *  +--------------------------------------------------------+
  *  |.xen_pages                                              |
index 358a8c1956d48c45df2a543d98497bd7337f00bc..3f301d9f20f1125411581979bb47bb6f6eded7a6 100644 (file)
@@ -33,8 +33,6 @@
 #define XEN_DUMPCORE_SEC_PFN                    ".xen_pfn"
 #define XEN_DUMPCORE_SEC_PAGES                  ".xen_pages"
 
-#define XEN_DUMPCORE_SEC_IA64_MAPPED_REGS       ".xen_ia64_mapped_regs"
-
 /* elf note name */
 #define XEN_DUMPCORE_ELFNOTE_NAME               "Xen"
 /* note numbers are defined in xen/elfnote.h */
@@ -153,8 +151,6 @@ int xc_core_arch_map_p2m_writable(xc_interface *xch, unsigned int guest_width,
 
 #if defined (__i386__) || defined (__x86_64__)
 # include "xc_core_x86.h"
-#elif defined (__ia64__)
-# include "xc_core_ia64.h"
 #elif defined (__arm__)
 # include "xc_core_arm.h"
 #else
diff --git a/tools/libxc/xc_core_ia64.c b/tools/libxc/xc_core_ia64.c
deleted file mode 100644 (file)
index 7411e3e..0000000
+++ /dev/null
@@ -1,380 +0,0 @@
-/*
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- *
- * Copyright (c) 2007 Isaku Yamahata <yamahata at valinux co jp>
- *                    VA Linux Systems Japan K.K.
- *
- */
-
-#include "xg_private.h"
-#include "xc_core.h"
-#include "xc_efi.h"
-#include "xc_dom.h"
-#include <inttypes.h>
-
-int
-xc_core_arch_gpfn_may_present(struct xc_core_arch_context *arch_ctxt,
-                              unsigned long pfn)
-{
-    if (arch_ctxt->p2m_table.p2m == NULL)
-        return 1; /* default to trying to map the page */
-
-    return xc_ia64_p2m_present(&arch_ctxt->p2m_table, pfn);
-}
-
-static int
-xc_memory_map_cmp(const void *lhs__, const void *rhs__)
-{
-    const struct xc_core_memory_map *lhs =
-        (const struct xc_core_memory_map *)lhs__;
-    const struct xc_core_memory_map *rhs =
-        (const struct xc_core_memory_map *)rhs__;
-
-    if (lhs->addr < rhs->addr)
-        return -1;
-    if (lhs->addr > rhs->addr)
-        return 1;
-
-    /* memory map overlap isn't allowed. complain */
-#ifdef DEBUG
-    fprintf(stderr, "duplicated addresses are detected "
-            "(0x%" PRIx64 ", 0x%" PRIx64 "), "
-            "(0x%" PRIx64 ", 0x%" PRIx64 ")\n",
-            lhs->addr, lhs->size, rhs->addr, rhs->size);
-#endif
-    return 0;
-}
-
-int
-xc_core_arch_auto_translated_physmap(const xc_dominfo_t *info)
-{
-    /*
-     * on ia64, both paravirtualize domain and hvm domain are
-     * auto_translated_physmap mode
-     */
-    return 1;
-}
-
-/* see setup_guest() @ xc_linux_build.c */
-static int
-memory_map_get_old_domu(xc_interface *xch, xc_dominfo_t *info,
-                        shared_info_any_t *live_shinfo,
-                        xc_core_memory_map_t **mapp, unsigned int *nr_entries)
-{
-    xc_core_memory_map_t *map = NULL;
-
-    map = malloc(sizeof(*map));
-    if ( map == NULL )
-    {
-        PERROR("Could not allocate memory");
-        goto out;
-    }
-
-    map->addr = 0;
-    map->size = info->max_memkb * 1024;
-
-    *mapp = map;
-    *nr_entries = 1;
-    return 0;
-
-out:
-    if ( map != NULL )
-        free(map);
-    return -1;
-}
-
-/* see setup_guest() @ xc_ia64_hvm_build.c */
-static int
-memory_map_get_old_hvm(xc_interface *xch, xc_dominfo_t *info, 
-                       shared_info_any_t *live_shinfo,
-                       xc_core_memory_map_t **mapp, unsigned int *nr_entries)
-{
-    const xc_core_memory_map_t gfw_map[] = {
-        {IO_PAGE_START, IO_PAGE_SIZE},
-        {STORE_PAGE_START, STORE_PAGE_SIZE},
-        {BUFFER_IO_PAGE_START, BUFFER_IO_PAGE_SIZE},
-        {BUFFER_PIO_PAGE_START, BUFFER_PIO_PAGE_SIZE},
-        {GFW_START, GFW_SIZE},
-    };
-    const unsigned int nr_gfw_map = sizeof(gfw_map)/sizeof(gfw_map[0]);
-    xc_core_memory_map_t *map = NULL;
-    unsigned int i;
-    
-#define VGA_IO_END      (VGA_IO_START + VGA_IO_SIZE)
-    /* [0, VGA_IO_START) [VGA_IO_END, 3GB), [4GB, ...) + gfw_map */
-    map = malloc((3 + nr_gfw_map) * sizeof(*map));
-    if ( map == NULL )
-    {
-        PERROR("Could not allocate memory");
-        goto out;
-    }
-
-    for ( i = 0; i < nr_gfw_map; i++ )
-        map[i] = gfw_map[i];
-    map[i].addr = 0;
-    map[i].size = info->max_memkb * 1024;
-    i++;
-    if ( map[i - 1].size < VGA_IO_END )
-    {
-        map[i - 1].size = VGA_IO_START;
-    }
-    else
-    {
-        map[i].addr = VGA_IO_END;
-        map[i].size = map[i - 1].size - VGA_IO_END;
-        map[i - 1].size = VGA_IO_START;
-        i++;
-        if ( map[i - 1].addr + map[i - 1].size > MMIO_START )
-        {
-            map[i].addr = MMIO_START + 1 * MEM_G;
-            map[i].size = map[i - 1].addr + map[i - 1].size - MMIO_START;
-            map[i - 1].size = MMIO_START - map[i - 1].addr;
-            i++;
-        }
-    }
-    *mapp = map;
-    *nr_entries = i;
-    qsort(map, *nr_entries, sizeof(map[0]), &xc_memory_map_cmp);
-    return 0;
-
-out:
-    if ( map != NULL )
-        free(map);
-    return -1;
-}
-
-static int
-memory_map_get_old(xc_interface *xch, xc_dominfo_t *info, 
-                   shared_info_any_t *live_shinfo,
-                   xc_core_memory_map_t **mapp, unsigned int *nr_entries)
-{
-    if ( info->hvm )
-        return memory_map_get_old_hvm(xch, info, live_shinfo,
-                                      mapp, nr_entries);
-    if ( live_shinfo == NULL )
-        return -1;
-    return memory_map_get_old_domu(xch, info, live_shinfo,
-                                   mapp, nr_entries);
-}
-
-int
-xc_core_arch_memory_map_get(xc_interface *xch,
-                            struct xc_core_arch_context *arch_ctxt,
-                            xc_dominfo_t *info,
-                            shared_info_any_t *live_shinfo,
-                            xc_core_memory_map_t **mapp,
-                            unsigned int *nr_entries)
-{
-    int ret = -1;
-
-    xen_ia64_memmap_info_t *memmap_info = NULL;
-    xc_core_memory_map_t *map;
-    char *start;
-    char *end;
-    char *p;
-    efi_memory_desc_t *md;
-
-    if ( live_shinfo == NULL )
-    {
-        ERROR("can't access shared info");
-        goto old;
-    }
-
-    /* copy before use in case someone updating them */
-    if (xc_ia64_copy_memmap(xch, info->domid, &live_shinfo->s,
-                            &memmap_info, NULL)) {
-        goto old;
-    }
-
-    *nr_entries = memmap_info->efi_memmap_size / memmap_info->efi_memdesc_size;
-    map = malloc(*nr_entries * sizeof(*md));
-    if ( map == NULL )
-    {
-        PERROR("Could not allocate memory for memmap.");
-        free(memmap_info);
-        return -1;
-    }
-    *mapp = map;
-
-    *nr_entries = 0;
-    start = (char*)&memmap_info->memdesc;
-    end = start + memmap_info->efi_memmap_size;
-    for ( p = start; p < end; p += memmap_info->efi_memdesc_size )
-    {
-        md = (efi_memory_desc_t*)p;
-        if ( md->type != EFI_CONVENTIONAL_MEMORY ||
-             md->attribute != EFI_MEMORY_WB ||
-             md->num_pages == 0 )
-            continue;
-
-        map[*nr_entries].addr = md->phys_addr;
-        map[*nr_entries].size = md->num_pages << EFI_PAGE_SHIFT;
-        (*nr_entries)++;
-    }
-    ret = 0;
-
-    xc_ia64_p2m_map(&arch_ctxt->p2m_table, xch, info->domid,
-                    memmap_info, 0);
-    if ( memmap_info != NULL )
-        free(memmap_info);
-    qsort(map, *nr_entries, sizeof(map[0]), &xc_memory_map_cmp);
-    return ret;
-    
-old:
-    DPRINTF("Falling back old method.\n");
-    return memory_map_get_old(xch, info, live_shinfo, mapp, nr_entries);
-}
-
-int
-xc_core_arch_map_p2m(xc_interface *xch, unsigned int guest_width, xc_dominfo_t *info,
-                     shared_info_any_t *live_shinfo, xen_pfn_t **live_p2m,
-                     unsigned long *pfnp)
-{
-    /*
-     * on ia64, both paravirtualize domain and hvm domain are
-     * auto_translated_physmap mode
-     */
-    errno = ENOSYS;
-    return -1;
-}
-
-void
-xc_core_arch_context_init(struct xc_core_arch_context* arch_ctxt)
-{
-    arch_ctxt->mapped_regs_size =
-        (XMAPPEDREGS_SIZE < PAGE_SIZE) ? PAGE_SIZE: XMAPPEDREGS_SIZE;
-    arch_ctxt->nr_vcpus = 0;
-    arch_ctxt->mapped_regs = NULL;
-
-    xc_ia64_p2m_init(&arch_ctxt->p2m_table);
-}
-
-void
-xc_core_arch_context_free(struct xc_core_arch_context* arch_ctxt)
-{
-    int i;
-    for ( i = 0; i < arch_ctxt->nr_vcpus; i++ )
-        if ( arch_ctxt->mapped_regs[i] != NULL )
-            munmap(arch_ctxt->mapped_regs[i], arch_ctxt->mapped_regs_size);
-    free(arch_ctxt->mapped_regs);
-    xc_ia64_p2m_unmap(&arch_ctxt->p2m_table);
-}
-
-int
-xc_core_arch_context_get(struct xc_core_arch_context* arch_ctxt,
-                         vcpu_guest_context_any_t* ctxt_any,
-                         xc_interface *xch, uint32_t domid)
-{
-    vcpu_guest_context_t *ctxt = &ctxt_any->c;
-    mapped_regs_t* mapped_regs;
-
-    if ( ctxt->privregs_pfn == VGC_PRIVREGS_HVM )
-        return 0;       /* VTi domain case */
-
-    if ( ctxt->privregs_pfn == INVALID_P2M_ENTRY )
-    {
-        PERROR("Could not get mmapped privregs gmfn");
-        errno = ENOENT;
-        return -1;
-    }
-    if ( !(arch_ctxt->nr_vcpus & (arch_ctxt->nr_vcpus - 1)) ) {
-        unsigned int nr = arch_ctxt->nr_vcpus ? arch_ctxt->nr_vcpus << 1 : 1;
-        mapped_regs_t** new = realloc(arch_ctxt->mapped_regs,
-                                      nr * sizeof(*new));
-
-        if ( !new )
-        {
-            PERROR("Could not alloc mapped regs pointer array");
-            return -1;
-        }
-        memset(new + arch_ctxt->nr_vcpus, 0,
-               (nr - arch_ctxt->nr_vcpus) * sizeof(*new));
-        arch_ctxt->mapped_regs = new;
-    }
-
-    mapped_regs = xc_map_foreign_range(xch, domid,
-                                       arch_ctxt->mapped_regs_size,
-                                       PROT_READ, ctxt->privregs_pfn);
-    if ( mapped_regs == NULL )
-    {
-        PERROR("Could not map mapped privregs");
-        return -1;
-    }
-    arch_ctxt->mapped_regs[arch_ctxt->nr_vcpus] = mapped_regs;
-    arch_ctxt->nr_vcpus++;
-    return 0;
-}
-
-int
-xc_core_arch_context_get_shdr(xc_interface *xch,
-                              struct xc_core_arch_context *arch_ctxt, 
-                              struct xc_core_section_headers *sheaders,
-                              struct xc_core_strtab *strtab,
-                              uint64_t *filesz, uint64_t offset)
-{
-    int sts = -1;
-    Elf64_Shdr *shdr;
-
-    if ( arch_ctxt->nr_vcpus == 0 )
-    {
-        /* VTi domain case */
-        *filesz = 0;
-        return 0;       
-    }
-
-    /* mmapped priv regs */
-    shdr = xc_core_shdr_get(xch, sheaders);
-    if ( shdr == NULL )
-    {
-        PERROR("Could not get section header for .xen_ia64_mapped_regs");
-        return sts;
-    }
-    *filesz = arch_ctxt->mapped_regs_size * arch_ctxt->nr_vcpus;
-    sts = xc_core_shdr_set(xch, shdr, strtab,
-                           XEN_DUMPCORE_SEC_IA64_MAPPED_REGS,
-                           SHT_PROGBITS, offset, *filesz,
-                           __alignof__(*arch_ctxt->mapped_regs[0]),
-                           arch_ctxt->mapped_regs_size);
-    return sts;
-}
-
-int
-xc_core_arch_context_dump(xc_interface *xch,
-                          struct xc_core_arch_context* arch_ctxt,
-                          void* args, dumpcore_rtn_t dump_rtn)
-{
-    int sts = 0;
-    int i;
-    
-    /* ia64 mapped_regs: .xen_ia64_mapped_regs */
-    for ( i = 0; i < arch_ctxt->nr_vcpus; i++ )
-    {
-        sts = dump_rtn(xch, args, (char*)arch_ctxt->mapped_regs[i],
-                       arch_ctxt->mapped_regs_size);
-        if ( sts != 0 )
-            break;
-    }
-    return sts;
-}
-
-/*
- * Local variables:
- * mode: C
- * c-set-style: "BSD"
- * c-basic-offset: 4
- * tab-width: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/tools/libxc/xc_core_ia64.h b/tools/libxc/xc_core_ia64.h
deleted file mode 100644 (file)
index 754523d..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation; either
- * version 2.1 of the License, or (at your option) any later version.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- *
- * Copyright (c) 2007 Isaku Yamahata <yamahata at valinux co jp>
- *                    VA Linux Systems Japan K.K.
- *
- */
-
-#ifndef XC_CORE_IA64_H
-#define XC_CORE_IA64_H
-
-#include "ia64/xc_ia64.h"
-
-#define ELF_ARCH_DATA           ELFDATA2LSB
-#define ELF_ARCH_MACHINE        EM_IA_64
-
-struct xc_core_arch_context {
-    size_t mapped_regs_size;
-    int nr_vcpus;
-    mapped_regs_t** mapped_regs;
-
-    struct xen_ia64_p2m_table p2m_table;
-};
-
-void
-xc_core_arch_context_init(struct xc_core_arch_context* arch_ctxt);
-void
-xc_core_arch_context_free(struct xc_core_arch_context* arch_ctxt);
-int
-xc_core_arch_context_get(struct xc_core_arch_context* arch_ctxt,
-                         vcpu_guest_context_any_t* ctxt,
-                         xc_interface *xch, uint32_t domid);
-int
-xc_core_arch_context_get_shdr(xc_interface *xch,
-                              struct xc_core_arch_context* arch_ctxt, 
-                              struct xc_core_section_headers *sheaders,
-                              struct xc_core_strtab *strtab,
-                              uint64_t *filesz, uint64_t offset);
-int
-xc_core_arch_context_dump(xc_interface *xch,
-                          struct xc_core_arch_context* arch_ctxt,
-                          void* args, dumpcore_rtn_t dump_rtn);
-
-int
-xc_core_arch_gpfn_may_present(struct xc_core_arch_context *arch_ctxt,
-                              unsigned long pfn);
-
-#endif /* XC_CORE_IA64_H */
-
-/*
- * Local variables:
- * mode: C
- * c-set-style: "BSD"
- * c-basic-offset: 4
- * tab-width: 4
- * indent-tabs-mode: nil
- * End:
- */
index a9a868c06e98422f987d2af513e441b6b24123c4..f83aa12d919f55f0e51f993813a7b24d209cfc9d 100644 (file)
@@ -213,7 +213,7 @@ int xc_dom_boot_image(struct xc_dom_image *dom)
 
     DOMPRINTF_CALLED(dom->xch);
 
-    /* misc ia64 stuff*/
+    /* misc stuff*/
     if ( (rc = arch_setup_bootearly(dom)) != 0 )
         return rc;
 
index 2e695599b1961a0828fd4c3da7f3f13cd51faefd..0f656202fd541684275e0bedf3e9e85475c4e4c5 100644 (file)
@@ -74,8 +74,6 @@ static char *xc_dom_guest_type(struct xc_dom_image *dom,
         }
     case EM_X86_64:
         return "xen-3.0-x86_64";
-    case EM_IA_64:
-        return elf_msb(elf) ? "xen-3.0-ia64be" : "xen-3.0-ia64";
     default:
         return "xen-3.0-unknown";
     }
diff --git a/tools/libxc/xc_dom_ia64.c b/tools/libxc/xc_dom_ia64.c
deleted file mode 100644 (file)
index dcd1523..0000000
+++ /dev/null
@@ -1,334 +0,0 @@
-/*
- * Xen domain builder -- ia64 bits.
- *
- * Most architecture-specific code for ia64 goes here.
- *   - fill architecture-specific structs.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License.
- *
- * This library 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
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
- *
- * written 2006 by Gerd Hoffmann <kraxel@suse.de>.
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <inttypes.h>
-#include <assert.h>
-#include <asm/kregs.h>
-
-#include <xen/xen.h>
-#include <xen/foreign/ia64.h>
-#include <xen/io/protocols.h>
-
-#include "xg_private.h"
-#include "xc_dom.h"
-#include "xenctrl.h"
-
-#include <asm/dom_fw_common.h>
-#include "ia64/xc_dom_ia64_util.h"
-
-/* ------------------------------------------------------------------------ */
-
-static int alloc_magic_pages(struct xc_dom_image *dom)
-{
-    /* allocate special pages */
-    dom->console_pfn = dom->total_pages -1;
-    dom->xenstore_pfn = dom->total_pages -2;
-    dom->start_info_pfn = dom->total_pages -3;
-    return 0;
-}
-
-int start_info_ia64(struct xc_dom_image *dom)
-{
-    start_info_ia64_t *start_info =
-        xc_dom_pfn_to_ptr(dom, dom->start_info_pfn, 1);
-    struct xen_ia64_boot_param_ia64 *bp =
-        (struct xen_ia64_boot_param_ia64 *)(start_info + 1);
-
-    DOMPRINTF_CALLED(dom->xch);
-
-    memset(start_info, 0, sizeof(*start_info));
-    sprintf(start_info->magic, dom->guest_type);
-    start_info->flags = dom->flags;
-    start_info->nr_pages = dom->total_pages;
-    start_info->store_mfn = dom->xenstore_pfn;
-    start_info->store_evtchn = dom->xenstore_evtchn;
-    start_info->console.domU.mfn = dom->console_pfn;
-    start_info->console.domU.evtchn = dom->console_evtchn;
-
-    /*
-     * domain_start and domain_size are abused for arch_setup hypercall
-     * so that we need to clear them here.
-     */
-    XEN_IA64_MEMMAP_INFO_NUM_PAGES(bp) = 0;
-    XEN_IA64_MEMMAP_INFO_PFN(bp) = 0;
-
-    if ( dom->ramdisk_blob )
-    {
-        start_info->mod_start = dom->ramdisk_seg.vstart;
-        start_info->mod_len = dom->ramdisk_seg.vend - dom->ramdisk_seg.vstart;
-        bp->initrd_start = start_info->mod_start;
-        bp->initrd_size = start_info->mod_len;
-    }
-    bp->command_line = (dom->start_info_pfn << PAGE_SHIFT_IA64)
-        + offsetof(start_info_t, cmd_line);
-    if ( dom->cmdline )
-    {
-        strncpy((char *)start_info->cmd_line, dom->cmdline, MAX_GUEST_CMDLINE);
-        start_info->cmd_line[MAX_GUEST_CMDLINE - 1] = '\0';
-    }
-    return 0;
-}
-
-int shared_info_ia64(struct xc_dom_image *dom, void *ptr)
-{
-    shared_info_ia64_t *shared_info = ptr;
-    int i;
-
-    DOMPRINTF_CALLED(dom->xch);
-
-    memset(shared_info, 0, sizeof(*shared_info));
-    for (i = 0; i < XEN_LEGACY_MAX_VCPUS; i++)
-        shared_info->vcpu_info[i].evtchn_upcall_mask = 1;
-    shared_info->arch.start_info_pfn = dom->start_info_pfn;
-    shared_info->arch.memmap_info_num_pages = 1; //XXX
-    shared_info->arch.memmap_info_pfn = dom->start_info_pfn - 1;
-    return 0;
-}
-
-extern unsigned long xc_ia64_fpsr_default(void);
-
-static int vcpu_ia64(struct xc_dom_image *dom, void *ptr)
-{
-    vcpu_guest_context_ia64_t *ctxt = ptr;
-
-    DOMPRINTF_CALLED(dom->xch);
-
-    /* clear everything */
-    memset(ctxt, 0, sizeof(*ctxt));
-
-    ctxt->flags = 0;
-    /* PSR is set according to SAL 3.2.4: AC, IC and BN are set. */
-    ctxt->regs.psr = IA64_PSR_AC | IA64_PSR_IC | IA64_PSR_BN;
-    ctxt->regs.ip = dom->parms.virt_entry;
-    ctxt->regs.cfm = 1UL << 63;
-#ifdef __ia64__                        /* FIXME */
-    ctxt->regs.ar.fpsr = xc_ia64_fpsr_default();
-#endif
-    ctxt->regs.r[28] = (dom->start_info_pfn << PAGE_SHIFT_IA64)
-        + sizeof(start_info_ia64_t);
-    return 0;
-}
-
-/* ------------------------------------------------------------------------ */
-
-static struct xc_dom_arch xc_dom_arch = {
-    .guest_type = "xen-3.0-ia64",
-    .native_protocol = XEN_IO_PROTO_ABI_IA64,
-    .page_shift = PAGE_SHIFT_IA64,
-    .alloc_magic_pages = alloc_magic_pages,
-    .start_info = start_info_ia64,
-    .shared_info = shared_info_ia64,
-    .vcpu = vcpu_ia64,
-};
-
-static struct xc_dom_arch xc_dom_arch_ia64be = {
-    .guest_type = "xen-3.0-ia64be",
-    .native_protocol = XEN_IO_PROTO_ABI_IA64,
-    .page_shift = PAGE_SHIFT_IA64,
-    .alloc_magic_pages = alloc_magic_pages,
-    .start_info = start_info_ia64,
-    .shared_info = shared_info_ia64,
-    .vcpu = vcpu_ia64,
-};
-
-static void __init register_arch_hooks(void)
-{
-    xc_dom_register_arch_hooks(&xc_dom_arch);
-    xc_dom_register_arch_hooks(&xc_dom_arch_ia64be);
-}
-
-#include "xc_efi.h"
-
-int arch_setup_meminit(struct xc_dom_image *dom)
-{
-    xen_pfn_t pfn;
-    int rc;
-    unsigned long start;
-    unsigned long nbr;
-
-    /* setup initial p2m */
-    if (dom->guest_type && strcmp(dom->guest_type,
-                                  "hvm-3.0-ia64-sioemu") == 0) {
-        start = FW_MEM_BASE >> PAGE_SHIFT_IA64;
-        nbr = FW_MEM_SIZE >> PAGE_SHIFT_IA64;
-    } else {
-        start = 0;
-        nbr = dom->total_pages;
-    }
-
-    /* setup initial p2m */
-    dom->p2m_host = xc_dom_malloc(dom, sizeof(xen_pfn_t) * nbr);
-    for ( pfn = 0; pfn < nbr; pfn++ )
-        dom->p2m_host[pfn] = start + pfn;
-
-    /* allocate guest memory */
-    rc = xc_domain_populate_physmap_exact(dom->xch, dom->guest_domid,
-                                           nbr, 0, 0,
-                                           dom->p2m_host);
-    return rc;
-}
-
-static int ia64_setup_memmap(struct xc_dom_image *dom)
-{
-    unsigned int page_size = XC_DOM_PAGE_SIZE(dom);
-    unsigned long memmap_info_num_pages;
-    unsigned long memmap_info_pfn;
-    xen_ia64_memmap_info_t* memmap_info;
-    unsigned int num_mds;
-    efi_memory_desc_t *md;
-
-    char* start_info;
-    struct xen_ia64_boot_param* bp;
-
-    /* setup memmap page */
-    memmap_info_num_pages = 1;
-    memmap_info_pfn = dom->start_info_pfn - 1;
-    DOMPRINTF("%s: memmap: mfn 0x%" PRIpfn " pages 0x%lx",
-              __FUNCTION__, memmap_info_pfn, memmap_info_num_pages);
-    memmap_info = xc_map_foreign_range(dom->xch, dom->guest_domid,
-                                       page_size * memmap_info_num_pages,
-                                       PROT_READ | PROT_WRITE,
-                                       memmap_info_pfn);
-    if (NULL == memmap_info)
-        return -1;
-    /* [0, total_pages) */
-    memmap_info->efi_memdesc_size = sizeof(md[0]);
-    memmap_info->efi_memdesc_version = EFI_MEMORY_DESCRIPTOR_VERSION;
-    num_mds = 0;
-    md = (efi_memory_desc_t*)&memmap_info->memdesc;
-    md[num_mds].type = EFI_CONVENTIONAL_MEMORY;
-    md[num_mds].pad = 0;
-    md[num_mds].phys_addr = 0;
-    md[num_mds].virt_addr = 0;
-    md[num_mds].num_pages = dom->total_pages << (PAGE_SHIFT - EFI_PAGE_SHIFT);
-    md[num_mds].attribute = EFI_MEMORY_WB;
-    num_mds++;
-    memmap_info->efi_memmap_size = num_mds * sizeof(md[0]);
-    munmap(memmap_info, page_size * memmap_info_num_pages);
-    assert(num_mds <=
-           (page_size * memmap_info_num_pages -
-            offsetof(typeof(*memmap_info), memdesc))/sizeof(*md));
-
-    /*
-     * kludge: we need to pass memmap_info page's pfn and other magic pages
-     * somehow.
-     * we use xen_ia64_boot_param::efi_memmap::{efi_memmap, efi_memmap_size}
-     * for this purpose
-     */
-    start_info = xc_map_foreign_range(dom->xch, dom->guest_domid,
-                                     page_size,
-                                     PROT_READ | PROT_WRITE,
-                                     dom->start_info_pfn);
-    if (NULL == start_info)
-        return -1;
-    bp = (struct xen_ia64_boot_param*)(start_info + sizeof(start_info_t));
-    memset(bp, 0, sizeof(*bp));
-    XEN_IA64_MEMMAP_INFO_NUM_PAGES(bp) = memmap_info_num_pages;
-    XEN_IA64_MEMMAP_INFO_PFN(bp) = memmap_info_pfn;
-    munmap(start_info, page_size);
-    return 0;
-}
-
-int arch_setup_bootearly(struct xc_dom_image *dom)
-{
-    DECLARE_DOMCTL;
-    int rc;
-
-    DOMPRINTF("%s: setup firmware for %s", __FUNCTION__, dom->guest_type);
-
-    if (dom->guest_type && strcmp(dom->guest_type,
-                                  "hvm-3.0-ia64-sioemu") == 0) {
-        memset(&domctl, 0, sizeof(domctl));
-        domctl.u.arch_setup.flags = XEN_DOMAINSETUP_sioemu_guest;
-        domctl.u.arch_setup.bp = 0;
-        domctl.u.arch_setup.maxmem = 0;
-        domctl.cmd = XEN_DOMCTL_arch_setup;
-        domctl.domain = dom->guest_domid;
-        rc = xc_domctl(dom->xch, &domctl);
-        DOMPRINTF("%s: hvm-3.0-ia64-sioemu: %d", __FUNCTION__, rc);
-        return rc;
-    }
-
-    rc = ia64_setup_memmap(dom);
-    if (rc)
-        return rc;
-
-    memset(&domctl, 0, sizeof(domctl));
-    domctl.cmd = XEN_DOMCTL_arch_setup;
-    domctl.domain = dom->guest_domid;
-    domctl.u.arch_setup.flags = XEN_DOMAINSETUP_query;
-    rc = do_domctl(dom->xch, &domctl);
-    if (rc)
-        return rc;
-    rc = xen_ia64_dom_fw_setup(dom, domctl.u.arch_setup.hypercall_imm,
-                               (dom->start_info_pfn << PAGE_SHIFT) +
-                               sizeof(start_info_t),
-                               dom->total_pages << PAGE_SHIFT);
-    if (rc)
-        return rc;
-
-    memset(&domctl, 0, sizeof(domctl));
-    domctl.cmd = XEN_DOMCTL_arch_setup;
-    domctl.domain = dom->guest_domid;
-    domctl.u.arch_setup.flags = 0;
-
-    domctl.u.arch_setup.bp = (dom->start_info_pfn << PAGE_SHIFT)
-        + sizeof(start_info_t);
-    domctl.u.arch_setup.maxmem = dom->total_pages << PAGE_SHIFT;
-    domctl.u.arch_setup.vhpt_size_log2 = dom->vhpt_size_log2;
-    rc = do_domctl(dom->xch, &domctl);
-    return rc;
-}
-
-int arch_setup_bootlate(struct xc_dom_image *dom)
-{
-    unsigned int page_size = XC_DOM_PAGE_SIZE(dom);
-    shared_info_t *shared_info;
-
-    /* setup shared_info page */
-    DOMPRINTF("%s: shared_info: mfn 0x%" PRIpfn "",
-              __FUNCTION__, dom->shared_info_mfn);
-    shared_info = xc_map_foreign_range(dom->xch, dom->guest_domid,
-                                       page_size,
-                                       PROT_READ | PROT_WRITE,
-                                       dom->shared_info_mfn);
-    if ( shared_info == NULL )
-        return -1;
-    dom->arch_hooks->shared_info(dom, shared_info);
-    munmap(shared_info, page_size);
-    return 0;
-}
-
-/*
- * Local variables:
- * mode: C
- * c-set-style: "BSD"
- * c-basic-offset: 4
- * tab-width: 4
- * indent-tabs-mode: nil
- * End:
- */
index eacd6f6dc339a4c5eca9c2ea08dff2fb520cc0f3..ab86b7254d31aedac923da24d5db097d4f1c168d 100644 (file)
@@ -109,14 +109,10 @@ static void *minios_privcmd_map_foreign_bulk(xc_interface *xch, xc_osdep_handle
                                              const xen_pfn_t *arr, int *err, unsigned int num)
 {
     unsigned long pt_prot = 0;
-#ifdef __ia64__
-    /* TODO */
-#else
     if (prot & PROT_READ)
        pt_prot = L1_PROT_RO;
     if (prot & PROT_WRITE)
        pt_prot = L1_PROT;
-#endif
     return map_frames_ex(arr, num, 1, 0, 1, dom, err, pt_prot);    
 }
 
@@ -129,14 +125,11 @@ static void *minios_privcmd_map_foreign_batch(xc_interface *xch,  xc_osdep_handl
     int i;
     unsigned long addr;
 
-#ifdef __ia64__
-    /* TODO */
-#else
     if (prot & PROT_READ)
        pt_prot = L1_PROT_RO;
     if (prot & PROT_WRITE)
        pt_prot = L1_PROT;
-#endif
+
     addr = (unsigned long) map_frames_ex(arr, num, 1, 0, 1, dom, err, pt_prot);
     for (i = 0; i < num; i++) {
         if (err[i])
@@ -151,14 +144,12 @@ static void *minios_privcmd_map_foreign_range(xc_interface *xch, xc_osdep_handle
                                               unsigned long mfn)
 {
     unsigned long pt_prot = 0;
-#ifdef __ia64__
-    /* TODO */
-#else
+
     if (prot & PROT_READ)
        pt_prot = L1_PROT_RO;
     if (prot & PROT_WRITE)
        pt_prot = L1_PROT;
-#endif
+
     assert(!(size % getpagesize()));
     return map_frames_ex(&mfn, size / getpagesize(), 0, 1, 1, dom, NULL, pt_prot);
 }
@@ -172,14 +163,11 @@ static void *minios_privcmd_map_foreign_ranges(xc_interface *xch, xc_osdep_handl
     int i, j, n;
     unsigned long pt_prot = 0;
     void *ret;
-#ifdef __ia64__
-    /* TODO */
-#else
+
     if (prot & PROT_READ)
        pt_prot = L1_PROT_RO;
     if (prot & PROT_WRITE)
        pt_prot = L1_PROT;
-#endif
 
     mfns = malloc((size / XC_PAGE_SIZE) * sizeof(*mfns));
 
index b7741ca543ea024974a00b8803d937ccf428ce4f..3254537dced075ca6648c4d564ffd0ad48fb92a0 100644 (file)
 #include <xen/arch-x86/xen-mca.h>
 #endif
 
-#ifdef __ia64__
-#define XC_PAGE_SHIFT           14
-#else
 #define XC_PAGE_SHIFT           12
-#endif
 #define XC_PAGE_SIZE            (1UL << XC_PAGE_SHIFT)
 #define XC_PAGE_MASK            (~(XC_PAGE_SIZE-1))
 
 #define xen_mb()  asm volatile ( "mfence" : : : "memory")
 #define xen_rmb() xen_barrier()
 #define xen_wmb() xen_barrier()
-#elif defined(__ia64__)
-#define xen_mb()   asm volatile ("mf" ::: "memory")
-#define xen_rmb()  asm volatile ("mf" ::: "memory")
-#define xen_wmb()  asm volatile ("mf" ::: "memory")
 #elif defined(__arm__)
 #define xen_mb()   asm volatile ("dmb" : : : "memory")
 #define xen_rmb()  asm volatile ("dmb" : : : "memory")
@@ -1248,8 +1240,6 @@ unsigned long xc_translate_foreign_address(xc_interface *xch, uint32_t dom,
 int xc_get_pfn_list(xc_interface *xch, uint32_t domid, uint64_t *pfn_buf,
                     unsigned long max_pfns);
 
-unsigned long xc_ia64_fpsr_default(void);
-
 int xc_copy_to_domain_page(xc_interface *xch, uint32_t domid,
                            unsigned long dst_pfn, const char *src_page);
 
@@ -1659,15 +1649,6 @@ void xc_clear_last_error(xc_interface *xch);
 int xc_set_hvm_param(xc_interface *handle, domid_t dom, int param, unsigned long value);
 int xc_get_hvm_param(xc_interface *handle, domid_t dom, int param, unsigned long *value);
 
-/* IA64 specific, nvram save */
-int xc_ia64_save_to_nvram(xc_interface *xch, uint32_t dom);
-
-/* IA64 specific, nvram init */
-int xc_ia64_nvram_init(xc_interface *xch, char *dom_name, uint32_t dom);
-
-/* IA64 specific, set guest OS type optimizations */
-int xc_ia64_set_os_type(xc_interface *xch, char *guest_os_type, uint32_t dom);
-
 /* HVM guest pass-through */
 int xc_assign_device(xc_interface *xch,
                      uint32_t domid,
diff --git a/xen/include/public/arch-ia64.h b/xen/include/public/arch-ia64.h
deleted file mode 100644 (file)
index c9da5d4..0000000
+++ /dev/null
@@ -1,637 +0,0 @@
-/******************************************************************************
- * arch-ia64/hypervisor-if.h
- * 
- * Guest OS interface to IA64 Xen.
- *
- * 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.
- *
- */
-
-#include "xen.h"
-
-#ifndef __HYPERVISOR_IF_IA64_H__
-#define __HYPERVISOR_IF_IA64_H__
-
-#if !defined(__GNUC__) || defined(__STRICT_ANSI__)
-#error "Anonymous structs/unions are a GNU extension."
-#endif
-
-/* Structural guest handles introduced in 0x00030201. */
-#if __XEN_INTERFACE_VERSION__ >= 0x00030201
-#define ___DEFINE_XEN_GUEST_HANDLE(name, type) \
-    typedef struct { type *p; } __guest_handle_ ## name
-#else
-#define ___DEFINE_XEN_GUEST_HANDLE(name, type) \
-    typedef type * __guest_handle_ ## name
-#endif
-
-#define __DEFINE_XEN_GUEST_HANDLE(name, type) \
-    ___DEFINE_XEN_GUEST_HANDLE(name, type);   \
-    ___DEFINE_XEN_GUEST_HANDLE(const_##name, const type)
-
-#define DEFINE_XEN_GUEST_HANDLE(name)   __DEFINE_XEN_GUEST_HANDLE(name, name)
-#define XEN_GUEST_HANDLE(name)          __guest_handle_ ## name
-#define XEN_GUEST_HANDLE_64(name)       XEN_GUEST_HANDLE(name)
-#define uint64_aligned_t                uint64_t
-#define set_xen_guest_handle_raw(hnd, val)  do { (hnd).p = val; } while (0)
-#ifdef __XEN_TOOLS__
-#define get_xen_guest_handle(val, hnd)  do { val = (hnd).p; } while (0)
-#endif
-#define set_xen_guest_handle(hnd, val) set_xen_guest_handle_raw(hnd, val)
-
-#ifndef __ASSEMBLY__
-typedef unsigned long xen_pfn_t;
-#define PRI_xen_pfn "lx"
-#endif
-
-/* Arch specific VIRQs definition */
-#define VIRQ_ITC        VIRQ_ARCH_0 /* V. Virtual itc timer */
-#define VIRQ_MCA_CMC    VIRQ_ARCH_1 /* MCA cmc interrupt */
-#define VIRQ_MCA_CPE    VIRQ_ARCH_2 /* MCA cpe interrupt */
-
-/* Maximum number of virtual CPUs in multi-processor guests. */
-/* WARNING: before changing this, check that shared_info fits on a page */
-#define XEN_LEGACY_MAX_VCPUS 64
-
-/* IO ports location for PV.  */
-#define IO_PORTS_PADDR          0x00000ffffc000000UL
-#define IO_PORTS_SIZE           0x0000000004000000UL
-
-#ifndef __ASSEMBLY__
-
-typedef unsigned long xen_ulong_t;
-
-#ifdef __XEN_TOOLS__
-#define XEN_PAGE_SIZE XC_PAGE_SIZE
-#else
-#define XEN_PAGE_SIZE PAGE_SIZE
-#endif
-
-#define INVALID_MFN       (~0UL)
-
-struct pt_fpreg {
-    union {
-        unsigned long bits[2];
-        long double __dummy;    /* force 16-byte alignment */
-    } u;
-};
-
-union vac {
-    unsigned long value;
-    struct {
-        int a_int:1;
-        int a_from_int_cr:1;
-        int a_to_int_cr:1;
-        int a_from_psr:1;
-        int a_from_cpuid:1;
-        int a_cover:1;
-        int a_bsw:1;
-        long reserved:57;
-    };
-};
-typedef union vac vac_t;
-
-union vdc {
-    unsigned long value;
-    struct {
-        int d_vmsw:1;
-        int d_extint:1;
-        int d_ibr_dbr:1;
-        int d_pmc:1;
-        int d_to_pmd:1;
-        int d_itm:1;
-        long reserved:58;
-    };
-};
-typedef union vdc vdc_t;
-
-struct mapped_regs {
-    union vac   vac;
-    union vdc   vdc;
-    unsigned long  virt_env_vaddr;
-    unsigned long  reserved1[29];
-    unsigned long  vhpi;
-    unsigned long  reserved2[95];
-    union {
-        unsigned long  vgr[16];
-        unsigned long bank1_regs[16]; // bank1 regs (r16-r31) when bank0 active
-    };
-    union {
-        unsigned long  vbgr[16];
-        unsigned long bank0_regs[16]; // bank0 regs (r16-r31) when bank1 active
-    };
-    unsigned long  vnat;
-    unsigned long  vbnat;
-    unsigned long  vcpuid[5];
-    unsigned long  reserved3[11];
-    unsigned long  vpsr;
-    unsigned long  vpr;
-    unsigned long  reserved4[76];
-    union {
-        unsigned long  vcr[128];
-        struct {
-            unsigned long dcr;  // CR0
-            unsigned long itm;
-            unsigned long iva;
-            unsigned long rsv1[5];
-            unsigned long pta;  // CR8
-            unsigned long rsv2[7];
-            unsigned long ipsr;  // CR16
-            unsigned long isr;
-            unsigned long rsv3;
-            unsigned long iip;
-            unsigned long ifa;
-            unsigned long itir;
-            unsigned long iipa;
-            unsigned long ifs;
-            unsigned long iim;  // CR24
-            unsigned long iha;
-            unsigned long rsv4[38];
-            unsigned long lid;  // CR64
-            unsigned long ivr;
-            unsigned long tpr;
-            unsigned long eoi;
-            unsigned long irr[4];
-            unsigned long itv;  // CR72
-            unsigned long pmv;
-            unsigned long cmcv;
-            unsigned long rsv5[5];
-            unsigned long lrr0;  // CR80
-            unsigned long lrr1;
-            unsigned long rsv6[46];
-        };
-    };
-    union {
-        unsigned long  reserved5[128];
-        struct {
-            unsigned long precover_ifs;
-            unsigned long unat;  // not sure if this is needed until NaT arch is done
-            int interrupt_collection_enabled; // virtual psr.ic
-            /* virtual interrupt deliverable flag is evtchn_upcall_mask in
-             * shared info area now. interrupt_mask_addr is the address
-             * of evtchn_upcall_mask for current vcpu
-             */
-            unsigned char *interrupt_mask_addr;
-            int pending_interruption;
-            unsigned char vpsr_pp;
-            unsigned char vpsr_dfh;
-            unsigned char hpsr_dfh;
-            unsigned char hpsr_mfh;
-            unsigned long reserved5_1[4];
-            int metaphysical_mode; // 1 = use metaphys mapping, 0 = use virtual
-            int banknum; // 0 or 1, which virtual register bank is active
-            unsigned long rrs[8]; // region registers
-            unsigned long krs[8]; // kernel registers
-            unsigned long tmp[16]; // temp registers (e.g. for hyperprivops)
-
-            /* itc paravirtualization
-             * vAR.ITC = mAR.ITC + itc_offset
-             * itc_last is one which was lastly passed to
-             * the guest OS in order to prevent it from
-             * going backwords.
-             */
-            unsigned long itc_offset;
-            unsigned long itc_last;
-        };
-    };
-};
-typedef struct mapped_regs mapped_regs_t;
-
-struct vpd {
-    struct mapped_regs vpd_low;
-    unsigned long  reserved6[3456];
-    unsigned long  vmm_avail[128];
-    unsigned long  reserved7[4096];
-};
-typedef struct vpd vpd_t;
-
-struct arch_vcpu_info {
-};
-typedef struct arch_vcpu_info arch_vcpu_info_t;
-
-/*
- * This structure is used for magic page in domain pseudo physical address
- * space and the result of XENMEM_machine_memory_map.
- * As the XENMEM_machine_memory_map result,
- * xen_memory_map::nr_entries indicates the size in bytes 
- * including struct xen_ia64_memmap_info. Not the number of entries.
- */
-struct xen_ia64_memmap_info {
-    uint64_t efi_memmap_size;       /* size of EFI memory map */
-    uint64_t efi_memdesc_size;      /* size of an EFI memory map descriptor */
-    uint32_t efi_memdesc_version;   /* memory descriptor version */
-    void *memdesc[0];               /* array of efi_memory_desc_t */
-};
-typedef struct xen_ia64_memmap_info xen_ia64_memmap_info_t;
-
-struct arch_shared_info {
-    /* PFN of the start_info page.  */
-    unsigned long start_info_pfn;
-
-    /* Interrupt vector for event channel.  */
-    int evtchn_vector;
-
-    /* PFN of memmap_info page */
-    unsigned int memmap_info_num_pages;/* currently only = 1 case is
-                                          supported. */
-    unsigned long memmap_info_pfn;
-
-    uint64_t pad[31];
-};
-typedef struct arch_shared_info arch_shared_info_t;
-
-typedef unsigned long xen_callback_t;
-
-struct ia64_tr_entry {
-    unsigned long pte;
-    unsigned long itir;
-    unsigned long vadr;
-    unsigned long rid;
-};
-typedef struct ia64_tr_entry ia64_tr_entry_t;
-DEFINE_XEN_GUEST_HANDLE(ia64_tr_entry_t);
-
-struct vcpu_tr_regs {
-    struct ia64_tr_entry itrs[12];
-    struct ia64_tr_entry dtrs[12];
-};
-
-union vcpu_ar_regs {
-    unsigned long ar[128];
-    struct {
-        unsigned long kr[8];
-        unsigned long rsv1[8];
-        unsigned long rsc;
-        unsigned long bsp;
-        unsigned long bspstore;
-        unsigned long rnat;
-        unsigned long rsv2;
-        unsigned long fcr;
-        unsigned long rsv3[2];
-        unsigned long eflag;
-        unsigned long csd;
-        unsigned long ssd;
-        unsigned long cflg;
-        unsigned long fsr;
-        unsigned long fir;
-        unsigned long fdr;
-        unsigned long rsv4;
-        unsigned long ccv; /* 32 */
-        unsigned long rsv5[3];
-        unsigned long unat;
-        unsigned long rsv6[3];
-        unsigned long fpsr;
-        unsigned long rsv7[3];
-        unsigned long itc;
-        unsigned long rsv8[3];
-        unsigned long ign1[16];
-        unsigned long pfs; /* 64 */
-        unsigned long lc;
-        unsigned long ec;
-        unsigned long rsv9[45];
-        unsigned long ign2[16];
-    };
-};
-
-union vcpu_cr_regs {
-    unsigned long cr[128];
-    struct {
-        unsigned long dcr;  // CR0
-        unsigned long itm;
-        unsigned long iva;
-        unsigned long rsv1[5];
-        unsigned long pta;  // CR8
-        unsigned long rsv2[7];
-        unsigned long ipsr;  // CR16
-        unsigned long isr;
-        unsigned long rsv3;
-        unsigned long iip;
-        unsigned long ifa;
-        unsigned long itir;
-        unsigned long iipa;
-        unsigned long ifs;
-        unsigned long iim;  // CR24
-        unsigned long iha;
-        unsigned long rsv4[38];
-        unsigned long lid;  // CR64
-        unsigned long ivr;
-        unsigned long tpr;
-        unsigned long eoi;
-        unsigned long irr[4];
-        unsigned long itv;  // CR72
-        unsigned long pmv;
-        unsigned long cmcv;
-        unsigned long rsv5[5];
-        unsigned long lrr0;  // CR80
-        unsigned long lrr1;
-        unsigned long rsv6[46];
-    };
-};
-
-struct vcpu_guest_context_regs {
-        unsigned long r[32];
-        unsigned long b[8];
-        unsigned long bank[16];
-        unsigned long ip;
-        unsigned long psr;
-        unsigned long cfm;
-        unsigned long pr;
-        unsigned int nats; /* NaT bits for r1-r31.  */
-        unsigned int bnats; /* Nat bits for banked registers.  */
-        union vcpu_ar_regs ar;
-        union vcpu_cr_regs cr;
-        struct pt_fpreg f[128];
-        unsigned long dbr[8];
-        unsigned long ibr[8];
-        unsigned long rr[8];
-        unsigned long pkr[16];
-
-        /* FIXME: cpuid,pmd,pmc */
-
-        unsigned long xip;
-        unsigned long xpsr;
-        unsigned long xfs;
-        unsigned long xr[4];
-
-        struct vcpu_tr_regs tr;
-
-        /* Physical registers in case of debug event.  */
-        unsigned long excp_iipa;
-        unsigned long excp_ifa;
-        unsigned long excp_isr;
-        unsigned int excp_vector;
-
-        /*
-         * The rbs is intended to be the image of the stacked registers still
-         * in the cpu (not yet stored in memory).  It is laid out as if it
-         * were written in memory at a 512 (64*8) aligned address + offset.
-         * rbs_voff is (offset / 8).  rbs_nat contains NaT bits for the
-         * remaining rbs registers.  rbs_rnat contains NaT bits for in memory
-         * rbs registers.
-         * Note: loadrs is 2**14 bytes == 2**11 slots.
-         */
-        unsigned int rbs_voff;
-        unsigned long rbs[2048];
-        unsigned long rbs_rnat;
-
-        /*
-         * RSE.N_STACKED_PHYS via PAL_RSE_INFO
-         * Strictly this isn't cpu context, but this value is necessary
-         * for domain save/restore. So is here.
-         */
-        unsigned long num_phys_stacked;
-};
-
-struct vcpu_guest_context {
-#define VGCF_EXTRA_REGS (1UL << 1)     /* Set extra regs.  */
-#define VGCF_SET_CR_IRR (1UL << 2)     /* Set cr_irr[0:3]. */
-#define VGCF_online     (1UL << 3)  /* make this vcpu online */
-#define VGCF_SET_AR_ITC (1UL << 4)  /* set pv ar.itc. itc_offset, itc_last */
-    unsigned long flags;       /* VGCF_* flags */
-
-    struct vcpu_guest_context_regs regs;
-
-    unsigned long event_callback_ip;
-
-    /* xen doesn't share privregs pages with hvm domain so that this member
-     * doesn't make sense for hvm domain.
-     * ~0UL is already used for INVALID_P2M_ENTRY. */
-#define VGC_PRIVREGS_HVM       (~(-2UL))
-    unsigned long privregs_pfn;
-};
-typedef struct vcpu_guest_context vcpu_guest_context_t;
-DEFINE_XEN_GUEST_HANDLE(vcpu_guest_context_t);
-
-/* dom0 vp op */
-#define __HYPERVISOR_ia64_dom0vp_op     __HYPERVISOR_arch_0
-/*  Map io space in machine address to dom0 physical address space.
-    Currently physical assigned address equals to machine address.  */
-#define IA64_DOM0VP_ioremap             0
-
-/* Convert a pseudo physical page frame number to the corresponding
-   machine page frame number. If no page is assigned, INVALID_MFN or
-   GPFN_INV_MASK is returned depending on domain's non-vti/vti mode.  */
-#define IA64_DOM0VP_phystomach          1
-
-/* Convert a machine page frame number to the corresponding pseudo physical
-   page frame number of the caller domain.  */
-#define IA64_DOM0VP_machtophys          3
-
-/* Reserved for future use.  */
-#define IA64_DOM0VP_iounmap             4
-
-/* Unmap and free pages contained in the specified pseudo physical region.  */
-#define IA64_DOM0VP_zap_physmap         5
-
-/* Assign machine page frame to dom0's pseudo physical address space.  */
-#define IA64_DOM0VP_add_physmap         6
-
-/* expose the p2m table into domain */
-#define IA64_DOM0VP_expose_p2m          7
-
-/* xen perfmon */
-#define IA64_DOM0VP_perfmon             8
-
-/* gmfn version of IA64_DOM0VP_add_physmap */
-#define IA64_DOM0VP_add_physmap_with_gmfn       9
-
-/* get fpswa revision */
-#define IA64_DOM0VP_fpswa_revision      10
-
-/* Add an I/O port space range */
-#define IA64_DOM0VP_add_io_space        11
-
-/* expose the foreign domain's p2m table into privileged domain */
-#define IA64_DOM0VP_expose_foreign_p2m  12
-#define         IA64_DOM0VP_EFP_ALLOC_PTE       0x1 /* allocate p2m table */
-
-/* unexpose the foreign domain's p2m table into privileged domain */
-#define IA64_DOM0VP_unexpose_foreign_p2m        13
-
-/* get memmap_info and memmap. It is possible to map the page directly
-   by foreign page mapping, but there is a race between writer.
-   This hypercall avoids such race. */
-#define IA64_DOM0VP_get_memmap          14
-
-// flags for page assignement to pseudo physical address space
-#define _ASSIGN_readonly                0
-#define ASSIGN_readonly                 (1UL << _ASSIGN_readonly)
-#define ASSIGN_writable                 (0UL << _ASSIGN_readonly) // dummy flag
-/* Internal only: memory attribute must be WC/UC/UCE.  */
-#define _ASSIGN_nocache                 1
-#define ASSIGN_nocache                  (1UL << _ASSIGN_nocache)
-// tlb tracking
-#define _ASSIGN_tlb_track               2
-#define ASSIGN_tlb_track                (1UL << _ASSIGN_tlb_track)
-/* Internal only: associated with PGC_allocated bit */
-#define _ASSIGN_pgc_allocated           3
-#define ASSIGN_pgc_allocated            (1UL << _ASSIGN_pgc_allocated)
-/* Page is an IO page.  */
-#define _ASSIGN_io                      4
-#define ASSIGN_io                       (1UL << _ASSIGN_io)
-
-/* This structure has the same layout of struct ia64_boot_param, defined in
-   <asm/system.h>.  It is redefined here to ease use.  */
-struct xen_ia64_boot_param {
-       unsigned long command_line;     /* physical address of cmd line args */
-       unsigned long efi_systab;       /* physical address of EFI system table */
-       unsigned long efi_memmap;       /* physical address of EFI memory map */
-       unsigned long efi_memmap_size;  /* size of EFI memory map */
-       unsigned long efi_memdesc_size; /* size of an EFI memory map descriptor */
-       unsigned int  efi_memdesc_version;      /* memory descriptor version */
-       struct {
-               unsigned short num_cols;        /* number of columns on console.  */
-               unsigned short num_rows;        /* number of rows on console.  */
-               unsigned short orig_x;  /* cursor's x position */
-               unsigned short orig_y;  /* cursor's y position */
-       } console_info;
-       unsigned long fpswa;            /* physical address of the fpswa interface */
-       unsigned long initrd_start;
-       unsigned long initrd_size;
-       unsigned long domain_start;     /* va where the boot time domain begins */
-       unsigned long domain_size;      /* how big is the boot domain */
-};
-
-#endif /* !__ASSEMBLY__ */
-
-/* Size of the shared_info area (this is not related to page size).  */
-#define XSI_SHIFT                      14
-#define XSI_SIZE                       (1 << XSI_SHIFT)
-/* Log size of mapped_regs area (64 KB - only 4KB is used).  */
-#define XMAPPEDREGS_SHIFT              12
-#define XMAPPEDREGS_SIZE               (1 << XMAPPEDREGS_SHIFT)
-/* Offset of XASI (Xen arch shared info) wrt XSI_BASE.  */
-#define XMAPPEDREGS_OFS                        XSI_SIZE
-
-/* Hyperprivops.  */
-#define HYPERPRIVOP_START              0x1
-#define HYPERPRIVOP_RFI                        (HYPERPRIVOP_START + 0x0)
-#define HYPERPRIVOP_RSM_DT             (HYPERPRIVOP_START + 0x1)
-#define HYPERPRIVOP_SSM_DT             (HYPERPRIVOP_START + 0x2)
-#define HYPERPRIVOP_COVER              (HYPERPRIVOP_START + 0x3)
-#define HYPERPRIVOP_ITC_D              (HYPERPRIVOP_START + 0x4)
-#define HYPERPRIVOP_ITC_I              (HYPERPRIVOP_START + 0x5)
-#define HYPERPRIVOP_SSM_I              (HYPERPRIVOP_START + 0x6)
-#define HYPERPRIVOP_GET_IVR            (HYPERPRIVOP_START + 0x7)
-#define HYPERPRIVOP_GET_TPR            (HYPERPRIVOP_START + 0x8)
-#define HYPERPRIVOP_SET_TPR            (HYPERPRIVOP_START + 0x9)
-#define HYPERPRIVOP_EOI                        (HYPERPRIVOP_START + 0xa)
-#define HYPERPRIVOP_SET_ITM            (HYPERPRIVOP_START + 0xb)
-#define HYPERPRIVOP_THASH              (HYPERPRIVOP_START + 0xc)
-#define HYPERPRIVOP_PTC_GA             (HYPERPRIVOP_START + 0xd)
-#define HYPERPRIVOP_ITR_D              (HYPERPRIVOP_START + 0xe)
-#define HYPERPRIVOP_GET_RR             (HYPERPRIVOP_START + 0xf)
-#define HYPERPRIVOP_SET_RR             (HYPERPRIVOP_START + 0x10)
-#define HYPERPRIVOP_SET_KR             (HYPERPRIVOP_START + 0x11)
-#define HYPERPRIVOP_FC                 (HYPERPRIVOP_START + 0x12)
-#define HYPERPRIVOP_GET_CPUID          (HYPERPRIVOP_START + 0x13)
-#define HYPERPRIVOP_GET_PMD            (HYPERPRIVOP_START + 0x14)
-#define HYPERPRIVOP_GET_EFLAG          (HYPERPRIVOP_START + 0x15)
-#define HYPERPRIVOP_SET_EFLAG          (HYPERPRIVOP_START + 0x16)
-#define HYPERPRIVOP_RSM_BE             (HYPERPRIVOP_START + 0x17)
-#define HYPERPRIVOP_GET_PSR            (HYPERPRIVOP_START + 0x18)
-#define HYPERPRIVOP_SET_RR0_TO_RR4     (HYPERPRIVOP_START + 0x19)
-#define HYPERPRIVOP_MAX                        (0x1a)
-
-/* Fast and light hypercalls.  */
-#define __HYPERVISOR_ia64_fast_eoi     __HYPERVISOR_arch_1
-
-/* Extra debug features.  */
-#define __HYPERVISOR_ia64_debug_op  __HYPERVISOR_arch_2
-
-/* Xencomm macros.  */
-#define XENCOMM_INLINE_MASK 0xf800000000000000UL
-#define XENCOMM_INLINE_FLAG 0x8000000000000000UL
-
-#ifndef __ASSEMBLY__
-
-/*
- * Optimization features.
- * The hypervisor may do some special optimizations for guests. This hypercall
- * can be used to switch on/of these special optimizations.
- */
-#define __HYPERVISOR_opt_feature       0x700UL
-
-#define XEN_IA64_OPTF_OFF      0x0
-#define XEN_IA64_OPTF_ON       0x1
-
-/*
- * If this feature is switched on, the hypervisor inserts the
- * tlb entries without calling the guests traphandler.
- * This is useful in guests using region 7 for identity mapping
- * like the linux kernel does.
- */
-#define XEN_IA64_OPTF_IDENT_MAP_REG7    1
-
-/* Identity mapping of region 4 addresses in HVM. */
-#define XEN_IA64_OPTF_IDENT_MAP_REG4    2
-
-/* Identity mapping of region 5 addresses in HVM. */
-#define XEN_IA64_OPTF_IDENT_MAP_REG5    3
-
-#define XEN_IA64_OPTF_IDENT_MAP_NOT_SET  (0)
-
-struct xen_ia64_opt_feature {
-       unsigned long cmd;              /* Which feature */
-       unsigned char on;               /* Switch feature on/off */
-       union {
-               struct {
-                               /* The page protection bit mask of the pte.
-                                * This will be or'ed with the pte. */
-                       unsigned long pgprot;
-                       unsigned long key;      /* A protection key for itir. */
-               };
-       };
-};
-
-#endif /* __ASSEMBLY__ */
-
-/* xen perfmon */
-#ifdef XEN
-#ifndef __ASSEMBLY__
-#ifndef _ASM_IA64_PERFMON_H
-
-#include <xen/list.h>   // asm/perfmon.h requires struct list_head
-#include <asm/perfmon.h>
-// for PFM_xxx and pfarg_features_t, pfarg_context_t, pfarg_reg_t, pfarg_load_t
-
-#endif /* _ASM_IA64_PERFMON_H */
-
-DEFINE_XEN_GUEST_HANDLE(pfarg_features_t);
-DEFINE_XEN_GUEST_HANDLE(pfarg_context_t);
-DEFINE_XEN_GUEST_HANDLE(pfarg_reg_t);
-DEFINE_XEN_GUEST_HANDLE(pfarg_load_t);
-#endif /* __ASSEMBLY__ */
-#endif /* XEN */
-
-#ifndef __ASSEMBLY__
-#include "arch-ia64/hvm/memmap.h"
-#endif
-
-#endif /* __HYPERVISOR_IF_IA64_H__ */
-
-/*
- * Local variables:
- * mode: C
- * c-set-style: "BSD"
- * c-basic-offset: 4
- * tab-width: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/include/public/arch-ia64/debug_op.h b/xen/include/public/arch-ia64/debug_op.h
deleted file mode 100644 (file)
index 8f47358..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-/******************************************************************************
- * debug_op.h
- *
- * Copyright (c) 2007 Tristan Gingold <tgingold@free.fr>
- *
- * 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.
- */
-
-#ifndef __XEN_PUBLIC_IA64_DEBUG_OP_H__
-#define __XEN_PUBLIC_IA64_DEBUG_OP_H__
-
-/* Set/Get extra conditions to break.  */
-#define XEN_IA64_DEBUG_OP_SET_FLAGS 1
-#define XEN_IA64_DEBUG_OP_GET_FLAGS 2
-
-/* Break on kernel single step.  */
-#define XEN_IA64_DEBUG_ON_KERN_SSTEP   (1 << 0)
-
-/* Break on kernel debug (breakpoint or watch point).  */
-#define XEN_IA64_DEBUG_ON_KERN_DEBUG   (1 << 1)
-
-/* Break on kernel taken branch.  */
-#define XEN_IA64_DEBUG_ON_KERN_TBRANCH (1 << 2)
-
-/* Break on interrupt injection.  */
-#define XEN_IA64_DEBUG_ON_EXTINT       (1 << 3)
-
-/* Break on interrupt injection.  */
-#define XEN_IA64_DEBUG_ON_EXCEPT       (1 << 4)
-
-/* Break on event injection.  */
-#define XEN_IA64_DEBUG_ON_EVENT        (1 << 5)
-
-/* Break on privop/virtualized instruction (slow path only).  */
-#define XEN_IA64_DEBUG_ON_PRIVOP       (1 << 6)
-
-/* Break on emulated PAL call (at entry).  */
-#define XEN_IA64_DEBUG_ON_PAL          (1 << 7)
-
-/* Break on emulated SAL call (at entry).  */
-#define XEN_IA64_DEBUG_ON_SAL          (1 << 8)
-
-/* Break on emulated EFI call (at entry).  */
-#define XEN_IA64_DEBUG_ON_EFI          (1 << 9)
-
-/* Break on rfi emulation (slow path only, before exec).  */
-#define XEN_IA64_DEBUG_ON_RFI          (1 << 10)
-
-/* Break on address translation switch.  */
-#define XEN_IA64_DEBUG_ON_MMU          (1 << 11)
-
-/* Break on bad guest physical address.  */
-#define XEN_IA64_DEBUG_ON_BAD_MPA      (1 << 12)
-
-/* Force psr.ss bit.  */
-#define XEN_IA64_DEBUG_FORCE_SS        (1 << 13)
-
-/* Force psr.db bit.  */
-#define XEN_IA64_DEBUG_FORCE_DB        (1 << 14)
-
-/* Break on ITR/PTR.  */
-#define XEN_IA64_DEBUG_ON_TR           (1 << 15)
-
-/* Break on ITC/PTC.L/PTC.G/PTC.GA.  */
-#define XEN_IA64_DEBUG_ON_TC           (1 << 16)
-
-/* Get translation cache.  */
-#define XEN_IA64_DEBUG_OP_GET_TC   3
-
-/* Translate virtual address to guest physical address.  */
-#define XEN_IA64_DEBUG_OP_TRANSLATE 4
-
-union xen_ia64_debug_op {
-    uint64_t flags;
-    struct xen_ia64_debug_vtlb {
-        uint64_t nbr;                             /* IN/OUT */
-        XEN_GUEST_HANDLE_64(ia64_tr_entry_t) tr;  /* IN/OUT */
-    } vtlb;
-};
-typedef union xen_ia64_debug_op xen_ia64_debug_op_t;
-DEFINE_XEN_GUEST_HANDLE(xen_ia64_debug_op_t);
-
-#endif /* __XEN_PUBLIC_IA64_DEBUG_OP_H__ */
diff --git a/xen/include/public/arch-ia64/hvm/memmap.h b/xen/include/public/arch-ia64/hvm/memmap.h
deleted file mode 100644 (file)
index 68d14f3..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/******************************************************************************
- * memmap.h
- *
- * Copyright (c) 2008 Tristan Gingold <tgingold AT free fr>
- *
- * 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.
- */
-
-#ifndef __XEN_PUBLIC_HVM_MEMMAP_IA64_H__
-#define __XEN_PUBLIC_HVM_MEMMAP_IA64_H__
-
-#define MEM_G  (1UL << 30)
-#define MEM_M  (1UL << 20)
-#define MEM_K  (1UL << 10)
-
-/* Guest physical address of IO ports space.  */
-#define MMIO_START  (3 * MEM_G)
-#define MMIO_SIZE   (512 * MEM_M)
-
-#define VGA_IO_START  0xA0000UL
-#define VGA_IO_SIZE   0x20000
-
-#define LEGACY_IO_START  (MMIO_START + MMIO_SIZE)
-#define LEGACY_IO_SIZE   (64 * MEM_M)
-
-#define IO_PAGE_START  (LEGACY_IO_START + LEGACY_IO_SIZE)
-#define IO_PAGE_SIZE   XEN_PAGE_SIZE
-
-#define STORE_PAGE_START  (IO_PAGE_START + IO_PAGE_SIZE)
-#define STORE_PAGE_SIZE   XEN_PAGE_SIZE
-
-#define BUFFER_IO_PAGE_START  (STORE_PAGE_START + STORE_PAGE_SIZE)
-#define BUFFER_IO_PAGE_SIZE   XEN_PAGE_SIZE
-
-#define BUFFER_PIO_PAGE_START  (BUFFER_IO_PAGE_START + BUFFER_IO_PAGE_SIZE)
-#define BUFFER_PIO_PAGE_SIZE   XEN_PAGE_SIZE
-
-#define IO_SAPIC_START  0xfec00000UL
-#define IO_SAPIC_SIZE   0x100000
-
-#define PIB_START  0xfee00000UL
-#define PIB_SIZE   0x200000
-
-#define GFW_START  (4 * MEM_G - 16 * MEM_M)
-#define GFW_SIZE   (16 * MEM_M)
-
-/* domVTI */
-#define GPFN_FRAME_BUFFER  0x1 /* VGA framebuffer */
-#define GPFN_LOW_MMIO      0x2 /* Low MMIO range */
-#define GPFN_PIB           0x3 /* PIB base */
-#define GPFN_IOSAPIC       0x4 /* IOSAPIC base */
-#define GPFN_LEGACY_IO     0x5 /* Legacy I/O base */
-#define GPFN_HIGH_MMIO     0x6 /* High MMIO range */
-
-/* Nvram belongs to GFW memory space  */
-#define NVRAM_SIZE   (MEM_K * 64)
-#define NVRAM_START  (GFW_START + 10 * MEM_M)
-
-#define NVRAM_VALID_SIG  0x4650494e45584948 /* "HIXENIPF" */
-struct nvram_save_addr {
-    unsigned long addr;
-    unsigned long signature;
-};
-
-#endif /* __XEN_PUBLIC_HVM_MEMMAP_IA64_H__ */
-
-/*
- * Local variables:
- * mode: C
- * c-set-style: "BSD"
- * c-basic-offset: 4
- * tab-width: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/include/public/arch-ia64/hvm/save.h b/xen/include/public/arch-ia64/hvm/save.h
deleted file mode 100644 (file)
index c44e913..0000000
+++ /dev/null
@@ -1,208 +0,0 @@
-/******************************************************************************
- * save_types.h
- *
- * Copyright (c) 2007 Isaku Yamahata <yamahata at valinux co jp>
- *                    VA Linux Systems Japan K.K.
- *
- * 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.
- */
-
-#ifndef __XEN_PUBLIC_HVM_SAVE_IA64_H__
-#define __XEN_PUBLIC_HVM_SAVE_IA64_H__
-
-#include "../../hvm/save.h"
-#include "../../arch-ia64.h"
-
-/* 
- * Save/restore header: general info about the save file. 
- */
-
-/* x86 uses 0x54381286 */
-#define HVM_FILE_MAGIC   0x343641492f6e6558UL   /* "Xen/IA64" */
-#define HVM_FILE_VERSION 0x0000000000000001UL
-
-struct hvm_save_header {
-    uint64_t magic;             /* Must be HVM_FILE_MAGIC */
-    uint64_t version;           /* File format version */
-    uint64_t changeset;         /* Version of Xen that saved this file */
-    uint64_t cpuid[5];          /* CPUID[0x01][%eax] on the saving machine */
-};
-
-DECLARE_HVM_SAVE_TYPE(HEADER, 1, struct hvm_save_header);
-
-/*
- * CPU
- */
-struct hvm_hw_ia64_cpu {
-    uint64_t    ipsr;
-};
-DECLARE_HVM_SAVE_TYPE(CPU, 2, struct hvm_hw_ia64_cpu);
-
-/*
- * CPU
- */
-struct hvm_hw_ia64_vpd {
-    struct vpd      vpd;
-};
-DECLARE_HVM_SAVE_TYPE(VPD, 3, struct hvm_hw_ia64_vpd);
-
-/*
- * device dependency
- * vacpi => viosapic => vlsapic
- */
-/*
- * vlsapic
- */
-struct hvm_hw_ia64_vlsapic {
-    uint64_t insvc[4];
-    uint64_t vhpi; // ??? should this be saved in vpd
-    uint8_t xtp;
-    uint8_t pal_init_pending;
-    uint8_t pad[2];
-};
-DECLARE_HVM_SAVE_TYPE(VLSAPIC, 4, struct hvm_hw_ia64_vlsapic);
-/* set
- * unconditionaly set v->arch.irq_new_peding = 1 
- * unconditionaly set v->arch.irq_new_condition = 0
- */
-
-/*
- * vtime
- */
-/* itc, itm, itv are saved by arch vcpu context */
-struct hvm_hw_ia64_vtime {
-    uint64_t itc;
-    uint64_t itm;
-
-    uint64_t last_itc;
-    uint64_t pending;
-};
-DECLARE_HVM_SAVE_TYPE(VTIME, 5, struct hvm_hw_ia64_vtime);
-/*
- * calculate v->vtm.vtm_offset
- * ??? Or should vtm_offset be set by leave_hypervisor_tail()?
- * start vtm_timer if necessary by vtm_set_itm().
- * ??? Or should vtm_timer be set by leave_hypervisor_tail()?
- *
- * ??? or should be done by schedule_tail()
- *        => schedule_tail() should do.
- */
-
-/*
- * viosapic
- */
-#define VIOSAPIC_NUM_PINS     48
-
-/* To share VT-d code which uses vioapic_redir_entry.
- * Although on ia64 this is for vsapic, but we have to vioapic_redir_entry
- * instead of viosapic_redir_entry.
- */
-union vioapic_redir_entry
-{
-    uint64_t bits;
-    struct {
-        uint8_t vector;
-
-        uint8_t delivery_mode  : 3;
-        uint8_t reserve1       : 1;
-        uint8_t delivery_status: 1;
-        uint8_t polarity       : 1;
-        uint8_t reserve2       : 1;
-        uint8_t trig_mode      : 1;
-
-        uint8_t mask           : 1;
-        uint8_t reserve3       : 7;
-
-        uint8_t reserved[3];
-        uint16_t dest_id;
-    } fields;
-};
-
-struct hvm_hw_ia64_viosapic {
-    uint64_t    irr;
-    uint64_t    isr;
-    uint32_t    ioregsel;
-    uint32_t    pad;
-    uint64_t    lowest_vcpu_id;
-    uint64_t    base_address;
-    union vioapic_redir_entry  redirtbl[VIOSAPIC_NUM_PINS];
-};
-DECLARE_HVM_SAVE_TYPE(VIOSAPIC, 6, struct hvm_hw_ia64_viosapic);
-  
-/*
- * vacpi
- * PM timer
- */
-struct vacpi_regs {
-    union {
-        struct {
-            uint32_t pm1a_sts:16;/* PM1a_EVT_BLK.PM1a_STS: status register */
-            uint32_t pm1a_en:16; /* PM1a_EVT_BLK.PM1a_EN: enable register */
-        };
-        uint32_t evt_blk;
-    };
-    uint32_t tmr_val;   /* PM_TMR_BLK.TMR_VAL: 32bit free-running counter */
-};
-
-struct hvm_hw_ia64_vacpi {
-    struct vacpi_regs   regs;
-};
-DECLARE_HVM_SAVE_TYPE(VACPI, 7, struct hvm_hw_ia64_vacpi);
-/* update last_gtime and setup timer of struct vacpi */
-
-/*
- * opt_feature: identity mapping of region 4, 5 and 7.
- * With the c/s 16396:d2935f9c217f of xen-ia64-devel.hg,
- * opt_feature hypercall supports only region 4,5,7 identity mappings.
- * structure hvm_hw_ia64_identity_mappings only supports them.
- * The new structure, struct hvm_hw_ia64_identity_mappings, is created to
- * avoid to keep up with change of the xen/ia64 internal structure, struct
- * opt_feature.
- *
- * If it is enhanced in the future, new structure will be created.
- */
-struct hvm_hw_ia64_identity_mapping {
-    uint64_t on;        /* on/off */
-    uint64_t pgprot;    /* The page protection bit mask of the pte. */
-    uint64_t key;       /* A protection key. */
-};
-
-struct hvm_hw_ia64_identity_mappings {
-    struct hvm_hw_ia64_identity_mapping im_reg4;/* Region 4 identity mapping */
-    struct hvm_hw_ia64_identity_mapping im_reg5;/* Region 5 identity mapping */
-    struct hvm_hw_ia64_identity_mapping im_reg7;/* Region 7 identity mapping */
-};
-DECLARE_HVM_SAVE_TYPE(OPT_FEATURE_IDENTITY_MAPPINGS, 8, struct hvm_hw_ia64_identity_mappings);
-
-/* 
- * Largest type-code in use
- */
-#define HVM_SAVE_CODE_MAX       8
-
-#endif /* __XEN_PUBLIC_HVM_SAVE_IA64_H__ */
-
-/*
- * Local variables:
- * mode: C
- * c-set-style: "BSD"
- * c-basic-offset: 4
- * tab-width: 4
- * indent-tabs-mode: nil
- * End:
- */
diff --git a/xen/include/public/arch-ia64/sioemu.h b/xen/include/public/arch-ia64/sioemu.h
deleted file mode 100644 (file)
index d48da1a..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-/******************************************************************************
- * sioemu.h
- *
- * Copyright (c) 2008 Tristan Gingold <tgingold@free.fr>
- *
- * 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.
- */
-
-#ifndef __XEN_PUBLIC_IA64_SIOEMU_H__
-#define __XEN_PUBLIC_IA64_SIOEMU_H__
-
-/* SIOEMU specific hypercalls.
-   The numbers are the minor part of FW_HYPERCALL_SIOEMU.  */
-
-/* Defines the callback entry point.  r8=ip, r9=data.
-   Must be called per-vcpu.  */
-#define SIOEMU_HYPERCALL_SET_CALLBACK 0x01
-
-/* Finish sioemu fw initialization and start firmware.  r8=ip.  */
-#define SIOEMU_HYPERCALL_START_FW 0x02
-
-/* Add IO pages in physmap.  */
-#define SIOEMU_HYPERCALL_ADD_IO_PHYSMAP 0x03
-
-/* Get wallclock time.  */
-#define SIOEMU_HYPERCALL_GET_TIME 0x04
-
-/* Flush cache.  */
-#define SIOEMU_HYPERCALL_FLUSH_CACHE 0x07
-
-/* Get freq base.  */
-#define SIOEMU_HYPERCALL_FREQ_BASE 0x08
-
-/* Return from callback.  */
-#define SIOEMU_HYPERCALL_CALLBACK_RETURN 0x09
-
-/* Deliver an interrupt.  */
-#define SIOEMU_HYPERCALL_DELIVER_INT 0x0a
-
-/* SIOEMU callback reason.  */
-
-/* An event (from event channel) has to be delivered.  */
-#define SIOEMU_CB_EVENT       0x00
-
-/* Emulate an IO access.  */
-#define SIOEMU_CB_IO_EMULATE  0x01
-
-/* An IPI is sent to a dead vcpu.  */
-#define SIOEMU_CB_WAKEUP_VCPU 0x02
-
-/* A SAL hypercall is executed.  */
-#define SIOEMU_CB_SAL_ASSIST  0x03
-
-#ifndef __ASSEMBLY__
-struct sioemu_callback_info {
-    /* Saved registers.  */
-    unsigned long ip;
-    unsigned long psr;
-    unsigned long ifs;
-    unsigned long nats;
-    unsigned long r8;
-    unsigned long r9;
-    unsigned long r10;
-    unsigned long r11;
-
-    /* Callback parameters.  */
-    unsigned long cause;
-    unsigned long arg0;
-    unsigned long arg1;
-    unsigned long arg2;
-    unsigned long arg3;
-    unsigned long _pad2[2];
-    unsigned long r2;
-};
-#endif /* __ASSEMBLY__ */
-#endif /* __XEN_PUBLIC_IA64_SIOEMU_H__ */
index f4962f66d8cb16cfba1e968867ed166fb17291a4..6d6b517d6d64d4c4058abb9f79003b527e03cbd4 100644 (file)
@@ -36,7 +36,7 @@
  * @extra_args == Operation-specific extra arguments (NULL if none).
  */
 
-/* ia64, x86: Callback for event delivery. */
+/* x86: Callback for event delivery. */
 #define CALLBACKTYPE_event                 0
 
 /* x86: Failsafe callback when guest state cannot be restored by Xen. */
index 240ceb9cace2862be15edf498ec7d6030237d21e..f367ce2b2cf95f8acbb01558d1b10d1648fb6669 100644 (file)
@@ -392,13 +392,6 @@ DEFINE_XEN_GUEST_HANDLE(xen_domctl_hypercall_init_t);
 #define XEN_DOMAINSETUP_sioemu_guest  (1UL<<_XEN_DOMAINSETUP_sioemu_guest)
 typedef struct xen_domctl_arch_setup {
     uint64_aligned_t flags;  /* XEN_DOMAINSETUP_* */
-#ifdef __ia64__
-    uint64_aligned_t bp;     /* mpaddr of boot param area */
-    uint64_aligned_t maxmem; /* Highest memory address for MDT.  */
-    uint64_aligned_t xsi_va; /* Xen shared_info area virtual address.  */
-    uint32_t hypercall_imm;  /* Break imm for Xen hypercalls.  */
-    int8_t vhpt_size_log2;   /* Log2 of VHPT size. */
-#endif
 } xen_domctl_arch_setup_t;
 DEFINE_XEN_GUEST_HANDLE(xen_domctl_arch_setup_t);
 
@@ -577,21 +570,6 @@ struct xen_domctl_ext_vcpucontext {
 typedef struct xen_domctl_ext_vcpucontext xen_domctl_ext_vcpucontext_t;
 DEFINE_XEN_GUEST_HANDLE(xen_domctl_ext_vcpucontext_t);
 
-/*
- * Set optimizaton features for a domain
- */
-/* XEN_DOMCTL_set_opt_feature */
-struct xen_domctl_set_opt_feature {
-#if defined(__ia64__)
-    struct xen_ia64_opt_feature optf;
-#else
-    /* Make struct non-empty: do not depend on this field name! */
-    uint64_t dummy;
-#endif
-};
-typedef struct xen_domctl_set_opt_feature xen_domctl_set_opt_feature_t;
-DEFINE_XEN_GUEST_HANDLE(xen_domctl_set_opt_feature_t);
-
 /*
  * Set the target domain for a domain
  */
@@ -891,7 +869,7 @@ struct xen_domctl {
 #define XEN_DOMCTL_pin_mem_cacheattr             41
 #define XEN_DOMCTL_set_ext_vcpucontext           42
 #define XEN_DOMCTL_get_ext_vcpucontext           43
-#define XEN_DOMCTL_set_opt_feature               44
+#define XEN_DOMCTL_set_opt_feature               44 /* Obsolete IA64 only */
 #define XEN_DOMCTL_test_assign_device            45
 #define XEN_DOMCTL_set_target                    46
 #define XEN_DOMCTL_deassign_device               47
@@ -956,7 +934,6 @@ struct xen_domctl {
         struct xen_domctl_ioport_mapping    ioport_mapping;
         struct xen_domctl_pin_mem_cacheattr pin_mem_cacheattr;
         struct xen_domctl_ext_vcpucontext   ext_vcpucontext;
-        struct xen_domctl_set_opt_feature   set_opt_feature;
         struct xen_domctl_set_target        set_target;
         struct xen_domctl_subscribe         subscribe;
         struct xen_domctl_debug_op          debug_op;
index 4022a1ddc4bb64ec13ed4791a355fd7d0d5b8052..90feb7cde5a69e7557ef94b15337daf6461514a2 100644 (file)
@@ -82,24 +82,6 @@ struct buffered_iopage {
 }; /* NB. Size of this structure must be no greater than one page. */
 typedef struct buffered_iopage buffered_iopage_t;
 
-#if defined(__ia64__)
-struct pio_buffer {
-    uint32_t page_offset;
-    uint32_t pointer;
-    uint32_t data_end;
-    uint32_t buf_size;
-    void *opaque;
-};
-
-#define PIO_BUFFER_IDE_PRIMARY   0 /* I/O port = 0x1F0 */
-#define PIO_BUFFER_IDE_SECONDARY 1 /* I/O port = 0x170 */
-#define PIO_BUFFER_ENTRY_NUM     2
-struct buffered_piopage {
-    struct pio_buffer pio[PIO_BUFFER_ENTRY_NUM];
-    uint8_t buffer[1];
-};
-#endif /* defined(__ia64__) */
-
 /*
  * ACPI Control/Event register locations. Location is controlled by a 
  * version number in HVM_PARAM_ACPI_IOPORTS_LOCATION.
index 55c1b578f756740fb6fa4ca5a29129eef1b6ccfc..6b05f614c7662031bf0f4e13174ceb9c7b080cd3 100644 (file)
 #define HVM_PARAM_BUFIOREQ_PFN 6
 #define HVM_PARAM_BUFIOREQ_EVTCHN 26
 
-#ifdef __ia64__
-
-#define HVM_PARAM_NVRAM_FD     7
-#define HVM_PARAM_VHPT_SIZE    8
-#define HVM_PARAM_BUFPIOREQ_PFN        9
-
-#elif defined(__i386__) || defined(__x86_64__)
+#if defined(__i386__) || defined(__x86_64__)
 
 /* Expose Viridian interfaces to this HVM guest? */
 #define HVM_PARAM_VIRIDIAN     9
index 58f843360ad104406cbec78397711ca4d9a26aa7..5538d8e2ae18fd770b51d2c1445c9cc1f31ea925 100644 (file)
@@ -102,8 +102,6 @@ DECLARE_HVM_SAVE_TYPE(END, 0, struct hvm_save_end);
 
 #if defined(__i386__) || defined(__x86_64__)
 #include "../arch-x86/hvm/save.h"
-#elif defined(__ia64__)
-#include "../arch-ia64/hvm/save.h"
 #elif defined(__arm__)
 #include "../arch-arm/hvm/save.h"
 #else
index 0b7a2ea4147f24c4c44d06d1d1e4532ad9d730ec..d932edc19daf2a695e04f941a056eb302e5df30b 100644 (file)
 
 #define XEN_IO_PROTO_ABI_X86_32     "x86_32-abi"
 #define XEN_IO_PROTO_ABI_X86_64     "x86_64-abi"
-#define XEN_IO_PROTO_ABI_IA64       "ia64-abi"
 #define XEN_IO_PROTO_ABI_ARM        "arm-abi"
 
 #if defined(__i386__)
 # define XEN_IO_PROTO_ABI_NATIVE XEN_IO_PROTO_ABI_X86_32
 #elif defined(__x86_64__)
 # define XEN_IO_PROTO_ABI_NATIVE XEN_IO_PROTO_ABI_X86_64
-#elif defined(__ia64__)
-# define XEN_IO_PROTO_ABI_NATIVE XEN_IO_PROTO_ABI_IA64
 #elif defined(__arm__)
 # define XEN_IO_PROTO_ABI_NATIVE XEN_IO_PROTO_ABI_ARM
 #else
index 04252226a195c87504b85c42a3c7e077a3ef490f..61a8d7dbb162be27df063aaac0d02a3cd41fda19 100644 (file)
@@ -96,9 +96,6 @@
 typedef struct xen_kexec_image {
 #if defined(__i386__) || defined(__x86_64__)
     unsigned long page_list[KEXEC_XEN_NO_PAGES];
-#endif
-#if defined(__ia64__)
-    unsigned long reboot_code_buffer;
 #endif
     unsigned long indirection_page;
     unsigned long start_address;
@@ -134,7 +131,7 @@ typedef struct xen_kexec_load {
                                      * to Xen it exists in a separate EFI
                                      * region on ia64, and thus needs to be
                                      * inserted into iomem_machine separately */
-#define KEXEC_RANGE_MA_BOOT_PARAM 4 /* machine address and size of
+#define KEXEC_RANGE_MA_BOOT_PARAM 4 /* Obsolete: machine address and size of
                                      * the ia64_boot_param */
 #define KEXEC_RANGE_MA_EFI_MEMMAP 5 /* machine address and size of
                                      * of the EFI Memory Map */
index b2f6c507b9f7ad973db5dae42793d45945a68f9a..361398b24c6301ed90d20364a00e386ccde7f7aa 100644 (file)
@@ -31,8 +31,6 @@
 
 #if defined(__i386__) || defined(__x86_64__)
 #include "arch-x86/xen.h"
-#elif defined(__ia64__)
-#include "arch-ia64.h"
 #elif defined(__arm__)
 #include "arch-arm.h"
 #else