8 new revisions:
Revision: 741945e7f0
Author:
for...@vitanuova.com
Date: Mon May 3 07:47:59 2010
Log: 20100503-1547
http://code.google.com/p/inferno-npe/source/detail?r=741945e7f0
Revision: 5986c02485
Author:
for...@vitanuova.com
Date: Mon May 3 15:52:10 2010
Log: 20100503-2352
http://code.google.com/p/inferno-npe/source/detail?r=5986c02485
Revision: 07050322d0
Author:
for...@vitanuova.com
Date: Tue May 4 01:57:12 2010
Log: 20100504-0957
http://code.google.com/p/inferno-npe/source/detail?r=07050322d0
Revision: 9b9a9b9a1a
Author:
for...@vitanuova.com
Date: Tue May 4 05:34:54 2010
Log: 20100504-1334
http://code.google.com/p/inferno-npe/source/detail?r=9b9a9b9a1a
Revision: bc915b7bbe
Author:
for...@vitanuova.com
Date: Tue May 4 13:58:53 2010
Log: 20100504-2158
http://code.google.com/p/inferno-npe/source/detail?r=bc915b7bbe
Revision: 12160eb973
Author:
for...@vitanuova.com
Date: Wed May 5 05:18:06 2010
Log: 20100505-1318
http://code.google.com/p/inferno-npe/source/detail?r=12160eb973
Revision: 9bab0498de
Author: Venkatesh Srinivas <
m...@endeavour.zapto.org>
Date: Mon May 10 15:14:08 2010
Log: Merge with inferno-os 20100505-1318.
http://code.google.com/p/inferno-npe/source/detail?r=9bab0498de
Revision: 7f122f7a7b
Author: Venkatesh Srinivas <
m...@endeavour.zapto.org>
Date: Mon May 10 15:52:41 2010
Log: Implement vmstat in /dev/cons; add n_chans and n_active_chans to
vmsta...
http://code.google.com/p/inferno-npe/source/detail?r=7f122f7a7b
==============================================================================
Revision: 741945e7f0
Author:
for...@vitanuova.com
Date: Mon May 3 07:47:59 2010
Log: 20100503-1547
http://code.google.com/p/inferno-npe/source/detail?r=741945e7f0
Added:
/lib/acid/amd64
Modified:
/CHANGES
/include/version.h
/man/1/sh-std
/utils/libmach/8db.c
/utils/libmach/kdb.c
/utils/libmach/obj.c
/utils/libmach/setmach.c
=======================================
--- /dev/null
+++ /lib/acid/amd64 Mon May 3 07:47:59 2010
@@ -0,0 +1,123 @@
+// amd64
+
+defn acidinit()
+{
+ bplist = {};
+ bpfmt = 'b';
+
+ srcpath = {
+ "./",
+ "/sys/src/libc/port/",
+ "/sys/src/libc/9sys/",
+ "/sys/src/libc/amd64/"
+ };
+
+ srcfiles = {}; // list of loaded files
+ srctext = {}; // the text of the files
+}
+
+defn gpr()
+{
+ print("AX ", *AX, "\n");
+ print("BX ", *BX, "\n");
+ print("CX ", *CX, "\n");
+ print("DX ", *DX, "\n");
+ print("DI ", *DI, "\n");
+ print("SI ", *SI, "\n");
+ print("BP ", *BP, "\n");
+ print("R8 ", *R8, "\n");
+ print("R9 ", *R9, "\n");
+ print("R10 ", *R10, "\n");
+ print("R11 ", *R11, "\n");
+ print("R12 ", *R12, "\n");
+ print("R13 ", *R13, "\n");
+ print("R14 ", *R14, "\n");
+ print("R15 ", *R15, "\n");
+}
+
+defn spr()
+{
+ print("DS ", *DS, " ES ", *ES, " FS ", *FS, " GS ", *GS, "\n");
+ print("TYPE ", *TYPE, "\n");
+ print("ERROR ", *ERROR, "\n");
+ print("PC ", *PC, "\n");
+ print("CS ", *CS, "\n");
+ print("FLAGS ", *FLAGS, "\n");
+ print("SP ", *SP, "\n");
+ print("SS ", *SS, "\n");
+}
+
+defn x87r()
+{
+ print("FCW ", *FCW, " FSW ", *FSW, " FTW ", *FTW, " FOP ",
*FOP, "\n");
+ print("RIP ", *RIP, " RDP ", *RDP, "\n");
+ print("M0 ", *M0, "\n");
+ print("M1 ", *M1, "\n");
+ print("M2 ", *M2, "\n");
+ print("M3 ", *M3, "\n");
+ print("M4 ", *M4, "\n");
+ print("M5 ", *M5, "\n");
+ print("M6 ", *M6, "\n");
+ print("M7 ", *M7, "\n");
+}
+
+defn xmmr()
+{
+ print("MXCSR ", *MXCSR, " MXCSRMASK ", *MXCSRMASK, "\n");
+ print("X0 ", *X0, "\n");
+ print("X1 ", *X1, "\n");
+ print("X2 ", *X2, "\n");
+ print("X3 ", *X3, "\n");
+ print("X4 ", *X4, "\n");
+ print("X5 ", *X5, "\n");
+ print("X6 ", *X6, "\n");
+ print("X7 ", *X7, "\n");
+ print("X8 ", *X8, "\n");
+ print("X9 ", *X9, "\n");
+ print("X10 ", *X10, "\n");
+ print("X11 ", *X11, "\n");
+ print("X12 ", *X12, "\n");
+ print("X13 ", *X13, "\n");
+ print("X14 ", *X14, "\n");
+ print("X15 ", *X15, "\n");
+}
+
+defn fpr()
+{
+ xmmr();
+}
+
+defn regs()
+{
+ gpr();
+ spr();
+}
+
+defn pstop(pid)
+{
+ local l;
+ local pc;
+
+ pc = *PC;
+
+ print(pid,": ", reason(*TRAP), "\t");
+ print(fmt(pc, 'a'), "\t", fmt(pc, 'i'), "\n");
+
+ if notes then {
+ if notes[0] != "sys: breakpoint" then {
+ print("Notes pending:\n");
+ l = notes;
+ while l do {
+ print("\t", head l, "\n");
+ l = tail l;
+ }
+ }
+ }
+}
+
+defn stk()
+{
+ _stk(*PC, *SP, 0, 0);
+}
+
+print("/sys/lib/acid/amd64");
=======================================
--- /CHANGES Tue Apr 27 04:51:13 2010
+++ /CHANGES Mon May 3 07:47:59 2010
@@ -1,3 +1,7 @@
+20100503
+ updated libmach/8db.c to avoid [] initialisers
+20100501
+ update libmach to compensate for MS compiler
20100426
updated libmach
updated compiler suites (continuing)
=======================================
--- /include/version.h Tue Apr 27 04:51:13 2010
+++ /include/version.h Mon May 3 07:47:59 2010
@@ -1,1 +1,1 @@
-#define VERSION "Fourth Edition (20100427)"
+#define VERSION "Fourth Edition (20100503)"
=======================================
--- /man/1/sh-std Thu Oct 11 03:33:29 2007
+++ /man/1/sh-std Mon May 3 07:47:59 2010
@@ -1,6 +1,6 @@
.TH SH-STD 1
.SH NAME
-std, if, while, ~, no, !, apply, getlines, status, pctl, fn, and, or,
raise, rescue, hd, tl, index, split, join, pid, parse, pctl, env \-
standard shell builtins module.
+std, if, while, ~, no, !, apply, getlines, status, pctl, fn, and, or,
raise, rescue, hd, tl, index, split, join, pid, parse, pipe, env \-
standard shell builtins module.
.SH SYNOPSIS
.B load std
=======================================
--- /utils/libmach/8db.c Tue Apr 27 04:51:13 2010
+++ /utils/libmach/8db.c Mon May 3 07:47:59 2010
@@ -19,34 +19,50 @@
static char STARTSYM[] = "_main";
static char PROFSYM[] = "_mainp";
static char FRAMENAME[] = ".frame";
-static char *excname[] =
-{
-[0] "divide error",
-[1] "debug exception",
-[4] "overflow",
-[5] "bounds check",
-[6] "invalid opcode",
-[7] "math coprocessor emulation",
-[8] "double fault",
-[9] "math coprocessor overrun",
-[10] "invalid TSS",
-[11] "segment not present",
-[12] "stack exception",
-[13] "general protection violation",
-[14] "page fault",
-[16] "math coprocessor error",
-[17] "alignment check",
-[18] "machine check",
-[19] "floating-point exception",
-[24] "clock",
-[25] "keyboard",
-[27] "modem status",
-[28] "serial line status",
-[30] "floppy disk",
-[36] "mouse",
-[37] "math coprocessor",
-[38] "hard disk",
-[64] "system call",
+static char *excname[65] =
+{
+/*[0]*/ "divide error",
+/*[1]*/ "debug exception",
+/*[2]*/ nil,
+/*[3]*/ nil,
+/*[4]*/ "overflow",
+/*[5]*/ "bounds check",
+/*[6]*/ "invalid opcode",
+/*[7]*/ "math coprocessor emulation",
+/*[8]*/ "double fault",
+/*[9]*/ "math coprocessor overrun",
+/*[10]*/ "invalid TSS",
+/*[11]*/ "segment not present",
+/*[12]*/ "stack exception",
+/*[13]*/ "general protection violation",
+/*[14]*/ "page fault",
+/*[15]*/ nil,
+/*[16]*/ "math coprocessor error",
+/*[17]*/ "alignment check",
+/*[18]*/ "machine check",
+/*[19]*/ "floating-point exception",
+/*[20]*/ nil,
+/*[21]*/ nil,
+/*[22]*/ nil,
+/*[23]*/ nil,
+/*[24]*/ "clock",
+/*[25]*/ "keyboard",
+/*[26]*/ nil,
+/*[27]*/ "modem status",
+/*[28]*/ "serial line status",
+/*[29]*/ nil,
+/*[30]*/ "floppy disk",
+/*[31]*/ nil,
+/*[32]*/ nil,
+/*[33]*/ nil,
+/*[34]*/ nil,
+/*[35]*/ nil,
+/*[36]*/ "mouse",
+/*[37]*/ "math coprocessor",
+/*[38]*/ "hard disk",
+ 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,/* 39-54 */
+ 0,0,0,0,0,0,0,0,0, /* 55-63 */
+/*[64]*/ "system call",
};
Machdata i386mach =
@@ -243,6 +259,7 @@
typedef struct Optable Optable;
struct Optable
{
+ int x;
char operand[2];
void *proto; /* actually either (char*) or (Optable*) */
};
@@ -282,28 +299,28 @@
static Optable optab0F00[8]=
{
-[0x00] 0,0, "MOVW LDT,%e",
-[0x01] 0,0, "MOVW TR,%e",
-[0x02] 0,0, "MOVW %e,LDT",
-[0x03] 0,0, "MOVW %e,TR",
-[0x04] 0,0, "VERR %e",
-[0x05] 0,0, "VERW %e",
+0x00, 0,0, "MOVW LDT,%e",
+0x01, 0,0, "MOVW TR,%e",
+0x02, 0,0, "MOVW %e,LDT",
+0x03, 0,0, "MOVW %e,TR",
+0x04, 0,0, "VERR %e",
+0x05, 0,0, "VERW %e",
};
static Optable optab0F01[8]=
{
-[0x00] 0,0, "MOVL GDTR,%e",
-[0x01] 0,0, "MOVL IDTR,%e",
-[0x02] 0,0, "MOVL %e,GDTR",
-[0x03] 0,0, "MOVL %e,IDTR",
-[0x04] 0,0, "MOVW MSW,%e", /* word */
-[0x06] 0,0, "MOVW %e,MSW", /* word */
-[0x07] 0,0, "INVLPG %e", /* or SWAPGS */
+0x00, 0,0, "MOVL GDTR,%e",
+0x01, 0,0, "MOVL IDTR,%e",
+0x02, 0,0, "MOVL %e,GDTR",
+0x03, 0,0, "MOVL %e,IDTR",
+0x04, 0,0, "MOVW MSW,%e", /* word */
+0x06, 0,0, "MOVW %e,MSW", /* word */
+0x07, 0,0, "INVLPG %e", /* or SWAPGS */
};
static Optable optab0F01F8[1]=
{
-[0x00] 0,0, "SWAPGS",
+0x00, 0,0, "SWAPGS",
};
/* 0F71 */
@@ -312,13 +329,13 @@
static Optable optab0FAE[8]=
{
-[0x00] 0,0, "FXSAVE %e",
-[0x01] 0,0, "FXRSTOR %e",
-[0x02] 0,0, "LDMXCSR %e",
-[0x03] 0,0, "STMXCSR %e",
-[0x05] 0,0, "LFENCE",
-[0x06] 0,0, "MFENCE",
-[0x07] 0,0, "SFENCE",
+0x00, 0,0, "FXSAVE %e",
+0x01, 0,0, "FXRSTOR %e",
+0x02, 0,0, "LDMXCSR %e",
+0x03, 0,0, "STMXCSR %e",
+0x05, 0,0, "LFENCE",
+0x06, 0,0, "MFENCE",
+0x07, 0,0, "SFENCE",
};
/* 0F18 */
@@ -326,455 +343,455 @@
static Optable optab0FBA[8]=
{
-[0x04] Ib,0, "BT%S %i,%e",
-[0x05] Ib,0, "BTS%S %i,%e",
-[0x06] Ib,0, "BTR%S %i,%e",
-[0x07] Ib,0, "BTC%S %i,%e",
+0x04, Ib,0, "BT%S %i,%e",
+0x05, Ib,0, "BTS%S %i,%e",
+0x06, Ib,0, "BTR%S %i,%e",
+0x07, Ib,0, "BTC%S %i,%e",
};
static Optable optab0F0F[256]=
{
-[0x0c] 0,0, "PI2FW %m,%M",
-[0x0d] 0,0, "PI2L %m,%M",
-[0x1c] 0,0, "PF2IW %m,%M",
-[0x1d] 0,0, "PF2IL %m,%M",
-[0x8a] 0,0, "PFNACC %m,%M",
-[0x8e] 0,0, "PFPNACC %m,%M",
-[0x90] 0,0, "PFCMPGE %m,%M",
-[0x94] 0,0, "PFMIN %m,%M",
-[0x96] 0,0, "PFRCP %m,%M",
-[0x97] 0,0, "PFRSQRT %m,%M",
-[0x9a] 0,0, "PFSUB %m,%M",
-[0x9e] 0,0, "PFADD %m,%M",
-[0xa0] 0,0, "PFCMPGT %m,%M",
-[0xa4] 0,0, "PFMAX %m,%M",
-[0xa6] 0,0, "PFRCPIT1 %m,%M",
-[0xa7] 0,0, "PFRSQIT1 %m,%M",
-[0xaa] 0,0, "PFSUBR %m,%M",
-[0xae] 0,0, "PFACC %m,%M",
-[0xb0] 0,0, "PFCMPEQ %m,%M",
-[0xb4] 0,0, "PFMUL %m,%M",
-[0xb6] 0,0, "PFRCPI2T %m,%M",
-[0xb7] 0,0, "PMULHRW %m,%M",
-[0xbb] 0,0, "PSWAPL %m,%M",
+0x0c, 0,0, "PI2FW %m,%M",
+0x0d, 0,0, "PI2L %m,%M",
+0x1c, 0,0, "PF2IW %m,%M",
+0x1d, 0,0, "PF2IL %m,%M",
+0x8a, 0,0, "PFNACC %m,%M",
+0x8e, 0,0, "PFPNACC %m,%M",
+0x90, 0,0, "PFCMPGE %m,%M",
+0x94, 0,0, "PFMIN %m,%M",
+0x96, 0,0, "PFRCP %m,%M",
+0x97, 0,0, "PFRSQRT %m,%M",
+0x9a, 0,0, "PFSUB %m,%M",
+0x9e, 0,0, "PFADD %m,%M",
+0xa0, 0,0, "PFCMPGT %m,%M",
+0xa4, 0,0, "PFMAX %m,%M",
+0xa6, 0,0, "PFRCPIT1 %m,%M",
+0xa7, 0,0, "PFRSQIT1 %m,%M",
+0xaa, 0,0, "PFSUBR %m,%M",
+0xae, 0,0, "PFACC %m,%M",
+0xb0, 0,0, "PFCMPEQ %m,%M",
+0xb4, 0,0, "PFMUL %m,%M",
+0xb6, 0,0, "PFRCPI2T %m,%M",
+0xb7, 0,0, "PMULHRW %m,%M",
+0xbb, 0,0, "PSWAPL %m,%M",
};
static Optable optab0FC7[8]=
{
-[0x01] 0,0, "CMPXCHG8B %e",
+0x01, 0,0, "CMPXCHG8B %e",
};
static Optable optab660F71[8]=
{
-[0x02] Ib,0, "PSRLW %i,%X",
-[0x04] Ib,0, "PSRAW %i,%X",
-[0x06] Ib,0, "PSLLW %i,%X",
+0x02, Ib,0, "PSRLW %i,%X",
+0x04, Ib,0, "PSRAW %i,%X",
+0x06, Ib,0, "PSLLW %i,%X",
};
static Optable optab660F72[8]=
{
-[0x02] Ib,0, "PSRLL %i,%X",
-[0x04] Ib,0, "PSRAL %i,%X",
-[0x06] Ib,0, "PSLLL %i,%X",
+0x02, Ib,0, "PSRLL %i,%X",
+0x04, Ib,0, "PSRAL %i,%X",
+0x06, Ib,0, "PSLLL %i,%X",
};
static Optable optab660F73[8]=
{
-[0x02] Ib,0, "PSRLQ %i,%X",
-[0x03] Ib,0, "PSRLO %i,%X",
-[0x06] Ib,0, "PSLLQ %i,%X",
-[0x07] Ib,0, "PSLLO %i,%X",
+0x02, Ib,0, "PSRLQ %i,%X",
+0x03, Ib,0, "PSRLO %i,%X",
+0x06, Ib,0, "PSLLQ %i,%X",
+0x07, Ib,0, "PSLLO %i,%X",
};
static Optable optab660F[256]=
{
-[0x2B] RM,0, "MOVNTPD %x,%e",
-[0x2E] RM,0, "UCOMISD %x,%X",
-[0x2F] RM,0, "COMISD %x,%X",
-[0x5A] RM,0, "CVTPD2PS %x,%X",
-[0x5B] RM,0, "CVTPS2PL %x,%X",
-[0x6A] RM,0, "PUNPCKHLQ %x,%X",
-[0x6B] RM,0, "PACKSSLW %x,%X",
-[0x6C] RM,0, "PUNPCKLQDQ %x,%X",
-[0x6D] RM,0, "PUNPCKHQDQ %x,%X",
-[0x6E] RM,0, "MOV%S %e,%X",
-[0x6F] RM,0, "MOVO %x,%X", /* MOVDQA */
-[0x70] RM,Ib, "PSHUFL %i,%x,%X",
-[0x71] RMOP,0, optab660F71,
-[0x72] RMOP,0, optab660F72,
-[0x73] RMOP,0, optab660F73,
-[0x7E] RM,0, "MOV%S %X,%e",
-[0x7F] RM,0, "MOVO %X,%x",
-[0xC4] RM,Ib, "PINSRW %i,%e,%X",
-[0xC5] RMR,Ib, "PEXTRW %i,%X,%e",
-[0xD4] RM,0, "PADDQ %x,%X",
-[0xD5] RM,0, "PMULLW %x,%X",
-[0xD6] RM,0, "MOVQ %X,%x",
-[0xE6] RM,0, "CVTTPD2PL %x,%X",
-[0xE7] RM,0, "MOVNTO %X,%e",
-[0xF7] RM,0, "MASKMOVOU %x,%X",
+0x2B, RM,0, "MOVNTPD %x,%e",
+0x2E, RM,0, "UCOMISD %x,%X",
+0x2F, RM,0, "COMISD %x,%X",
+0x5A, RM,0, "CVTPD2PS %x,%X",
+0x5B, RM,0, "CVTPS2PL %x,%X",
+0x6A, RM,0, "PUNPCKHLQ %x,%X",
+0x6B, RM,0, "PACKSSLW %x,%X",
+0x6C, RM,0, "PUNPCKLQDQ %x,%X",
+0x6D, RM,0, "PUNPCKHQDQ %x,%X",
+0x6E, RM,0, "MOV%S %e,%X",
+0x6F, RM,0, "MOVO %x,%X", /* MOVDQA */
+0x70, RM,Ib, "PSHUFL %i,%x,%X",
+0x71, RMOP,0, optab660F71,
+0x72, RMOP,0, optab660F72,
+0x73, RMOP,0, optab660F73,
+0x7E, RM,0, "MOV%S %X,%e",
+0x7F, RM,0, "MOVO %X,%x",
+0xC4, RM,Ib, "PINSRW %i,%e,%X",
+0xC5, RMR,Ib, "PEXTRW %i,%X,%e",
+0xD4, RM,0, "PADDQ %x,%X",
+0xD5, RM,0, "PMULLW %x,%X",
+0xD6, RM,0, "MOVQ %X,%x",
+0xE6, RM,0, "CVTTPD2PL %x,%X",
+0xE7, RM,0, "MOVNTO %X,%e",
+0xF7, RM,0, "MASKMOVOU %x,%X",
};
static Optable optabF20F[256]=
{
-[0x10] RM,0, "MOVSD %x,%X",
-[0x11] RM,0, "MOVSD %X,%x",
-[0x2A] RM,0, "CVTS%S2SD %e,%X",
-[0x2C] RM,0, "CVTTSD2S%S %x,%r",
-[0x2D] RM,0, "CVTSD2S%S %x,%r",
-[0x5A] RM,0, "CVTSD2SS %x,%X",
-[0x6F] RM,0, "MOVOU %x,%X",
-[0x70] RM,Ib, "PSHUFLW %i,%x,%X",
-[0x7F] RM,0, "MOVOU %X,%x",
-[0xD6] RM,0, "MOVQOZX %M,%X",
-[0xE6] RM,0, "CVTPD2PL %x,%X",
+0x10, RM,0, "MOVSD %x,%X",
+0x11, RM,0, "MOVSD %X,%x",
+0x2A, RM,0, "CVTS%S2SD %e,%X",
+0x2C, RM,0, "CVTTSD2S%S %x,%r",
+0x2D, RM,0, "CVTSD2S%S %x,%r",
+0x5A, RM,0, "CVTSD2SS %x,%X",
+0x6F, RM,0, "MOVOU %x,%X",
+0x70, RM,Ib, "PSHUFLW %i,%x,%X",
+0x7F, RM,0, "MOVOU %X,%x",
+0xD6, RM,0, "MOVQOZX %M,%X",
+0xE6, RM,0, "CVTPD2PL %x,%X",
};
static Optable optabF30F[256]=
{
-[0x10] RM,0, "MOVSS %x,%X",
-[0x11] RM,0, "MOVSS %X,%x",
-[0x2A] RM,0, "CVTS%S2SS %e,%X",
-[0x2C] RM,0, "CVTTSS2S%S %x,%r",
-[0x2D] RM,0, "CVTSS2S%S %x,%r",
-[0x5A] RM,0, "CVTSS2SD %x,%X",
-[0x5B] RM,0, "CVTTPS2PL %x,%X",
-[0x6F] RM,0, "MOVOU %x,%X",
-[0x70] RM,Ib, "PSHUFHW %i,%x,%X",
-[0x7E] RM,0, "MOVQOZX %x,%X",
-[0x7F] RM,0, "MOVOU %X,%x",
-[0xD6] RM,0, "MOVQOZX %m*,%X",
-[0xE6] RM,0, "CVTPL2PD %x,%X",
+0x10, RM,0, "MOVSS %x,%X",
+0x11, RM,0, "MOVSS %X,%x",
+0x2A, RM,0, "CVTS%S2SS %e,%X",
+0x2C, RM,0, "CVTTSS2S%S %x,%r",
+0x2D, RM,0, "CVTSS2S%S %x,%r",
+0x5A, RM,0, "CVTSS2SD %x,%X",
+0x5B, RM,0, "CVTTPS2PL %x,%X",
+0x6F, RM,0, "MOVOU %x,%X",
+0x70, RM,Ib, "PSHUFHW %i,%x,%X",
+0x7E, RM,0, "MOVQOZX %x,%X",
+0x7F, RM,0, "MOVOU %X,%x",
+0xD6, RM,0, "MOVQOZX %m*,%X",
+0xE6, RM,0, "CVTPL2PD %x,%X",
};
static Optable optab0F[256]=
{
-[0x00] RMOP,0, optab0F00,
-[0x01] RMOP,0, optab0F01,
-[0x02] RM,0, "LAR %e,%r",
-[0x03] RM,0, "LSL %e,%r",
-[0x05] 0,0, "SYSCALL",
-[0x06] 0,0, "CLTS",
-[0x07] 0,0, "SYSRET",
-[0x08] 0,0, "INVD",
-[0x09] 0,0, "WBINVD",
-[0x0B] 0,0, "UD2",
-[0x0F] RM,AUX, optab0F0F, /* 3DNow! */
-[0x10] RM,0, "MOVU%s %x,%X",
-[0x11] RM,0, "MOVU%s %X,%x",
-[0x12] RM,0, "MOV[H]L%s %x,%X", /* TO DO: H if source is XMM */
-[0x13] RM,0, "MOVL%s %X,%e",
-[0x14] RM,0, "UNPCKL%s %x,%X",
-[0x15] RM,0, "UNPCKH%s %x,%X",
-[0x16] RM,0, "MOV[L]H%s %x,%X", /* TO DO: L if source is XMM */
-[0x17] RM,0, "MOVH%s %X,%x",
-[0x20] RMR,0, "MOVL %C,%e",
-[0x21] RMR,0, "MOVL %D,%e",
-[0x22] RMR,0, "MOVL %e,%C",
-[0x23] RMR,0, "MOVL %e,%D",
-[0x24] RMR,0, "MOVL %T,%e",
-[0x26] RMR,0, "MOVL %e,%T",
-[0x28] RM,0, "MOVA%s %x,%X",
-[0x29] RM,0, "MOVA%s %X,%x",
-[0x2A] RM,0, "CVTPL2%s %m*,%X",
-[0x2B] RM,0, "MOVNT%s %X,%e",
-[0x2C] RM,0, "CVTT%s2PL %x,%M",
-[0x2D] RM,0, "CVT%s2PL %x,%M",
-[0x2E] RM,0, "UCOMISS %x,%X",
-[0x2F] RM,0, "COMISS %x,%X",
-[0x30] 0,0, "WRMSR",
-[0x31] 0,0, "RDTSC",
-[0x32] 0,0, "RDMSR",
-[0x33] 0,0, "RDPMC",
-[0x42] RM,0, "CMOVC %e,%r", /* CF */
-[0x43] RM,0, "CMOVNC %e,%r", /* ¬ CF */
-[0x44] RM,0, "CMOVZ %e,%r", /* ZF */
-[0x45] RM,0, "CMOVNZ %e,%r", /* ¬ ZF */
-[0x46] RM,0, "CMOVBE %e,%r", /* CF ∨ ZF */
-[0x47] RM,0, "CMOVA %e,%r", /* ¬CF ∧ ¬ZF */
-[0x48] RM,0, "CMOVS %e,%r", /* SF */
-[0x49] RM,0, "CMOVNS %e,%r", /* ¬ SF */
-[0x4A] RM,0, "CMOVP %e,%r", /* PF */
-[0x4B] RM,0, "CMOVNP %e,%r", /* ¬ PF */
-[0x4C] RM,0, "CMOVLT %e,%r", /* LT ≡ OF ≠SF */
-[0x4D] RM,0, "CMOVGE %e,%r", /* GE ≡ ZF ∨ SF */
-[0x4E] RM,0, "CMOVLE %e,%r", /* LE ≡ ZF ∨ LT */
-[0x4F] RM,0, "CMOVGT %e,%r", /* GT ≡ ¬ZF ∧ GE */
-[0x50] RM,0, "MOVMSK%s %X,%r", /* TO DO: check */
-[0x51] RM,0, "SQRT%s %x,%X",
-[0x52] RM,0, "RSQRT%s %x,%X",
-[0x53] RM,0, "RCP%s %x,%X",
-[0x54] RM,0, "AND%s %x,%X",
-[0x55] RM,0, "ANDN%s %x,%X",
-[0x56] RM,0, "OR%s %x,%X", /* TO DO: S/D */
-[0x57] RM,0, "XOR%s %x,%X", /* S/D */
-[0x58] RM,0, "ADD%s %x,%X", /* S/P S/D */
-[0x59] RM,0, "MUL%s %x,%X",
-[0x5A] RM,0, "CVTPS2PD %x,%X",
-[0x5B] RM,0, "CVTPL2PS %x,%X",
-[0x5C] RM,0, "SUB%s %x,%X",
-[0x5D] RM,0, "MIN%s %x,%X",
-[0x5E] RM,0, "DIV%s %x,%X", /* TO DO: S/P S/D */
-[0x5F] RM,0, "MAX%s %x,%X",
-[0x60] RM,0, "PUNPCKLBW %m,%M",
-[0x61] RM,0, "PUNPCKLWL %m,%M",
-[0x62] RM,0, "PUNPCKLLQ %m,%M",
-[0x63] RM,0, "PACKSSWB %m,%M",
-[0x64] RM,0, "PCMPGTB %m,%M",
-[0x65] RM,0, "PCMPGTW %m,%M",
-[0x66] RM,0, "PCMPGTL %m,%M",
-[0x67] RM,0, "PACKUSWB %m,%M",
-[0x68] RM,0, "PUNPCKHBW %m,%M",
-[0x69] RM,0, "PUNPCKHWL %m,%M",
-[0x6A] RM,0, "PUNPCKHLQ %m,%M",
-[0x6B] RM,0, "PACKSSLW %m,%M",
-[0x6E] RM,0, "MOV%S %e,%M",
-[0x6F] RM,0, "MOVQ %m,%M",
-[0x70] RM,Ib, "PSHUFW %i,%m,%M",
-[0x74] RM,0, "PCMPEQB %m,%M",
-[0x75] RM,0, "PCMPEQW %m,%M",
-[0x76] RM,0, "PCMPEQL %m,%M",
-[0x7E] RM,0, "MOV%S %M,%e",
-[0x7F] RM,0, "MOVQ %M,%m",
-[0xAE] RMOP,0, optab0FAE,
-[0xAA] 0,0, "RSM",
-[0xB0] RM,0, "CMPXCHGB %r,%e",
-[0xB1] RM,0, "CMPXCHG%S %r,%e",
-[0xC0] RMB,0, "XADDB %r,%e",
-[0xC1] RM,0, "XADD%S %r,%e",
-[0xC2] RM,Ib, "CMP%s %i,%x,%X",
-[0xC3] RM,0, "MOVNTI%S %r,%e",
-[0xC6] RM,Ib, "SHUF%s %i,%x,%X",
-[0xC8] 0,0, "BSWAP AX",
-[0xC9] 0,0, "BSWAP CX",
-[0xCA] 0,0, "BSWAP DX",
-[0xCB] 0,0, "BSWAP BX",
-[0xCC] 0,0, "BSWAP SP",
-[0xCD] 0,0, "BSWAP BP",
-[0xCE] 0,0, "BSWAP SI",
-[0xCF] 0,0, "BSWAP DI",
-[0xD1] RM,0, "PSRLW %m,%M",
-[0xD2] RM,0, "PSRLL %m,%M",
-[0xD3] RM,0, "PSRLQ %m,%M",
-[0xD5] RM,0, "PMULLW %m,%M",
-[0xD6] RM,0, "MOVQOZX %m*,%X",
-[0xD7] RM,0, "PMOVMSKB %m,%r",
-[0xD8] RM,0, "PSUBUSB %m,%M",
-[0xD9] RM,0, "PSUBUSW %m,%M",
-[0xDA] RM,0, "PMINUB %m,%M",
-[0xDB] RM,0, "PAND %m,%M",
-[0xDC] RM,0, "PADDUSB %m,%M",
-[0xDD] RM,0, "PADDUSW %m,%M",
-[0xDE] RM,0, "PMAXUB %m,%M",
-[0xDF] RM,0, "PANDN %m,%M",
-[0xE0] RM,0, "PAVGB %m,%M",
-[0xE1] RM,0, "PSRAW %m,%M",
-[0xE2] RM,0, "PSRAL %m,%M",
-[0xE3] RM,0, "PAVGW %m,%M",
-[0xE4] RM,0, "PMULHUW %m,%M",
-[0xE5] RM,0, "PMULHW %m,%M",
-[0xE7] RM,0, "MOVNTQ %M,%e",
-[0xE8] RM,0, "PSUBSB %m,%M",
-[0xE9] RM,0, "PSUBSW %m,%M",
-[0xEA] RM,0, "PMINSW %m,%M",
-[0xEB] RM,0, "POR %m,%M",
-[0xEC] RM,0, "PADDSB %m,%M",
-[0xED] RM,0, "PADDSW %m,%M",
-[0xEE] RM,0, "PMAXSW %m,%M",
-[0xEF] RM,0, "PXOR %m,%M",
-[0xF1] RM,0, "PSLLW %m,%M",
-[0xF2] RM,0, "PSLLL %m,%M",
-[0xF3] RM,0, "PSLLQ %m,%M",
-[0xF4] RM,0, "PMULULQ %m,%M",
-[0xF5] RM,0, "PMADDWL %m,%M",
-[0xF6] RM,0, "PSADBW %m,%M",
-[0xF7] RMR,0, "MASKMOVQ %m,%M",
-[0xF8] RM,0, "PSUBB %m,%M",
-[0xF9] RM,0, "PSUBW %m,%M",
-[0xFA] RM,0, "PSUBL %m,%M",
-[0xFC] RM,0, "PADDB %m,%M",
-[0xFD] RM,0, "PADDW %m,%M",
-[0xFE] RM,0, "PADDL %m,%M",
-
-[0x80] Iwds,0, "JOS %p",
-[0x81] Iwds,0, "JOC %p",
-[0x82] Iwds,0, "JCS %p",
-[0x83] Iwds,0, "JCC %p",
-[0x84] Iwds,0, "JEQ %p",
-[0x85] Iwds,0, "JNE %p",
-[0x86] Iwds,0, "JLS %p",
-[0x87] Iwds,0, "JHI %p",
-[0x88] Iwds,0, "JMI %p",
-[0x89] Iwds,0, "JPL %p",
-[0x8a] Iwds,0, "JPS %p",
-[0x8b] Iwds,0, "JPC %p",
-[0x8c] Iwds,0, "JLT %p",
-[0x8d] Iwds,0, "JGE %p",
-[0x8e] Iwds,0, "JLE %p",
-[0x8f] Iwds,0, "JGT %p",
-[0x90] RMB,0, "SETOS %e",
-[0x91] RMB,0, "SETOC %e",
-[0x92] RMB,0, "SETCS %e",
-[0x93] RMB,0, "SETCC %e",
-[0x94] RMB,0, "SETEQ %e",
-[0x95] RMB,0, "SETNE %e",
-[0x96] RMB,0, "SETLS %e",
-[0x97] RMB,0, "SETHI %e",
-[0x98] RMB,0, "SETMI %e",
-[0x99] RMB,0, "SETPL %e",
-[0x9a] RMB,0, "SETPS %e",
-[0x9b] RMB,0, "SETPC %e",
-[0x9c] RMB,0, "SETLT %e",
-[0x9d] RMB,0, "SETGE %e",
-[0x9e] RMB,0, "SETLE %e",
-[0x9f] RMB,0, "SETGT %e",
-[0xa0] 0,0, "PUSHL FS",
-[0xa1] 0,0, "POPL FS",
-[0xa2] 0,0, "CPUID",
-[0xa3] RM,0, "BT%S %r,%e",
-[0xa4] RM,Ib, "SHLD%S %r,%i,%e",
-[0xa5] RM,0, "SHLD%S %r,CL,%e",
-[0xa8] 0,0, "PUSHL GS",
-[0xa9] 0,0, "POPL GS",
-[0xab] RM,0, "BTS%S %r,%e",
-[0xac] RM,Ib, "SHRD%S %r,%i,%e",
-[0xad] RM,0, "SHRD%S %r,CL,%e",
-[0xaf] RM,0, "IMUL%S %e,%r",
-[0xb2] RMM,0, "LSS %e,%r",
-[0xb3] RM,0, "BTR%S %r,%e",
-[0xb4] RMM,0, "LFS %e,%r",
-[0xb5] RMM,0, "LGS %e,%r",
-[0xb6] RMB,0, "MOVBZX %e,%R",
-[0xb7] RM,0, "MOVWZX %e,%R",
-[0xba] RMOP,0, optab0FBA,
-[0xbb] RM,0, "BTC%S %e,%r",
-[0xbc] RM,0, "BSF%S %e,%r",
-[0xbd] RM,0, "BSR%S %e,%r",
-[0xbe] RMB,0, "MOVBSX %e,%R",
-[0xbf] RM,0, "MOVWSX %e,%R",
-[0xc7] RMOP,0, optab0FC7,
+0x00, RMOP,0, optab0F00,
+0x01, RMOP,0, optab0F01,
+0x02, RM,0, "LAR %e,%r",
+0x03, RM,0, "LSL %e,%r",
+0x05, 0,0, "SYSCALL",
+0x06, 0,0, "CLTS",
+0x07, 0,0, "SYSRET",
+0x08, 0,0, "INVD",
+0x09, 0,0, "WBINVD",
+0x0B, 0,0, "UD2",
+0x0F, RM,AUX, optab0F0F, /* 3DNow! */
+0x10, RM,0, "MOVU%s %x,%X",
+0x11, RM,0, "MOVU%s %X,%x",
+0x12, RM,0, "MOV[H]L%s %x,%X", /* TO DO: H if source is XMM */
+0x13, RM,0, "MOVL%s %X,%e",
+0x14, RM,0, "UNPCKL%s %x,%X",
+0x15, RM,0, "UNPCKH%s %x,%X",
+0x16, RM,0, "MOV[L]H%s %x,%X", /* TO DO: L if source is XMM */
+0x17, RM,0, "MOVH%s %X,%x",
+0x20, RMR,0, "MOVL %C,%e",
+0x21, RMR,0, "MOVL %D,%e",
+0x22, RMR,0, "MOVL %e,%C",
+0x23, RMR,0, "MOVL %e,%D",
+0x24, RMR,0, "MOVL %T,%e",
+0x26, RMR,0, "MOVL %e,%T",
+0x28, RM,0, "MOVA%s %x,%X",
+0x29, RM,0, "MOVA%s %X,%x",
+0x2A, RM,0, "CVTPL2%s %m*,%X",
+0x2B, RM,0, "MOVNT%s %X,%e",
+0x2C, RM,0, "CVTT%s2PL %x,%M",
+0x2D, RM,0, "CVT%s2PL %x,%M",
+0x2E, RM,0, "UCOMISS %x,%X",
+0x2F, RM,0, "COMISS %x,%X",
+0x30, 0,0, "WRMSR",
+0x31, 0,0, "RDTSC",
+0x32, 0,0, "RDMSR",
+0x33, 0,0, "RDPMC",
+0x42, RM,0, "CMOVC %e,%r", /* CF */
+0x43, RM,0, "CMOVNC %e,%r", /* ¬ CF */
+0x44, RM,0, "CMOVZ %e,%r", /* ZF */
+0x45, RM,0, "CMOVNZ %e,%r", /* ¬ ZF */
+0x46, RM,0, "CMOVBE %e,%r", /* CF ∨ ZF */
+0x47, RM,0, "CMOVA %e,%r", /* ¬CF ∧ ¬ZF */
+0x48, RM,0, "CMOVS %e,%r", /* SF */
+0x49, RM,0, "CMOVNS %e,%r", /* ¬ SF */
+0x4A, RM,0, "CMOVP %e,%r", /* PF */
+0x4B, RM,0, "CMOVNP %e,%r", /* ¬ PF */
+0x4C, RM,0, "CMOVLT %e,%r", /* LT ≡ OF ≠SF */
+0x4D, RM,0, "CMOVGE %e,%r", /* GE ≡ ZF ∨ SF */
+0x4E, RM,0, "CMOVLE %e,%r", /* LE ≡ ZF ∨ LT */
+0x4F, RM,0, "CMOVGT %e,%r", /* GT ≡ ¬ZF ∧ GE */
+0x50, RM,0, "MOVMSK%s %X,%r", /* TO DO: check */
+0x51, RM,0, "SQRT%s %x,%X",
+0x52, RM,0, "RSQRT%s %x,%X",
+0x53, RM,0, "RCP%s %x,%X",
+0x54, RM,0, "AND%s %x,%X",
+0x55, RM,0, "ANDN%s %x,%X",
+0x56, RM,0, "OR%s %x,%X", /* TO DO: S/D */
+0x57, RM,0, "XOR%s %x,%X", /* S/D */
+0x58, RM,0, "ADD%s %x,%X", /* S/P S/D */
+0x59, RM,0, "MUL%s %x,%X",
+0x5A, RM,0, "CVTPS2PD %x,%X",
+0x5B, RM,0, "CVTPL2PS %x,%X",
+0x5C, RM,0, "SUB%s %x,%X",
+0x5D, RM,0, "MIN%s %x,%X",
+0x5E, RM,0, "DIV%s %x,%X", /* TO DO: S/P S/D */
+0x5F, RM,0, "MAX%s %x,%X",
+0x60, RM,0, "PUNPCKLBW %m,%M",
+0x61, RM,0, "PUNPCKLWL %m,%M",
+0x62, RM,0, "PUNPCKLLQ %m,%M",
+0x63, RM,0, "PACKSSWB %m,%M",
+0x64, RM,0, "PCMPGTB %m,%M",
+0x65, RM,0, "PCMPGTW %m,%M",
+0x66, RM,0, "PCMPGTL %m,%M",
+0x67, RM,0, "PACKUSWB %m,%M",
+0x68, RM,0, "PUNPCKHBW %m,%M",
+0x69, RM,0, "PUNPCKHWL %m,%M",
+0x6A, RM,0, "PUNPCKHLQ %m,%M",
+0x6B, RM,0, "PACKSSLW %m,%M",
+0x6E, RM,0, "MOV%S %e,%M",
+0x6F, RM,0, "MOVQ %m,%M",
+0x70, RM,Ib, "PSHUFW %i,%m,%M",
+0x74, RM,0, "PCMPEQB %m,%M",
+0x75, RM,0, "PCMPEQW %m,%M",
+0x76, RM,0, "PCMPEQL %m,%M",
+0x7E, RM,0, "MOV%S %M,%e",
+0x7F, RM,0, "MOVQ %M,%m",
+0xAE, RMOP,0, optab0FAE,
+0xAA, 0,0, "RSM",
+0xB0, RM,0, "CMPXCHGB %r,%e",
+0xB1, RM,0, "CMPXCHG%S %r,%e",
+0xC0, RMB,0, "XADDB %r,%e",
+0xC1, RM,0, "XADD%S %r,%e",
+0xC2, RM,Ib, "CMP%s %i,%x,%X",
+0xC3, RM,0, "MOVNTI%S %r,%e",
+0xC6, RM,Ib, "SHUF%s %i,%x,%X",
+0xC8, 0,0, "BSWAP AX",
+0xC9, 0,0, "BSWAP CX",
+0xCA, 0,0, "BSWAP DX",
+0xCB, 0,0, "BSWAP BX",
+0xCC, 0,0, "BSWAP SP",
+0xCD, 0,0, "BSWAP BP",
+0xCE, 0,0, "BSWAP SI",
+0xCF, 0,0, "BSWAP DI",
+0xD1, RM,0, "PSRLW %m,%M",
+0xD2, RM,0, "PSRLL %m,%M",
+0xD3, RM,0, "PSRLQ %m,%M",
+0xD5, RM,0, "PMULLW %m,%M",
+0xD6, RM,0, "MOVQOZX %m*,%X",
+0xD7, RM,0, "PMOVMSKB %m,%r",
+0xD8, RM,0, "PSUBUSB %m,%M",
+0xD9, RM,0, "PSUBUSW %m,%M",
+0xDA, RM,0, "PMINUB %m,%M",
+0xDB, RM,0, "PAND %m,%M",
+0xDC, RM,0, "PADDUSB %m,%M",
+0xDD, RM,0, "PADDUSW %m,%M",
+0xDE, RM,0, "PMAXUB %m,%M",
+0xDF, RM,0, "PANDN %m,%M",
+0xE0, RM,0, "PAVGB %m,%M",
+0xE1, RM,0, "PSRAW %m,%M",
+0xE2, RM,0, "PSRAL %m,%M",
+0xE3, RM,0, "PAVGW %m,%M",
+0xE4, RM,0, "PMULHUW %m,%M",
+0xE5, RM,0, "PMULHW %m,%M",
+0xE7, RM,0, "MOVNTQ %M,%e",
+0xE8, RM,0, "PSUBSB %m,%M",
+0xE9, RM,0, "PSUBSW %m,%M",
+0xEA, RM,0, "PMINSW %m,%M",
+0xEB, RM,0, "POR %m,%M",
+0xEC, RM,0, "PADDSB %m,%M",
+0xED, RM,0, "PADDSW %m,%M",
+0xEE, RM,0, "PMAXSW %m,%M",
+0xEF, RM,0, "PXOR %m,%M",
+0xF1, RM,0, "PSLLW %m,%M",
+0xF2, RM,0, "PSLLL %m,%M",
+0xF3, RM,0, "PSLLQ %m,%M",
+0xF4, RM,0, "PMULULQ %m,%M",
+0xF5, RM,0, "PMADDWL %m,%M",
+0xF6, RM,0, "PSADBW %m,%M",
+0xF7, RMR,0, "MASKMOVQ %m,%M",
+0xF8, RM,0, "PSUBB %m,%M",
+0xF9, RM,0, "PSUBW %m,%M",
+0xFA, RM,0, "PSUBL %m,%M",
+0xFC, RM,0, "PADDB %m,%M",
+0xFD, RM,0, "PADDW %m,%M",
+0xFE, RM,0, "PADDL %m,%M",
+
+0x80, Iwds,0, "JOS %p",
+0x81, Iwds,0, "JOC %p",
+0x82, Iwds,0, "JCS %p",
+0x83, Iwds,0, "JCC %p",
+0x84, Iwds,0, "JEQ %p",
+0x85, Iwds,0, "JNE %p",
+0x86, Iwds,0, "JLS %p",
+0x87, Iwds,0, "JHI %p",
+0x88, Iwds,0, "JMI %p",
+0x89, Iwds,0, "JPL %p",
+0x8a, Iwds,0, "JPS %p",
+0x8b, Iwds,0, "JPC %p",
+0x8c, Iwds,0, "JLT %p",
+0x8d, Iwds,0, "JGE %p",
+0x8e, Iwds,0, "JLE %p",
+0x8f, Iwds,0, "JGT %p",
+0x90, RMB,0, "SETOS %e",
+0x91, RMB,0, "SETOC %e",
+0x92, RMB,0, "SETCS %e",
+0x93, RMB,0, "SETCC %e",
+0x94, RMB,0, "SETEQ %e",
+0x95, RMB,0, "SETNE %e",
+0x96, RMB,0, "SETLS %e",
+0x97, RMB,0, "SETHI %e",
+0x98, RMB,0, "SETMI %e",
+0x99, RMB,0, "SETPL %e",
+0x9a, RMB,0, "SETPS %e",
+0x9b, RMB,0, "SETPC %e",
+0x9c, RMB,0, "SETLT %e",
+0x9d, RMB,0, "SETGE %e",
+0x9e, RMB,0, "SETLE %e",
+0x9f, RMB,0, "SETGT %e",
+0xa0, 0,0, "PUSHL FS",
+0xa1, 0,0, "POPL FS",
+0xa2, 0,0, "CPUID",
+0xa3, RM,0, "BT%S %r,%e",
+0xa4, RM,Ib, "SHLD%S %r,%i,%e",
+0xa5, RM,0, "SHLD%S %r,CL,%e",
+0xa8, 0,0, "PUSHL GS",
+0xa9, 0,0, "POPL GS",
+0xab, RM,0, "BTS%S %r,%e",
+0xac, RM,Ib, "SHRD%S %r,%i,%e",
+0xad, RM,0, "SHRD%S %r,CL,%e",
+0xaf, RM,0, "IMUL%S %e,%r",
+0xb2, RMM,0, "LSS %e,%r",
+0xb3, RM,0, "BTR%S %r,%e",
+0xb4, RMM,0, "LFS %e,%r",
+0xb5, RMM,0, "LGS %e,%r",
+0xb6, RMB,0, "MOVBZX %e,%R",
+0xb7, RM,0, "MOVWZX %e,%R",
+0xba, RMOP,0, optab0FBA,
+0xbb, RM,0, "BTC%S %e,%r",
+0xbc, RM,0, "BSF%S %e,%r",
+0xbd, RM,0, "BSR%S %e,%r",
+0xbe, RMB,0, "MOVBSX %e,%R",
+0xbf, RM,0, "MOVWSX %e,%R",
+0xc7, RMOP,0, optab0FC7,
};
static Optable optab80[8]=
{
-[0x00] Ib,0, "ADDB %i,%e",
-[0x01] Ib,0, "ORB %i,%e",
-[0x02] Ib,0, "ADCB %i,%e",
-[0x03] Ib,0, "SBBB %i,%e",
-[0x04] Ib,0, "ANDB %i,%e",
-[0x05] Ib,0, "SUBB %i,%e",
-[0x06] Ib,0, "XORB %i,%e",
-[0x07] Ib,0, "CMPB %e,%i",
+0x00, Ib,0, "ADDB %i,%e",
+0x01, Ib,0, "ORB %i,%e",
+0x02, Ib,0, "ADCB %i,%e",
+0x03, Ib,0, "SBBB %i,%e",
+0x04, Ib,0, "ANDB %i,%e",
+0x05, Ib,0, "SUBB %i,%e",
+0x06, Ib,0, "XORB %i,%e",
+0x07, Ib,0, "CMPB %e,%i",
};
static Optable optab81[8]=
{
-[0x00] Iwd,0, "ADD%S %i,%e",
-[0x01] Iwd,0, "OR%S %i,%e",
-[0x02] Iwd,0, "ADC%S %i,%e",
-[0x03] Iwd,0, "SBB%S %i,%e",
-[0x04] Iwd,0, "AND%S %i,%e",
-[0x05] Iwd,0, "SUB%S %i,%e",
-[0x06] Iwd,0, "XOR%S %i,%e",
-[0x07] Iwd,0, "CMP%S %e,%i",
+0x00, Iwd,0, "ADD%S %i,%e",
+0x01, Iwd,0, "OR%S %i,%e",
+0x02, Iwd,0, "ADC%S %i,%e",
+0x03, Iwd,0, "SBB%S %i,%e",
+0x04, Iwd,0, "AND%S %i,%e",
+0x05, Iwd,0, "SUB%S %i,%e",
+0x06, Iwd,0, "XOR%S %i,%e",
+0x07, Iwd,0, "CMP%S %e,%i",
};
static Optable optab83[8]=
{
-[0x00] Ibs,0, "ADD%S %i,%e",
-[0x01] Ibs,0, "OR%S %i,%e",
-[0x02] Ibs,0, "ADC%S %i,%e",
-[0x03] Ibs,0, "SBB%S %i,%e",
-[0x04] Ibs,0, "AND%S %i,%e",
-[0x05] Ibs,0, "SUB%S %i,%e",
-[0x06] Ibs,0, "XOR%S %i,%e",
-[0x07] Ibs,0, "CMP%S %e,%i",
+0x00, Ibs,0, "ADD%S %i,%e",
+0x01, Ibs,0, "OR%S %i,%e",
+0x02, Ibs,0, "ADC%S %i,%e",
+0x03, Ibs,0, "SBB%S %i,%e",
+0x04, Ibs,0, "AND%S %i,%e",
+0x05, Ibs,0, "SUB%S %i,%e",
+0x06, Ibs,0, "XOR%S %i,%e",
+0x07, Ibs,0, "CMP%S %e,%i",
};
static Optable optabC0[8] =
{
-[0x00] Ib,0, "ROLB %i,%e",
-[0x01] Ib,0, "RORB %i,%e",
-[0x02] Ib,0, "RCLB %i,%e",
-[0x03] Ib,0, "RCRB %i,%e",
-[0x04] Ib,0, "SHLB %i,%e",
-[0x05] Ib,0, "SHRB %i,%e",
-[0x07] Ib,0, "SARB %i,%e",
+0x00, Ib,0, "ROLB %i,%e",
+0x01, Ib,0, "RORB %i,%e",
+0x02, Ib,0, "RCLB %i,%e",
+0x03, Ib,0, "RCRB %i,%e",
+0x04, Ib,0, "SHLB %i,%e",
+0x05, Ib,0, "SHRB %i,%e",
+0x07, Ib,0, "SARB %i,%e",
};
static Optable optabC1[8] =
{
-[0x00] Ib,0, "ROL%S %i,%e",
-[0x01] Ib,0, "ROR%S %i,%e",
-[0x02] Ib,0, "RCL%S %i,%e",
-[0x03] Ib,0, "RCR%S %i,%e",
-[0x04] Ib,0, "SHL%S %i,%e",
-[0x05] Ib,0, "SHR%S %i,%e",
-[0x07] Ib,0, "SAR%S %i,%e",
+0x00, Ib,0, "ROL%S %i,%e",
+0x01, Ib,0, "ROR%S %i,%e",
+0x02, Ib,0, "RCL%S %i,%e",
+0x03, Ib,0, "RCR%S %i,%e",
+0x04, Ib,0, "SHL%S %i,%e",
+0x05, Ib,0, "SHR%S %i,%e",
+0x07, Ib,0, "SAR%S %i,%e",
};
static Optable optabD0[8] =
{
-[0x00] 0,0, "ROLB %e",
-[0x01] 0,0, "RORB %e",
-[0x02] 0,0, "RCLB %e",
-[0x03] 0,0, "RCRB %e",
-[0x04] 0,0, "SHLB %e",
-[0x05] 0,0, "SHRB %e",
-[0x07] 0,0, "SARB %e",
+0x00, 0,0, "ROLB %e",
+0x01, 0,0, "RORB %e",
+0x02, 0,0, "RCLB %e",
+0x03, 0,0, "RCRB %e",
+0x04, 0,0, "SHLB %e",
+0x05, 0,0, "SHRB %e",
+0x07, 0,0, "SARB %e",
};
static Optable optabD1[8] =
{
-[0x00] 0,0, "ROL%S %e",
-[0x01] 0,0, "ROR%S %e",
-[0x02] 0,0, "RCL%S %e",
-[0x03] 0,0, "RCR%S %e",
-[0x04] 0,0, "SHL%S %e",
-[0x05] 0,0, "SHR%S %e",
-[0x07] 0,0, "SAR%S %e",
+0x00, 0,0, "ROL%S %e",
+0x01, 0,0, "ROR%S %e",
+0x02, 0,0, "RCL%S %e",
+0x03, 0,0, "RCR%S %e",
+0x04, 0,0, "SHL%S %e",
+0x05, 0,0, "SHR%S %e",
+0x07, 0,0, "SAR%S %e",
};
static Optable optabD2[8] =
{
-[0x00] 0,0, "ROLB CL,%e",
-[0x01] 0,0, "RORB CL,%e",
-[0x02] 0,0, "RCLB CL,%e",
-[0x03] 0,0, "RCRB CL,%e",
-[0x04] 0,0, "SHLB CL,%e",
-[0x05] 0,0, "SHRB CL,%e",
-[0x07] 0,0, "SARB CL,%e",
+0x00, 0,0, "ROLB CL,%e",
+0x01, 0,0, "RORB CL,%e",
+0x02, 0,0, "RCLB CL,%e",
+0x03, 0,0, "RCRB CL,%e",
+0x04, 0,0, "SHLB CL,%e",
+0x05, 0,0, "SHRB CL,%e",
+0x07, 0,0, "SARB CL,%e",
};
static Optable optabD3[8] =
{
-[0x00] 0,0, "ROL%S CL,%e",
-[0x01] 0,0, "ROR%S CL,%e",
-[0x02] 0,0, "RCL%S CL,%e",
-[0x03] 0,0, "RCR%S CL,%e",
-[0x04] 0,0, "SHL%S CL,%e",
-[0x05] 0,0, "SHR%S CL,%e",
-[0x07] 0,0, "SAR%S CL,%e",
+0x00, 0,0, "ROL%S CL,%e",
+0x01, 0,0, "ROR%S CL,%e",
+0x02, 0,0, "RCL%S CL,%e",
+0x03, 0,0, "RCR%S CL,%e",
+0x04, 0,0, "SHL%S CL,%e",
+0x05, 0,0, "SHR%S CL,%e",
+0x07, 0,0, "SAR%S CL,%e",
};
static Optable optabD8[8+8] =
{
-[0x00] 0,0, "FADDF %e,F0",
-[0x01] 0,0, "FMULF %e,F0",
-[0x02] 0,0, "FCOMF %e,F0",
-[0x03] 0,0, "FCOMFP %e,F0",
-[0x04] 0,0, "FSUBF %e,F0",
-[0x05] 0,0, "FSUBRF %e,F0",
-[0x06] 0,0, "FDIVF %e,F0",
-[0x07] 0,0, "FDIVRF %e,F0",
-[0x08] 0,0, "FADDD %f,F0",
-[0x09] 0,0, "FMULD %f,F0",
-[0x0a] 0,0, "FCOMD %f,F0",
-[0x0b] 0,0, "FCOMPD %f,F0",
-[0x0c] 0,0, "FSUBD %f,F0",
-[0x0d] 0,0, "FSUBRD %f,F0",
-[0x0e] 0,0, "FDIVD %f,F0",
-[0x0f] 0,0, "FDIVRD %f,F0",
+0x00, 0,0, "FADDF %e,F0",
+0x01, 0,0, "FMULF %e,F0",
+0x02, 0,0, "FCOMF %e,F0",
+0x03, 0,0, "FCOMFP %e,F0",
+0x04, 0,0, "FSUBF %e,F0",
+0x05, 0,0, "FSUBRF %e,F0",
+0x06, 0,0, "FDIVF %e,F0",
+0x07, 0,0, "FDIVRF %e,F0",
+0x08, 0,0, "FADDD %f,F0",
+0x09, 0,0, "FMULD %f,F0",
+0x0a, 0,0, "FCOMD %f,F0",
+0x0b, 0,0, "FCOMPD %f,F0",
+0x0c, 0,0, "FSUBD %f,F0",
+0x0d, 0,0, "FSUBRD %f,F0",
+0x0e, 0,0, "FDIVD %f,F0",
+0x0f, 0,0, "FDIVRD %f,F0",
};
/*
* optabD9 and optabDB use the following encoding:
@@ -786,444 +803,517 @@
*/
static Optable optabD9[64+8] =
{
-[0x00] 0,0, "FMOVF %e,F0",
-[0x02] 0,0, "FMOVF F0,%e",
-[0x03] 0,0, "FMOVFP F0,%e",
-[0x04] 0,0, "FLDENV%S %e",
-[0x05] 0,0, "FLDCW %e",
-[0x06] 0,0, "FSTENV%S %e",
-[0x07] 0,0, "FSTCW %e",
-[0x08] 0,0, "FMOVD F0,F0", /* Mod R/M = 11xx xxxx*/
-[0x09] 0,0, "FMOVD F1,F0",
-[0x0a] 0,0, "FMOVD F2,F0",
-[0x0b] 0,0, "FMOVD F3,F0",
-[0x0c] 0,0, "FMOVD F4,F0",
-[0x0d] 0,0, "FMOVD F5,F0",
-[0x0e] 0,0, "FMOVD F6,F0",
-[0x0f] 0,0, "FMOVD F7,F0",
***The diff for this file has been truncated for email.***
=======================================
--- /utils/libmach/kdb.c Tue Apr 27 05:24:29 2010
+++ /utils/libmach/kdb.c Mon May 3 07:47:59 2010
@@ -150,130 +150,138 @@
static void trap(Instr*, char*);
static struct opcode sparcop0[8] = {
- [0] "UNIMP", unimp, 0, /* page 137 */
- [2] "B", bra, 0, /* page 119 */
- [4] "SETHI", sethi, 0, /* page 104 */
- [6] "FB", fbra, 0, /* page 121 */
- [7] "CB", cbra, 0, /* page 123 */
+ "UNIMP", unimp, 0, /* page 137 */ /* 0 */
+ "", 0, 0, /* 1 */
+ "B", bra, 0, /* page 119 */ /* 2 */
+ "", 0, 0, /* 3 */
+ "SETHI", sethi, 0, /* page 104 */ /* 4 */
+ "", 0, 0, /* 5 */
+ "FB", fbra, 0, /* page 121 */ /* 6 */
+ "CB", cbra, 0, /* page 123 */ /* 7 */
};
static struct opcode sparcop2[64] = {
- [0x00] "ADD", add, 0, /* page 108 */
- [0x10] "ADDCC", add, 0,
- [0x08] "ADDX", add, 0,
- [0x18] "ADDXCC", add, 0,
-
- [0x20] "TADD", add, 0, /* page 109 */
- [0x22] "TADDCCTV", add, 0,
-
- [0x04] "SUB", add, 0, /* page 110 */
- [0x14] "SUBCC", cmp, 0,
- [0x0C] "SUBX", add, 0,
- [0x1C] "SUBXCC", add, 0,
-
- [0x21] "TSUB", add, 0, /* page 111 */
- [0x23] "TSUBCCTV", add, 0,
-
- [0x24] "MULSCC", add, 0, /* page 112 */
-
- [0x0A] "UMUL", add, 0, /* page 113 */
- [0x0B] "SMUL", add, 0,
- [0x1A] "UMULCC", add, 0,
- [0x1B] "SMULCC", add, 0,
-
- [0x0E] "UDIV", add, 0, /* page 115 */
- [0x0F] "SDIV", add, 0,
- [0x1E] "UDIVCC", add, 0,
- [0x1F] "SDIVCC", add, 0,
-
- [0x01] "AND", add, 0, /* page 106 */
- [0x11] "ANDCC", add, 0,
- [0x05] "ANDN", add, 0,
- [0x15] "ANDNCC", add, 0,
- [0x02] "OR", add, 0,
- [0x12] "ORCC", add, 0,
- [0x06] "ORN", add, 0,
- [0x16] "ORNCC", add, 0,
- [0x03] "XOR", add, 0,
- [0x13] "XORCC", add, 0,
- [0x07] "XORN", add, 0,
- [0x17] "XORNCC", add, 0,
-
- [0x25] "SLL", shift, 0, /* page 107 */
- [0x26] "SRL", shift, 0,
- [0x27] "SRA", shift, 0,
-
- [0x3C] "SAVE", add, 0, /* page 117 */
- [0x3D] "RESTORE", add, 0,
-
- [0x38] "JMPL", jmpl, 0, /* page 126 */
-
- [0x39] "RETT", add, 0, /* page 127 */
-
- [0x3A] "T", trap, 0, /* page 129 */
-
- [0x28] "rdy", rd, 0, /* page 131 */
- [0x29] "rdpsr", rd, 0,
- [0x2A] "rdwim", rd, 0,
- [0x2B] "rdtbr", rd, 0,
-
- [0x30] "wry", wr, 0, /* page 133 */
- [0x31] "wrpsr", wr, 0,
- [0x32] "wrwim", wr, 0,
- [0x33] "wrtbr", wr, 0,
-
- [0x3B] "flush", add, 0, /* page 138 */
-
- [0x34] "FPOP", fpop, 0, /* page 140 */
- [0x35] "FPOP", fpop, 0,
+ "ADD", add, 0, /* page 108 */ /* 0x00 */
+ "AND", add, 0, /* page 106 */ /* 0x01 */
+ "OR", add, 0, /* 0x02 */
+ "XOR", add, 0, /* 0x03 */
+ "SUB", add, 0, /* page 110 */ /* 0x04 */
+ "ANDN", add, 0, /* 0x05 */
+ "ORN", add, 0, /* 0x06 */
+ "XORN", add, 0, /* 0x07 */
+ "ADDX", add, 0, /* 0x08 */
+ "", 0, 0, /* 0x09 */
+ "UMUL", add, 0, /* page 113 */ /* 0x0a */
+ "SMUL", add, 0, /* 0x0b */
+ "SUBX", add, 0, /* 0x0c */
+ "", 0, 0, /* 0x0d */
+ "UDIV", add, 0, /* page 115 */ /* 0x0e */
+ "SDIV", add, 0, /* 0x0f */
+ "ADDCC", add, 0, /* 0x10 */
+ "ANDCC", add, 0, /* 0x11 */
+ "ORCC", add, 0, /* 0x12 */
+ "XORCC", add, 0, /* 0x13 */
+ "SUBCC", cmp, 0, /* 0x14 */
+ "ANDNCC", add, 0, /* 0x15 */
+ "ORNCC", add, 0, /* 0x16 */
+ "XORNCC", add, 0, /* 0x17 */
+ "ADDXCC", add, 0, /* 0x18 */
+ "", 0, 0, /* 0x19 */
+ "UMULCC", add, 0, /* 0x1a */
+ "SMULCC", add, 0, /* 0x1b */
+ "SUBXCC", add, 0, /* 0x1c */
+ "", 0, 0, /* 0x1d */
+ "UDIVCC", add, 0, /* 0x1e */
+ "SDIVCC", add, 0, /* 0x1f */
+ "TADD", add, 0, /* page 109 */ /* 0x20 */
+ "TSUB", add, 0, /* page 111 */ /* 0x21 */
+ "TADDCCTV", add, 0, /* 0x22 */
+ "TSUBCCTV", add, 0, /* 0x23 */
+ "MULSCC", add, 0, /* page 112 */ /* 0x24 */
+ "SLL", shift, 0, /* page 107 */ /* 0x25 */
+ "SRL", shift, 0, /* 0x26 */
+ "SRA", shift, 0, /* 0x27 */
+ "rdy", rd, 0, /* page 131 */ /* 0x28 */
+ "rdpsr", rd, 0, /* 0x29 */
+ "rdwim", rd, 0, /* 0x2a */
+ "rdtbr", rd, 0, /* 0x2b */
+ "", 0, 0, /* 0x2c */
+ "", 0, 0, /* 0x2d */
+ "", 0, 0, /* 0x2e */
+ "", 0, 0, /* 0x2f */
+ "wry", wr, 0, /* page 133 */ /* 0x30 */
+ "wrpsr", wr, 0, /* 0x31 */
+ "wrwim", wr, 0, /* 0x32 */
+ "wrtbr", wr, 0, /* 0x33 */
+ "FPOP", fpop, 0, /* page 140 */ /* 0x34 */
+ "FPOP", fpop, 0, /* 0x35 */
+ "", 0, 0, /* 0x36 */
+ "", 0, 0, /* 0x37 */
+ "JMPL", jmpl, 0, /* page 126 */ /* 0x38 */
+ "RETT", add, 0, /* page 127 */ /* 0x39 */
+ "T", trap, 0, /* page 129 */ /* 0x3a */
+ "flush", add, 0, /* page 138 */ /* 0x3b */
+ "SAVE", add, 0, /* page 117 */ /* 0x3c */
+ "RESTORE", add, 0, /* 0x3d */
};
static struct opcode sparcop3[64]={
- [0x09] "ldsb", load, 0, /* page 90 */
- [0x19] "ldsba", loada, 0,
- [0x0A] "ldsh", load, 0,
- [0x1A] "ldsha", loada, 0,
- [0x01] "ldub", load, 0,
- [0x11] "lduba", loada, 0,
- [0x02] "lduh", load, 0,
- [0x12] "lduha", loada, 0,
- [0x00] "ld", load, 0,
- [0x10] "lda", loada, 0,
- [0x03] "ldd", load, 0,
- [0x13] "ldda", loada, 0,
-
- [0x20] "ldf", loadf, 0, /* page 92 */
- [0x23] "lddf", loadf, 0,
- [0x21] "ldfsr", loadf,0,
-
- [0x30] "ldc", loadc, 0, /* page 94 */
- [0x33] "lddc", loadc, 0,
- [0x31] "ldcsr", loadcsr,0,
-
- [0x05] "stb", store, 0, /* page 95 */
- [0x15] "stba", storea, 0,
- [0x06] "sth", store, 0,
- [0x16] "stha", storea, 0,
- [0x04] "st", store, 0,
- [0x14] "sta", storea, 0,
- [0x07] "std", store, 0,
- [0x17] "stda", storea, 0,
-
- [0x24] "stf", storef, 0, /* page 97 */
- [0x27] "stdf", storef, 0,
- [0x25] "stfsr", storef,0,
- [0x26] "stdfq", storef,0,
-
- [0x34] "stc", loadc, 0, /* page 99 */
- [0x37] "stdc", loadc, 0,
- [0x35] "stcsr", loadcsr,0,
- [0x36] "stdcq", loadcsr,0,
-
- [0x0D] "ldstub", store, 0, /* page 101 */
- [0x1D] "ldstuba", storea, 0,
-
- [0x0F] "swap", load, 0, /* page 102 */
- [0x1F] "swapa", loada, 0,
+ "ld", load, 0, /* 0x00 */
+ "ldub", load, 0, /* 0x01 */
+ "lduh", load, 0, /* 0x02 */
+ "ldd", load, 0, /* 0x03 */
+ "st", store, 0, /* 0x04 */
+ "stb", store, 0, /* page 95 */ /* 0x05 */
+ "sth", store, 0, /* 0x06 */
+ "std", store, 0, /* 0x07 */
+ "", 0, 0, /* 0x08 */
+ "ldsb", load, 0, /* page 90 */ /* 0x09 */
+ "ldsh", load, 0, /* 0x0a */
+ "", 0, 0, /* 0x0b */
+ "", 0, 0, /* 0x0c */
+ "ldstub", store, 0, /* page 101 */ /* 0x0d */
+ "", 0, 0, /* 0x0e */
+ "swap", load, 0, /* page 102 */ /* 0x0f */
+ "lda", loada, 0, /* 0x10 */
+ "lduba", loada, 0, /* 0x11 */
+ "lduha", loada, 0, /* 0x12 */
+ "ldda", loada, 0, /* 0x13 */
+ "sta", storea, 0, /* 0x14 */
+ "stba", storea, 0, /* 0x15 */
+ "stha", storea, 0, /* 0x16 */
+ "stda", storea, 0, /* 0x17 */
+ "", 0, 0, /* 0x18 */
+ "ldsba", loada, 0, /* 0x19 */
+ "ldsha", loada, 0, /* 0x1a */
+ "", 0, 0, /* 0x1b */
+ "", 0, 0, /* 0x1c */
+ "ldstuba", storea, 0, /* 0x1d */
+ "", 0, 0, /* 0x1e */
+ "swapa", loada, 0, /* 0x1f */
+ "ldf", loadf, 0, /* page 92 */ /* 0x20 */
+ "ldfsr", loadf,0, /* 0x21 */
+ "", 0, 0, /* 0x22 */
+ "lddf", loadf, 0, /* 0x23 */
+ "stf", storef, 0, /* page 97 */ /* 0x24 */
+ "stfsr", storef,0, /* 0x25 */
+ "stdfq", storef,0, /* 0x26 */
+ "stdf", storef, 0, /* 0x27 */
+ "", 0, 0, /* 0x28 */
+ "", 0, 0, /* 0x29 */
+ "", 0, 0, /* 0x2a */
+ "", 0, 0, /* 0x2b */
+ "", 0, 0, /* 0x2c */
+ "", 0, 0, /* 0x2d */
+ "", 0, 0, /* 0x2e */
+ "", 0, 0, /* 0x2f */
+ "ldc", loadc, 0, /* page 94 */ /* 0x30 */
+ "ldcsr", loadcsr,0, /* 0x31 */
+ "", 0, 0, /* 0x32 */
+ "lddc", loadc, 0, /* 0x33 */
+ "stc", loadc, 0, /* page 99 */ /* 0x34 */
+ "stcsr", loadcsr,0, /* 0x35 */
+ "stdcq", loadcsr,0, /* 0x36 */
+ "stdc", loadc, 0, /* 0x37 */
};
#pragma varargck argpos bprint 2
@@ -534,60 +542,60 @@
}
static char *bratab[16] = { /* page 91 */
- [0X8] "A",
- [0X0] "N",
- [0X9] "NE",
- [0X1] "E",
- [0XA] "G",
- [0X2] "LE",
- [0XB] "GE",
- [0X3] "L",
- [0XC] "GU",
- [0X4] "LEU",
- [0XD] "CC",
- [0X5] "CS",
- [0XE] "POS",
- [0X6] "NEG",
- [0XF] "VC",
- [0X7] "VS",
+ "N", /* 0x0 */
+ "E", /* 0x1 */
+ "LE", /* 0x2 */
+ "L", /* 0x3 */
+ "LEU", /* 0x4 */
+ "CS", /* 0x5 */
+ "NEG", /* 0x6 */
+ "VS", /* 0x7 */
+ "A", /* 0x8 */
+ "NE", /* 0x9 */
+ "G", /* 0xa */
+ "GE", /* 0xb */
+ "GU", /* 0xc */
+ "CC", /* 0xd */
+ "POS", /* 0xe */
+ "VC", /* 0xf */
};
static char *fbratab[16] = { /* page 91 */
- [0X8] "A",
- [0X0] "N",
- [0X7] "U",
- [0X6] "G",
- [0X5] "UG",
- [0X4] "L",
- [0X3] "UL",
- [0X2] "LG",
- [0X1] "NE",
- [0X9] "E",
- [0XA] "UE",
- [0XB] "GE",
- [0XC] "UGE",
- [0XD] "LE",
- [0XE] "ULE",
- [0XF] "O",
+ "N", /* 0x0 */
+ "NE", /* 0x1 */
+ "LG", /* 0x2 */
+ "UL", /* 0x3 */
+ "L", /* 0x4 */
+ "UG", /* 0x5 */
+ "G", /* 0x6 */
+ "U", /* 0x7 */
+ "A", /* 0x8 */
+ "E", /* 0x9 */
+ "UE", /* 0xa */
+ "GE", /* 0xb */
+ "UGE", /* 0xc */
+ "LE", /* 0xd */
+ "ULE", /* 0xe */
+ "O", /* 0xf */
};
static char *cbratab[16] = { /* page 91 */
- [0X8] "A",
- [0X0] "N",
- [0X7] "3",
- [0X6] "2",
- [0X5] "23",
- [0X4] "1",
- [0X3] "13",
- [0X2] "12",
- [0X1] "123",
- [0X9] "0",
- [0XA] "03",
- [0XB] "02",
- [0XC] "023",
- [0XD] "01",
- [0XE] "013",
- [0XF] "012",
+ "N", /* 0x0 */
+ "123", /* 0x1 */
+ "12", /* 0x2 */
+ "13", /* 0x3 */
+ "1", /* 0x4 */
+ "23", /* 0x5 */
+ "2", /* 0x6 */
+ "3", /* 0x7 */
+ "A", /* 0x8 */
+ "0", /* 0x9 */
+ "03", /* 0xa */
+ "02", /* 0xb */
+ "023", /* 0xc */
+ "01", /* 0xd */
+ "013", /* 0xe */
+ "012", /* 0xf */
};
static void
=======================================
--- /utils/libmach/obj.c Tue Apr 27 04:51:13 2010
+++ /utils/libmach/obj.c Mon May 3 07:47:59 2010
@@ -50,15 +50,23 @@
static Obj obj[] =
{ /* functions to identify and parse each type of obj */
- [Obj68020] "68020 .2", _is2, _read2,
- [ObjAmd64] "amd64 .6", _is6, _read6,
- [ObjArm] "arm .5", _is5, _read5,
- [Obj386] "386 .8", _is8, _read8,
- [ObjSparc] "sparc .k", _isk, _readk,
- [ObjPower] "power .q", _isq, _readq,
- [ObjMips] "mips .v", _isv, _readv,
- [ObjPower64] "power64 .9", _is9, _read9,
- [Maxobjtype] 0, 0
+ /*[Obj68020]*/ "68020 .2", _is2, _read2,
+ /*[ObjSparc]*/ "sparc .k", _isk, _readk,
+ /*[ObjMips]*/ "mips .v", _isv, _readv,
+ /*[Obj386]*/ "386 .8", _is8, _read8,
+ /*[Obj960]*/ {0, 0,},
+ /*[Obj3210]*/ {0, 0,},
+ /*[ObjMips2]*/ {0, 0,},
+ /*[Obj29000]*/ {0, 0,},
+ /*[ObjArm]*/ "arm .5", _is5, _read5,
+ /*[ObjPower]*/ "power .q", _isq, _readq,
+ /*[ObjMips2le]*/ {0, 0,},
+ /*[ObjAlpha]*/ {0, 0,},
+ /*[ObjSparc64]*/ {0, 0,},
+ /*[ObjAmd64]*/ "amd64 .6", _is6, _read6,
+ /*[ObjSpim]*/ {0, 0,},
+ /*[ObjPower64]*/ "power64 .9", _is9, _read9,
+ /*[Maxobjtype]*/ 0, 0
};
struct Symtab
=======================================
--- /utils/libmach/setmach.c Fri Dec 22 13:39:35 2006
+++ /utils/libmach/setmach.c Mon May 3 07:47:59 2010
@@ -15,9 +15,10 @@
Machdata *machdata; /* machine functions */
};
-extern Mach mmips, msparc, m68020, mi386, marm, mmips2be, mmips2le,
mpower;
+extern Mach mmips, msparc, m68020, mi386, mamd64,
+ marm, mmips2be, mmips2le, mpower, mpower64, malpha, msparc64;
extern Machdata mipsmach, sparcmach, m68020mach, i386mach,
- armmach, mipsmach2be, mipsmach2le, powermach;
+ armmach, mipsmach2le, powermach, alphamach, sparc64mach;
/*
* machine selection table. machines with native disassemblers should
@@ -55,7 +56,7 @@
FMIPSB,
AMIPS,
&mmips2be,
- &mipsmach2be, },
+ &mipsmach, }, /* shares debuggers with native mips */
{ "mipsco", /*native mips - must follow plan 9*/
FMIPS,
FMIPSB,
@@ -85,18 +86,30 @@
FI386B,
AI8086,
&mi386,
+ &i386mach, },
+ { "amd64", /*amd64*/
+ FAMD64,
+ FAMD64B,
+ AAMD64,
+ &mamd64,
&i386mach, },
{ "arm", /*ARM*/
FARM,
- FNONE,
+ FARMB,
AARM,
&marm,
&armmach, },
{ "power", /*PowerPC*/
FPOWER,
- FNONE,
+ FPOWERB,
APOWER,
&mpower,
+ &powermach, },
+ { "power64", /*PowerPC*/
+ FPOWER64,
+ FPOWER64B,
+ APOWER64,
+ &mpower64,
&powermach, },
{ 0 }, /*the terminator*/
};
==============================================================================
Revision: 5986c02485
Author:
for...@vitanuova.com
Date: Mon May 3 15:52:10 2010
Log: 20100503-2352
http://code.google.com/p/inferno-npe/source/detail?r=5986c02485
Added:
/lib9/pread-Nt.c
/lib9/strtoull.c
Modified:
/lib9/mkfile
/lib9/mkfile-Nt
/utils/libmach/6.c
/utils/libmach/9.c
/utils/libmach/q.c
=======================================
--- /dev/null
+++ /lib9/pread-Nt.c Mon May 3 15:52:10 2010
@@ -0,0 +1,9 @@
+#include "lib9.h"
+
+long
+pread(int fd, void *buf, long n, vlong offset)
+{
+ if(seek(fd, offset, 0) < 0)
+ return -1;
+ return read(fd, buf, n);
+}
=======================================
--- /dev/null
+++ /lib9/strtoull.c Mon May 3 15:52:10 2010
@@ -0,0 +1,96 @@
+#include "lib9.h"
+
+#define UVLONG_MAX (1LL<<63)
+
+uvlong
+strtoull(char *nptr, char **endptr, int base)
+{
+ char *p;
+ uvlong n, nn, m;
+ int c, ovfl, v, neg, ndig;
+
+ p = nptr;
+ neg = 0;
+ n = 0;
+ ndig = 0;
+ ovfl = 0;
+
+ /*
+ * White space
+ */
+ for(;; p++) {
+ switch(*p) {
+ case ' ':
+ case '\t':
+ case '\n':
+ case '\f':
+ case '\r':
+ case '\v':
+ continue;
+ }
+ break;
+ }
+
+ /*
+ * Sign
+ */
+ if(*p == '-' || *p == '+')
+ if(*p++ == '-')
+ neg = 1;
+
+ /*
+ * Base
+ */
+ if(base == 0) {
+ base = 10;
+ if(*p == '0') {
+ base = 8;
+ if(p[1] == 'x' || p[1] == 'X'){
+ p += 2;
+ base = 16;
+ }
+ }
+ } else
+ if(base == 16 && *p == '0') {
+ if(p[1] == 'x' || p[1] == 'X')
+ p += 2;
+ } else
+ if(base < 0 || 36 < base)
+ goto Return;
+
+ /*
+ * Non-empty sequence of digits
+ */
+ m = UVLONG_MAX/base;
+ for(;; p++,ndig++) {
+ c = *p;
+ v = base;
+ if('0' <= c && c <= '9')
+ v = c - '0';
+ else
+ if('a' <= c && c <= 'z')
+ v = c - 'a' + 10;
+ else
+ if('A' <= c && c <= 'Z')
+ v = c - 'A' + 10;
+ if(v >= base)
+ break;
+ if(n > m)
+ ovfl = 1;
+ nn = n*base + v;
+ if(nn < n)
+ ovfl = 1;
+ n = nn;
+ }
+
+Return:
+ if(ndig == 0)
+ p = nptr;
+ if(endptr)
+ *endptr = p;
+ if(ovfl)
+ return UVLONG_MAX;
+ if(neg)
+ return -n;
+ return n;
+}
=======================================
--- /lib9/mkfile Mon Jan 15 13:04:26 2007
+++ /lib9/mkfile Mon May 3 15:52:10 2010
@@ -14,6 +14,7 @@
qsort.$O\
runestrlen.$O\
strtoll.$O\
+ strtoull.$O\
rune.$O\
#
# files used by most models. these are added to TARGFILES in some
=======================================
--- /lib9/mkfile-Nt Fri Dec 22 09:07:39 2006
+++ /lib9/mkfile-Nt Mon May 3 15:52:10 2010
@@ -6,3 +6,4 @@
getwd-Nt.$O\
setbinmode-Nt.$O\
lock-Nt-386.$O\
+ pread-Nt.$O\
=======================================
--- /utils/libmach/6.c Tue Apr 27 04:51:13 2010
+++ /utils/libmach/6.c Mon May 3 15:52:10 2010
@@ -105,9 +105,9 @@
"setSB", /* static base register name (bogus anyways) */
0, /* static base register value */
0x1000, /* page size */
- 0xFFFFFFFF80110000ULL, /* kernel base */
- 0xFFFF800000000000ULL, /* kernel text mask */
- 0x00007FFFFFFFF000ULL, /* user stack top */
+ 0xFFFFFFFF80110000U, /* kernel base */
+ 0xFFFF800000000000U, /* kernel text mask */
+ 0x00007FFFFFFFF000U, /* user stack top */
1, /* quantization of pc */
8, /* szaddr */
4, /* szreg */
=======================================
--- /utils/libmach/9.c Tue Apr 27 04:51:13 2010
+++ /utils/libmach/9.c Mon May 3 15:52:10 2010
@@ -109,9 +109,9 @@
"setSB", /* static base register name */
0, /* value */
0x1000, /* page size */
- 0x80000000ULL, /* kernel base */
+ 0x80000000U, /* kernel base */
0, /* kernel text mask */
- 0x7FFFFFFFULL, /* user stack top */
+ 0x7FFFFFFFU, /* user stack top */
4, /* quantization of pc */
8, /* szaddr */
8, /* szreg */
=======================================
--- /utils/libmach/q.c Tue Apr 27 04:55:38 2010
+++ /utils/libmach/q.c Mon May 3 15:52:10 2010
@@ -112,9 +112,9 @@
"setSB", /* static base register name */
0, /* value */
0x1000, /* page size */
- 0x80000000ULL, /* kernel base */
- 0xF0000000ULL, /* kernel text mask */
- 0x7FFFFFFFULL, /* user stack top */
+ 0x80000000U, /* kernel base */
+ 0xF0000000U, /* kernel text mask */
+ 0x7FFFFFFFU, /* user stack top */
4, /* quantization of pc */
4, /* szaddr */
4, /* szreg */
==============================================================================
Revision: 07050322d0
Author:
for...@vitanuova.com
Date: Tue May 4 01:57:12 2010
Log: 20100504-0957
http://code.google.com/p/inferno-npe/source/detail?r=07050322d0
Modified:
/CHANGES
/include/version.h
/lib9/strtoull.c
=======================================
--- /CHANGES Mon May 3 07:47:59 2010
+++ /CHANGES Tue May 4 01:57:12 2010
@@ -1,3 +1,5 @@
+20100504
+ change lib9/strtoull.c for MS
20100503
updated libmach/8db.c to avoid [] initialisers
20100501
=======================================
--- /include/version.h Mon May 3 07:47:59 2010
+++ /include/version.h Tue May 4 01:57:12 2010
@@ -1,1 +1,1 @@
-#define VERSION "Fourth Edition (20100503)"
+#define VERSION "Fourth Edition (20100504)"
=======================================
--- /lib9/strtoull.c Mon May 3 15:52:10 2010
+++ /lib9/strtoull.c Tue May 4 01:57:12 2010
@@ -1,6 +1,6 @@
#include "lib9.h"
-#define UVLONG_MAX (1LL<<63)
+#define UVLONG_MAX ((uvlong)1<<63)
uvlong
strtoull(char *nptr, char **endptr, int base)
==============================================================================
Revision: 9b9a9b9a1a
Author:
for...@vitanuova.com
Date: Tue May 4 05:34:54 2010
Log: 20100504-1334
http://code.google.com/p/inferno-npe/source/detail?r=9b9a9b9a1a
Modified:
/lib9/strtoull.c
=======================================
--- /lib9/strtoull.c Tue May 4 01:57:12 2010
+++ /lib9/strtoull.c Tue May 4 05:34:54 2010
@@ -3,9 +3,9 @@
#define UVLONG_MAX ((uvlong)1<<63)
uvlong
-strtoull(char *nptr, char **endptr, int base)
-{
- char *p;
+strtoull(const char *nptr, char **endptr, int base)
+{
+ const char *p;
uvlong n, nn, m;
int c, ovfl, v, neg, ndig;
@@ -87,7 +87,7 @@
if(ndig == 0)
p = nptr;
if(endptr)
- *endptr = p;
+ *endptr = (char*)p;
if(ovfl)
return UVLONG_MAX;
if(neg)
==============================================================================
Revision: bc915b7bbe
Author:
for...@vitanuova.com
Date: Tue May 4 13:58:53 2010
Log: 20100504-2158
http://code.google.com/p/inferno-npe/source/detail?r=bc915b7bbe
Modified:
/module/wmsrv.m
=======================================
--- /module/wmsrv.m Fri Dec 22 12:52:35 2006
+++ /module/wmsrv.m Tue May 4 13:58:53 2010
@@ -10,7 +10,7 @@
Window: adt {
tag: string;
- r: Rect;
+ r: Draw->Rect;
img: ref Draw->Image;
};
==============================================================================
Revision: 12160eb973
Author:
for...@vitanuova.com
Date: Wed May 5 05:18:06 2010
Log: 20100505-1318
http://code.google.com/p/inferno-npe/source/detail?r=12160eb973
Modified:
/emu/Nt/ie
/include/version.h
=======================================
--- /emu/Nt/ie Sat Jul 25 05:00:30 2009
+++ /emu/Nt/ie Wed May 5 05:18:06 2010
@@ -56,6 +56,7 @@
cache
chan
dev
+ devtab
dial
dis
discall
=======================================
--- /include/version.h Tue May 4 01:57:12 2010
+++ /include/version.h Wed May 5 05:18:06 2010
@@ -1,1 +1,1 @@
-#define VERSION "Fourth Edition (20100504)"
+#define VERSION "Fourth Edition (20100505)"
==============================================================================
Revision: 9bab0498de
Author: Venkatesh Srinivas <
m...@endeavour.zapto.org>
Date: Mon May 10 15:14:08 2010
Log: Merge with inferno-os 20100505-1318.
http://code.google.com/p/inferno-npe/source/detail?r=9bab0498de
Modified:
/CHANGES
/include/version.h
=======================================
--- /CHANGES Wed Apr 28 18:25:58 2010
+++ /CHANGES Mon May 10 15:14:08 2010
@@ -1,3 +1,9 @@
+20100504
+ change lib9/strtoull.c for MS
+20100503
+ updated libmach/8db.c to avoid [] initialisers
+20100501
+ update libmach to compensate for MS compiler
20100426
updated libmach
updated compiler suites (continuing)
=======================================
--- /include/version.h Wed Apr 28 18:25:58 2010
+++ /include/version.h Mon May 10 15:14:08 2010
@@ -1,1 +1,1 @@
-#define VERSION "Fourth Edition (20100427)"
+#define VERSION "Fourth Edition (20100505)"
==============================================================================
Revision: 7f122f7a7b
Author: Venkatesh Srinivas <
m...@endeavour.zapto.org>
Date: Mon May 10 15:52:41 2010
Log: Implement vmstat in /dev/cons; add n_chans and n_active_chans to
vmstat to demonstrate the interface.
http://code.google.com/p/inferno-npe/source/detail?r=7f122f7a7b
Modified:
/emu/port/chan.c
/emu/port/dat.h
/emu/port/devcons.c
/emu/port/fns.h
=======================================
--- /emu/port/chan.c Thu Jan 14 14:19:51 2010
+++ /emu/port/chan.c Mon May 10 15:52:41 2010
@@ -2,6 +2,10 @@
#include "fns.h"
#include "error.h"
+static int n_chans = 0;
+static int n_active_chans = 0;
+static int stats_init = 0;
+
char*
c2name(Chan *c) /* DEBUGGING */
{
@@ -131,10 +135,18 @@
{
Chan *c;
+ if (stats_init == 0) {
+ stats_init = 1;
+ vmstat_entry("vm.n_chans", &n_chans, &chanalloc.l);
+ vmstat_entry("vm.n_active_chans", &n_active_chans, &chanalloc.l);
+ }
+
lock(&chanalloc.l);
c = chanalloc.free;
- if(c != 0)
+ if(c != 0) {
chanalloc.free = c->next;
+ n_active_chans++;
+ }
unlock(&chanalloc.l);
if(c == nil) {
@@ -145,6 +157,8 @@
c->fid = ++chanalloc.fid;
c->link = chanalloc.list;
chanalloc.list = c;
+ n_chans++;
+ n_active_chans++;
unlock(&chanalloc.l);
}
@@ -263,6 +277,7 @@
lock(&chanalloc.l);
c->next = chanalloc.free;
chanalloc.free = c;
+ n_active_chans--;
unlock(&chanalloc.l);
}
=======================================
--- /emu/port/dat.h Tue Feb 9 09:34:34 2010
+++ /emu/port/dat.h Mon May 10 15:52:41 2010
@@ -30,6 +30,9 @@
typedef struct Skeyset Skeyset;
typedef struct Uqid Uqid;
typedef struct Uqidtab Uqidtab;
+typedef struct Vmstat Vmstat;
+typedef struct Vmstat_root Vmstat_root;
+
typedef struct Walkqid Walkqid;
#include "lib9.h"
@@ -134,6 +137,21 @@
Cname *name;
};
+#define VMSTAT_ENTRIES 256
+
+struct Vmstat {
+ int type;
+ char *name;
+ int *val_ptr;
+ Lock *lk;
+};
+
+struct Vmstat_root {
+ Lock lk;
+ int i;
+ Vmstat entry[VMSTAT_ENTRIES];
+};
+
struct Cname
{
Ref r;
@@ -466,6 +484,7 @@
extern int globfs;
extern int greyscale;
extern uint qiomaxatomic;
+extern Vmstat_root vmstat_root;
/*
* floating point control and status register masks
=======================================
--- /emu/port/devcons.c Tue Aug 25 11:40:28 2009
+++ /emu/port/devcons.c Mon May 10 15:52:41 2010
@@ -9,6 +9,7 @@
extern int cflag;
int exdebug;
extern int keepbroken;
+Vmstat_root vmstat_root;
enum
{
@@ -32,7 +33,8 @@
Qsysctl,
Qsysname,
Qtime,
- Quser
+ Quser,
+ Qvmstat,
};
Dirtab contab[] =
@@ -58,6 +60,7 @@
"sysname", {Qsysname}, 0, 0644,
"time", {Qtime}, 0, 0644,
"user", {Quser}, 0, 0644,
+ "vmstat", {Qvmstat}, 0, 0644,
};
Queue* gkscanq; /* Graphics keyboard raw scancodes */
@@ -96,6 +99,24 @@
Rune c;
int count;
} kbd;
+
+void
+vmstat_entry(char *name, int *val_ptr, Lock *lk)
+{
+ Vmstat v;
+
v.name = name;
+ v.val_ptr = val_ptr;
+
v.lk = lk;
+
+ lock(&
vmstat_root.lk);
+ do {
+ if (vmstat_root.i >= VMSTAT_ENTRIES)
+ break;
+
+ vmstat_root.entry[vmstat_root.i++] = v;
+ } while(0);
+ unlock(&
vmstat_root.lk);
+}
void
kbdslave(void *a)
@@ -282,7 +303,8 @@
consread(Chan *c, void *va, long n, vlong offset)
{
int send;
- char *p, buf[64], ch;
+ char *p, buf[256], ch;
+ int i, j;
if(c->qid.type & QTDIR)
return devdirread(c, va, n, contab, nelem(contab), devgen);
@@ -326,6 +348,26 @@
case Qdrivers:
return devtabread(c, va, n, offset);
+ case Qvmstat:
+ j = 0;
+ lock(&
vmstat_root.lk);
+ do {
+ for (i = 0; i < vmstat_root.i; i++) {
+ if (vmstat_root.entry[i].lk)
+ lock(vmstat_root.entry[i].lk);
+ if (j > sizeof(buf))
+ break;
+
+ j += snprint(buf + j, sizeof(buf) - j, "%s: %d\n",
+ vmstat_root.entry[i].name,
+ *vmstat_root.entry[i].val_ptr);
+ if (vmstat_root.entry[i].lk)
+ unlock(vmstat_root.entry[i].lk);
+ }
+ } while(0);
+ unlock(&
vmstat_root.lk);
+
+ return readstr(offset, va, n, buf);
case Qmemory:
return poolread(va, n, offset);
=======================================
--- /emu/port/fns.h Tue Feb 9 23:24:33 2010
+++ /emu/port/fns.h Mon May 10 15:52:41 2010
@@ -249,6 +249,7 @@
long kdirread(int, Dir**);
int klisten(char*, char*);
+
Cname* addelem(Cname*, char*);
void cleancname(Cname*);
void cnameclose(Cname*);
@@ -258,4 +259,6 @@
void *ksd_getspecific(int key);
void *ksd_setspecific(int key, void *val);
+void vmstat_entry(char *, int *, Lock *);
+
#pragma varargck argpos iprint 1