From e567964a54b854354492a90d4d2c1e9541e4901d Mon Sep 17 00:00:00 2001 From: Ian Campbell Date: Wed, 12 Sep 2012 17:55:27 +0100 Subject: tools: drop ia64 support 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 Acked-by: Keir Fraser Committed-by: Ian Campbell --- extras/mini-os/Config.mk | 2 +- extras/mini-os/arch/ia64/Makefile | 63 - extras/mini-os/arch/ia64/__divdi3.S | 141 - extras/mini-os/arch/ia64/__udivdi3.S | 142 - extras/mini-os/arch/ia64/__udivsi3.S | 124 - extras/mini-os/arch/ia64/__umoddi3.S | 154 - extras/mini-os/arch/ia64/arch.mk | 9 - extras/mini-os/arch/ia64/common.c | 266 - extras/mini-os/arch/ia64/debug.c | 168 - extras/mini-os/arch/ia64/efi.c | 218 - extras/mini-os/arch/ia64/fw.S | 499 -- extras/mini-os/arch/ia64/gen_off.c | 141 - extras/mini-os/arch/ia64/ia64.S | 233 - extras/mini-os/arch/ia64/ivt.S | 774 --- extras/mini-os/arch/ia64/minios-ia64.lds | 86 - extras/mini-os/arch/ia64/mm.c | 174 - extras/mini-os/arch/ia64/sal.c | 103 - extras/mini-os/arch/ia64/sched.c | 79 - extras/mini-os/arch/ia64/time.c | 289 - extras/mini-os/arch/ia64/xencomm.c | 394 -- extras/mini-os/gnttab.c | 4 - extras/mini-os/include/hypervisor.h | 3 - extras/mini-os/include/ia64/arch_limits.h | 12 - extras/mini-os/include/ia64/arch_mm.h | 43 - extras/mini-os/include/ia64/arch_sched.h | 90 - extras/mini-os/include/ia64/arch_spinlock.h | 61 - extras/mini-os/include/ia64/asm.h | 18 - extras/mini-os/include/ia64/atomic.h | 504 -- extras/mini-os/include/ia64/efi.h | 396 -- extras/mini-os/include/ia64/hypercall-ia64.h | 135 - extras/mini-os/include/ia64/ia64_cpu.h | 738 --- extras/mini-os/include/ia64/ia64_fpu.h | 99 - extras/mini-os/include/ia64/os.h | 295 - extras/mini-os/include/ia64/page.h | 110 - extras/mini-os/include/ia64/pal.h | 87 - extras/mini-os/include/ia64/privop.h | 97 - extras/mini-os/include/ia64/sal.h | 188 - extras/mini-os/include/ia64/traps.h | 54 - extras/mini-os/include/mm.h | 2 - extras/mini-os/include/posix/limits.h | 2 +- extras/mini-os/include/sched.h | 4 - extras/mini-os/include/types.h | 6 +- extras/mini-os/lib/math.c | 5 - extras/mini-os/mm.c | 2 - tools/debugger/xenitp/Makefile | 32 - tools/debugger/xenitp/README | 36 - tools/debugger/xenitp/cpu-ia64-opc.c | 615 -- tools/debugger/xenitp/dis-asm.h | 548 -- tools/debugger/xenitp/ia64-asmtab.c | 8774 -------------------------- tools/debugger/xenitp/ia64-asmtab.h | 148 - tools/debugger/xenitp/ia64-dis.c | 309 - tools/debugger/xenitp/ia64-gen.c | 2865 --------- tools/debugger/xenitp/ia64-opc-a.c | 419 -- tools/debugger/xenitp/ia64-opc-b.c | 512 -- tools/debugger/xenitp/ia64-opc-d.c | 34 - tools/debugger/xenitp/ia64-opc-f.c | 656 -- tools/debugger/xenitp/ia64-opc-i.c | 338 - tools/debugger/xenitp/ia64-opc-m.c | 1118 ---- tools/debugger/xenitp/ia64-opc-x.c | 188 - tools/debugger/xenitp/ia64-opc.c | 727 --- tools/debugger/xenitp/ia64-opc.h | 133 - tools/debugger/xenitp/ia64.h | 396 -- tools/debugger/xenitp/xenitp.c | 1732 ----- tools/include/Makefile | 6 +- tools/include/xen-foreign/Makefile | 5 +- tools/include/xen-foreign/mkheader.py | 14 - tools/include/xen-foreign/reference.size | 30 +- tools/libxc/Makefile | 2 - tools/libxc/ia64/Makefile | 50 - tools/libxc/ia64/ac_ia64_tools.h | 46 - tools/libxc/ia64/dom_fw_acpi.c | 45 - tools/libxc/ia64/sal.h | 85 - tools/libxc/ia64/xc_dom_ia64_util.c | 196 - tools/libxc/ia64/xc_dom_ia64_util.h | 46 - tools/libxc/ia64/xc_ia64.h | 58 - tools/libxc/ia64/xc_ia64_dom_fwloader.c | 142 - tools/libxc/ia64/xc_ia64_hvm_build.c | 1215 ---- tools/libxc/ia64/xc_ia64_linux_restore.c | 739 --- tools/libxc/ia64/xc_ia64_linux_save.c | 801 --- tools/libxc/ia64/xc_ia64_save_restore.h | 47 - tools/libxc/ia64/xc_ia64_stubs.c | 282 - tools/libxc/xc_core.c | 4 - tools/libxc/xc_core.h | 4 - tools/libxc/xc_core_ia64.c | 380 -- tools/libxc/xc_core_ia64.h | 70 - tools/libxc/xc_dom_boot.c | 2 +- tools/libxc/xc_dom_elfloader.c | 2 - tools/libxc/xc_dom_ia64.c | 334 - tools/libxc/xc_minios.c | 20 +- tools/libxc/xenctrl.h | 19 - xen/include/public/arch-ia64.h | 637 -- xen/include/public/arch-ia64/debug_op.h | 99 - xen/include/public/arch-ia64/hvm/memmap.h | 91 - xen/include/public/arch-ia64/hvm/save.h | 208 - xen/include/public/arch-ia64/sioemu.h | 92 - xen/include/public/callback.h | 2 +- xen/include/public/domctl.h | 25 +- xen/include/public/hvm/ioreq.h | 18 - xen/include/public/hvm/params.h | 8 +- xen/include/public/hvm/save.h | 2 - xen/include/public/io/protocols.h | 3 - xen/include/public/kexec.h | 5 +- xen/include/public/xen.h | 2 - 103 files changed, 31 insertions(+), 32399 deletions(-) delete mode 100644 extras/mini-os/arch/ia64/Makefile delete mode 100644 extras/mini-os/arch/ia64/__divdi3.S delete mode 100644 extras/mini-os/arch/ia64/__udivdi3.S delete mode 100644 extras/mini-os/arch/ia64/__udivsi3.S delete mode 100644 extras/mini-os/arch/ia64/__umoddi3.S delete mode 100644 extras/mini-os/arch/ia64/arch.mk delete mode 100644 extras/mini-os/arch/ia64/common.c delete mode 100644 extras/mini-os/arch/ia64/debug.c delete mode 100644 extras/mini-os/arch/ia64/efi.c delete mode 100644 extras/mini-os/arch/ia64/fw.S delete mode 100644 extras/mini-os/arch/ia64/gen_off.c delete mode 100644 extras/mini-os/arch/ia64/ia64.S delete mode 100644 extras/mini-os/arch/ia64/ivt.S delete mode 100644 extras/mini-os/arch/ia64/minios-ia64.lds delete mode 100644 extras/mini-os/arch/ia64/mm.c delete mode 100644 extras/mini-os/arch/ia64/sal.c delete mode 100644 extras/mini-os/arch/ia64/sched.c delete mode 100644 extras/mini-os/arch/ia64/time.c delete mode 100644 extras/mini-os/arch/ia64/xencomm.c delete mode 100644 extras/mini-os/include/ia64/arch_limits.h delete mode 100644 extras/mini-os/include/ia64/arch_mm.h delete mode 100644 extras/mini-os/include/ia64/arch_sched.h delete mode 100644 extras/mini-os/include/ia64/arch_spinlock.h delete mode 100644 extras/mini-os/include/ia64/asm.h delete mode 100644 extras/mini-os/include/ia64/atomic.h delete mode 100644 extras/mini-os/include/ia64/efi.h delete mode 100644 extras/mini-os/include/ia64/hypercall-ia64.h delete mode 100644 extras/mini-os/include/ia64/ia64_cpu.h delete mode 100644 extras/mini-os/include/ia64/ia64_fpu.h delete mode 100644 extras/mini-os/include/ia64/os.h delete mode 100644 extras/mini-os/include/ia64/page.h delete mode 100644 extras/mini-os/include/ia64/pal.h delete mode 100644 extras/mini-os/include/ia64/privop.h delete mode 100644 extras/mini-os/include/ia64/sal.h delete mode 100644 extras/mini-os/include/ia64/traps.h delete mode 100644 tools/debugger/xenitp/Makefile delete mode 100644 tools/debugger/xenitp/README delete mode 100644 tools/debugger/xenitp/cpu-ia64-opc.c delete mode 100644 tools/debugger/xenitp/dis-asm.h delete mode 100644 tools/debugger/xenitp/ia64-asmtab.c delete mode 100644 tools/debugger/xenitp/ia64-asmtab.h delete mode 100644 tools/debugger/xenitp/ia64-dis.c delete mode 100644 tools/debugger/xenitp/ia64-gen.c delete mode 100644 tools/debugger/xenitp/ia64-opc-a.c delete mode 100644 tools/debugger/xenitp/ia64-opc-b.c delete mode 100644 tools/debugger/xenitp/ia64-opc-d.c delete mode 100644 tools/debugger/xenitp/ia64-opc-f.c delete mode 100644 tools/debugger/xenitp/ia64-opc-i.c delete mode 100644 tools/debugger/xenitp/ia64-opc-m.c delete mode 100644 tools/debugger/xenitp/ia64-opc-x.c delete mode 100644 tools/debugger/xenitp/ia64-opc.c delete mode 100644 tools/debugger/xenitp/ia64-opc.h delete mode 100644 tools/debugger/xenitp/ia64.h delete mode 100644 tools/debugger/xenitp/xenitp.c delete mode 100644 tools/libxc/ia64/Makefile delete mode 100644 tools/libxc/ia64/ac_ia64_tools.h delete mode 100644 tools/libxc/ia64/dom_fw_acpi.c delete mode 100644 tools/libxc/ia64/sal.h delete mode 100644 tools/libxc/ia64/xc_dom_ia64_util.c delete mode 100644 tools/libxc/ia64/xc_dom_ia64_util.h delete mode 100644 tools/libxc/ia64/xc_ia64.h delete mode 100644 tools/libxc/ia64/xc_ia64_dom_fwloader.c delete mode 100644 tools/libxc/ia64/xc_ia64_hvm_build.c delete mode 100644 tools/libxc/ia64/xc_ia64_linux_restore.c delete mode 100644 tools/libxc/ia64/xc_ia64_linux_save.c delete mode 100644 tools/libxc/ia64/xc_ia64_save_restore.h delete mode 100644 tools/libxc/ia64/xc_ia64_stubs.c delete mode 100644 tools/libxc/xc_core_ia64.c delete mode 100644 tools/libxc/xc_core_ia64.h delete mode 100644 tools/libxc/xc_dom_ia64.c delete mode 100644 xen/include/public/arch-ia64.h delete mode 100644 xen/include/public/arch-ia64/debug_op.h delete mode 100644 xen/include/public/arch-ia64/hvm/memmap.h delete mode 100644 xen/include/public/arch-ia64/hvm/save.h delete mode 100644 xen/include/public/arch-ia64/sioemu.h diff --git a/extras/mini-os/Config.mk b/extras/mini-os/Config.mk index 806d4ff8fd..d61877bb45 100644 --- a/extras/mini-os/Config.mk +++ b/extras/mini-os/Config.mk @@ -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 index ca3120e10e..0000000000 --- a/extras/mini-os/arch/ia64/Makefile +++ /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 index 514163ca8f..0000000000 --- a/extras/mini-os/arch/ia64/__divdi3.S +++ /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 index 6a1c367718..0000000000 --- a/extras/mini-os/arch/ia64/__udivdi3.S +++ /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 index 34ff9362f7..0000000000 --- a/extras/mini-os/arch/ia64/__udivsi3.S +++ /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 index 790317f655..0000000000 --- a/extras/mini-os/arch/ia64/__umoddi3.S +++ /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 index e6a17d3eb7..0000000000 --- a/extras/mini-os/arch/ia64/arch.mk +++ /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 index 14958cd4ec..0000000000 --- a/extras/mini-os/arch/ia64/common.c +++ /dev/null @@ -1,266 +0,0 @@ -/* - * Done by Dietmar Hahn - * - **************************************************************************** - * - * 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 -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - - -/* 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 index f0e57776f7..0000000000 --- a/extras/mini-os/arch/ia64/debug.c +++ /dev/null @@ -1,168 +0,0 @@ -/* - **************************************************************************** - * Done by Dietmar Hahn - -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 index 009375e717..0000000000 --- a/extras/mini-os/arch/ia64/efi.c +++ /dev/null @@ -1,218 +0,0 @@ -/* - * Done by Dietmar Hahn - * 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 -#include -#include -#include -#include - - -/* 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 index 2ed4dc3071..0000000000 --- a/extras/mini-os/arch/ia64/fw.S +++ /dev/null @@ -1,499 +0,0 @@ -/* - * Done by Dietmar Hahn - * 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 -#include -#include -#include -#include -#include - - -/* - * 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< - * - ****************************************************************************** - * - * 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 -#include -#include -#include - -#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 index 8fde08977d..0000000000 --- a/extras/mini-os/arch/ia64/ia64.S +++ /dev/null @@ -1,233 +0,0 @@ -/* - * Copyright (c) 2007 Dietmar Hahn - * - ***************************************************************************** - * 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 -#include -#include -#include -#include -#include - - - - /* - * 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< - * 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 -#include -#include -#include -#include - - -/* 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< - * - * 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 -#include - - -#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 index 7fa7f94acd..0000000000 --- a/extras/mini-os/arch/ia64/sal.c +++ /dev/null @@ -1,103 +0,0 @@ -/* - * Done by Dietmar Hahn - * 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 -#include -#include -#include - - -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 index ae9e661546..0000000000 --- a/extras/mini-os/arch/ia64/sched.c +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Done by Dietmar Hahn -#include -#include -#include -#include - -/* 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 index 53412660f7..0000000000 --- a/extras/mini-os/arch/ia64/time.c +++ /dev/null @@ -1,289 +0,0 @@ -/* - * Done by Dietmar Hahn - * 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 -#include -#include -#include -#include - -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 index 9719e49f18..0000000000 --- a/extras/mini-os/arch/ia64/xencomm.c +++ /dev/null @@ -1,394 +0,0 @@ -/* - * Copyright (C) 2006 Hollis Blanchard , IBM Corporation - * Tristan Gingold - * - * 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 -#include -#include -#include -#include -#include - - -#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; -} - diff --git a/extras/mini-os/gnttab.c b/extras/mini-os/gnttab.c index ebfa8ac554..2f1b3d7a0b 100644 --- a/extras/mini-os/gnttab.c +++ b/extras/mini-os/gnttab.c @@ -23,11 +23,7 @@ #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; diff --git a/extras/mini-os/include/hypervisor.h b/extras/mini-os/include/hypervisor.h index e299df1f73..a62cb78463 100644 --- a/extras/mini-os/include/hypervisor.h +++ b/extras/mini-os/include/hypervisor.h @@ -7,7 +7,6 @@ * Copyright (c) 2002, K A Fraser * Copyright (c) 2005, Grzegorz Milos * Updates: Aravindh Puthiyaparambil - * Updates: Dietmar Hahn for ia64 */ #ifndef _HYPERVISOR_H_ @@ -19,8 +18,6 @@ #include #elif defined(__x86_64__) #include -#elif defined(__ia64__) -#include #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 index c7bb9b6573..0000000000 --- a/extras/mini-os/include/ia64/arch_limits.h +++ /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 index 8889164533..0000000000 --- a/extras/mini-os/include/ia64/arch_mm.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (C) 2007 - Dietmar Hahn - * - **************************************************************************** - * 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 index f5714a3b6d..0000000000 --- a/extras/mini-os/include/ia64/arch_sched.h +++ /dev/null @@ -1,90 +0,0 @@ -/* - * Copyright (c) 2006 Dietmar Hahn - * 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 index 60712b54c9..0000000000 --- a/extras/mini-os/include/ia64/arch_spinlock.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Done by Dietmar Hahn 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 index d96216f14c..0000000000 --- a/extras/mini-os/include/ia64/asm.h +++ /dev/null @@ -1,18 +0,0 @@ -/* - * Done by Dietmar Hahn - * - **************************************************************************** - * 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 - - -/* - * 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 index b70a0a8e24..0000000000 --- a/extras/mini-os/include/ia64/efi.h +++ /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 - * - **************************************************************************** - * 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 - - -#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 index 06ddc8c774..0000000000 --- a/extras/mini-os/include/ia64/hypercall-ia64.h +++ /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 - * - * 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 -#include -#include - -#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 index 3e2e9147ed..0000000000 --- a/extras/mini-os/include/ia64/ia64_cpu.h +++ /dev/null @@ -1,738 +0,0 @@ -/* - * Done by Dietmar Hahn - * 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<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 index 91a17b934a..0000000000 --- a/extras/mini-os/include/ia64/ia64_fpu.h +++ /dev/null @@ -1,99 +0,0 @@ -/* - * Done by Dietmar Hahn - * 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 index 9a79e9bdc5..0000000000 --- a/extras/mini-os/include/ia64/os.h +++ /dev/null @@ -1,295 +0,0 @@ -/* - * Copyright (C) 2007 - Dietmar Hahn - * - **************************************************************************** - * 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 -#include "ia64_cpu.h" -#include "atomic.h" -#include "efi.h" -#include "sal.h" -#include "pal.h" -#include -#include - - -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 index 67be0a555d..0000000000 --- a/extras/mini-os/include/ia64/page.h +++ /dev/null @@ -1,110 +0,0 @@ -/* - * Done by Dietmar Hahn - * 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<> 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 index 8eb853d07a..0000000000 --- a/extras/mini-os/include/ia64/pal.h +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Done by Dietmar Hahn - * 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 index d8cdbae127..0000000000 --- a/extras/mini-os/include/ia64/privop.h +++ /dev/null @@ -1,97 +0,0 @@ - -/* - * Copyright (C) 2005 Hewlett-Packard Co - * Dan Magenheimer - * - * Paravirtualizations of privileged operations for Xen/ia64 - * - */ - -#ifndef _PRIVOP_H_ -#define _PRIVOP_H_ - -#include - -#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 index c0271c771a..0000000000 --- a/extras/mini-os/include/ia64/sal.h +++ /dev/null @@ -1,188 +0,0 @@ -/* - * Done by Dietmar Hahn - * 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 index cd5589c31d..0000000000 --- a/extras/mini-os/include/ia64/traps.h +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Done by Dietmar Hahn - * - **************************************************************************** - * 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_) */ - diff --git a/extras/mini-os/include/mm.h b/extras/mini-os/include/mm.h index 2fd43f30b2..a94cd6de46 100644 --- a/extras/mini-os/include/mm.h +++ b/extras/mini-os/include/mm.h @@ -29,8 +29,6 @@ #include #elif defined(__x86_64__) #include -#elif defined(__ia64__) -#include #else #error "Unsupported architecture" #endif diff --git a/extras/mini-os/include/posix/limits.h b/extras/mini-os/include/posix/limits.h index b8e168a54f..5d2b8643c8 100644 --- a/extras/mini-os/include/posix/limits.h +++ b/extras/mini-os/include/posix/limits.h @@ -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 diff --git a/extras/mini-os/include/sched.h b/extras/mini-os/include/sched.h index ea3239d602..3d99d7d845 100644 --- a/extras/mini-os/include/sched.h +++ b/extras/mini-os/include/sched.h @@ -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; diff --git a/extras/mini-os/include/types.h b/extras/mini-os/include/types.h index 456e21ac06..6640ede52b 100644 --- a/extras/mini-os/include/types.h +++ b/extras/mini-os/include/types.h @@ -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 diff --git a/extras/mini-os/lib/math.c b/extras/mini-os/lib/math.c index c8f8d33d31..c941b4c420 100644 --- a/extras/mini-os/lib/math.c +++ b/extras/mini-os/lib/math.c @@ -50,10 +50,6 @@ #include #include - /* 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 */ diff --git a/extras/mini-os/mm.c b/extras/mini-os/mm.c index 743d45d051..d2d52646b2 100644 --- a/extras/mini-os/mm.c +++ b/extras/mini-os/mm.c @@ -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 index ba8f44cd37..0000000000 --- a/tools/debugger/xenitp/Makefile +++ /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 index 0cd248ef3c..0000000000 --- a/tools/debugger/xenitp/README +++ /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 index 317de4525d..0000000000 --- a/tools/debugger/xenitp/cpu-ia64-opc.c +++ /dev/null @@ -1,615 +0,0 @@ -/* Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2006 - Free Software Foundation, Inc. - Contributed by David Mosberger-Tang - -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, "" }, - { 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 index efb6eaf4ac..0000000000 --- a/tools/debugger/xenitp/dis-asm.h +++ /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 -#include -#include -#include -#include - -#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; - - -/* 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 *); - - -/* 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 index 6350fd4206..0000000000 --- a/tools/debugger/xenitp/ia64-asmtab.c +++ /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 index 08a2cd9afc..0000000000 --- a/tools/debugger/xenitp/ia64-asmtab.h +++ /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 - - 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 index 5068768e30..0000000000 --- a/tools/debugger/xenitp/ia64-dis.c +++ /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 - - 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 -#include - -#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 index c5e08ebbae..0000000000 --- a/tools/debugger/xenitp/ia64-gen.c +++ /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, - - 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 -#include -#include - -#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 -#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; - - -/* 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); - - -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; -} - - -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"); -} - - -/* 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]; -} - -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; -} - - -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; -} - -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; - } -} - -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); -} - -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; - } -} - -/* 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); - } -} - -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 (); -} - -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"); -} - -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 (); -} - -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"); -} - -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; -} - -/* 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; -} - -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); -} - -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; - } -} - -/* 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; -} - - -/* 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); -} - -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; -} - -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); -} - -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"); -} - -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; -} - -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++); -} - -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"); -} - -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); - } - } -} - - -/* 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 index e8650946fc..0000000000 --- a/tools/debugger/xenitp/ia64-opc-a.c +++ /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 - - 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 index dbc74e1bb8..0000000000 --- a/tools/debugger/xenitp/ia64-opc-b.c +++ /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 - - 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 index f0bd064cb9..0000000000 --- a/tools/debugger/xenitp/ia64-opc-d.c +++ /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 - - 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 index 0b13c9c98d..0000000000 --- a/tools/debugger/xenitp/ia64-opc-f.c +++ /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 - - 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 index 69cd969f6f..0000000000 --- a/tools/debugger/xenitp/ia64-opc-i.c +++ /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 - - 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 index d7903861f3..0000000000 --- a/tools/debugger/xenitp/ia64-opc-m.c +++ /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 - - 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 index fcbe92e434..0000000000 --- a/tools/debugger/xenitp/ia64-opc-x.c +++ /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 - - 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 index 7e67a7fe86..0000000000 --- a/tools/debugger/xenitp/ia64-opc.c +++ /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, - - 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; - } -} - -/* 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; -} - -/* 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; -} - -/* 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; -} - -/* 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; -} - -/* 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; -} - -/* 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; -} - -/* 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; -} - -/* 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; - } - } -} - -/* 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; -} - -/* 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); - } -} - -/* 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; -} - -/* 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 index 4aff188e63..0000000000 --- a/tools/debugger/xenitp/ia64-opc.h +++ /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 - - 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 index 8b5036f889..0000000000 --- a/tools/debugger/xenitp/ia64.h +++ /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 */ - -#ifndef opcode_ia64_h -#define opcode_ia64_h - -#include - -#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 index 812810c02f..0000000000 --- a/tools/debugger/xenitp/xenitp.c +++ /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 - - 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 . -*/ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "xenctrl.h" -#include -#include "dis-asm.h" - -#ifdef __HYPERVISOR_ia64_debug_op -#define HAVE_DEBUG_OP -#include -#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 [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: - */ diff --git a/tools/include/Makefile b/tools/include/Makefile index cbff41b93e..9ed41f1670 100644 --- a/tools/include/Makefile +++ b/tools/include/Makefile @@ -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 diff --git a/tools/include/xen-foreign/Makefile b/tools/include/xen-foreign/Makefile index 0de9018310..8b22b10960 100644 --- a/tools/include/xen-foreign/Makefile +++ b/tools/include/xen-foreign/Makefile @@ -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) diff --git a/tools/include/xen-foreign/mkheader.py b/tools/include/xen-foreign/mkheader.py index 8b249e3dfc..797a8805b9 100644 --- a/tools/include/xen-foreign/mkheader.py +++ b/tools/include/xen-foreign/mkheader.py @@ -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 diff --git a/tools/include/xen-foreign/reference.size b/tools/include/xen-foreign/reference.size index 5f2908502b..c58df4d9b6 100644 --- a/tools/include/xen-foreign/reference.size +++ b/tools/include/xen-foreign/reference.size @@ -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 diff --git a/tools/libxc/Makefile b/tools/libxc/Makefile index ca38cbd6e3..441ba4d940 100644 --- a/tools/libxc/Makefile +++ b/tools/libxc/Makefile @@ -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 index 81f472a78d..0000000000 --- a/tools/libxc/ia64/Makefile +++ /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 index 658ab33505..0000000000 --- a/tools/libxc/ia64/ac_ia64_tools.h +++ /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 index 5ac9b527a9..0000000000 --- a/tools/libxc/ia64/dom_fw_acpi.c +++ /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 -#include "xc_dom_ia64_util.h" -#include -#include - -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 index 6ed475e863..0000000000 --- a/tools/libxc/ia64/sal.h +++ /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 index bc83dbb841..0000000000 --- a/tools/libxc/ia64/xc_dom_ia64_util.c +++ /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 - * VA Linux Systems Japan K.K. - * - */ - -#include -#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 index 82082ad5a8..0000000000 --- a/tools/libxc/ia64/xc_dom_ia64_util.h +++ /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 index faf3376af8..0000000000 --- a/tools/libxc/ia64/xc_ia64.h +++ /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 - * 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 index cdf3333e9d..0000000000 --- a/tools/libxc/ia64/xc_ia64_dom_fwloader.c +++ /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 -#include -#include - -#include -#include -#include - -#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 index 3f9273fa0f..0000000000 --- a/tools/libxc/ia64/xc_ia64_hvm_build.c +++ /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 -#include "xg_private.h" -#include "xenguest.h" -#include "xc_private.h" -#include "xc_elf.h" -#include "xc_efi.h" -#include -#include -#include -#include -#include "xen/arch-ia64.h" -#include -#include - -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> 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 index d199cbfac4..0000000000 --- a/tools/libxc/ia64/xc_ia64_linux_restore.c +++ /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 - * - * Copyright (c) 2007 Isaku Yamahata - * Use foreign p2m exposure. - * VTi domain support - */ - -#include -#include - -#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 index 3440da343a..0000000000 --- a/tools/libxc/ia64/xc_ia64_linux_save.c +++ /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 - * - * Copyright (c) 2007 Isaku Yamahata - * Use foreign p2m exposure. - * VTi domain support. - */ - -#include -#include -#include -#include -#include - -#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 index d392fc8c7c..0000000000 --- a/tools/libxc/ia64/xc_ia64_save_restore.h +++ /dev/null @@ -1,47 +0,0 @@ -/****************************************************************************** - * xc_ia64_save_restore.h - * - * Copyright (c) 2006 Isaku Yamahata - * 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 index 9691acb03e..0000000000 --- a/tools/libxc/ia64/xc_ia64_stubs.c +++ /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 -#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: - */ diff --git a/tools/libxc/xc_core.c b/tools/libxc/xc_core.c index d711f1b727..802fcaeff4 100644 --- a/tools/libxc/xc_core.c +++ b/tools/libxc/xc_core.c @@ -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 | diff --git a/tools/libxc/xc_core.h b/tools/libxc/xc_core.h index 358a8c1956..3f301d9f20 100644 --- a/tools/libxc/xc_core.h +++ b/tools/libxc/xc_core.h @@ -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 index 7411e3e22f..0000000000 --- a/tools/libxc/xc_core_ia64.c +++ /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 - * VA Linux Systems Japan K.K. - * - */ - -#include "xg_private.h" -#include "xc_core.h" -#include "xc_efi.h" -#include "xc_dom.h" -#include - -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 index 754523d883..0000000000 --- a/tools/libxc/xc_core_ia64.h +++ /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 - * 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: - */ diff --git a/tools/libxc/xc_dom_boot.c b/tools/libxc/xc_dom_boot.c index a9a868c06e..f83aa12d91 100644 --- a/tools/libxc/xc_dom_boot.c +++ b/tools/libxc/xc_dom_boot.c @@ -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; diff --git a/tools/libxc/xc_dom_elfloader.c b/tools/libxc/xc_dom_elfloader.c index 2e695599b1..0f656202fd 100644 --- a/tools/libxc/xc_dom_elfloader.c +++ b/tools/libxc/xc_dom_elfloader.c @@ -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 index dcd1523936..0000000000 --- a/tools/libxc/xc_dom_ia64.c +++ /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 . - * - */ - -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include "xg_private.h" -#include "xc_dom.h" -#include "xenctrl.h" - -#include -#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: - */ diff --git a/tools/libxc/xc_minios.c b/tools/libxc/xc_minios.c index eacd6f6dc3..ab86b7254d 100644 --- a/tools/libxc/xc_minios.c +++ b/tools/libxc/xc_minios.c @@ -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)); diff --git a/tools/libxc/xenctrl.h b/tools/libxc/xenctrl.h index b7741ca543..3254537dce 100644 --- a/tools/libxc/xenctrl.h +++ b/tools/libxc/xenctrl.h @@ -55,11 +55,7 @@ #include #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)) @@ -79,10 +75,6 @@ #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 index c9da5d4f82..0000000000 --- a/xen/include/public/arch-ia64.h +++ /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 - . 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 // asm/perfmon.h requires struct list_head -#include -// 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 index 8f47358213..0000000000 --- a/xen/include/public/arch-ia64/debug_op.h +++ /dev/null @@ -1,99 +0,0 @@ -/****************************************************************************** - * debug_op.h - * - * Copyright (c) 2007 Tristan Gingold - * - * 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 index 68d14f335c..0000000000 --- a/xen/include/public/arch-ia64/hvm/memmap.h +++ /dev/null @@ -1,91 +0,0 @@ -/****************************************************************************** - * memmap.h - * - * Copyright (c) 2008 Tristan Gingold - * - * 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 index c44e913b23..0000000000 --- a/xen/include/public/arch-ia64/hvm/save.h +++ /dev/null @@ -1,208 +0,0 @@ -/****************************************************************************** - * save_types.h - * - * Copyright (c) 2007 Isaku Yamahata - * 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 index d48da1a20f..0000000000 --- a/xen/include/public/arch-ia64/sioemu.h +++ /dev/null @@ -1,92 +0,0 @@ -/****************************************************************************** - * sioemu.h - * - * Copyright (c) 2008 Tristan Gingold - * - * 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__ */ diff --git a/xen/include/public/callback.h b/xen/include/public/callback.h index f4962f66d8..6d6b517d6d 100644 --- a/xen/include/public/callback.h +++ b/xen/include/public/callback.h @@ -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. */ diff --git a/xen/include/public/domctl.h b/xen/include/public/domctl.h index 240ceb9cac..f367ce2b2c 100644 --- a/xen/include/public/domctl.h +++ b/xen/include/public/domctl.h @@ -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; diff --git a/xen/include/public/hvm/ioreq.h b/xen/include/public/hvm/ioreq.h index 4022a1ddc4..90feb7cde5 100644 --- a/xen/include/public/hvm/ioreq.h +++ b/xen/include/public/hvm/ioreq.h @@ -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. diff --git a/xen/include/public/hvm/params.h b/xen/include/public/hvm/params.h index 55c1b578f7..6b05f614c7 100644 --- a/xen/include/public/hvm/params.h +++ b/xen/include/public/hvm/params.h @@ -54,13 +54,7 @@ #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 diff --git a/xen/include/public/hvm/save.h b/xen/include/public/hvm/save.h index 58f843360a..5538d8e2ae 100644 --- a/xen/include/public/hvm/save.h +++ b/xen/include/public/hvm/save.h @@ -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 diff --git a/xen/include/public/io/protocols.h b/xen/include/public/io/protocols.h index 0b7a2ea414..d932edc19d 100644 --- a/xen/include/public/io/protocols.h +++ b/xen/include/public/io/protocols.h @@ -25,15 +25,12 @@ #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 diff --git a/xen/include/public/kexec.h b/xen/include/public/kexec.h index 04252226a1..61a8d7dbb1 100644 --- a/xen/include/public/kexec.h +++ b/xen/include/public/kexec.h @@ -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 */ diff --git a/xen/include/public/xen.h b/xen/include/public/xen.h index b2f6c507b9..361398b24c 100644 --- a/xen/include/public/xen.h +++ b/xen/include/public/xen.h @@ -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 -- cgit v1.2.3