xref: /netbsd-src/external/gpl3/gdb.old/dist/include/opcode/pyr.h (revision 8b657b0747480f8989760d71343d6dd33f8d4cf9)
1a5a4af3bSchristos /* pyramid.opcode.h -- gdb initial attempt.
2a5a4af3bSchristos 
3*8b657b07Schristos    Copyright (C) 2001-2022 Free Software Foundation, Inc.
4a5a4af3bSchristos 
5a5a4af3bSchristos    This program is free software; you can redistribute it and/or modify
6a5a4af3bSchristos    it under the terms of the GNU General Public License as published by
7a5a4af3bSchristos    the Free Software Foundation; either version 3, or (at your option)
8a5a4af3bSchristos    any later version.
9a5a4af3bSchristos 
10a5a4af3bSchristos    This program is distributed in the hope that it will be useful,
11a5a4af3bSchristos    but WITHOUT ANY WARRANTY; without even the implied warranty of
12a5a4af3bSchristos    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13a5a4af3bSchristos    GNU General Public License for more details.
14a5a4af3bSchristos 
15a5a4af3bSchristos    You should have received a copy of the GNU General Public License
16a5a4af3bSchristos    along with this program; if not, write to the Free Software
17a5a4af3bSchristos    Foundation, Inc., 51 Franklin Street - Fifth Floor,
18a5a4af3bSchristos    Boston, MA 02110-1301, USA.  */
19a5a4af3bSchristos 
20a5a4af3bSchristos /* pyramid opcode table: wot to do with this
21a5a4af3bSchristos    particular opcode */
22a5a4af3bSchristos 
23a5a4af3bSchristos struct pyr_datum
24a5a4af3bSchristos {
25a5a4af3bSchristos   char              nargs;
26a5a4af3bSchristos   char *            args;	/* how to compile said opcode */
27a5a4af3bSchristos   unsigned long     mask;	/* Bit vector: which operand modes are valid
28a5a4af3bSchristos 				   for this opcode */
29a5a4af3bSchristos   unsigned char     code;	/* op-code (always 6(?) bits */
30a5a4af3bSchristos };
31a5a4af3bSchristos 
32a5a4af3bSchristos typedef struct pyr_insn_format
33a5a4af3bSchristos {
34a5a4af3bSchristos     unsigned int mode :4;
35a5a4af3bSchristos     unsigned int operator :8;
36a5a4af3bSchristos     unsigned int index_scale :2;
37a5a4af3bSchristos     unsigned int index_reg :6;
38a5a4af3bSchristos     unsigned int operand_1 :6;
39a5a4af3bSchristos     unsigned int operand_2:6;
40a5a4af3bSchristos } pyr_insn_format;
41a5a4af3bSchristos 
42a5a4af3bSchristos 
43a5a4af3bSchristos /* We store four bytes of opcode for all opcodes.
44a5a4af3bSchristos    Pyramid is sufficiently RISCy that:
45a5a4af3bSchristos       - insns are always an integral number of words;
46a5a4af3bSchristos       - the length of any insn can be told from the first word of
47a5a4af3bSchristos         the insn. (ie, if there are zero, one, or two words of
48a5a4af3bSchristos 	immediate operand/offset).
49a5a4af3bSchristos 
50a5a4af3bSchristos 
51a5a4af3bSchristos    The args component is a string containing two characters for each
52a5a4af3bSchristos    operand of the instruction.  The first specifies the kind of operand;
53a5a4af3bSchristos    the second, the place it is stored. */
54a5a4af3bSchristos 
55a5a4af3bSchristos /* Kinds of operands:
56a5a4af3bSchristos    mask	 assembler syntax	description
57a5a4af3bSchristos    0x0001:  movw Rn,Rn		register to register
58a5a4af3bSchristos    0x0002:  movw K,Rn		quick immediate to register
59a5a4af3bSchristos    0x0004:  movw I,Rn		long immediate to register
60a5a4af3bSchristos    0x0008:  movw (Rn),Rn	register indirect to register
61a5a4af3bSchristos    	    movw (Rn)[x],Rn	register indirect to register
62a5a4af3bSchristos    0x0010:  movw I(Rn),Rn	offset register indirect to register
63a5a4af3bSchristos    	    movw I(Rn)[x],Rn	offset register indirect, indexed, to register
64a5a4af3bSchristos 
65a5a4af3bSchristos    0x0020:  movw Rn,(Rn)	register to register indirect
66a5a4af3bSchristos    0x0040:  movw K,(Rn)		quick immediate to register indirect
67a5a4af3bSchristos    0x0080:  movw I,(Rn)		long immediate to register indirect
68a5a4af3bSchristos    0x0100:  movw (Rn),(Rn)	register indirect to-register indirect
69a5a4af3bSchristos    0x0100:  movw (Rn),(Rn)	register indirect to-register indirect
70a5a4af3bSchristos    0x0200:  movw I(Rn),(Rn)	register indirect+offset to register indirect
71a5a4af3bSchristos    0x0200:  movw I(Rn),(Rn)	register indirect+offset to register indirect
72a5a4af3bSchristos 
73a5a4af3bSchristos    0x0400:  movw Rn,I(Rn)	register to register indirect+offset
74a5a4af3bSchristos    0x0800:  movw K,I(Rn)	quick immediate to register indirect+offset
75a5a4af3bSchristos    0x1000:  movw I,I(Rn)	long immediate to register indirect+offset
76a5a4af3bSchristos    0x1000:  movw (Rn),I(Rn)	register indirect to-register indirect+offset
77a5a4af3bSchristos    0x1000:  movw I(Rn),I(Rn)	register indirect+offset to register indirect
78a5a4af3bSchristos    					+offset
79a5a4af3bSchristos    0x0000:  (irregular)		???
80a5a4af3bSchristos 
81a5a4af3bSchristos 
82a5a4af3bSchristos    Each insn has a four-bit field encoding the type(s) of its operands.
83a5a4af3bSchristos */
84a5a4af3bSchristos 
85a5a4af3bSchristos /* Some common combinations
86a5a4af3bSchristos    */
87a5a4af3bSchristos 
88a5a4af3bSchristos /* the first 5,(0x1|0x2|0x4|0x8|0x10) ie (1|2|4|8|16), ie ( 32 -1)*/
89a5a4af3bSchristos #define GEN_TO_REG (31)
90a5a4af3bSchristos 
91a5a4af3bSchristos #define	UNKNOWN ((unsigned long)-1)
92a5a4af3bSchristos #define ANY (GEN_TO_REG | (GEN_TO_REG << 5) | (GEN_TO_REG << 15))
93a5a4af3bSchristos 
94a5a4af3bSchristos #define CONVERT (1|8|0x10|0x20|0x200)
95a5a4af3bSchristos 
96a5a4af3bSchristos #define K_TO_REG (2)
97a5a4af3bSchristos #define I_TO_REG (4)
98a5a4af3bSchristos #define NOTK_TO_REG (GEN_TO_REG & ~K_TO_REG)
99a5a4af3bSchristos #define NOTI_TO_REG (GEN_TO_REG & ~I_TO_REG)
100a5a4af3bSchristos 
101a5a4af3bSchristos /* The assembler requires that this array be sorted as follows:
102a5a4af3bSchristos    all instances of the same mnemonic must be consecutive.
103a5a4af3bSchristos    All instances of the same mnemonic with the same number of operands
104a5a4af3bSchristos    must be consecutive.
105a5a4af3bSchristos  */
106a5a4af3bSchristos 
107a5a4af3bSchristos struct pyr_opcode		/* pyr opcode text */
108a5a4af3bSchristos {
109a5a4af3bSchristos   char *            name;	/* opcode name: lowercase string  [key]  */
110a5a4af3bSchristos   struct pyr_datum  datum;	/* rest of opcode table          [datum] */
111a5a4af3bSchristos };
112a5a4af3bSchristos 
113a5a4af3bSchristos #define pyr_how args
114a5a4af3bSchristos #define pyr_nargs nargs
115a5a4af3bSchristos #define pyr_mask mask
116a5a4af3bSchristos #define pyr_name name
117a5a4af3bSchristos 
118a5a4af3bSchristos struct pyr_opcode pyr_opcodes[] =
119a5a4af3bSchristos {
120a5a4af3bSchristos   {"movb",	{ 2, "", UNKNOWN,		0x11}, },
121a5a4af3bSchristos   {"movh",	{ 2, "", UNKNOWN,		0x12} },
122a5a4af3bSchristos   {"movw",	{ 2, "", ANY,			0x10} },
123a5a4af3bSchristos   {"movl",	{ 2, "", ANY,			0x13} },
124a5a4af3bSchristos   {"mnegw",	{ 2, "", (0x1|0x8|0x10),	0x14} },
125a5a4af3bSchristos   {"mnegf",	{ 2, "", 0x1,			0x15} },
126a5a4af3bSchristos   {"mnegd",	{ 2, "", 0x1,			0x16} },
127a5a4af3bSchristos   {"mcomw",	{ 2, "", (0x1|0x8|0x10),	0x17} },
128a5a4af3bSchristos   {"mabsw",	{ 2, "", (0x1|0x8|0x10),	0x18} },
129a5a4af3bSchristos   {"mabsf",	{ 2, "", 0x1,			0x19} },
130a5a4af3bSchristos   {"mabsd",	{ 2, "", 0x1,			0x1a} },
131a5a4af3bSchristos   {"mtstw",	{ 2, "", (0x1|0x8|0x10),	0x1c} },
132a5a4af3bSchristos   {"mtstf",	{ 2, "", 0x1,			0x1d} },
133a5a4af3bSchristos   {"mtstd",	{ 2, "", 0x1,			0x1e} },
134a5a4af3bSchristos   {"mova",	{ 2, "", 0x8|0x10,		0x1f} },
135a5a4af3bSchristos   {"movzbw",	{ 2, "", (0x1|0x8|0x10),	0x20} },
136a5a4af3bSchristos   {"movzhw",	{ 2, "", (0x1|0x8|0x10),	0x21} },
137a5a4af3bSchristos 				/* 2 insns out of order here */
138a5a4af3bSchristos   {"movbl",	{ 2, "", 1,			0x4f} },
139a5a4af3bSchristos   {"filbl",	{ 2, "", 1,			0x4e} },
140a5a4af3bSchristos 
141a5a4af3bSchristos   {"cvtbw",	{ 2, "", CONVERT,		0x22} },
142a5a4af3bSchristos   {"cvthw",	{ 2, "", CONVERT,		0x23} },
143a5a4af3bSchristos   {"cvtwb",	{ 2, "", CONVERT,		0x24} },
144a5a4af3bSchristos   {"cvtwh",	{ 2, "", CONVERT,		0x25} },
145a5a4af3bSchristos   {"cvtwf",	{ 2, "", CONVERT,		0x26} },
146a5a4af3bSchristos   {"cvtwd",	{ 2, "", CONVERT,		0x27} },
147a5a4af3bSchristos   {"cvtfw",	{ 2, "", CONVERT,		0x28} },
148a5a4af3bSchristos   {"cvtfd",	{ 2, "", CONVERT,		0x29} },
149a5a4af3bSchristos   {"cvtdw",	{ 2, "", CONVERT,		0x2a} },
150a5a4af3bSchristos   {"cvtdf",	{ 2, "", CONVERT,		0x2b} },
151a5a4af3bSchristos 
152a5a4af3bSchristos   {"addw",	{ 2, "", GEN_TO_REG,		0x40} },
153a5a4af3bSchristos   {"addwc",	{ 2, "", GEN_TO_REG,		0x41} },
154a5a4af3bSchristos   {"subw",	{ 2, "", GEN_TO_REG,		0x42} },
155a5a4af3bSchristos   {"subwb",	{ 2, "", GEN_TO_REG,		0x43} },
156a5a4af3bSchristos   {"rsubw",	{ 2, "", GEN_TO_REG,		0x44} },
157a5a4af3bSchristos   {"mulw",	{ 2, "", GEN_TO_REG,		0x45} },
158a5a4af3bSchristos   {"emul",	{ 2, "", GEN_TO_REG,		0x47} },
159a5a4af3bSchristos   {"umulw",	{ 2, "", GEN_TO_REG,		0x46} },
160a5a4af3bSchristos   {"divw",	{ 2, "", GEN_TO_REG,		0x48} },
161a5a4af3bSchristos   {"ediv",	{ 2, "", GEN_TO_REG,		0x4a} },
162a5a4af3bSchristos   {"rdivw",	{ 2, "", GEN_TO_REG,		0x4b} },
163a5a4af3bSchristos   {"udivw",	{ 2, "", GEN_TO_REG,		0x49} },
164a5a4af3bSchristos   {"modw",	{ 2, "", GEN_TO_REG,		0x4c} },
165a5a4af3bSchristos   {"umodw",	{ 2, "", GEN_TO_REG,		0x4d} },
166a5a4af3bSchristos 
167a5a4af3bSchristos 
168a5a4af3bSchristos   {"addf",	{ 2, "", 1,			0x50} },
169a5a4af3bSchristos   {"addd",	{ 2, "", 1,			0x51} },
170a5a4af3bSchristos   {"subf",	{ 2, "", 1,			0x52} },
171a5a4af3bSchristos   {"subd",	{ 2, "", 1,			0x53} },
172a5a4af3bSchristos   {"mulf",	{ 2, "", 1,			0x56} },
173a5a4af3bSchristos   {"muld",	{ 2, "", 1,			0x57} },
174a5a4af3bSchristos   {"divf",	{ 2, "", 1,			0x58} },
175a5a4af3bSchristos   {"divd",	{ 2, "", 1,			0x59} },
176a5a4af3bSchristos 
177a5a4af3bSchristos 
178a5a4af3bSchristos   {"cmpb",	{ 2, "", UNKNOWN,		0x61} },
179a5a4af3bSchristos   {"cmph",	{ 2, "", UNKNOWN,		0x62} },
180a5a4af3bSchristos   {"cmpw",	{ 2, "", UNKNOWN,		0x60} },
181a5a4af3bSchristos   {"ucmpb",	{ 2, "", UNKNOWN,		0x66} },
182a5a4af3bSchristos   /* WHY no "ucmph"??? */
183a5a4af3bSchristos   {"ucmpw",	{ 2, "", UNKNOWN,		0x65} },
184a5a4af3bSchristos   {"xchw",	{ 2, "", UNKNOWN,		0x0f} },
185a5a4af3bSchristos 
186a5a4af3bSchristos 
187a5a4af3bSchristos   {"andw",	{ 2, "", GEN_TO_REG,		0x30} },
188a5a4af3bSchristos   {"orw",	{ 2, "", GEN_TO_REG,		0x31} },
189a5a4af3bSchristos   {"xorw",	{ 2, "", GEN_TO_REG,		0x32} },
190a5a4af3bSchristos   {"bicw",	{ 2, "", GEN_TO_REG,		0x33} },
191a5a4af3bSchristos   {"lshlw",	{ 2, "", GEN_TO_REG,		0x38} },
192a5a4af3bSchristos   {"ashlw",	{ 2, "", GEN_TO_REG,		0x3a} },
193a5a4af3bSchristos   {"ashll",	{ 2, "", GEN_TO_REG,		0x3c} },
194a5a4af3bSchristos   {"ashrw",	{ 2, "", GEN_TO_REG,		0x3b} },
195a5a4af3bSchristos   {"ashrl",	{ 2, "", GEN_TO_REG,		0x3d} },
196a5a4af3bSchristos   {"rotlw",	{ 2, "", GEN_TO_REG,		0x3e} },
197a5a4af3bSchristos   {"rotrw",	{ 2, "", GEN_TO_REG,		0x3f} },
198a5a4af3bSchristos 
199a5a4af3bSchristos   /* push and pop insns are "going away next release". */
200a5a4af3bSchristos   {"pushw",	{ 2, "", GEN_TO_REG,		0x0c} },
201a5a4af3bSchristos   {"popw",	{ 2, "", (0x1|0x8|0x10),	0x0d} },
202a5a4af3bSchristos   {"pusha",	{ 2, "", (0x8|0x10),		0x0e} },
203a5a4af3bSchristos 
204a5a4af3bSchristos   {"bitsw",	{ 2, "", UNKNOWN,		0x35} },
205a5a4af3bSchristos   {"bitcw",	{ 2, "", UNKNOWN,		0x36} },
206a5a4af3bSchristos   /* some kind of ibra/dbra insns??*/
207a5a4af3bSchristos   {"icmpw",	{ 2, "", UNKNOWN,		0x67} },
208a5a4af3bSchristos   {"dcmpw",	{ 2, "", (1|4|0x20|0x80|0x400|0x1000),	0x69} },/*FIXME*/
209a5a4af3bSchristos   {"acmpw",	{ 2, "", 1,			0x6b} },
210a5a4af3bSchristos 
211a5a4af3bSchristos   /* Call is written as a 1-op insn, but is always (dis)assembled as a 2-op
212a5a4af3bSchristos      insn with a 2nd op of tr14.   The assembler will have to grok this.  */
213a5a4af3bSchristos   {"call",	{ 2, "", GEN_TO_REG,		0x04} },
214a5a4af3bSchristos   {"call",	{ 1, "", GEN_TO_REG,		0x04} },
215a5a4af3bSchristos 
216a5a4af3bSchristos   {"callk",	{ 1, "", UNKNOWN,		0x06} },/* system call?*/
217a5a4af3bSchristos   /* Ret is usually written as a 0-op insn, but gets disassembled as a
218a5a4af3bSchristos      1-op insn. The operand is always tr15. */
219a5a4af3bSchristos   {"ret",	{ 0, "", UNKNOWN,		0x09} },
220a5a4af3bSchristos   {"ret",	{ 1, "", UNKNOWN,		0x09} },
221a5a4af3bSchristos   {"adsf",	{ 2, "", (1|2|4),		0x08} },
222a5a4af3bSchristos   {"retd",	{ 2, "", UNKNOWN,		0x0a} },
223a5a4af3bSchristos   {"btc",	{ 2, "", UNKNOWN,		0x01} },
224a5a4af3bSchristos   {"bfc",	{ 2, "", UNKNOWN,		0x02} },
225a5a4af3bSchristos   /* Careful: halt is 0x00000000. Jump must have some other (mode?)bit set?? */
226a5a4af3bSchristos   {"jump",	{ 1, "", UNKNOWN,		0x00} },
227a5a4af3bSchristos   {"btp",	{ 2, "", UNKNOWN,		0xf00} },
228a5a4af3bSchristos   /* read control-stack pointer is another 1-or-2 operand insn. */
229a5a4af3bSchristos   {"rcsp",	{ 2, "", UNKNOWN,		0x01f} },
230a5a4af3bSchristos   {"rcsp",	{ 1, "", UNKNOWN,		0x01f} }
231a5a4af3bSchristos };
232a5a4af3bSchristos 
233a5a4af3bSchristos /* end: pyramid.opcode.h */
234a5a4af3bSchristos /* One day I will have to take the time to find out what operands
235a5a4af3bSchristos    are valid for these insns, and guess at what they mean.
236a5a4af3bSchristos 
237a5a4af3bSchristos    I can't imagine what the "I???" insns (iglob, etc) do.
238a5a4af3bSchristos 
239a5a4af3bSchristos    the arithmetic-sounding insns ending in "p" sound awfully like BCD
240a5a4af3bSchristos    arithmetic insns:
241a5a4af3bSchristos    	dshlp -> Decimal SHift Left Packed
242a5a4af3bSchristos 	dshrp -> Decimal SHift Right Packed
243a5a4af3bSchristos    and cvtlp would be convert long to packed.
244a5a4af3bSchristos    I have no idea how the operands are interpreted; but having them be
245a5a4af3bSchristos    a long register with (address, length) of an in-memory packed BCD operand
246a5a4af3bSchristos    would not be surprising.
247a5a4af3bSchristos    They are unlikely to be a packed bcd string: 64 bits of long give
248a5a4af3bSchristos    is only 15 digits+sign, which isn't enough for COBOL.
249a5a4af3bSchristos  */
250a5a4af3bSchristos #if 0
251a5a4af3bSchristos   {"wcsp",	{ 2, "", UNKNOWN,		0x00} }, /*write csp?*/
252a5a4af3bSchristos   /* The OSx Operating System Porting Guide claims SSL does things
253a5a4af3bSchristos      with tr12 (a register reserved to it) to do with static block-structure
254a5a4af3bSchristos      references.  SSL=Set Static Link?  It's "Going away next release". */
255a5a4af3bSchristos   {"ssl",	{ 2, "", UNKNOWN,		0x00} },
256a5a4af3bSchristos   {"ccmps",	{ 2, "", UNKNOWN,		0x00} },
257a5a4af3bSchristos   {"lcd",	{ 2, "", UNKNOWN,		0x00} },
258a5a4af3bSchristos   {"uemul",	{ 2, "", UNKNOWN,		0x00} }, /*unsigned emul*/
259a5a4af3bSchristos   {"srf",	{ 2, "", UNKNOWN,		0x00} }, /*Gidget time???*/
260a5a4af3bSchristos   {"mnegp",	{ 2, "", UNKNOWN,		0x00} }, /move-neg phys?*/
261a5a4af3bSchristos   {"ldp",	{ 2, "", UNKNOWN,		0x00} }, /*load phys?*/
262a5a4af3bSchristos   {"ldti",	{ 2, "", UNKNOWN,		0x00} },
263a5a4af3bSchristos   {"ldb",	{ 2, "", UNKNOWN,		0x00} },
264a5a4af3bSchristos   {"stp",	{ 2, "", UNKNOWN,		0x00} },
265a5a4af3bSchristos   {"stti",	{ 2, "", UNKNOWN,		0x00} },
266a5a4af3bSchristos   {"stb",	{ 2, "", UNKNOWN,		0x00} },
267a5a4af3bSchristos   {"stu",	{ 2, "", UNKNOWN,		0x00} },
268a5a4af3bSchristos   {"addp",	{ 2, "", UNKNOWN,		0x00} },
269a5a4af3bSchristos   {"subp",	{ 2, "", UNKNOWN,		0x00} },
270a5a4af3bSchristos   {"mulp",	{ 2, "", UNKNOWN,		0x00} },
271a5a4af3bSchristos   {"divp",	{ 2, "", UNKNOWN,		0x00} },
272a5a4af3bSchristos   {"dshlp",	{ 2, "", UNKNOWN,		0x00} },  /* dec shl packed? */
273a5a4af3bSchristos   {"dshrp",	{ 2, "", UNKNOWN,		0x00} }, /* dec shr packed? */
274a5a4af3bSchristos   {"movs",	{ 2, "", UNKNOWN,		0x00} }, /*move (string?)?*/
275a5a4af3bSchristos   {"cmpp",	{ 2, "", UNKNOWN,		0x00} }, /* cmp phys?*/
276a5a4af3bSchristos   {"cmps",	{ 2, "", UNKNOWN,		0x00} }, /* cmp (string?)?*/
277a5a4af3bSchristos   {"cvtlp",	{ 2, "", UNKNOWN,		0x00} }, /* cvt long to p??*/
278a5a4af3bSchristos   {"cvtpl",	{ 2, "", UNKNOWN,		0x00} }, /* cvt p to l??*/
279a5a4af3bSchristos   {"dintr",	{ 2, "", UNKNOWN,		0x00} }, /* ?? intr ?*/
280a5a4af3bSchristos   {"rphysw",	{ 2, "", UNKNOWN,		0x00} }, /* read phys word?*/
281a5a4af3bSchristos   {"wphysw",	{ 2, "", UNKNOWN,		0x00} }, /* write phys word?*/
282a5a4af3bSchristos   {"cmovs",	{ 2, "", UNKNOWN,		0x00} },
283a5a4af3bSchristos   {"rsubw",	{ 2, "", UNKNOWN,		0x00} },
284a5a4af3bSchristos   {"bicpsw",	{ 2, "", UNKNOWN,		0x00} }, /* clr bit in psw? */
285a5a4af3bSchristos   {"bispsw",	{ 2, "", UNKNOWN,		0x00} }, /* set bit in psw? */
286a5a4af3bSchristos   {"eio",	{ 2, "", UNKNOWN,		0x00} }, /* ?? ?io ? */
287a5a4af3bSchristos   {"callp",	{ 2, "", UNKNOWN,		0x00} }, /* call phys?*/
288a5a4af3bSchristos   {"callr",	{ 2, "", UNKNOWN,		0x00} },
289a5a4af3bSchristos   {"lpcxt",	{ 2, "", UNKNOWN,		0x00} }, /*load proc context*/
290a5a4af3bSchristos   {"rei",	{ 2, "", UNKNOWN,		0x00} }, /*ret from intrpt*/
291a5a4af3bSchristos   {"rport",	{ 2, "", UNKNOWN,		0x00} }, /*read-port?*/
292a5a4af3bSchristos   {"rtod",	{ 2, "", UNKNOWN,		0x00} }, /*read-time-of-day?*/
293a5a4af3bSchristos   {"ssi",	{ 2, "", UNKNOWN,		0x00} },
294a5a4af3bSchristos   {"vtpa",	{ 2, "", UNKNOWN,		0x00} }, /*virt-to-phys-addr?*/
295a5a4af3bSchristos   {"wicl",	{ 2, "", UNKNOWN,		0x00} }, /* write icl ? */
296a5a4af3bSchristos   {"wport",	{ 2, "", UNKNOWN,		0x00} }, /*write-port?*/
297a5a4af3bSchristos   {"wtod",	{ 2, "", UNKNOWN,		0x00} }, /*write-time-of-day?*/
298a5a4af3bSchristos   {"flic",	{ 2, "", UNKNOWN,		0x00} },
299a5a4af3bSchristos   {"iglob",	{ 2, "", UNKNOWN,		0x00} }, /* I global? */
300a5a4af3bSchristos   {"iphys",	{ 2, "", UNKNOWN,		0x00} }, /* I physical? */
301a5a4af3bSchristos   {"ipid",	{ 2, "", UNKNOWN,		0x00} }, /* I pid? */
302a5a4af3bSchristos   {"ivect",	{ 2, "", UNKNOWN,		0x00} }, /* I vector? */
303a5a4af3bSchristos   {"lamst",	{ 2, "", UNKNOWN,		0x00} },
304a5a4af3bSchristos   {"tio",	{ 2, "", UNKNOWN,		0x00} },
305a5a4af3bSchristos #endif
306