Forums

M68k libgcc的浮点问题

开始于 b_Schmidtke 2 years ago1个回复最新回复2年前37浏览

我正在尝试使用m68k-elf为M68000 CPU构建温度控制应用程序

GNU工具链。该应用程序已构建,但由于库例程出现问题而无法运行

在libgcc.a中。例如,一次链接的函数__ltdf2如下:

000166b4<__ltdf2>:
   166b4:4e56 0000 linkw%fp,#0
   166b8:4878 0001豌豆1<ADD>
   166bc:2f2e 0014影片%fp @(20),%sp @-
   166c0:2f2e 0010影片%fp @(16),%sp @-
   166c4:2f2e 000c影片%fp @(12),%sp @-
   166c8:2f2e 0008影片%fp @(8),%sp @-
   166cc:61ff bsrs 166cd<__ltdf2+0x19>
   166ce:ffff.short 0xffff
   166d0:fdb8短0xfdb8
   166d2:4e5e unlk%fp
   166d4:4e75 rts
 

0x166cc处的分支不正确。库中存在的此函数如下:

00000000<__ltdf2>:
   0:4e56 0000 linkw%fp,#0
   4:4878 0001豌豆1<__ltdf2+0x1>
   8:2f2e 0014 Movel%fp @(20),%sp @-
   c:2f2e 0010 Movel%fp @(16),%sp @-
  10:2f2e 000c Movel%fp @(12),%sp @-
  14:2f2e 0008 Movel%fp @(8),%sp @-
  18:61ff 0000 0000 bsrl 1a<__ltdf2+0x1a>
  1e:4e5e卸载%fp
  20:4e75 rts

所讨论的分支看起来更现实,但我怀疑应该用分支填充

到某个地方,但我不知道在哪里。

有没有人成功使用libgcc.a中的浮点函数?

[-]
回覆者 b_Schmidtke2019年2月27日

问题解决了。 m68k的gcc工具链需要使用--with-cpu = 68000选项进行配置。这将使用正确的函数调用来构建libgcc.a。