diff options
author | Michael Ellerman <michael@ellerman.id.au> | 2006-11-22 18:46:47 -0500 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2006-12-04 04:40:36 -0500 |
commit | 897f112bb42ed9e220ce441e7e52aba3a144a7d6 (patch) | |
tree | a4cfa727731319721cfd6fe3702d6b6f5ea85e06 /arch/powerpc/xmon/ppc.h | |
parent | 0b8e2e131094d162a836e2afe86e52acbfa05703 (diff) |
[POWERPC] Import updated version of ppc disassembly code for xmon
This includes:
* version 1.24 of ppc-dis.c
* version 1.88 of ppc-opc.c
* version 1.23 of ppc.h
I can't vouch for the accuracy etc. of these changes, but it brings
us into line with binutils - and from a cursory test appears to work
fine.
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Arnd Bergmann <arnd.bergmann@de.ibm.com>
Diffstat (limited to 'arch/powerpc/xmon/ppc.h')
-rw-r--r-- | arch/powerpc/xmon/ppc.h | 39 |
1 files changed, 27 insertions, 12 deletions
diff --git a/arch/powerpc/xmon/ppc.h b/arch/powerpc/xmon/ppc.h index 342237e8dd69..110df96354b4 100644 --- a/arch/powerpc/xmon/ppc.h +++ b/arch/powerpc/xmon/ppc.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* ppc.h -- Header file for PowerPC opcode table | 1 | /* ppc.h -- Header file for PowerPC opcode table |
2 | Copyright 1994, 1995, 1999, 2000, 2001, 2002, 2003 | 2 | Copyright 1994, 1995, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 |
3 | Free Software Foundation, Inc. | 3 | Free Software Foundation, Inc. |
4 | Written by Ian Lance Taylor, Cygnus Support | 4 | Written by Ian Lance Taylor, Cygnus Support |
5 | 5 | ||
@@ -17,7 +17,7 @@ the GNU General Public License for more details. | |||
17 | 17 | ||
18 | You should have received a copy of the GNU General Public License | 18 | You should have received a copy of the GNU General Public License |
19 | along with this file; see the file COPYING. If not, write to the Free | 19 | along with this file; see the file COPYING. If not, write to the Free |
20 | Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ | 20 | Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */ |
21 | 21 | ||
22 | #ifndef PPC_H | 22 | #ifndef PPC_H |
23 | #define PPC_H | 23 | #define PPC_H |
@@ -134,6 +134,18 @@ extern const int powerpc_num_opcodes; | |||
134 | /* Opcode is supported by machine check APU. */ | 134 | /* Opcode is supported by machine check APU. */ |
135 | #define PPC_OPCODE_RFMCI 0x800000 | 135 | #define PPC_OPCODE_RFMCI 0x800000 |
136 | 136 | ||
137 | /* Opcode is only supported by Power5 architecture. */ | ||
138 | #define PPC_OPCODE_POWER5 0x1000000 | ||
139 | |||
140 | /* Opcode is supported by PowerPC e300 family. */ | ||
141 | #define PPC_OPCODE_E300 0x2000000 | ||
142 | |||
143 | /* Opcode is only supported by Power6 architecture. */ | ||
144 | #define PPC_OPCODE_POWER6 0x4000000 | ||
145 | |||
146 | /* Opcode is only supported by PowerPC Cell family. */ | ||
147 | #define PPC_OPCODE_CELL 0x8000000 | ||
148 | |||
137 | /* A macro to extract the major opcode from an instruction. */ | 149 | /* A macro to extract the major opcode from an instruction. */ |
138 | #define PPC_OP(i) (((i) >> 26) & 0x3f) | 150 | #define PPC_OP(i) (((i) >> 26) & 0x3f) |
139 | 151 | ||
@@ -233,25 +245,28 @@ extern const struct powerpc_operand powerpc_operands[]; | |||
233 | register names with a leading 'r'. */ | 245 | register names with a leading 'r'. */ |
234 | #define PPC_OPERAND_GPR (040) | 246 | #define PPC_OPERAND_GPR (040) |
235 | 247 | ||
248 | /* Like PPC_OPERAND_GPR, but don't print a leading 'r' for r0. */ | ||
249 | #define PPC_OPERAND_GPR_0 (0100) | ||
250 | |||
236 | /* This operand names a floating point register. The disassembler | 251 | /* This operand names a floating point register. The disassembler |
237 | prints these with a leading 'f'. */ | 252 | prints these with a leading 'f'. */ |
238 | #define PPC_OPERAND_FPR (0100) | 253 | #define PPC_OPERAND_FPR (0200) |
239 | 254 | ||
240 | /* This operand is a relative branch displacement. The disassembler | 255 | /* This operand is a relative branch displacement. The disassembler |
241 | prints these symbolically if possible. */ | 256 | prints these symbolically if possible. */ |
242 | #define PPC_OPERAND_RELATIVE (0200) | 257 | #define PPC_OPERAND_RELATIVE (0400) |
243 | 258 | ||
244 | /* This operand is an absolute branch address. The disassembler | 259 | /* This operand is an absolute branch address. The disassembler |
245 | prints these symbolically if possible. */ | 260 | prints these symbolically if possible. */ |
246 | #define PPC_OPERAND_ABSOLUTE (0400) | 261 | #define PPC_OPERAND_ABSOLUTE (01000) |
247 | 262 | ||
248 | /* This operand is optional, and is zero if omitted. This is used for | 263 | /* This operand is optional, and is zero if omitted. This is used for |
249 | the optional BF and L fields in the comparison instructions. The | 264 | example, in the optional BF field in the comparison instructions. The |
250 | assembler must count the number of operands remaining on the line, | 265 | assembler must count the number of operands remaining on the line, |
251 | and the number of operands remaining for the opcode, and decide | 266 | and the number of operands remaining for the opcode, and decide |
252 | whether this operand is present or not. The disassembler should | 267 | whether this operand is present or not. The disassembler should |
253 | print this operand out only if it is not zero. */ | 268 | print this operand out only if it is not zero. */ |
254 | #define PPC_OPERAND_OPTIONAL (01000) | 269 | #define PPC_OPERAND_OPTIONAL (02000) |
255 | 270 | ||
256 | /* This flag is only used with PPC_OPERAND_OPTIONAL. If this operand | 271 | /* This flag is only used with PPC_OPERAND_OPTIONAL. If this operand |
257 | is omitted, then for the next operand use this operand value plus | 272 | is omitted, then for the next operand use this operand value plus |
@@ -259,24 +274,24 @@ extern const struct powerpc_operand powerpc_operands[]; | |||
259 | hack is needed because the Power rotate instructions can take | 274 | hack is needed because the Power rotate instructions can take |
260 | either 4 or 5 operands. The disassembler should print this operand | 275 | either 4 or 5 operands. The disassembler should print this operand |
261 | out regardless of the PPC_OPERAND_OPTIONAL field. */ | 276 | out regardless of the PPC_OPERAND_OPTIONAL field. */ |
262 | #define PPC_OPERAND_NEXT (02000) | 277 | #define PPC_OPERAND_NEXT (04000) |
263 | 278 | ||
264 | /* This operand should be regarded as a negative number for the | 279 | /* This operand should be regarded as a negative number for the |
265 | purposes of overflow checking (i.e., the normal most negative | 280 | purposes of overflow checking (i.e., the normal most negative |
266 | number is disallowed and one more than the normal most positive | 281 | number is disallowed and one more than the normal most positive |
267 | number is allowed). This flag will only be set for a signed | 282 | number is allowed). This flag will only be set for a signed |
268 | operand. */ | 283 | operand. */ |
269 | #define PPC_OPERAND_NEGATIVE (04000) | 284 | #define PPC_OPERAND_NEGATIVE (010000) |
270 | 285 | ||
271 | /* This operand names a vector unit register. The disassembler | 286 | /* This operand names a vector unit register. The disassembler |
272 | prints these with a leading 'v'. */ | 287 | prints these with a leading 'v'. */ |
273 | #define PPC_OPERAND_VR (010000) | 288 | #define PPC_OPERAND_VR (020000) |
274 | 289 | ||
275 | /* This operand is for the DS field in a DS form instruction. */ | 290 | /* This operand is for the DS field in a DS form instruction. */ |
276 | #define PPC_OPERAND_DS (020000) | 291 | #define PPC_OPERAND_DS (040000) |
277 | 292 | ||
278 | /* This operand is for the DQ field in a DQ form instruction. */ | 293 | /* This operand is for the DQ field in a DQ form instruction. */ |
279 | #define PPC_OPERAND_DQ (040000) | 294 | #define PPC_OPERAND_DQ (0100000) |
280 | 295 | ||
281 | /* The POWER and PowerPC assemblers use a few macros. We keep them | 296 | /* The POWER and PowerPC assemblers use a few macros. We keep them |
282 | with the operands table for simplicity. The macro table is an | 297 | with the operands table for simplicity. The macro table is an |