GNU C (-5200 COLDFire)
Toon Moene
toon@moene.indiv.nluug.nl
Wed Aug 26 02:31:00 GMT 1998
> and it generates an m5200 machine directory. When I try
> to boot a coff image, I get the following error on my
> SBC5206:
dBUG> dn
Downloading COFF 'ucostest.x' from 192.168.1.13
Section: .text (Paddr: 0x00010000 Size: 0x00005E64)
Section: .data (Paddr: 0x00015E64 Size: 0x00000B50)
Section: .bss (Paddr: 0x000169B4 Size: 0x00002248)
27228 bytes read via TFTP
dBUG> go
Unimplemented F-Line Instruction
*** F-line instruction: A floating point instruction ***
PC: 0001002E SR: 2004 [t.Sm.000...xnZvc]
An: 000169B5 00000000 00000000 00000000 00000000 00000000 000FFFFC
000FFFF4
Dn: 0000224B 000169B4 00000000 00000000 00000000 00000000 00000000
00000000
0001002E: FFFC DC.W 0xFFFC
dBUG> dis
*** Hmmm, real assembler code, in UPPERCASE ****
00010000: 207C 0010 0000 MOVEA.L #0x00100000,A0
00010006: B1FC 0000 0000 CMPA.L #0x00000000,A0
0001000C: 6702 BEQ 0x00010010
0001000E: 2E48 MOVEA.L A0,A7
00010010: 4E56 FFF8 LINK A6,#-8
00010014: 223C 0001 69B4 MOVE.L #0x000169B4,D1
0001001A: 203C 0001 8C00 MOVE.L #0x00018C00,D0
00010020: B280 CMP.L D0,D1
00010022: 6712 BEQ 0x00010036
00010024: 2041 MOVEA.L D1,A0
00010026: 9081 SUB.L D1,D0
00010028: 5380 SUBQ.L #0x01,D0
0001002A: 4218 CLR.B (A0)+
0001002C: 51C8 DC.W 0x51C8
0001002E: FFFC DC.W 0xFFFC
**** Note that your disassembler doesn't know how to cope with the
two 16 bit words above - a sure sign something's fishy ****
00010030: 4240 CLR.W D0
dBUG>
The DC.W 0x51C8 is actually a "Decrement and Branch" instruction;
dunno why it isn't recognised by your disassembler - I assume the
5200 has this instruction. After that it encounters an instruction
of which the opcode starts with an "F". These opcodes are reserved
for floating point operations, which the 5200 presumably doesn't
have; hence the complaint about "Unimplemented F-Line Instruction".
So somehow the branch instruction is ignored and its displacement
interpreted as an instruction opcode.
This is where my expertise (based on the 68040) ends. Apparently
there's a mismatch between the capabilities assumed for generating
assembly in the config/m68k/m68k.md file and the real capabilities
of the 5200.
Hope someone else can help you further,
Toon.
More information about the Gcc-bugs
mailing list