This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
Egcs and MPC860 errata
- To: egcs-bugs at cygnus dot com
- Subject: Egcs and MPC860 errata
- From: "Eric Devolder" <ra3677 at email dot sps dot mot dot com>
- Date: Fri, 12 Jun 1998 08:31:10 -0700
- Organization: Motorola Semiconductor Products Sector
Hello,
The errata for the MPC860 describes a situation where if three
consecutive branch instructions are in the execution path, then the core
does weird things. I have now encountered this problem with Egcs 1.0.3.
I am wondering if anybody else has encountered this problem, and if so,
what they did to avoid it.
The MPC860 will be fixed in the next revision. However, since a fair
number of people are using Egcs with the MPC8xx, I would venture a guess
that somebody would have encountered this already.
I've attached a listing file at the bottom which illustrates a code
sequence (starting at line 126) that is described in the MPC860 errata.
This code was compiled with -mcpu=860 and no optimizations.
Thanks,
Eric
103 mpc8xx_init:
104 0024 9421FFD0 stwu 1,-48(1)
105 0028 7C0802A6 mflr 0
106 002c 93E1002C stw 31,44(1)
107 0030 90010034 stw 0,52(1)
108 0034 7C3F0B78 mr 31,1
109 0038 48000001 bl mpc8xx_get_immp
110 003c 907F0008 stw 3,8(31)
111 0040 813F0008 lwz 9,8(31)
112 0044 3C000200 lis 0,0x200
113 0048 60000800 ori 0,0,2048
114 004c 90090280 stw 0,640(9)
^LGAS LISTING obj/gnu/board/mpcinit.s page 3
115 0050 813F0008 lwz 9,8(31)
116 0054 38004000 li 0,16384
117 0058 90090284 stw 0,644(9)
118 005c 813F0008 lwz 9,8(31)
119 0060 38008001 li 0,-32767
120 0064 B00909C0 sth 0,2496(9)
121 .L3:
122 0068 813F0008 lwz 9,8(31)
123 006c A16909C0 lhz 11,2496(9)
124 0070 5560043E rlwinm 0,11,0,0xffff
125 0074 2C800000 cmpwi 1,0,0
126 0078 40860008 bc 4,6,.L5
127 007c 48000008 b .L4
128 .L5:
129 0080 4BFFFFE8 b .L3
130 .L4:
131 0084 813F0008 lwz 9,8(31)
132 0088 3C000003 lis 0,0x3
133 008c 60000140 ori 0,0,320