Subversion Repositories Kolibri OS

Rev

Rev 5191 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 5191 Rev 6324
Line 1... Line 1...
1
/* Definitions for opcode table for the sparc.
1
/* Definitions for opcode table for the sparc.
2
   Copyright 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 2000, 2002,
-
 
3
   2003, 2005, 2010, 2011 Free Software Foundation, Inc.
2
   Copyright (C) 1989-2015 Free Software Foundation, Inc.
Line 4... Line 3...
4
 
3
 
5
   This file is part of GAS, the GNU Assembler, GDB, the GNU debugger, and
4
   This file is part of GAS, the GNU Assembler, GDB, the GNU debugger, and
Line 6... Line 5...
6
   the GNU Binutils.
5
   the GNU Binutils.
Line 99... Line 98...
99
  unsigned long lose;	/* Bits that must not be set.  */
98
  unsigned long lose;	/* Bits that must not be set.  */
100
  const char *args;
99
  const char *args;
101
  /* This was called "delayed" in versions before the flags.  */
100
  /* This was called "delayed" in versions before the flags.  */
102
  unsigned int flags;
101
  unsigned int flags;
103
  unsigned int hwcaps;
102
  unsigned int hwcaps;
-
 
103
  unsigned int hwcaps2;
104
  short architecture;	/* Bitmask of sparc_opcode_arch_val's.  */
104
  short architecture;	/* Bitmask of sparc_opcode_arch_val's.  */
105
} sparc_opcode;
105
} sparc_opcode;
Line 106... Line 106...
106
 
106
 
107
/* FIXME: Add F_ANACHRONISTIC flag for v9.  */
107
/* FIXME: Add F_ANACHRONISTIC flag for v9.  */
Line 114... Line 114...
114
#define F_FBR		0x00000040 /* Floating point branch.  */
114
#define F_FBR		0x00000040 /* Floating point branch.  */
115
#define F_PREFERRED	0x00000080 /* A preferred alias.  */
115
#define F_PREFERRED	0x00000080 /* A preferred alias.  */
Line 116... Line 116...
116
 
116
 
Line 117... Line 117...
117
#define F_PREF_ALIAS	(F_ALIAS|F_PREFERRED)
117
#define F_PREF_ALIAS	(F_ALIAS|F_PREFERRED)
-
 
118
 
118
 
119
/* These must match the ELF_SPARC_HWCAP_* and ELF_SPARC_HWCAP2_*
119
/* These must match the HWCAP_* values precisely.  */
120
   values precisely.  See include/elf/sparc.h.  */
120
#define HWCAP_MUL32	0x00000001 /* umul/umulcc/smul/smulcc insns */
121
#define HWCAP_MUL32	0x00000001 /* umul/umulcc/smul/smulcc insns */
121
#define HWCAP_DIV32	0x00000002 /* udiv/udivcc/sdiv/sdivcc insns */
122
#define HWCAP_DIV32	0x00000002 /* udiv/udivcc/sdiv/sdivcc insns */
122
#define HWCAP_FSMULD	0x00000004 /* 'fsmuld' insn */
123
#define HWCAP_FSMULD	0x00000004 /* 'fsmuld' insn */
Line 147... Line 148...
147
#define HWCAP_MONT	0x04000000 /* Montgomery Mult/Sqrt */
148
#define HWCAP_MONT	0x04000000 /* Montgomery Mult/Sqrt */
148
#define HWCAP_PAUSE	0x08000000 /* Pause insn */
149
#define HWCAP_PAUSE	0x08000000 /* Pause insn */
149
#define HWCAP_CBCOND	0x10000000 /* Compare and Branch insns */
150
#define HWCAP_CBCOND	0x10000000 /* Compare and Branch insns */
150
#define HWCAP_CRC32C	0x20000000 /* CRC32C insn */
151
#define HWCAP_CRC32C	0x20000000 /* CRC32C insn */
Line -... Line 152...
-
 
152
 
-
 
153
#define HWCAP2_FJATHPLUS 0x00000001 /* Fujitsu Athena+ */
-
 
154
#define HWCAP2_VIS3B     0x00000002 /* Subset of VIS3 present on sparc64 X+.  */
-
 
155
#define HWCAP2_ADP       0x00000004 /* Application Data Protection */
-
 
156
#define HWCAP2_SPARC5    0x00000008 /* The 29 new fp and sub instructions */
-
 
157
#define HWCAP2_MWAIT     0x00000010 /* mwait instruction and load/monitor ASIs */
-
 
158
#define HWCAP2_XMPMUL    0x00000020 /* XOR multiple precision multiply */
-
 
159
#define HWCAP2_XMONT     0x00000040 /* XOR Montgomery mult/sqr instructions */
-
 
160
#define HWCAP2_NSEC      \
-
 
161
                         0x00000080 /* pause insn with support for nsec timings */
-
 
162
#define HWCAP2_FJATHHPC  0x00001000 /* Fujitsu HPC instrs */
-
 
163
#define HWCAP2_FJDES     0x00002000 /* Fujitsu DES instrs */
-
 
164
#define HWCAP2_FJAES     0x00010000 /* Fujitsu AES instrs */
-
 
165
 
151
 
166
 
152
/* All sparc opcodes are 32 bits, except for the `set' instruction (really a
167
/* All sparc opcodes are 32 bits, except for the `set' instruction (really a
Line 153... Line 168...
153
   macro), which is 64 bits. It is handled as a special case.
168
   macro), which is 64 bits. It is handled as a special case.
154
 
169
 
Line 172... Line 187...
172
	4	frs3 floating point register.
187
	4	frs3 floating point register.
173
	5	frs3 floating point register (doube/even).
188
	5	frs3 floating point register (doube/even).
174
	g	frsd floating point register.
189
	g	frsd floating point register.
175
	H	frsd floating point register (double/even).
190
	H	frsd floating point register (double/even).
176
	J	frsd floating point register (quad/multiple of 4).
191
	J	frsd floating point register (quad/multiple of 4).
-
 
192
	}       frsd floating point register (double/even) that is == frs2
177
	b	crs1 coprocessor register
193
	b	crs1 coprocessor register
178
	c	crs2 coprocessor register
194
	c	crs2 coprocessor register
179
	D	crsd coprocessor register
195
	D	crsd coprocessor register
180
	m	alternate space register (asr) in rd
196
	m	alternate space register (asr) in rd
181
	M	alternate space register (asr) in rs1
197
	M	alternate space register (asr) in rs1
Line 213... Line 229...
213
	U	sparclet coprocessor registers in rs1 position
229
	U	sparclet coprocessor registers in rs1 position
214
	E	%ccr. (v9)
230
	E	%ccr. (v9)
215
	s	%fprs. (v9)
231
	s	%fprs. (v9)
216
	P	%pc.  (v9)
232
	P	%pc.  (v9)
217
	W	%tick.	(v9)
233
	W	%tick.	(v9)
-
 
234
	{	%mcdper. (v9b)
218
	o	%asi. (v9)
235
	o	%asi. (v9)
219
	6	%fcc0. (v9)
236
	6	%fcc0. (v9)
220
	7	%fcc1. (v9)
237
	7	%fcc1. (v9)
221
	8	%fcc2. (v9)
238
	8	%fcc2. (v9)
222
	9	%fcc3. (v9)
239
	9	%fcc3. (v9)