public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: "Jan Beulich" <JBeulich@novell.com>
To: <linux-kernel@vger.kernel.org>
Subject: [PATCH 34/39] NLKD/x86 - Console Debug Agent
Date: Wed, 09 Nov 2005 15:28:11 +0100	[thread overview]
Message-ID: <4372158B.76F0.0078.0@novell.com> (raw)
In-Reply-To: 4372156A.76F0.0078.0@novell.com

[-- Attachment #1: Type: text/plain, Size: 152 bytes --]

The x86-dependent (32- and 64-bit) part of the Console Debug Agent of
NLKD.

Signed-Off-By: Jan Beulich <jbeulich@novell.com>

(actual patch attached)


[-- Attachment #2: nlkd-cda-x86.patch --]
[-- Type: application/octet-stream, Size: 70689 bytes --]

The x86-dependent (32- and 64-bit) part of the Console Debug Agent of
NLKD.

Signed-Off-By: Jan Beulich <jbeulich@novell.com>

Index: 2.6.14-nlkd/debug/nlkd/cda/x86_1.c
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ 2.6.14-nlkd/debug/nlkd/cda/x86_1.c	2005-09-01 08:37:23.000000000 +0200
@@ -0,0 +1,535 @@
+/*****************************************************************************
+ *
+ *   File Name:      x86_1.c
+ *   Created by:     Jan Beulich
+ *   Date created:   08Mar2001
+ *
+ *   %version:       7 %
+ *   %derived_by:    jbeulich %
+ *   %date_modified: Thu Sep 01 00:37:12 2005 %
+ *
+ *****************************************************************************/
+/*****************************************************************************
+ *                                                                           *
+ * Copyright (c) 2001-2005 Novell, Inc. All Rights Reserved.                 *
+ *                                                                           *
+ * This program is free software; you can redistribute it and/or             *
+ * modify it under the terms of version 2 of the GNU General Public License  *
+ * as published by the Free Software Foundation.                             *
+ *                                                                           *
+ * 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, contact Novell, Inc.                     *
+ *                                                                           *
+ * To contact Novell about this file by physical or electronic mail,         *
+ * you may find current contact information at www.novell.com.               *
+ *                                                                           *
+ *****************************************************************************/
+/*****************************************************************************
+ *
+ *	File Description:
+ *
+ *****************************************************************************/
+
+NAME_TABLE(80_, "add", "or", "adc", "sbb", "and", "sub", "xor", "cmp");
+#define names_81_ names_80_
+#define names_82_ names_80_
+#define names_83_ names_80_
+NAME_TABLE(8F_, "pop", NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+NAME_TABLE(C0_, "rol", "ror", "rcl", "rcr", "shl", "shr", "sal", "sar");
+#define names_C1_ names_C0_
+NAME_TABLE(C6_, "mov", NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+#define names_C7_ names_C6_
+#define names_D0_ names_C0_
+#define names_D1_ names_C0_
+#define names_D2_ names_C0_
+#define names_D3_ names_C0_
+NAME_TABLE(D8m, "fadd", "fmul", "fcom", "fcomp", "fsub", "fsubr", "fdiv", "fdivr");
+NAME_TABLE(D9r2, "fnop", NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+NAME_TABLE(D9r4, "fchs", "fabs", NULL, NULL, "ftst", "fxam", NULL, NULL);
+NAME_TABLE(D9r5, "fld1", "fldl2t", "fldl2e", "fldpi", "fldlg2", "fldln2", "fldz", NULL);
+NAME_TABLE(D9r6, "f2xm1", "fyl2x", "fptan", "fpatan", "fxtract", "fprem1", "fdecstp", "fincstp");
+NAME_TABLE(D9r7, "fprem", "fyl2xp1", "fsqrt", "fsincos", "frndint", "fscale", "fsin", "fcos");
+NAME_TABLE(DAm, "fiadd", "fimul", "ficom", "ficomp", "fisub", "fisubr", "fidiv", "fidivr");
+NAME_TABLE(DAr5, NULL, "fucompp", NULL, NULL, NULL, NULL, NULL, NULL);
+NAME_TABLE(DBr4, "fneni", "fndisi", "fnclex", "fninit", "fsetpm", "frstpm", NULL, NULL);
+#define names_DCm names_D8m
+NAME_TABLE(DCr, "fadd", "fmul", NULL, NULL, "fsubr", "fsub", "fdivr", "fdiv");
+NAME_TABLE(DEr3, NULL, "fcompp", NULL, NULL, NULL, NULL, NULL, NULL);
+#define names_DEm names_DAm
+NAME_TABLE(DFr4, "fnstsw", NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+NAME_TABLE(FE_, "inc", "dec", NULL, NULL, NULL, NULL, NULL, NULL);
+
+static const OpcodeInfo branch_00[8] = {
+	LEAF_NORMAL(00,	"add",	rm_r,	byte,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(01,	"add",	rm_r,	offset,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(02,	"add",	r_rm,	byte,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(03,	"add",	r_rm,	offset,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(04,	"add",	accum,	byte,	imm,		byte,	sflags,	none,	none,	none),
+	LEAF_NORMAL(05,	"add",	accum,	offset,	imm,		offset32,	sflags,	none,	none,	none),
+#ifndef X86_64
+	LEAF_NORMAL(06,	"push",	reg,		ptr,		none,	none,	SP,		none,	none,	none),
+	LEAF_NORMAL(07,	"pop",	reg,		ptr,		none,	word,	tos,		none,	none,	none)},
+#else
+	LEAF_NORMAL(06,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(07,	NULL,	none,	none,	none,	none,	none,	none,	none,	none)},
+#endif
+branch_08[8] = {
+	LEAF_NORMAL(08,	"or",	rm_r,	byte,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(09,	"or",	rm_r,	offset,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(0A,	"or",	r_rm,	byte,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(0B,	"or",	r_rm,	offset,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(0C,	"or",	accum,	byte,	imm,		byte,	sflags,	none,	none,	none),
+	LEAF_NORMAL(0D,	"or",	accum,	offset,	imm,		offset32,	sflags,	none,	none,	none),
+#ifndef X86_64
+	LEAF_NORMAL(0E,	"push",	reg,		ptr,		none,	none,	SP,		none,	none,	none),
+#else
+	LEAF_NORMAL(0E,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+#endif
+	LEAF_NORMAL(0F,	NULL,	none,	none,	none,	none,	none,	none,	none,	none)},
+branch_10[8] = {
+	LEAF_NORMAL(10,	"adc",	rm_r,	byte,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(11,	"adc",	rm_r,	offset,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(12,	"adc",	r_rm,	byte,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(13,	"adc",	r_rm,	offset,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(14,	"adc",	accum,	byte,	imm,		byte,	sflags,	none,	none,	none),
+	LEAF_NORMAL(15,	"adc",	accum,	offset,	imm,		offset32,	sflags,	none,	none,	none),
+#ifndef X86_64
+	LEAF_NORMAL(16,	"push",	reg,		ptr,		none,	none,	SP,		none,	none,	none),
+	LEAF_NORMAL(17,	"pop",	reg,		ptr,		none,	word,	tos,		none,	none,	none)},
+#else
+	LEAF_NORMAL(16,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(17,	NULL,	none,	none,	none,	none,	none,	none,	none,	none)},
+#endif
+branch_18[8] = {
+	LEAF_NORMAL(18,	"sbb",	rm_r,	byte,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(19,	"sbb",	rm_r,	offset,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(1A,	"sbb",	r_rm,	byte,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(1B,	"sbb",	r_rm,	offset,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(1C,	"sbb",	accum,	byte,	imm,		byte,	sflags,	none,	none,	none),
+	LEAF_NORMAL(1D,	"sbb",	accum,	offset,	imm,		offset32,	sflags,	none,	none,	none),
+#ifndef X86_64
+	LEAF_NORMAL(1E,	"push",	reg,		ptr,		none,	none,	SP,		none,	none,	none),
+	LEAF_NORMAL(1F,	"pop",	reg,		ptr,		none,	word,	tos,		none,	none,	none)},
+#else
+	LEAF_NORMAL(1E,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(1F,	NULL,	none,	none,	none,	none,	none,	none,	none,	none)},
+#endif
+branch_20[8] = {
+	LEAF_NORMAL(20,	"and",	rm_r,	byte,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(21,	"and",	rm_r,	offset,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(22,	"and",	r_rm,	byte,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(23,	"and",	r_rm,	offset,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(24,	"and",	accum,	byte,	imm,		byte,	sflags,	none,	none,	none),
+	LEAF_NORMAL(25,	"and",	accum,	offset,	imm,		offset32,	sflags,	none,	none,	none),
+	LEAF_NORMAL(26,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+#ifndef X86_64
+	LEAF_NORMAL(27,	"daa",	none,	none,	none,	none,	AX,		sflags,	none,	none)},
+#else
+	LEAF_NORMAL(27,	NULL,	none,	none,	none,	none,	none,	none,	none,	none)},
+#endif
+branch_28[8] = {
+	LEAF_NORMAL(28,	"sub",	rm_r,	byte,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(29,	"sub",	rm_r,	offset,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(2A,	"sub",	r_rm,	byte,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(2B,	"sub",	r_rm,	offset,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(2C,	"sub",	accum,	byte,	imm,		byte,	sflags,	none,	none,	none),
+	LEAF_NORMAL(2D,	"sub",	accum,	offset,	imm,		offset32,	sflags,	none,	none,	none),
+	LEAF_NORMAL(2E,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+#ifndef X86_64
+	LEAF_NORMAL(2F,	"das",	none,	none,	none,	none,	AX,		sflags,	none,	none)},
+#else
+	LEAF_NORMAL(2F,	NULL,	none,	none,	none,	none,	none,	none,	none,	none)},
+#endif
+branch_30[8] = {
+	LEAF_NORMAL(30,	"xor",	rm_r,	byte,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(31,	"xor",	rm_r,	offset,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(32,	"xor",	r_rm,	byte,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(33,	"xor",	r_rm,	offset,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(34,	"xor",	accum,	byte,	imm,		byte,	sflags,	none,	none,	none),
+	LEAF_NORMAL(35,	"xor",	accum,	offset,	imm,		offset32,	sflags,	none,	none,	none),
+	LEAF_NORMAL(36,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+#ifndef X86_64
+	LEAF_NORMAL(37,	"aaa",	none,	none,	none,	none,	AX,		sflags,	none,	none)},
+#else
+	LEAF_NORMAL(37,	NULL,	none,	none,	none,	none,	none,	none,	none,	none)},
+#endif
+branch_38[8] = {
+	LEAF_NORMAL(38,	"cmp",	rm_r,	byte,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(39,	"cmp",	rm_r,	offset,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(3A,	"cmp",	r_rm,	byte,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(3B,	"cmp",	r_rm,	offset,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(3C,	"cmp",	accum,	byte,	imm,		byte,	sflags,	none,	none,	none),
+	LEAF_NORMAL(3D,	"cmp",	accum,	offset,	imm,		offset32,	sflags,	none,	none,	none),
+	LEAF_NORMAL(3E,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+#ifndef X86_64
+	LEAF_NORMAL(3F,	"aas",	none,	none,	none,	none,	AX,		sflags,	none,	none)},
+#else
+	LEAF_NORMAL(3F,	NULL,	none,	none,	none,	none,	none,	none,	none,	none)},
+#endif
+branch_60[8] = {
+#ifndef X86_64
+	LEAF_NORMAL(60,	"pusha",	none,	none,	none,	none,	GRs,		none,	none,	opsz),
+	LEAF_NORMAL(61,	"popa",	none,	none,	none,	none,	GRs,		none,	none,	opsz),
+	LEAF_NORMAL(62,	"bound",	r,		offset,	mm,		2offsets,	none,	none,	none,	none),
+	LEAF_NORMAL(63,	"arpl",	rm_r,	offset,	none,	none,	none,	none,	none,	none),
+#else
+	LEAF_NORMAL(60,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(61,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(62,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(63,	"movsx",	r,		offset,	rm,		dword,	none,	none,	none,	none),
+#endif
+	LEAF_NORMAL(64,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(65,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(66,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(67,	NULL,	none,	none,	none,	none,	none,	none,	none,	none)},
+branch_68[8] = {
+	LEAF_NORMAL(68,	"push",	imm,		offset64,	none,	none,	SP,		none,	none,	none),
+	LEAF_NORMAL(69,	"imul",	r_rm,	offset,	imm,		offset32,	sflags,	none,	none,	imul),
+	LEAF_NORMAL(6A,	"push",	simm,	offset,	none,	none,	SP,		none,	none,	none),
+	LEAF_NORMAL(6B,	"imul",	r_rm,	offset,	simm,	offset,	sflags,	none,	none,	imul),
+	LEAF_NORMAL(6C,	"ins",	str_d,	byte,	cl_dx,	word,	none,	none,	none,	string),
+	LEAF_NORMAL(6D,	"ins",	str_d,	offset32,	cl_dx,	word,	none,	none,	none,	string),
+	LEAF_NORMAL(6E,	"outs",	cl_dx,	word,	str_s,	byte,	none,	none,	none,	string),
+	LEAF_NORMAL(6F,	"outs",	cl_dx,	word,	str_s,	offset32,	none,	none,	none,	string)},
+branch_80[8] = {
+	NAME_NORMAL(80_,			rm,		byte,	imm,		byte,	sflags,			none,	none),
+	NAME_NORMAL(81_,			rm,		offset,	imm,		offset32,	sflags,			none,	none),
+	LEAF_NORMAL(82,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	NAME_NORMAL(83_,			rm,		offset,	simm,	offset,	sflags,			none,	none),
+	LEAF_NORMAL(84,	"test",	rm_r,	byte,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(85,	"test",	rm_r,	offset,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(86,	"xchg",	rm_r,	byte,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(87,	"xchg",	rm_r,	offset,	none,	none,	none,	none,	none,	none)},
+regmem_8C[2] = {
+	LEAF_NORMAL(8Cm,	"mov",	mm,		word,	r,		ptr,		none,	none,	nowidth,	none),
+	LEAF_NORMAL(8Cr,	"mov",	rr,		offset,	r,		ptr,		none,	none,	none,	none)},
+regmem_8E[2] = {
+	LEAF_NORMAL(8Em,	"mov",	r,		ptr,		mm,		word,	none,	none,	nowidth,	none),
+	LEAF_NORMAL(8Er,	"mov",	r,		ptr,		rr,		offset,	none,	none,	none,	none)},
+branch_88[8] = {
+	LEAF_NORMAL(88,	"mov",	rm_r,	byte,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(89,	"mov",	rm_r,	offset,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(8A,	"mov",	r_rm,	byte,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(8B,	"mov",	r_rm,	offset,	none,	none,	none,	none,	none,	none),
+	REGMEM_ENTRY(8C,	normal),
+	LEAF_NORMAL(8D,	"lea",	r,		offset,	mm,		none,	none,	none,	none,	none),
+	REGMEM_ENTRY(8E,	normal),
+	NAME_NORMAL(8F_,			rm,		offset64,	none,	offset64,	tos,				none,	none)},
+branch_90[8] = {
+	LEAF_NORMAL(90,	"nop",	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(91,	"xchg",	accum,	offset,	reg,		offset,	none,	none,	none,	none),
+	LEAF_NORMAL(92,	"xchg",	accum,	offset,	reg,		offset,	none,	none,	none,	none),
+	LEAF_NORMAL(93,	"xchg",	accum,	offset,	reg,		offset,	none,	none,	none,	none),
+	LEAF_NORMAL(94,	"xchg",	accum,	offset,	reg,		offset,	none,	none,	none,	none),
+	LEAF_NORMAL(95,	"xchg",	accum,	offset,	reg,		offset,	none,	none,	none,	none),
+	LEAF_NORMAL(96,	"xchg",	accum,	offset,	reg,		offset,	none,	none,	none,	none),
+	LEAF_NORMAL(97,	"xchg",	accum,	offset,	reg,		offset,	none,	none,	none,	none)},
+branch_98[8] = {
+#ifndef X86_64
+	LEAF_NORMAL(98,	"cbw",	none,	none,	none,	none,	AX,		none,	none,	none),
+	LEAF_NORMAL(99,	"cwd",	none,	none,	none,	none,	DX_AX,	none,	none,	none),
+	LEAF_NORMAL(9A,	"call",	imm,		ptr,		none,	none,	SP,		CS,		none,	none),
+#else
+	LEAF_NORMAL(98,	"cwde",	none,	none,	none,	none,	AX,		none,	none,	none),
+	LEAF_NORMAL(99,	"cdq",	none,	none,	none,	none,	DX_AX,	none,	none,	none),
+	LEAF_NORMAL(9A,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+#endif
+	LEAF_NORMAL(9B,	"wait",	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(9C,	"pushf",	none,	none,	none,	none,	SP,		flags,	none,	opsz),
+	LEAF_NORMAL(9D,	"popf",	none,	none,	none,	offset64,	tos,		flags,	none,	opsz),
+	LEAF_NORMAL(9E,	"sahf",	none,	none,	none,	none,	AX,		sflags,	none,	none),
+	LEAF_NORMAL(9F,	"lahf",	none,	none,	none,	none,	sflags,	AX,		none,	none)},
+branch_A0[8] = {
+	LEAF_NORMAL(A0,	"mov",	accum,	byte,	mem,		byte,	none,	none,	none,	none),
+	LEAF_NORMAL(A1,	"mov",	accum,	offset,	mem,		offset,	none,	none,	none,	none),
+	LEAF_NORMAL(A2,	"mov",	mem,		byte,	accum,	byte,	none,	none,	none,	none),
+	LEAF_NORMAL(A3,	"mov",	mem,		offset,	accum,	offset,	none,	none,	none,	none),
+	LEAF_NORMAL(A4,	"movs",	str_d,	byte,	str_s,	byte,	none,	none,	none,	string),
+	LEAF_NORMAL(A5,	"movs",	str_d,	offset,	str_s,	offset,	none,	none,	none,	string),
+	LEAF_NORMAL(A6,	"cmps",	str_s,	byte,	str_d,	byte,	sflags,	none,	none,	string),
+	LEAF_NORMAL(A7,	"cmps",	str_s,	offset,	str_d,	offset,	sflags,	none,	none,	string)},
+branch_A8[8] = {
+	LEAF_NORMAL(A8,	"test",	accum,	byte,	imm,		byte,	sflags,	none,	none,	none),
+	LEAF_NORMAL(A9,	"test",	accum,	offset,	imm,		offset32,	sflags,	none,	none,	none),
+	LEAF_NORMAL(AA,	"stos",	str_d,	byte,	none,	none,	none,	none,	none,	string),
+	LEAF_NORMAL(AB,	"stos",	str_d,	offset,	none,	none,	none,	none,	none,	string),
+	LEAF_NORMAL(AC,	"lods",	str_s,	byte,	none,	none,	none,	none,	none,	string),
+	LEAF_NORMAL(AD,	"lods",	str_s,	offset,	none,	none,	none,	none,	none,	string),
+	LEAF_NORMAL(AE,	"scas",	str_d,	byte,	none,	none,	sflags,	none,	none,	string),
+	LEAF_NORMAL(AF,	"scas",	str_d,	offset,	none,	none,	sflags,	none,	none,	string)},
+branch_C0[8] = {
+	NAME_NORMAL(C0_,			rm,		byte,	imm,		byte,	sflags,			none,	none),
+	NAME_NORMAL(C1_,			rm,		offset,	imm,		byte,	sflags,			none,	none),
+	LEAF_NORMAL(C2,	"ret",	imm,		word,	none,	offset64,	tos,		none,	none,	none),
+	LEAF_NORMAL(C3,	"ret",	none,	none,	none,	offset64,	tos,		none,	none,	none),
+#ifndef X86_64
+	LEAF_NORMAL(C4,	"les",	r,		offset,	mm,		ptr,		ES,		none,	nowidth,	none),
+	LEAF_NORMAL(C5,	"lds",	r,		offset,	mm,		ptr,		DS,		none,	nowidth,	none),
+#else
+	LEAF_NORMAL(C4,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(C5,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+#endif
+	NAME_NORMAL(C6_,			rm,		byte,	imm,		byte,	none,			none,	none),
+	NAME_NORMAL(C7_,			rm,		offset,	imm,		offset32,	none,			none,	none)},
+branch_C8[8] = {
+	LEAF_NORMAL(C8,	"enter",	imm,		word,	imm,		byte,	BP,		SP,		none,	opsz),
+	LEAF_NORMAL(C9,	"leave",	none,	none,	none,	none,	SP,		BP,		none,	opsz),
+	LEAF_NORMAL(CA,	"retf",	imm,		word,	none,	ptr,		tos,		CS,		none,	none),
+	LEAF_NORMAL(CB,	"retf",	none,	none,	none,	ptr,		tos,		CS,		none,	none),
+	LEAF_NORMAL(CC,	"int3",	none,	none,	none,	none,	SP,		int,		none,	none),
+	LEAF_NORMAL(CD,	"int",	imm,		byte,	none,	none,	SP,		int,		none,	none),
+#ifndef X86_64
+	LEAF_NORMAL(CE,	"into",	none,	none,	none,	none,	SP,		int,		none,	none),
+#else
+	LEAF_NORMAL(CE,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+#endif
+	LEAF_NORMAL(CF,	"iret",	none,	none,	none,	ptr,		tos,		int,		none,	opsz)},
+branch_D0[8] = {
+	NAME_NORMAL(D0_,			rm,		byte,	imm,		none,	sflags,			none,	none),
+	NAME_NORMAL(D1_,			rm,		offset,	imm,		none,	sflags,			none,	none),
+	NAME_NORMAL(D2_,			rm,		byte,	cl_dx,	byte,	sflags,			none,	none),
+	NAME_NORMAL(D3_,			rm,		offset,	cl_dx,	byte,	sflags,			none,	none),
+#ifndef X86_64
+	LEAF_NORMAL(D4,	"aam",	imm,		byte,	none,	none,	AX,		sflags,	none,	none),
+	LEAF_NORMAL(D5,	"aad",	imm,		byte,	none,	none,	AX,		sflags,	none,	none),
+	LEAF_NORMAL(D6,	"salc",	none,	none,	none,	none,	AX,		sflags,	none,	none),
+#else
+	LEAF_NORMAL(D4,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(D5,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(D6,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+#endif
+	LEAF_NORMAL(D7,	"xlat",	str_s,	byte,	none,	none,	AX,		none,	none,	string)},
+branch_D9m[8] = {
+	LEAF_NORMAL(D9m0,	"fld",	mm,		real4,	none,	none,	ST0,		none,	none,	none),
+	LEAF_NORMAL(D9m1,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(D9m2,	"fst",	mm,		real4,	none,	none,	ST0,		none,	none,	none),
+	LEAF_NORMAL(D9m3,	"fstp",	mm,		real4,	none,	none,	ST0,		none,	none,	none),
+	LEAF_NORMAL(D9m4,	"fldenv",	mm,		none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(D9m5,	"fldcw",	mm,		word,	none,	none,	fcw,		none,	nowidth,	none),
+	LEAF_NORMAL(D9m6,	"fnstenv", mm,		none,	none,	none,	none,	none,	none,	wait),
+	LEAF_NORMAL(D9m7,	"fnstcw",	mm,		word,	none,	none,	fcw,		none,	nowidth,	wait)},
+branch_DBm[8] = {
+	LEAF_NORMAL(DBm0,	"fild",	mm,		dword,	none,	none,	ST0,		none,	none,	none),
+	LEAF_NORMAL(DBm1,	"fisttp",	mm,	dword,	none,	none,	ST0,	none,	none,	none),
+	LEAF_NORMAL(DBm2,	"fist",	mm,		dword,	none,	none,	ST0,		none,	none,	none),
+	LEAF_NORMAL(DBm3,	"fistp",	mm,		dword,	none,	none,	ST0,		none,	none,	none),
+	LEAF_NORMAL(DBm4,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(DBm5,	"fld",	mm,		real10,	none,	none,	ST0,		none,	none,	none),
+	LEAF_NORMAL(DBm6,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(DBm7,	"fstp",	mm,		real10,	none,	none,	ST0,		none,	none,	none)},
+branch_DDm[8] = {
+	LEAF_NORMAL(DDm0,	"fld",	mm,		real8,	none,	none,	ST0,		none,	none,	none),
+	LEAF_NORMAL(DDm1,	"fisttp",	mm,	qword,	none,	none,	ST0,	none,	none,	none),
+	LEAF_NORMAL(DDm2,	"fst",	mm,		real8,	none,	none,	ST0,		none,	none,	none),
+	LEAF_NORMAL(DDm3,	"fstp",	mm,		real8,	none,	none,	ST0,		none,	none,	none),
+	LEAF_NORMAL(DDm4,	"frstor",	mm,		none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(DDm5,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(DDm6,	"fnsave",	mm,		none,	none,	none,	none,	none,	none,	wait),
+	LEAF_NORMAL(DDm7,	"fnstsw",	mm,		word,	none,	none,	fsw,		none,	nowidth,	wait)},
+branch_DFm[8] = {
+	LEAF_NORMAL(DFm0,	"fild",	mm,		word,	none,	none,	ST0,		none,	none,	none),
+	LEAF_NORMAL(DFm1,	"fisttp",	mm,	word,	none,	none,	ST0,	none,	none,	none),
+	LEAF_NORMAL(DFm2,	"fist",	mm,		word,	none,	none,	ST0,		none,	none,	none),
+	LEAF_NORMAL(DFm3,	"fistp",	mm,		word,	none,	none,	ST0,		none,	none,	none),
+	LEAF_NORMAL(DFm4,	"fbld",	mm,		bcd,		none,	none,	ST0,		none,	none,	none),
+	LEAF_NORMAL(DFm5,	"fild",	mm,		qword,	none,	none,	ST0,		none,	none,	none),
+	LEAF_NORMAL(DFm6,	"fbstp",	mm,		bcd,		none,	none,	ST0,		none,	none,	none),
+	LEAF_NORMAL(DFm7,	"fistp",	mm,		qword,	none,	none,	ST0,		none,	none,	none)},
+branch_D8_m[8] = {
+	NAME_NORMAL(D8m,			mm,		real4,	none,	none,	ST0,				none,	none),
+	BRANCH_ENTRY(D9m),
+	NAME_NORMAL(DAm,			mm,		dword,	none,	none,	ST0,				none,	none),
+	BRANCH_ENTRY(DBm),
+	NAME_NORMAL(DCm,			mm,		real8,	none,	none,	ST0,				none,	none),
+	BRANCH_ENTRY(DDm),
+	NAME_NORMAL(DEm,			mm,		word,	none,	none,	ST0,				none,	none),
+	BRANCH_ENTRY(DFm)},
+branch_D8r[8] = {
+	LEAF_NORMAL(D8r0,	"fadd",	accum,	real10,	rr,		real10,	fsw,		none,	none,	none),
+	LEAF_NORMAL(D8r1,	"fmul",	accum,	real10,	rr,		real10,	fsw,		none,	none,	none),
+	LEAF_NORMAL(D8r2,	"fcom",	rr,		real10,	none,	none,	ST0,		none,	none,	st1),
+	LEAF_NORMAL(D8r3,	"fcomp",	rr,		real10,	none,	none,	ST0,		none,	none,	st1),
+	LEAF_NORMAL(D8r4,	"fsub",	accum,	real10,	rr,		real10,	fsw,		none,	none,	none),
+	LEAF_NORMAL(D8r5,	"fsubr",	accum,	real10,	rr,		real10,	fsw,		none,	none,	none),
+	LEAF_NORMAL(D8r6,	"fdiv",	accum,	real10,	rr,		real10,	fsw,		none,	none,	none),
+	LEAF_NORMAL(D8r7,	"fdivr",	accum,	real10,	rr,		real10,	fsw,		none,	none,	none)},
+branch_D9r[8] = {
+	LEAF_NORMAL(D9r0,	"fld",	rr,		real10,	none,	none,	ST0,		none,	none,	none),
+	LEAF_NORMAL(D9r1,	"fxch",	rr,		real10,	none,	none,	ST0,		none,	none,	st1),
+	NAME_NORMAL(D9r2,			none,	none,	none,	none,	fsw,				none,	none),
+	LEAF_NORMAL(D9r3,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	NAME_NORMAL(D9r4,			none,	none,	none,	none,	ST0,				none,	none),
+	NAME_NORMAL(D9r5,			none,	none,	none,	none,	ST0,				none,	none),
+	NAME_NORMAL(D9r6,			none,	none,	none,	none,	ST0,				none,	none),
+	NAME_NORMAL(D9r7,			none,	none,	none,	none,	ST0,				none,	none)},
+branch_DAr[8] = {
+	LEAF_COND(DAr0,	"fcmov",	accum,	real10,	rr,		real10,	sflags,	ST0,		fpu,		none),
+	LEAF_COND(DAr1,	"fcmov",	accum,	real10,	rr,		real10,	sflags,	ST0,		fpu,		none),
+	LEAF_COND(DAr2,	"fcmov",	accum,	real10,	rr,		real10,	sflags,	ST0,		fpu,		none),
+	LEAF_COND(DAr3,	"fcmov",	accum,	real10,	rr,		real10,	sflags,	ST0,		fpu,		none),
+	LEAF_NORMAL(DAr4,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	NAME_NORMAL(DAr5,			none,	none,	none,	none,	ST0_ST1,			none,	none),
+	LEAF_NORMAL(DAr6,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(DAr7,	NULL,	none,	none,	none,	none,	none,	none,	none,	none)},
+branch_DBr[8] = {
+	LEAF_COND(DBr0,	"fcmov",	accum,	real10,	rr,		real10,	sflags,	ST0,		fpu,		none),
+	LEAF_COND(DBr1,	"fcmov",	accum,	real10,	rr,		real10,	sflags,	ST0,		fpu,		none),
+	LEAF_COND(DBr2,	"fcmov",	accum,	real10,	rr,		real10,	sflags,	ST0,		fpu,		none),
+	LEAF_COND(DBr3,	"fcmov",	accum,	real10,	rr,		real10,	sflags,	ST0,		fpu,		none),
+	NAME_NORMAL(DBr4,			none,	none,	none,	none,	none,			none,	wait),
+	LEAF_NORMAL(DBr5,	"fucomi",	accum,	real10,	rr,		real10,	sflags,	none,	none,	none),
+	LEAF_NORMAL(DBr6,	"fcomi",	accum,	real10,	rr,		real10,	sflags,	none,	none,	none),
+	LEAF_NORMAL(DBr7,	NULL,	none,	none,	none,	none,	none,	none,	none,	none)},
+branch_DDr[8] = {
+	LEAF_NORMAL(DDr0,	"ffree",	rr,		real10,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(DDr1,	"fxch4",	rr,		real10,	none,	none,	ST0,		none,	none,	st1),
+	LEAF_NORMAL(DDr2,	"fst",	rr,		real10,	none,	none,	ST0,		none,	none,	none),
+	LEAF_NORMAL(DDr3,	"fstp",	rr,		real10,	none,	none,	ST0,		none,	none,	none),
+	LEAF_NORMAL(DDr4,	"fucom",	rr,		real10,	none,	none,	ST0,		none,	none,	st1),
+	LEAF_NORMAL(DDr5,	"fucomp",	rr,		real10,	none,	none,	ST0,		none,	none,	st1),
+	LEAF_NORMAL(DDr6,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(DDr7,	NULL,	none,	none,	none,	none,	none,	none,	none,	none)},
+branch_DEr[8] = {
+	LEAF_NORMAL(DEr0,	"faddp",	rr,		real10,	none,	none,	ST0,		none,	none,	st1),
+	LEAF_NORMAL(DEr1,	"fmulp",	rr,		real10,	none,	none,	ST0,		none,	none,	st1),
+	LEAF_NORMAL(DEr2,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	NAME_NORMAL(DEr3,			none,	none,	none,	none,	ST0_ST1,			none,	none),
+	LEAF_NORMAL(DEr4,	"fsubrp",	rr,		real10,	none,	none,	ST0,		none,	none,	st1),
+	LEAF_NORMAL(DEr5,	"fsubp",	rr,		real10,	none,	none,	ST0,		none,	none,	st1),
+	LEAF_NORMAL(DEr6,	"fdivrp",	rr,		real10,	none,	none,	ST0,		none,	none,	st1),
+	LEAF_NORMAL(DEr7,	"fdivp",	rr,		real10,	none,	none,	ST0,		none,	none,	st1)},
+branch_DFr[8] = {
+	LEAF_NORMAL(DFr0,	"ffreep",	rr,		real10,	none,	none,	ST0,		none,	none,	none),
+	LEAF_NORMAL(DFr1,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(DFr2,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(DFr3,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	NAME_NORMAL(DFr4,			accum,	word,	none,	none,	fsw,				none,	wait),
+	LEAF_NORMAL(DFr5,	"fucomip", accum,	real10,	rr,		real10,	sflags,	none,	none,	none),
+	LEAF_NORMAL(DFr6,	"fcomip",	accum,	real10,	rr,		real10,	sflags,	none,	none,	none),
+	LEAF_NORMAL(DFr7,	NULL,	none,	none,	none,	none,	none,	none,	none,	none)},
+branch_D8_r[8] = {
+	BRANCH_ENTRY(D8r),
+	BRANCH_ENTRY(D9r),
+	BRANCH_ENTRY(DAr),
+	BRANCH_ENTRY(DBr),
+	NAME_NORMAL(DCr,			rr,		real10,	accum,	real10,	fsw,				none,	none),
+	BRANCH_ENTRY(DDr),
+	BRANCH_ENTRY(DEr),
+	BRANCH_ENTRY(DFr)},
+regmem_D8[2] = {
+	BRANCH_ENTRY(D8_m),
+	BRANCH_ENTRY(D8_r)},
+branch_E0[8] = {
+	LEAF_COND(E0,		"loop",	disp,	byte,	none,	none,	CX,		sflags,	loop,	adsz),
+	LEAF_COND(E1,		"loop",	disp,	byte,	none,	none,	CX,		sflags,	loop,	adsz),
+	LEAF_COND(E2,		"loop",	disp,	byte,	none,	none,	CX,		none,	loop,	adsz),
+#ifndef X86_64
+	LEAF_COND(E3,		"jcxz",	disp,	byte,	none,	none,	CX,		none,	loop,	none),
+#else
+	LEAF_COND(E3,		"jrcxz",	disp,	byte,	none,	none,	CX,		none,	loop,	none),
+#endif
+	LEAF_NORMAL(E4,	"in",	accum,	byte,	imm,		byte,	none,	none,	none,	none),
+	LEAF_NORMAL(E5,	"in",	accum,	offset32,	imm,		byte,	none,	none,	none,	none),
+	LEAF_NORMAL(E6,	"out",	imm,		byte,	accum,	byte,	none,	none,	none,	none),
+	LEAF_NORMAL(E7,	"out",	imm,		byte,	accum,	offset32,	none,	none,	none,	none)},
+branch_E8[8] = {
+	LEAF_NORMAL(E8,	"call",	disp,	offset,	none,	none,	SP,		none,	none,	none),
+	LEAF_NORMAL(E9,	"jmp",	disp,	offset,	none,	none,	none,	none,	none,	none),
+#ifndef X86_64
+	LEAF_NORMAL(EA,	"jmp",	imm,		ptr,		none,	none,	CS,		none,	none,	none),
+#else
+	LEAF_NORMAL(9A,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+#endif
+	LEAF_NORMAL(EB,	"jmp",	disp,	byte,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(EC,	"in",	accum,	byte,	cl_dx,	word,	none,	none,	none,	none),
+	LEAF_NORMAL(ED,	"in",	accum,	offset32,	cl_dx,	word,	none,	none,	none,	none),
+	LEAF_NORMAL(EE,	"out",	cl_dx,	word,	accum,	byte,	none,	none,	none,	none),
+	LEAF_NORMAL(EF,	"out",	cl_dx,	word,	accum,	offset32,	none,	none,	none,	none)},
+branch_F6_[8] = {
+	LEAF_NORMAL(F6_0,	"test",	rm,		byte,	imm,		byte,	sflags,	none,	none,	none),
+	LEAF_NORMAL(F6_1,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(F6_2,	"not",	rm,		byte,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(F6_3,	"neg",	rm,		byte,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(F6_4,	"mul",	rm,		byte,	none,	none,	DX_AX,	sflags,	none,	none),
+	LEAF_NORMAL(F6_5,	"imul",	rm,		byte,	none,	none,	DX_AX,	sflags,	none,	none),
+	LEAF_NORMAL(F6_6,	"div",	rm,		byte,	none,	none,	DX_AX,	sflags,	none,	none),
+	LEAF_NORMAL(F6_7,	"idiv",	rm,		byte,	none,	none,	DX_AX,	sflags,	none,	none)},
+branch_F7_[8] = {
+	LEAF_NORMAL(F7_0,	"test",	rm,		offset,	imm,		offset32,	sflags,	none,	none,	none),
+	LEAF_NORMAL(F7_1,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(F7_2,	"not",	rm,		offset,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(F7_3,	"neg",	rm,		offset,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(F7_4,	"mul",	rm,		offset,	none,	none,	DX_AX,	sflags,	none,	none),
+	LEAF_NORMAL(F7_5,	"imul",	rm,		offset,	none,	none,	DX_AX,	sflags,	none,	none),
+	LEAF_NORMAL(F7_6,	"div",	rm,		offset,	none,	none,	DX_AX,	sflags,	none,	none),
+	LEAF_NORMAL(F7_7,	"idiv",	rm,		offset,	none,	none,	DX_AX,	sflags,	none,	none)},
+branch_F0[8] = {
+	LEAF_NORMAL(F0,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(F1,	"icebp",	none,	none,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(F2,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(F3,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(F4,	"hlt",	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(F5,	"cmc",	none,	none,	none,	none,	sflags,	none,	none,	none),
+	BRANCH_ENTRY(F6_),
+	BRANCH_ENTRY(F7_)},
+branch_FF_[8] = {
+	LEAF_NORMAL(FF_0,	"inc",	rm,		offset,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(FF_1,	"dec",	rm,		offset,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(FF_2,	"call",	rm,		offset64,	none,	none,	SP,		none,	none,	none),
+	LEAF_NORMAL(FF_3,	"call",	mm,		ptr32,		none,	none,	SP,		CS,		none,	none),
+	LEAF_NORMAL(FF_4,	"jmp",	rm,		offset64,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(FF_5,	"jmp",	mm,		ptr32,		none,	none,	CS,		none,	none,	none),
+	LEAF_NORMAL(FF_6,	"push",	rm,		offset64,	none,	none,	SP,		none,	none,	none),
+	LEAF_NORMAL(FF_7,	NULL,	none,	none,	none,	none,	none,	none,	none,	none)},
+branch_F8[8] = {
+	LEAF_NORMAL(F8,	"clc",	none,	none,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(F9,	"stc",	none,	none,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(FA,	"cli",	none,	none,	none,	none,	flags,	none,	none,	none),
+	LEAF_NORMAL(FB,	"sti",	none,	none,	none,	none,	flags,	none,	none,	none),
+	LEAF_NORMAL(FC,	"cld",	none,	none,	none,	none,	flags,	none,	none,	none),
+	LEAF_NORMAL(FD,	"std",	none,	none,	none,	none,	flags,	none,	none,	none),
+	NAME_NORMAL(FE_,			rm,		byte,	none,	none,	sflags,			none,	none),
+	BRANCH_ENTRY(FF_)},
+oneByteTable[256 >> 3] = {
+	BRANCH_ENTRY(00),
+	BRANCH_ENTRY(08),
+	BRANCH_ENTRY(10),
+	BRANCH_ENTRY(18),
+	BRANCH_ENTRY(20),
+	BRANCH_ENTRY(28),
+	BRANCH_ENTRY(30),
+	BRANCH_ENTRY(38),
+#ifndef X86_64
+	LEAF_NORMAL(40,	"inc",	reg,		offset,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(48,	"dec",	reg,		offset,	none,	none,	sflags,	none,	none,	none),
+#else
+	LEAF_NORMAL(40,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(48,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+#endif
+	LEAF_NORMAL(50,	"push",	reg,		offset64,	none,	none,	SP,		none,	none,	none),
+	LEAF_NORMAL(58,	"pop",	reg,		offset64,	none,	offset,	tos,		none,	none,	none),
+	BRANCH_ENTRY(60),
+	BRANCH_ENTRY(68),
+	LEAF_COND(70,		"j",		disp,	byte,	none,	none,	sflags,	none,	normal,	none),
+	LEAF_COND(78,		"j",		disp,	byte,	none,	none,	sflags,	none,	normal,	none),
+	BRANCH_ENTRY(80),
+	BRANCH_ENTRY(88),
+	BRANCH_ENTRY(90),
+	BRANCH_ENTRY(98),
+	BRANCH_ENTRY(A0),
+	BRANCH_ENTRY(A8),
+	LEAF_NORMAL(B0,	"mov",	reg,		byte,	imm,		byte,	none,	none,	none,	none),
+	LEAF_NORMAL(B8,	"mov",	reg,		offset,	imm,		offset,	none,	none,	none,	none),
+	BRANCH_ENTRY(C0),
+	BRANCH_ENTRY(C8),
+	BRANCH_ENTRY(D0),
+	REGMEM_ENTRY(D8,	normal),
+	BRANCH_ENTRY(E0),
+	BRANCH_ENTRY(E8),
+	BRANCH_ENTRY(F0),
+	BRANCH_ENTRY(F8)};
Index: 2.6.14-nlkd/debug/nlkd/cda/x86_2.c
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ 2.6.14-nlkd/debug/nlkd/cda/x86_2.c	2005-09-01 08:37:51.000000000 +0200
@@ -0,0 +1,453 @@
+/*****************************************************************************
+ *
+ *   File Name:      x86_2.c
+ *   Created by:     Jan Beulich
+ *   Date created:   08Mar2001
+ *
+ *   %version:       8 %
+ *   %derived_by:    jbeulich %
+ *   %date_modified: Thu Sep 01 00:37:38 2005 %
+ *
+ *****************************************************************************/
+/*****************************************************************************
+ *                                                                           *
+ * Copyright (c) 2001-2005 Novell, Inc. All Rights Reserved.                 *
+ *                                                                           *
+ * This program is free software; you can redistribute it and/or             *
+ * modify it under the terms of version 2 of the GNU General Public License  *
+ * as published by the Free Software Foundation.                             *
+ *                                                                           *
+ * 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, contact Novell, Inc.                     *
+ *                                                                           *
+ * To contact Novell about this file by physical or electronic mail,         *
+ * you may find current contact information at www.novell.com.               *
+ *                                                                           *
+ *****************************************************************************/
+/*****************************************************************************
+ *
+ *	File Description:
+ *
+ *****************************************************************************/
+
+#ifndef X86_64
+NAME_TABLE(0F00r, "sldt", "str", "lldt", "ltr", "verr", "verw", "jmpe", NULL);
+#else
+NAME_TABLE(0F00r, "sldt", "str", "lldt", "ltr", "verr", "verw", NULL, NULL);
+#endif
+NAME_TABLE(0F71_, NULL, NULL, "psrl", NULL, "psra", NULL, "psll", NULL);
+#define names_0F72_ names_0F71_
+NAME_TABLE(0F73_, NULL, NULL, "psrl", "psrl", NULL, NULL, "psll", "psll");
+NAME_TABLE(0F90, "set", NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+#define names_0F91 names_0F90
+#define names_0F92 names_0F90
+#define names_0F93 names_0F90
+#define names_0F94 names_0F90
+#define names_0F95 names_0F90
+#define names_0F96 names_0F90
+#define names_0F97 names_0F90
+#define names_0F98 names_0F90
+#define names_0F99 names_0F90
+#define names_0F9A names_0F90
+#define names_0F9B names_0F90
+#define names_0F9C names_0F90
+#define names_0F9D names_0F90
+#define names_0F9E names_0F90
+#define names_0F9F names_0F90
+NAME_TABLE(0FBA_, NULL, NULL, NULL, NULL, "bt", "bts", "btr", "btc");
+
+static const OpcodeInfo
+branch_0F00m[8] = {
+	LEAF_NORMAL(0F00m0,	"sldt",	mm,		word,	none,	none,	none,	none,	nowidth,	none),
+	LEAF_NORMAL(0F00m1,	"str",	mm,		word,	none,	none,	none,	none,	nowidth,	none),
+	LEAF_NORMAL(0F00m2,	"lldt",	mm,		word,	none,	none,	none,	none,	nowidth,	none),
+	LEAF_NORMAL(0F00m3,	"ltr",	mm,		word,	none,	none,	none,	none,	nowidth,	none),
+	LEAF_NORMAL(0F00m4,	"verr",	mm,		word,	none,	none,	none,	none,	nowidth,	none),
+	LEAF_NORMAL(0F00m5,	"verw",	mm,		word,	none,	none,	none,	none,	nowidth,	none),
+#ifndef X86_64
+	LEAF_NORMAL(0F00m6,	"jmpe",	mm,		offset,	none,	none,	none,	none,	none,	none),
+#else
+	LEAF_NORMAL(0F00m6,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+#endif
+	LEAF_NORMAL(0F00m7,	NULL,	none,	none,	none,	none,	none,	none,	none,	none)},
+regmem_0F00[2] = {
+	BRANCH_ENTRY(0F00m),
+	NAME_NORMAL(0F00r,			rr,		offset,	none,	none,	none,			none,	none)},
+branch_0F01_1r[8] = {
+	LEAF_NORMAL(0F01_1r0, "monitor", none,	none,	none,	none,	DS_AX,	DX_CX,	none,	none),
+	LEAF_NORMAL(0F01_1r1, "mwait", none,	none,	none,	none,	CX,		AX,		none,	none),
+	LEAF_NORMAL(0F01_1r2, NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0F01_1r3, NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0F01_1r4, NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0F01_1r5, NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0F01_1r6, NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0F01_1r7, NULL,	none,	none,	none,	none,	none,	none,	none,	none)},
+regmem_0F01_1[2] = {
+	LEAF_NORMAL(0F01_1m, "sidt",	mm,		pword,	none,	none,	none,	none,	none,	opsz),
+	BRANCH_ENTRY(0F01_1r)},
+branch_0F01_3r[8] = {
+	LEAF_NORMAL(0F01_3r0, "vmrun",	none,	none,	none,	none,	AX,	none,	none,	none),
+	LEAF_NORMAL(0F01_3r1, "vmmcall", none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0F01_3r2, "vmload",	none,	none,	none,	none,	AX,	none,	none,	none),
+	LEAF_NORMAL(0F01_3r3, "vmsave",	none,	none,	none,	none,	AX,	none,	none,	none),
+	LEAF_NORMAL(0F01_3r4, "stgi",	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0F01_3r5, "clgi",	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0F01_3r6, "skinit",	none,	none,	none,	none,	AX,	none,	none,	none),
+	LEAF_NORMAL(0F01_3r7, "invlpga", none,	none,	none,	none,	AX,	CX,	none,	none)},
+regmem_0F01_3[2] = {
+	LEAF_NORMAL(0F01_3m, "lidt",	mm,		pword,	none,	none,	none,	none,	none,	opsz),
+	BRANCH_ENTRY(0F01_3r)},
+regmem_0F01_4[2] = {
+	LEAF_NORMAL(0F01_4m, "smsw",	mm,		word,	none,	none,	none,	none,	nowidth,	none),
+	LEAF_NORMAL(0F01_4r, "smsw",	rr,		offset,	none,	none,	none,	none,	none,	none)},
+branch_0F01_7r[8] = {
+#ifndef X86_64
+	LEAF_NORMAL(0F01_7r0, NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+#else
+	LEAF_NORMAL(0F01_7r0, "swapgs", none,	none,	none,	none,	GS,		none,	none,	none),
+#endif
+	LEAF_NORMAL(0F01_7r1, "rdtscp", none,	none,	none,	none,	DX_AX,	CX,		none,	none),
+	LEAF_NORMAL(0F01_7r2, NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0F01_7r3, NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0F01_7r4, NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0F01_7r5, NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0F01_7r6, NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0F01_7r7, NULL,	none,	none,	none,	none,	none,	none,	none,	none)},
+regmem_0F01_7[2] = {
+	LEAF_NORMAL(0F01_7m, "invlpg", mm,		none,	none,	none,	none,	none,	none,	none),
+	BRANCH_ENTRY(0F01_7r)},
+branch_0F01_[8] = {
+	LEAF_NORMAL(0F01_0,	"sgdt",	mm,		pword,	none,	none,	none,	none,	none,	opsz),
+	REGMEM_ENTRY(0F01_1, normal),
+	LEAF_NORMAL(0F01_2,	"lgdt",	mm,		pword,	none,	none,	none,	none,	none,	opsz),
+	REGMEM_ENTRY(0F01_3, normal),
+	REGMEM_ENTRY(0F01_4, normal),
+	LEAF_NORMAL(0F01_5,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0F01_6,	"lmsw",	rm,		word,	none,	none,	none,	none,	nowidth,	none),
+	REGMEM_ENTRY(0F01_7, normal)},
+branch_0F00[8] = {
+	REGMEM_ENTRY(0F00,	normal),
+	BRANCH_ENTRY(0F01_),
+	LEAF_NORMAL(0F02,	"lar",	r_rm,	offset32,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0F03,	"lsl",	r_rm,	offset32,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0F04,	NULL,	 none,	none,	none,	none,	none,	none,	none,	none),
+#ifndef X86_64
+	LEAF_NORMAL(0F05,	"syscall", none,	none,	none,	none,	CX,		int,		none,	none),
+#else
+	LEAF_NORMAL(0F05,	"syscall", none,	none,	none,	none,	CX_R11,	int,		none,	none),
+#endif
+	LEAF_NORMAL(0F06,	"clts",	none,	none,	none,	none,	none,	none,	none,	none),
+#ifndef X86_64
+	LEAF_NORMAL(0F07,	"sysret", none,	none,	none,	none,	CX,		int,		none,	none)},
+#else
+	LEAF_NORMAL(0F07,	"sysret", none,	none,	none,	none,	CX_R11,	int,		none,	none)},
+#endif
+branch_0F08[8] = {
+	LEAF_NORMAL(0F08,	"invd",	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0F09,	"wbinvd",	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0F0A,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0F0B,	"ud2",	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0F0C,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0F0D,	"prefetch", mm,	none,	none,	none,	none,	none,	access,	none),	// 3DNow!
+	LEAF_MMX(0F0E,		"femms",	none,	none,	none,	none,	none,			none,	none),	// 3DNow!
+	LEAF_MMX(0F0F,		NULL,	r_rm,	mmx,		none,	none,	none,			3dnow,	none)},	// 3DNow!
+regmem_0F12[8] = {
+	LEAF_XMM(0F12mPS,	"movl",	r,		xmm,		mm,		xmm,		none,			half,	none),
+	LEAF_XMM(0F12rPS,	"movhl",	r,		xmm,		rr,		xmm,		none,			packed,	none),
+	LEAF_XMM(0F12mSS,	"movsldup", r,		xmm,		rm,		xmm,		none,			none,	none),
+	LEAF_XMM(0F12rSS,	"movsldup", r,		xmm,		rm,		xmm,		none,			none,	none),
+	LEAF_XMM(0F12mPD,	"movl",	r,		xmm,		mm,		xmm,		none,			half,	none),
+	LEAF_XMM(0F12rPD,	NULL,	none,	none,	none,	none,	none,			none,	none),
+	LEAF_XMM(0F12mSD,	"movddup", r,		xmm,		rm,		xmm,		none,			none,	none),
+	LEAF_XMM(0F12rSD,	"movddup", r,		xmm,		rm,		xmm,		none,			none,	none)},
+regmem_0F16[8] = {
+	LEAF_XMM(0F16mPS,	"movh",	r,		xmm,		mm,		xmm,		none,			half,	none),
+	LEAF_XMM(0F16rPS,	"movlh",	r,		xmm,		rr,		xmm,		none,			packed,	none),
+	LEAF_XMM(0F16mSS,	"movshdup", r,		xmm,		rm,		xmm,		none,			none,	none),
+	LEAF_XMM(0F16rSS,	"movshdup", r,		xmm,		rm,		xmm,		none,			none,	none),
+	LEAF_XMM(0F16mPD,	"movh",	r,		xmm,		mm,		xmm,		none,			half,	none),
+	LEAF_XMM(0F16rPD,	NULL,	none,	none,	none,	none,	none,			none,	none),
+	LEAF_XMM(0F16mSD,	NULL,	none,	none,	none,	none,	none,			none,	none),
+	LEAF_XMM(0F16rSD,	NULL,	none,	none,	none,	none,	none,			none,	none)},
+branch_0F10[8] = {
+	LEAF_XMM(0F10,		"mov",	r_rm,	xmm,		none,	none,	none,			mode,	none),	// note: ps form is movups
+	LEAF_XMM(0F11,		"mov",	rm_r,	xmm,		none,	none,	none,			mode,	none),	// note: ps form is movups
+	REGMEM_ENTRY(0F12,	xmm),
+	LEAF_XMM(0F13,		"movl",	mm,		xmm,		r,		xmm,		none,			half,	none),
+	LEAF_XMM(0F14,		"unpckl",	r_rm,	xmm,		none,	none,	none,			packed,	none),
+	LEAF_XMM(0F15,		"unpckh",	r_rm,	xmm,		none,	none,	none,			packed,	none),
+	REGMEM_ENTRY(0F16,	xmm),
+	LEAF_XMM(0F17,		"movh",	mm,		xmm,		r,		xmm,		none,			half,	none)},
+branch_0F18[8] = {
+	LEAF_NORMAL(0F18,	"prefetch", mm,	none,	none,	none,	none,	none,	loc,		none),
+	LEAF_NORMAL(0F19,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0F1A,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0F1B,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0F1C,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0F1D,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0F1E,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0F1F,	NULL,	none,	none,	none,	none,	none,	none,	none,	none)},
+branch_0F20[8] = {
+	LEAF_NORMAL(0F20,	"mov",	rr,		reg,		cdt,		reg,		none,	none,	none,	none),
+	LEAF_NORMAL(0F21,	"mov",	rr,		reg,		cdt,		reg,		none,	none,	none,	none),
+	LEAF_NORMAL(0F22,	"mov",	cdt,		reg,		rr,		reg,		none,	none,	none,	none),
+	LEAF_NORMAL(0F23,	"mov",	cdt,		reg,		rr,		reg,		none,	none,	none,	none),
+	LEAF_NORMAL(0F24,	"mov",	rr,		reg,		cdt,		reg,		none,	none,	none,	none),
+	LEAF_NORMAL(0F25,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0F26,	"mov",	cdt,		reg,		rr,		reg,		none,	none,	none,	none),
+	LEAF_NORMAL(0F27,	NULL,	none,	none,	none,	none,	none,	none,	none,	none)},
+branch_0F28[8] = {
+	LEAF_XMM(0F28,		"mova",	r_rm,	xmm,		none,	none,	none,			packed,	none),
+	LEAF_XMM(0F29,		"mova",	rm_r,	xmm,		none,	none,	none,			packed,	none),
+	LEAF_XMM(0F2A,		"cvt",	r,		xmm,		rm,		mmx,		mxcsr,			convert, none),
+	LEAF_XMM(0F2B,		"movnt",	mm,		xmm,		r,		xmm,		none,			packed,	none),
+	LEAF_XMM(0F2C,		"cvt",	r,		mmx,		rm,		xmm,		mxcsr,			convert,	none),
+	LEAF_XMM(0F2D,		"cvt",	r,		mmx,		rm,		xmm,		mxcsr,			convert,	none),
+	LEAF_XMM(0F2E,		"ucomi",	r_rm,	xmm,		none,	none,	sflags,			scalar,	none),
+	LEAF_XMM(0F2F,		"comi",	r_rm,	xmm,		none,	none,	sflags,			scalar,	none)},
+branch_0F30[8] = {
+	LEAF_NORMAL(0F30,	"wrmsr",	none,	none,	none,	none,	CX,		DX_AX,	none,	none),
+	LEAF_NORMAL(0F31,	"rdtsc",	none,	none,	none,	none,	DX_AX,	none,	none,	none),
+	LEAF_NORMAL(0F32,	"rdmsr",	none,	none,	none,	none,	CX,		DX_AX,	none,	none),
+	LEAF_NORMAL(0F33,	"rdpmc",	none,	none,	none,	none,	DX_AX,	none,	none,	none),
+#ifndef X86_64
+	LEAF_NORMAL(0F34,	"sysenter", none,	none,	none,	none,	int,		none,	none,	none),
+#else
+	LEAF_NORMAL(0F34,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+#endif
+	LEAF_NORMAL(0F35,	"sysexit", none,	none,	none,	none,	DX_CX,	int,		none,	none),
+	LEAF_NORMAL(0F36,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0F37,	NULL,	none,	none,	none,	none,	none,	none,	none,	none)},
+branch_0F50[8] = {
+	LEAF_XMM(0F50,		"movmsk",	r,		dword,	rr,		xmm,		none,			packed,	none),
+	LEAF_XMM(0F51,		"sqrt",	r_rm,	xmm,		none,	none,	mxcsr,			mode,	none),
+	LEAF_XMM(0F52,		"rsqrt",	r_rm,	xmm,		none,	none,	mxcsr,			single,	none),
+	LEAF_XMM(0F53,		"rcp",	r_rm,	xmm,		none,	none,	mxcsr,			single,	none),
+	LEAF_XMM(0F54,		"and",	r_rm,	xmm,		none,	none,	none,			packed,	none),
+	LEAF_XMM(0F55,		"andn",	r_rm,	xmm,		none,	none,	none,			packed,	none),
+	LEAF_XMM(0F56,		"or",	r_rm,	xmm,		none,	none,	none,			packed,	none),
+	LEAF_XMM(0F57,		"xor",	r_rm,	xmm,		none,	none,	none,			packed,	none)},
+branch_0F58[8] = {
+	LEAF_XMM(0F58,		"add",	r_rm,	xmm,		none,	none,	mxcsr,			mode,	none),
+	LEAF_XMM(0F59,		"mul",	r_rm,	xmm,		none,	none,	mxcsr,			mode,	none),
+	LEAF_XMM(0F5A,		"cvt",	r,		xmm,		rm,		xmm,		mxcsr,			convert,	none),
+	LEAF_XMM(0F5B,		"cvt",	r,		xmm,		rm,		xmm,		mxcsr,			convert,	none),
+	LEAF_XMM(0F5C,		"sub",	r_rm,	xmm,		none,	none,	mxcsr,			mode,	none),
+	LEAF_XMM(0F5D,		"min",	r_rm,	xmm,		none,	none,	mxcsr,			mode,	none),
+	LEAF_XMM(0F5E,		"div",	r_rm,	xmm,		none,	none,	mxcsr,			mode,	none),
+	LEAF_XMM(0F5F,		"max",	r_rm,	xmm,		none,	none,	mxcsr,			mode,	none)},
+branch_0F60[8] = {
+	LEAF_MMX(0F60,		"punpckl", r_rm,	mmx_xmm,	none,	none,	none,			expand,	none),
+	LEAF_MMX(0F61,		"punpckl", r_rm,	mmx_xmm,	none,	none,	none,			expand,	none),
+	LEAF_MMX(0F62,		"punpckl", r_rm,	mmx_xmm,	none,	none,	none,			expand,	none),
+	LEAF_MMX(0F63,		"pack",	r_rm,	mmx_xmm,	none,	none,	none,			shrink,	none),
+	LEAF_MMX(0F64,		"pcmpgt",	r_rm,	mmx_xmm,	none,	none,	none,			normal,	none),
+	LEAF_MMX(0F65,		"pcmpgt",	r_rm,	mmx_xmm,	none,	none,	none,			normal,	none),
+	LEAF_MMX(0F66,		"pcmpgt",	r_rm,	mmx_xmm,	none,	none,	none,			normal,	none),
+	LEAF_MMX(0F67,		"pack",	r_rm,	mmx_xmm,	none,	none,	none,			shrink,	none)},
+branch_0F68[8] = {
+	LEAF_MMX(0F68,		"punpckh", r_rm,	mmx_xmm,	none,	none,	none,			expand,	none),
+	LEAF_MMX(0F69,		"punpckh", r_rm,	mmx_xmm,	none,	none,	none,			expand,	none),
+	LEAF_MMX(0F6A,		"punpckh", r_rm,	mmx_xmm,	none,	none,	none,			expand,	none),
+	LEAF_MMX(0F6B,		"pack",	r_rm,	mmx_xmm,	none,	none,	none,			shrink,	none),
+	LEAF_MMX(0F6C,		"punpckl", r_rm,	mmx_xmm,	none,	none,	none,			expand,	none),
+	LEAF_MMX(0F6D,		"punpckh", r_rm,	mmx_xmm,	none,	none,	none,			expand,	none),
+	LEAF_MMX(0F6E,		"mov",	r,		mmx_xmm,	rm,		dword,	none,			normal,	none),
+	LEAF_MMX(0F6F,		"mov",	r_rm,	mmx_xmm,	none,	none,	none,			normal,	none)},
+branch_0F70[8] = {
+	LEAF_MMX(0F70,		"pshuf",	r_rm,	mmx_xmm,	imm,		byte,	none,			word,	none),
+	NAME_MMX(0F71_,			rr,		mmx_xmm,	imm,		byte,					normal,	none),
+	NAME_MMX(0F72_,			rr,		mmx_xmm,	imm,		byte,					normal,	none),
+	NAME_MMX(0F73_,			rr,		mmx_xmm,	imm,		byte,					normal,	none),
+	LEAF_MMX(0F74,		"pcmpeq",	r_rm,	mmx_xmm,	none,	none,	none,			normal,	none),
+	LEAF_MMX(0F75,		"pcmpeq",	r_rm,	mmx_xmm,	none,	none,	none,			normal,	none),
+	LEAF_MMX(0F76,		"pcmpeq",	r_rm,	mmx_xmm,	none,	none,	none,			normal,	none),
+	LEAF_MMX(0F77,		"emms",	none,	none,	none,	none,	none,			none,	none)},
+branch_0F78[8] = {
+	LEAF_MMX(0F78,		NULL,	none,	none,	none,	none,	none,			none,	none),
+	LEAF_MMX(0F79,		NULL,	none,	none,	none,	none,	none,			none,	none),
+	LEAF_MMX(0F7A,		NULL,	none,	none,	none,	none,	none,			none,	none),
+	LEAF_MMX(0F7B,		NULL,	none,	none,	none,	none,	none,			none,	none),
+	LEAF_XMM(0F7C,		"hadd",	r_rm,	xmm,		none,	none,	mxcsr,			sse3,	none),
+	LEAF_XMM(0F7D,		"hsub",	r_rm,	xmm,		none,	none,	mxcsr,			sse3,	none),
+	LEAF_MMX(0F7E,		"mov",	rm,		dword,	r,		mmx_xmm,	none,			normal,	none),
+	LEAF_MMX(0F7F,		"mov",	rm_r,	mmx_xmm,	none,	none,	none,			normal,	none)},
+branch_0F90[8] = {
+	NAME_COND(0F90,			rm,		byte,	none,	none,					normal,	none),
+	NAME_COND(0F91,			rm,		byte,	none,	none,					normal,	none),
+	NAME_COND(0F92,			rm,		byte,	none,	none,					normal,	none),
+	NAME_COND(0F93,			rm,		byte,	none,	none,					normal,	none),
+	NAME_COND(0F94,			rm,		byte,	none,	none,					normal,	none),
+	NAME_COND(0F95,			rm,		byte,	none,	none,					normal,	none),
+	NAME_COND(0F96,			rm,		byte,	none,	none,					normal,	none),
+	NAME_COND(0F97,			rm,		byte,	none,	none,					normal,	none)},
+#define branch_0F98 branch_0F90
+branch_0FA0[8] = {
+	LEAF_NORMAL(0FA0,	"push",	reg,		ptr,		none,	none,	SP,		none,	none,	none),
+	LEAF_NORMAL(0FA1,	"pop",	reg,		ptr,		none,	word,	tos,		none,	none,	none),
+	LEAF_NORMAL(0FA2,	"cpuid",	none,	none,	none,	none,	DX_AX,	CX_BX,	none,	none),
+	LEAF_NORMAL(0FA3,	"bt",	rm_r,	offset,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(0FA4,	"shld",	rm_r,	offset,	imm,		byte,	sflags,	none,	none,	none),
+	LEAF_NORMAL(0FA5,	"shld",	rm_r,	offset,	cl_dx,	byte,	sflags,	none,	none,	none),
+	LEAF_NORMAL(0FA6,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0FA7,	NULL,	none,	none,	none,	none,	none,	none,	none,	none)},
+regmem_0FAE_5[2] = {
+	LEAF_NORMAL(0FAE_5m, NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0FAE_5r, "lfence", none,	none,	none,	none,	none,	none,	none,	none)},
+regmem_0FAE_6[2] = {
+	LEAF_NORMAL(0FAE_6m, NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0FAE_6r, "mfence", none,	none,	none,	none,	none,	none,	none,	none)},
+regmem_0FAE_7[2] = {
+	LEAF_NORMAL(0FAE_7m, "clflush", mm,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0FAE_7r, "sfence", none,	none,	none,	none,	none,	none,	none,	none)},
+branch_0FAE_[8] = {
+	LEAF_NORMAL(0FAE_0,	"fxsave",	mm,		none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0FAE_1,	"fxrstor", mm,		none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0FAE_2,	"ldmxcsr", mm,		dword,	none,	none,	mxcsr,	none,	nowidth,	none),
+	LEAF_NORMAL(0FAE_3,	"stmxcsr", mm,		dword,	none,	none,	mxcsr,	none,	nowidth,	none),
+	LEAF_NORMAL(0FAE_4,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	REGMEM_ENTRY(0FAE_5,	normal),
+	REGMEM_ENTRY(0FAE_6,	normal),
+	REGMEM_ENTRY(0FAE_7,	normal)},
+branch_0FA8[8] = {
+	LEAF_NORMAL(0FA8,	"push",	reg,		ptr,		none,	none,	SP,		none,	none,	none),
+	LEAF_NORMAL(0FA9,	"pop",	reg,		ptr,		none,	word,	tos,		none,	none,	none),
+	LEAF_NORMAL(0FAA,	"rsm",	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0FAB,	"bts",	rm_r,	offset,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(0FAC,	"shrd",	rm_r,	offset,	imm,		byte,	sflags,	none,	none,	none),
+	LEAF_NORMAL(0FAD,	"shrd",	rm_r,	offset,	cl_dx,	byte,	sflags,	none,	none,	none),
+	BRANCH_ENTRY(0FAE_),
+	LEAF_NORMAL(0FAF,	"imul",	r_rm,	offset,	none,	none,	sflags,	none,	none,	none)},
+branch_0FB0[8] = {
+	LEAF_NORMAL(0FB0,	"cmpxchg", mm,		byte,	r,		byte,	AX,		none,	nowidth,	none),
+	LEAF_NORMAL(0FB1,	"cmpxchg", mm,		offset,	r,		offset,	AX,		none,	nowidth,	none),
+	LEAF_NORMAL(0FB2,	"lss",	r,		offset,	mm,		ptr32,	SS,		none,	nowidth,	none),
+	LEAF_NORMAL(0FB3,	"btr",	rm_r,	offset,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0FB4,	"lfs",	r,		offset,	mm,		ptr32,	FS,		none,	nowidth,	none),
+	LEAF_NORMAL(0FB5,	"lgs",	r,		offset,	mm,		ptr32,	GS,		none,	nowidth,	none),
+	LEAF_NORMAL(0FB6,	"movzx",	r,		offset,	rm,		byte,	none,	none,	none,	none),
+	LEAF_NORMAL(0FB7,	"movzx",	r,		offset,	rm,		word,	none,	none,	none,	none)},
+branch_0FB8[8] = {
+#ifndef X86_64
+	LEAF_NORMAL(0FB8,	"jmpe",	imm,		offset,	none,	none,	none,	none,	none,	none),
+#else
+	LEAF_NORMAL(0FB8,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+#endif
+	LEAF_NORMAL(0FB9,	"ud2",	none,	none,	none,	none,	none,	none,	none,	none),
+	NAME_NORMAL(0FBA_,			rm,		offset,	imm,		byte,	sflags,			none,	none),
+	LEAF_NORMAL(0FBB,	"btc",	rm_r,	offset,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(0FBC,	"bsf",	r_rm,	offset,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(0FBD,	"bsr",	r_rm,	offset,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(0FBE,	"movsx",	r,		offset,	rm,		byte,	none,	none,	none,	none),
+	LEAF_NORMAL(0FBF,	"movsx",	r,		offset,	rm,		word,	none,	none,	none,	none)},
+branch_0FC7_[8] = {
+	LEAF_NORMAL(0FC7_0,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0FC7_1,	"cmpxchg", mm,		qword,	none,	none,	DX_AX,	CX_BX,	nowidth,	none),
+	LEAF_NORMAL(0FC7_2,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0FC7_3,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0FC7_4,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0FC7_5,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0FC7_6,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_NORMAL(0FC7_7,	NULL,	none,	none,	none,	none,	none,	none,	none,	none)},
+branch_0FC0[8] = {
+	LEAF_NORMAL(0FC0,	"xadd",	rm_r,	byte,	none,	none,	sflags,	none,	none,	none),
+	LEAF_NORMAL(0FC1,	"xadd",	rm_r,	offset,	none,	none,	sflags,	none,	none,	none),
+	LEAF_XMM(0FC2,		"cmp",	r_rm,	xmm,		imm,		byte,	mxcsr,			mode,	none),
+	LEAF_NORMAL(0FC3,	"movnti",	mm,		dword,	r,		dword,	none,	none,	nowidth,	none),
+	LEAF_MMX(0FC4,		"pinsr",	mmxie,	word,	imm,		byte,	none,			word,	none),
+	LEAF_MMX(0FC5,		"pextr",	mmxie,	mmx_xmm,	imm,		byte,	none,			word,	none),
+	LEAF_XMM(0FC6,		"shuf",	r_rm,	xmm,		imm,		byte,	mxcsr,			packed,	none),
+	BRANCH_ENTRY(0FC7_)},
+branch_0FD0[8] = {
+	LEAF_XMM(0FD0,		"addsub",	r_rm,	xmm,		none,	none,	mxcsr,			sse3,	none),
+	LEAF_MMX(0FD1,		"psrl",	r_rm,	mmx_xmm,	none,	none,	none,			normal,	none),
+	LEAF_MMX(0FD2,		"psrl",	r_rm,	mmx_xmm,	none,	none,	none,			normal,	none),
+	LEAF_MMX(0FD3,		"psrl",	r_rm,	mmx_xmm,	none,	none,	none,			normal,	none),
+	LEAF_MMX(0FD4,		"padd",	r_rm,	mmx_xmm,	none,	none,	none,			quad,	none),
+	LEAF_MMX(0FD5,		"pmull",	r_rm,	mmx_xmm,	none,	none,	none,			normal,	none),
+	LEAF_XMM(0FD6,		"mov",	r,		xmm,		rm,		xmm,		none,			convert,	none),
+	LEAF_MMX(0FD7,		"pmovmsk", r,		dword,	rr,		mmx_xmm,	none,			byte,	none)},
+branch_0FD8[8] = {
+	LEAF_MMX(0FD8,		"psub",	r_rm,	mmx_xmm,	none,	none,	none,			saturate,	none),
+	LEAF_MMX(0FD9,		"psub",	r_rm,	mmx_xmm,	none,	none,	none,			saturate,	none),
+	LEAF_MMX(0FDA,		"pmin",	r_rm,	mmx_xmm,	none,	none,	none,			us_bw,	none),
+	LEAF_MMX(0FDB,		"pand",	r_rm,	mmx_xmm,	none,	none,	none,			none,	none),
+	LEAF_MMX(0FDC,		"padd",	r_rm,	mmx_xmm,	none,	none,	none,			saturate,	none),
+	LEAF_MMX(0FDD,		"padd",	r_rm,	mmx_xmm,	none,	none,	none,			saturate,	none),
+	LEAF_MMX(0FDE,		"pmax",	r_rm,	mmx_xmm,	none,	none,	none,			us_bw,	none),
+	LEAF_MMX(0FDF,		"pandn",	r_rm,	mmx_xmm,	none,	none,	none,			none,	none)},
+branch_0FE0[8] = {
+	LEAF_MMX(0FE0,		"pavg",	r_rm,	mmx_xmm,	none,	none,	none,			normal,	none),
+	LEAF_MMX(0FE1,		"psra",	r_rm,	mmx_xmm,	none,	none,	none,			normal,	none),
+	LEAF_MMX(0FE2,		"psra",	r_rm,	mmx_xmm,	none,	none,	none,			normal,	none),
+	LEAF_MMX(0FE3,		"pavg",	r_rm,	mmx_xmm,	none,	none,	none,			word,	none),
+	LEAF_MMX(0FE4,		"pmulhu",	r_rm,	mmx_xmm,	none,	none,	none,			word,	none),
+	LEAF_MMX(0FE5,		"pmulh",	r_rm,	mmx_xmm,	none,	none,	none,			normal,	none),
+	LEAF_XMM(0FE6,		"cvt",	r,		xmm,		rm,		xmm,		mxcsr,			convert,	none),
+	LEAF_MMX(0FE7,		"movnt",	mm,		mmx_xmm,	r,		mmx_xmm,	none,			normal,	none)},
+branch_0FE8[8] = {
+	LEAF_MMX(0FE8,		"psub",	r_rm,	mmx_xmm,	none,	none,	none,			saturate,	none),
+	LEAF_MMX(0FE9,		"psub",	r_rm,	mmx_xmm,	none,	none,	none,			saturate,	none),
+	LEAF_MMX(0FEA,		"pmin",	r_rm,	mmx_xmm,	none,	none,	none,			us_bw,	none),
+	LEAF_MMX(0FEB,		"por",	r_rm,	mmx_xmm,	none,	none,	none,			none,	none),
+	LEAF_MMX(0FEC,		"padd",	r_rm,	mmx_xmm,	none,	none,	none,			saturate,	none),
+	LEAF_MMX(0FED,		"padd",	r_rm,	mmx_xmm,	none,	none,	none,			saturate,	none),
+	LEAF_MMX(0FEE,		"pmax",	r_rm,	mmx_xmm,	none,	none,	none,			us_bw,	none),
+	LEAF_MMX(0FEF,		"pxor",	r_rm,	mmx_xmm,	none,	none,	none,			none,	none)},
+branch_0FF0[8] = {
+	LEAF_XMM(0FF0,		"lddqu",	r,		xmm,		mm,		xmm,		none,			none,	none),
+	LEAF_MMX(0FF1,		"psll",	r_rm,	mmx_xmm,	none,	none,	none,			normal,	none),
+	LEAF_MMX(0FF2,		"psll",	r_rm,	mmx_xmm,	none,	none,	none,			normal,	none),
+	LEAF_MMX(0FF3,		"psll",	r_rm,	mmx_xmm,	none,	none,	none,			normal,	none),
+	LEAF_MMX(0FF4,		"pmuludq", r_rm,	mmx_xmm,	none,	none,	none,			none,	none),
+	LEAF_MMX(0FF5,		"pmadd",	r_rm,	mmx_xmm,	none,	none,	none,			expand,	none),
+	LEAF_MMX(0FF6,		"psad",	r_rm,	mmx_xmm,	none,	none,	none,			bw,		none),
+	LEAF_MMX(0FF7,		"maskmov", r,		mmx_xmm,	rr,		mmx_xmm,	DS_DI,			normal,	none)},
+branch_0FF8[8] = {
+	LEAF_MMX(0FF8,		"psub",	r_rm,	mmx_xmm,	none,	none,	none,			normal,	none),
+	LEAF_MMX(0FF9,		"psub",	r_rm,	mmx_xmm,	none,	none,	none,			normal,	none),
+	LEAF_MMX(0FFA,		"psub",	r_rm,	mmx_xmm,	none,	none,	none,			normal,	none),
+	LEAF_MMX(0FFB,		"psub",	r_rm,	mmx_xmm,	none,	none,	none,			normal,	none),
+	LEAF_MMX(0FFC,		"padd",	r_rm,	mmx_xmm,	none,	none,	none,			normal,	none),
+	LEAF_MMX(0FFD,		"padd",	r_rm,	mmx_xmm,	none,	none,	none,			normal,	none),
+	LEAF_MMX(0FFE,		"padd",	r_rm,	mmx_xmm,	none,	none,	none,			normal,	none),
+	LEAF_MMX(0FFF,		NULL,	none,	none,	none,	none,	none,			none,	none)},
+twoByteTable[256 >> 3] = {
+	BRANCH_ENTRY(0F00),
+	BRANCH_ENTRY(0F08),
+	BRANCH_ENTRY(0F10),
+	BRANCH_ENTRY(0F18),
+	BRANCH_ENTRY(0F20),
+	BRANCH_ENTRY(0F28),
+	BRANCH_ENTRY(0F30),
+	LEAF_NORMAL(0F38,	NULL,	none,	none,	none,	none,	none,	none,	none,	none),
+	LEAF_COND(0F40,	"cmov",	r_rm,	offset,	none,	none,	sflags,	none,	normal,	none),
+	LEAF_COND(0F48,	"cmov",	r_rm,	offset,	none,	none,	sflags,	none,	normal,	none),
+	BRANCH_ENTRY(0F50),
+	BRANCH_ENTRY(0F58),
+	BRANCH_ENTRY(0F60),
+	BRANCH_ENTRY(0F68),
+	BRANCH_ENTRY(0F70),
+	BRANCH_ENTRY(0F78),
+	LEAF_COND(0F80,	"j",		disp,	offset,	none,	none,	sflags,	none,	normal,	none),
+	LEAF_COND(0F88,	"j",		disp,	offset,	none,	none,	sflags,	none,	normal,	none),
+	BRANCH_ENTRY(0F90),
+	BRANCH_ENTRY(0F98),
+	BRANCH_ENTRY(0FA0),
+	BRANCH_ENTRY(0FA8),
+	BRANCH_ENTRY(0FB0),
+	BRANCH_ENTRY(0FB8),
+	BRANCH_ENTRY(0FC0),
+	LEAF_NORMAL(0FC8,	"bswap",	reg,		offset,	none,	none,	none,	none,	none,	none),
+	BRANCH_ENTRY(0FD0),
+	BRANCH_ENTRY(0FD8),
+	BRANCH_ENTRY(0FE0),
+	BRANCH_ENTRY(0FE8),
+	BRANCH_ENTRY(0FF0),
+	BRANCH_ENTRY(0FF8)
+};
Index: 2.6.14-nlkd/debug/nlkd/cda/x86_3.c
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ 2.6.14-nlkd/debug/nlkd/cda/x86_3.c	2005-06-27 11:40:57.000000000 +0200
@@ -0,0 +1,159 @@
+/*****************************************************************************
+ *
+ *   File Name:      x86_3.c
+ *   Created by:     Jan Beulich
+ *   Date created:   08Mar2001
+ *
+ *   %version:       3 %
+ *   %derived_by:    jbeulich %
+ *   %date_modified: Mon Jun 27 03:40:43 2005 %
+ *
+ *****************************************************************************/
+/*****************************************************************************
+ *                                                                           *
+ * Copyright (c) 2001-2005 Novell, Inc. All Rights Reserved.                 *
+ *                                                                           *
+ * This program is free software; you can redistribute it and/or             *
+ * modify it under the terms of version 2 of the GNU General Public License  *
+ * as published by the Free Software Foundation.                             *
+ *                                                                           *
+ * 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, contact Novell, Inc.                     *
+ *                                                                           *
+ * To contact Novell about this file by physical or electronic mail,         *
+ * you may find current contact information at www.novell.com.               *
+ *                                                                           *
+ *****************************************************************************/
+/*****************************************************************************
+ *
+ *	File Description:
+ *
+ *****************************************************************************/
+
+#define LEAF_3DNOW(oc, m) LEAF_MMX(oc, m, r_rm, mmx, none, none, none, 3dnow, none)
+static const OpcodeInfo k3d0x[16] = {
+	LEAF_3DNOW(k3d00,	NULL),
+	LEAF_3DNOW(k3d01,	NULL),
+	LEAF_3DNOW(k3d02,	NULL),
+	LEAF_3DNOW(k3d03,	NULL),
+	LEAF_3DNOW(k3d04,	NULL),
+	LEAF_3DNOW(k3d05,	NULL),
+	LEAF_3DNOW(k3d06,	NULL),
+	LEAF_3DNOW(k3d07,	NULL),
+	LEAF_3DNOW(k3d08,	NULL),
+	LEAF_3DNOW(k3d09,	NULL),
+	LEAF_3DNOW(k3d0A,	NULL),
+	LEAF_3DNOW(k3d0B,	NULL),
+	LEAF_3DNOW(k3d0C,	"pi2fw"),
+	LEAF_3DNOW(k3d0D,	"pi2fd"),
+	LEAF_3DNOW(k3d0E,	NULL),
+	LEAF_3DNOW(k3d0F,	NULL)},
+k3d1x[16] = {
+	LEAF_3DNOW(k3d10,	NULL),
+	LEAF_3DNOW(k3d11,	NULL),
+	LEAF_3DNOW(k3d12,	NULL),
+	LEAF_3DNOW(k3d13,	NULL),
+	LEAF_3DNOW(k3d14,	NULL),
+	LEAF_3DNOW(k3d15,	NULL),
+	LEAF_3DNOW(k3d16,	NULL),
+	LEAF_3DNOW(k3d17,	NULL),
+	LEAF_3DNOW(k3d18,	NULL),
+	LEAF_3DNOW(k3d19,	NULL),
+	LEAF_3DNOW(k3d1A,	NULL),
+	LEAF_3DNOW(k3d1B,	NULL),
+	LEAF_3DNOW(k3d1C,	"pf2iw"),
+	LEAF_3DNOW(k3d1D,	"pf2id"),
+	LEAF_3DNOW(k3d1E,	NULL),
+	LEAF_3DNOW(k3d1F,	NULL)},
+k3d8x[16] = {
+	LEAF_3DNOW(k3d80,	NULL),
+	LEAF_3DNOW(k3d81,	NULL),
+	LEAF_3DNOW(k3d82,	NULL),
+	LEAF_3DNOW(k3d83,	NULL),
+	LEAF_3DNOW(k3d84,	NULL),
+	LEAF_3DNOW(k3d85,	NULL),
+	LEAF_3DNOW(k3d86,	NULL),
+	LEAF_3DNOW(k3d87,	NULL),
+	LEAF_3DNOW(k3d88,	NULL),
+	LEAF_3DNOW(k3d89,	NULL),
+	LEAF_3DNOW(k3d8A,	"pfnacc"),
+	LEAF_3DNOW(k3d8B,	NULL),
+	LEAF_3DNOW(k3d8C,	NULL),
+	LEAF_3DNOW(k3d8D,	NULL),
+	LEAF_3DNOW(k3d8E,	"pfpnacc"),
+	LEAF_3DNOW(k3d8F,	NULL)},
+k3d9x[16] = {
+	LEAF_3DNOW(k3d90,	"pfcmpge"),
+	LEAF_3DNOW(k3d91,	NULL),
+	LEAF_3DNOW(k3d92,	NULL),
+	LEAF_3DNOW(k3d93,	NULL),
+	LEAF_3DNOW(k3d94,	"pfmin"),
+	LEAF_3DNOW(k3d95,	NULL),
+	LEAF_3DNOW(k3d96,	"pfrcp"),
+	LEAF_3DNOW(k3d97,	"pfrsqrt"),
+	LEAF_3DNOW(k3d98,	NULL),
+	LEAF_3DNOW(k3d99,	NULL),
+	LEAF_3DNOW(k3d9A,	"pfsub"),
+	LEAF_3DNOW(k3d9B,	NULL),
+	LEAF_3DNOW(k3d9C,	NULL),
+	LEAF_3DNOW(k3d9D,	NULL),
+	LEAF_3DNOW(k3d9E,	"pfadd"),
+	LEAF_3DNOW(k3d9F,	NULL)},
+k3dAx[16] = {
+	LEAF_3DNOW(k3dA0,	"pfcmpgt"),
+	LEAF_3DNOW(k3dA1,	NULL),
+	LEAF_3DNOW(k3dA2,	NULL),
+	LEAF_3DNOW(k3dA3,	NULL),
+	LEAF_3DNOW(k3dA4,	"pfmax"),
+	LEAF_3DNOW(k3dA5,	NULL),
+	LEAF_3DNOW(k3dA6,	"pfrcpit1"),
+	LEAF_3DNOW(k3dA7,	"pfrsqit1"),
+	LEAF_3DNOW(k3dA8,	NULL),
+	LEAF_3DNOW(k3dA9,	NULL),
+	LEAF_3DNOW(k3dAA,	"pfsubr"),
+	LEAF_3DNOW(k3dAB,	NULL),
+	LEAF_3DNOW(k3dAC,	NULL),
+	LEAF_3DNOW(k3dAD,	NULL),
+	LEAF_3DNOW(k3dAE,	"pfacc"),
+	LEAF_3DNOW(k3dAF,	NULL)},
+k3dBx[16] = {
+	LEAF_3DNOW(k3dB0,	"pfcmpeq"),
+	LEAF_3DNOW(k3dB1,	NULL),
+	LEAF_3DNOW(k3dB2,	NULL),
+	LEAF_3DNOW(k3dB3,	NULL),
+	LEAF_3DNOW(k3dB4,	"pfmul"),
+	LEAF_3DNOW(k3dB5,	NULL),
+	LEAF_3DNOW(k3dB6,	"pfrcpit2"),
+	LEAF_MMX(k3dB7,	"pmulhr",	r_rm,	mmx,		none,	none,	none,	word,	none),
+	LEAF_3DNOW(k3dB8,	NULL),
+	LEAF_3DNOW(k3dB9,	NULL),
+	LEAF_3DNOW(k3dBA,	NULL),
+	LEAF_3DNOW(k3dBB,	"pswapd"),
+	LEAF_3DNOW(k3dBC,	NULL),
+	LEAF_3DNOW(k3dBD,	NULL),
+	LEAF_3DNOW(k3dBE,	NULL),
+	LEAF_MMX(k3dBF,	"pavgus",	r_rm,	mmx,		none,	none,	none,	byte,	none)},
+#undef LEAF_3DNOW
+*const k3dTable[16] = {
+	k3d0x,
+	k3d1x,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	NULL,
+	k3d8x,
+	k3d9x,
+	k3dAx,
+	k3dBx,
+	NULL,
+	NULL,
+	NULL,
+	NULL
+};
Index: 2.6.14-nlkd/debug/nlkd/cda/x86_op.c
===================================================================
--- /dev/null	1970-01-01 00:00:00.000000000 +0000
+++ 2.6.14-nlkd/debug/nlkd/cda/x86_op.c	2005-06-27 11:41:25.000000000 +0200
@@ -0,0 +1,136 @@
+/*****************************************************************************
+ *
+ *   File Name:      x86_op.c
+ *   Created by:     Jan Beulich
+ *   Date created:   08Mar2001
+ *
+ *   %version:       5 %
+ *   %derived_by:    jbeulich %
+ *   %date_modified: Mon Jun 27 03:41:13 2005 %
+ *
+ *****************************************************************************/
+/*****************************************************************************
+ *                                                                           *
+ * Copyright (c) 2001-2005 Novell, Inc. All Rights Reserved                  *
+ *                                                                           *
+ * This program is free software; you can redistribute it and/or             *
+ * modify it under the terms of version 2 of the GNU General Public License  *
+ * as published by the Free Software Foundation.                             *
+ *                                                                           *
+ * 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, contact Novell, Inc.                     *
+ *                                                                           *
+ * To contact Novell about this file by physical or electronic mail,         *
+ * you may find current contact information at www.novell.com.               *
+ *                                                                           *
+ *****************************************************************************/
+/*****************************************************************************
+ *
+ *	File Description:
+ *
+ *****************************************************************************/
+
+#if defined(OPERAND)
+
+OPERAND_NEW(_, imm),
+OPERAND(simm),
+OPERAND(accum),
+OPERAND(cl_dx),
+OPERAND(mem),
+OPERAND(reg),
+OPERAND(str_s),
+OPERAND(str_d),
+OPERAND(r),
+OPERAND(rm),
+OPERAND(rr),
+OPERAND(mm),
+OPERAND(cdt),
+OPERAND_END(_)
+// below those that can only occur in position 1
+OPERAND_NEW(1_, disp),
+OPERAND(r_rm),
+OPERAND(rm_r),
+OPERAND(mmxie),
+OPERAND_END(1_)
+
+#elif defined(HIDDEN_OPERAND)
+
+# ifndef X86_64
+HIDDEN_OPERAND(tos, general, reg_esp, none),
+HIDDEN_OPERAND(AX, general, reg_eax, none),
+HIDDEN_OPERAND(CX, general, reg_ecx, none),
+HIDDEN_OPERAND(SP, general, reg_esp, none),
+HIDDEN_OPERAND(BP, general, reg_ebp, none),
+HIDDEN_OPERAND(DX_AX, general, reg_eax, DX),
+HIDDEN_OPERAND(DX_CX, general, reg_ecx, DX),
+HIDDEN_OPERAND(CX_BX, general, reg_ebx, CX),
+HIDDEN_OPERAND(GRs, general, reg_esp, GRs1),
+#  undef CS /* colliding with include/asm/ptrace.h */
+HIDDEN_OPERAND(CS, selector, sreg_cs, none),
+#  undef DS
+HIDDEN_OPERAND(DS, selector, sreg_ds, none),
+#  undef ES
+HIDDEN_OPERAND(ES, selector, sreg_es, none),
+#  undef FS
+HIDDEN_OPERAND(FS, selector, sreg_fs, none),
+#  undef GS
+HIDDEN_OPERAND(GS, selector, sreg_gs, none),
+#  undef SS
+HIDDEN_OPERAND(SS, selector, sreg_ss, none),
+HIDDEN_OPERAND(flags, eflags, 0, none),
+HIDDEN_OPERAND(sflags, flags, 0, none),
+HIDDEN_OPERAND(ST0, floating, st0, none),
+HIDDEN_OPERAND(ST0_ST1, floating, st1, ST0),
+HIDDEN_OPERAND(fsw, fsw, 0, none),
+HIDDEN_OPERAND(fcw, fcw, 0, none),
+HIDDEN_OPERAND(mxcsr, mxcsr, 0, none),
+HIDDEN_OPERAND(DS_AX, general, reg_eax, DS),
+HIDDEN_OPERAND(DS_DI, general, reg_edi, DS),
+HIDDEN_OPERAND(int, selector, sreg_cs, flags),
+HIDDEN_EXTRA(CNT, none, 0, none),
+// below those that can only be referenced from above, but not from x86_?.c
+HIDDEN_EXTRA(DX, general, reg_edx, none),
+HIDDEN_EXTRA(GRs1, general, reg_eax, GRs2),
+HIDDEN_EXTRA(GRs2, general, reg_ecx, GRs3),
+HIDDEN_EXTRA(GRs3, general, reg_edx, GRs4),
+HIDDEN_EXTRA(GRs4, general, reg_ebx, GRs5),
+HIDDEN_EXTRA(GRs5, general, reg_ebp, GRs6),
+HIDDEN_EXTRA(GRs6, general, reg_esi, GRs7),
+HIDDEN_EXTRA(GRs7, general, reg_edi, none)
+# else
+HIDDEN_OPERAND(tos, general, reg_rsp, none),
+HIDDEN_OPERAND(AX, general, reg_rax, none),
+HIDDEN_OPERAND(CX, general, reg_rcx, none),
+HIDDEN_OPERAND(SP, general, reg_rsp, none),
+HIDDEN_OPERAND(BP, general, reg_rbp, none),
+HIDDEN_OPERAND(DI, general, reg_rdi, none),
+HIDDEN_OPERAND(DX_AX, general, reg_rax, DX),
+HIDDEN_OPERAND(DX_CX, general, reg_rcx, DX),
+HIDDEN_OPERAND(CX_BX, general, reg_rbx, CX),
+HIDDEN_OPERAND(CX_R11, general, reg_rcx, R11),
+HIDDEN_OPERAND(CS, selector, sreg_cs, none),
+HIDDEN_OPERAND(FS, selector, sreg_fs, none),
+HIDDEN_OPERAND(GS, selector, sreg_gs, none),
+HIDDEN_OPERAND(SS, selector, sreg_ss, none),
+HIDDEN_OPERAND(flags, rflags, 0, none),
+HIDDEN_OPERAND(sflags, flags, 0, none),
+HIDDEN_OPERAND(ST0, floating, st0, none),
+HIDDEN_OPERAND(ST0_ST1, floating, st1, ST0),
+HIDDEN_OPERAND(fsw, fsw, 0, none),
+HIDDEN_OPERAND(fcw, fcw, 0, none),
+HIDDEN_OPERAND(mxcsr, mxcsr, 0, none),
+#  define hidop_DS_AX hidop_AX
+#  define hidop_DS_DI hidop_DI
+HIDDEN_OPERAND(int, selector, sreg_cs, flags),
+HIDDEN_EXTRA(CNT, none, 0, none),
+// below those that can only be referenced from above, but not from x86_?.c
+HIDDEN_EXTRA(DX, general, reg_rdx, none),
+HIDDEN_EXTRA(R11, general, reg_r11, none)
+# endif
+
+#endif

  parent reply	other threads:[~2005-11-09 14:27 UTC|newest]

Thread overview: 105+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2005-11-09 13:54 [PATCH 0/39] NLKD - Novell Linux Kernel Debugger Jan Beulich
2005-11-09 13:56 ` [PATCH 1/39] NLKD - an alternative kallsyms approach Jan Beulich
2005-11-09 13:57   ` [PATCH 2/39] NLKD - an alternative early ioremap approach Jan Beulich
2005-11-09 13:58     ` [PATCH 3/39] NLKD - early/late CPU up/down notification Jan Beulich
2005-11-09 13:59       ` [PATCH 4/39] NLKD/i386 " Jan Beulich
2005-11-09 14:01       ` [PATCH 5/39] NLKD/x86-64 " Jan Beulich
2005-11-10 13:10         ` Andi Kleen
2005-11-14  8:04           ` [discuss] " Jan Beulich
2005-11-14 12:37             ` Andi Kleen
2005-11-09 14:01       ` [PATCH 6/39] NLKD - early panic notification Jan Beulich
2005-11-09 14:02         ` [PATCH 7/39] NLKD - task create/destroy notification Jan Beulich
2005-11-09 14:03           ` [PATCH 8/39] NLKD - rmmod notification Jan Beulich
2005-11-09 14:04             ` [PATCH 9/39] NLKD - hotkey notification Jan Beulich
2005-11-09 14:05               ` [PATCH 10/39] NLKD - console layout change notification Jan Beulich
2005-11-09 14:06                 ` [PATCH 11/39] NLKD - time adjustment Jan Beulich
2005-11-09 14:06                   ` [PATCH 12/39] NLKD/i386 " Jan Beulich
2005-11-09 19:10                     ` George Anzinger
2005-11-10  8:12                       ` Jan Beulich
2005-11-11  0:17                         ` George Anzinger
2005-11-09 14:08                   ` [PATCH 13/39] NLKD/x86-64 " Jan Beulich
2005-11-09 14:13                     ` [PATCH 18/39] NLKD/x86-64 - INT1/INT3 handling changes Jan Beulich
2005-11-09 14:14                       ` [PATCH 19/39] NLKD/x86-64 - stack-pointer-invalid markers Jan Beulich
2005-11-09 14:15                         ` [PATCH 20/39] NLKD/x86-64 - switch_to() floating point adjustment Jan Beulich
2005-11-09 14:16                           ` [PATCH 21/39] NLKD/x86-64 - core adjustments Jan Beulich
2005-11-10 13:24                           ` [PATCH 20/39] NLKD/x86-64 - switch_to() floating point adjustment Andi Kleen
2005-11-10 14:07                             ` Jan Beulich
2005-11-10 13:23                         ` [PATCH 19/39] NLKD/x86-64 - stack-pointer-invalid markers Andi Kleen
2005-11-10 14:25                           ` Jan Beulich
2005-11-10 13:21                       ` [PATCH 18/39] NLKD/x86-64 - INT1/INT3 handling changes Andi Kleen
2005-11-10 14:07                         ` Jan Beulich
2005-11-10 14:25                           ` Andi Kleen
2005-11-10 15:00                             ` Jan Beulich
2005-11-11  3:39                               ` [discuss] " Andi Kleen
2005-11-10 13:19                     ` [PATCH 13/39] NLKD/x86-64 - time adjustment Andi Kleen
2005-11-10 14:23                       ` Jan Beulich
2005-11-11  2:12                         ` Andi Kleen
2005-11-12  9:22                           ` Vojtech Pavlik
2005-11-12 17:21                             ` Andi Kleen
2005-11-12 20:44                               ` Vojtech Pavlik
2005-11-15  0:38                                 ` George Anzinger
2005-11-15  1:05                                   ` [discuss] " Andi Kleen
2005-11-15  7:50                                     ` Vojtech Pavlik
2005-11-15  8:24                                       ` Jan Beulich
2005-11-10 14:43                       ` Vojtech Pavlik
2005-11-09 14:09                   ` [PATCH 14/39] NLKD - kernel trace buffer access Jan Beulich
2005-11-09 14:09                     ` [PATCH 15/39] NLKD - early pseudo-fs Jan Beulich
2005-11-09 14:11                       ` [PATCH 16/39] NLKD - core adjustments Jan Beulich
2005-11-09 14:11                         ` [PATCH 17/39] NLKD/i386 " Jan Beulich
2005-11-09 19:00                           ` Adrian Bunk
2005-11-10  8:04                             ` Jan Beulich
2005-11-10 10:29                               ` Adrian Bunk
2005-11-10 11:52                                 ` Jan Beulich
2005-11-10 12:36                                   ` Lars Marowsky-Bree
2005-11-09 14:18                         ` [PATCH 22/39] NLKD - core Jan Beulich
2005-11-09 14:19                           ` [PATCH 23/39] NLKD/x86 " Jan Beulich
2005-11-09 14:20                             ` [PATCH 24/39] NLKD/i386 " Jan Beulich
2005-11-09 14:21                             ` [PATCH 25/39] NLKD/x86-64 " Jan Beulich
2005-11-10 13:30                               ` Andi Kleen
2005-11-09 14:22                           ` [PATCH 26/39] NLKD - run time library Jan Beulich
2005-11-09 14:23                             ` [PATCH 27/39] NLKD/i386 " Jan Beulich
2005-11-09 14:23                               ` [PATCH 28/39] NLKD/x86-64 " Jan Beulich
2005-11-10 13:32                                 ` Andi Kleen
     [not found]                             ` <437214B7.76F0.0078.0@novell.com>
     [not found]                               ` <4372156A.76F0.0078.0@novell.com>
2005-11-09 14:28                                 ` Jan Beulich [this message]
     [not found]                                 ` <43721600.76F0.0078.0@novell.com>
2005-11-09 14:30                                   ` [PATCH 38/39] NLKD/i386 - Remote Debug Agent Jan Beulich
2005-11-09 14:31                                   ` [PATCH 39/39] NLKD/x86-64 " Jan Beulich
2005-11-09 14:29                       ` [PATCH 15/39] NLKD - early pseudo-fs Al Viro
2005-11-09 14:37                         ` Jan Beulich
2005-11-09 15:00                           ` Al Viro
2005-11-09 16:00                             ` Jan Beulich
2005-11-10  5:44                     ` [PATCH 14/39] NLKD - kernel trace buffer access Keith Owens
2005-11-10  8:02                       ` Jan Beulich
2005-11-09 18:51                   ` [PATCH 11/39] NLKD - time adjustment George Anzinger
2005-11-09 16:50         ` [PATCH 6/39] NLKD - early panic notification Greg KH
2005-11-09 16:45       ` [PATCH 3/39] NLKD - early/late CPU up/down notification Greg KH
2005-11-09 17:09         ` Jan Beulich
2005-11-09 17:19           ` Greg KH
2005-11-10  7:41             ` Jan Beulich
2005-11-10 20:59               ` Sam Ravnborg
2005-11-11  7:52                 ` Jan Beulich
2005-11-12 20:52                   ` Randy.Dunlap
2005-11-10 23:01               ` Greg KH
2005-11-11 10:06     ` [PATCH 2/39] NLKD - an alternative early ioremap approach Pavel Machek
2005-11-11 10:19       ` Jan Beulich
2005-11-09 16:50   ` [PATCH 1/39] NLKD - an alternative kallsyms approach Randy.Dunlap
2005-11-09 16:57     ` Greg KH
2005-11-09 17:20     ` Jan Beulich
2005-11-09 16:59 ` [PATCH 0/39] NLKD - Novell Linux Kernel Debugger Jeff Garzik
2005-11-09 17:06   ` Randy.Dunlap
2005-11-09 17:14     ` Jan Beulich
2005-11-09 17:56       ` Alan Cox
2005-11-09 18:05       ` Greg KH
2005-11-09 18:54       ` Paul Jackson
2005-11-10 12:41       ` Christoph Hellwig
2005-11-13  1:09     ` Andi Kleen
2005-11-13  2:53       ` jmerkey
2005-11-13  3:44         ` Andi Kleen
2005-11-13  3:26           ` Jeff V. Merkey
2005-11-13  3:32             ` Jeff V. Merkey
2005-11-09 17:53   ` Alan Cox
2005-11-09 16:25     ` Jeffrey V. Merkey
2005-11-10 14:48     ` Mark Lord
2005-11-10 15:28       ` Tom Rini
2005-11-10 16:37       ` Alan Cox
2005-11-13  1:11       ` Andi Kleen
     [not found] ` <437214E4.76F0.0078.0@novell.com>
     [not found]   ` <4372153C.76F0.0078.0@novell.com>
2005-11-10 13:33     ` [PATCH 32/39] NLKD/x86-64 - Core Debug Engine Andi Kleen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4372158B.76F0.0078.0@novell.com \
    --to=jbeulich@novell.com \
    --cc=linux-kernel@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox