This is the mail archive of the
binutils@sources.redhat.com
mailing list for the binutils project.
PowerPC 440 tlbsx and tlbre
- From: Alan Modra <amodra at bigpond dot net dot au>
- To: binutils at sources dot redhat dot com
- Date: Tue, 19 Apr 2005 14:23:36 +0930
- Subject: PowerPC 440 tlbsx and tlbre
Zack made some fixes for PPC440 quite a while ago in
http://sources.redhat.com/ml/binutils/2003-12/msg00183.html
Similar problems exist for other instructions; This fixes the ones I
know about. As with Zack's patch for tlbwe, this change relaxes syntax
checking somewhat for BookE. The alternative of not setting
PPC_OPCODE_BOOKE for -m440 and marking all BookE instructions as PPC440
is a much larger patch, and I figure not worth making.
Applying mainline and 2.16.
* ppc-opc.c (RTO): Define.
(powerpc_opcodes <tlbsx, tlbsx., tlbre>): Combine PPC403 and BOOKE
entries to suit PPC440.
Index: opcodes/ppc-opc.c
===================================================================
RCS file: /cvs/src/src/opcodes/ppc-opc.c,v
retrieving revision 1.80
diff -u -p -r1.80 ppc-opc.c
--- opcodes/ppc-opc.c 10 Mar 2005 12:52:27 -0000 1.80
+++ opcodes/ppc-opc.c 19 Apr 2005 04:38:17 -0000
@@ -428,6 +428,7 @@ const struct powerpc_operand powerpc_ope
/* The RS field of the tlbwe instruction, which is optional. */
#define RSO RTQ + 1
+#define RTO RSO
{ 5, 21, NULL, NULL, PPC_OPERAND_GPR | PPC_OPERAND_OPTIONAL },
/* The SH field in an X or M form instruction. */
@@ -4336,10 +4337,8 @@ const struct powerpc_opcode powerpc_opco
{ "mbar", X(31,854), X_MASK, BOOKE, { MO } },
{ "eieio", X(31,854), 0xffffffff, PPC, { 0 } },
-{ "tlbsx", XRC(31,914,0), X_MASK, BOOKE, { RA, RB } },
-{ "tlbsx", XRC(31,914,0), X_MASK, PPC403, { RT, RA, RB } },
-{ "tlbsx.", XRC(31,914,1), X_MASK, BOOKE, { RA, RB } },
-{ "tlbsx.", XRC(31,914,1), X_MASK, PPC403, { RT, RA, RB } },
+{ "tlbsx", XRC(31,914,0), X_MASK, PPC403|BOOKE, { RTO, RA, RB } },
+{ "tlbsx.", XRC(31,914,1), X_MASK, PPC403|BOOKE, { RTO, RA, RB } },
{ "tlbsxe", XRC(31,915,0), X_MASK, BOOKE64, { RA, RB } },
{ "tlbsxe.", XRC(31,915,1), X_MASK, BOOKE64, { RA, RB } },
@@ -4364,8 +4363,7 @@ const struct powerpc_opcode powerpc_opco
{ "tlbrehi", XTLB(31,946,0), XTLB_MASK, PPC403, { RT, RA } },
{ "tlbrelo", XTLB(31,946,1), XTLB_MASK, PPC403, { RT, RA } },
-{ "tlbre", X(31,946), X_MASK, BOOKE, { 0 } },
-{ "tlbre", X(31,946), X_MASK, PPC403, { RS, RA, SH } },
+{ "tlbre", X(31,946), X_MASK, PPC403|BOOKE, { RSO, RAOPT, SHO } },
{ "sraiq", XRC(31,952,0), X_MASK, M601, { RA, RS, SH } },
{ "sraiq.", XRC(31,952,1), X_MASK, M601, { RA, RS, SH } },
--
Alan Modra
IBM OzLabs - Linux Technology Centre