Port-m68k archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: libm compilation failing in -current



Ignatios Souvatzis wrote:

>> [..DT_TEXTREL..]
>> 00000000 <atan>:
>>    0:   60ff 0000 0000  bral 2 <atan+0x2>
>>                         2: R_68K_PC32   __fplsp060_0038
>> 
>> All are coming from src/lib/libm/arch/m68060 and calling functions
>> from Motorola's 68060 floating point library (which is the reason it
>> didn't happen to anybody else before ;).
>
> Well, while it might be interesting to have this in a compilable
> state, I want to mention that after I did all the work to integrate
> this stuff, at least optionally, all benchmarks I ran showed that the
> kernel-trapping FPSP (with the normal m68k FPU instruction or whatever
> it uses libm) was faster, at least on a otherwise loaded system.

That's disappointing! :|
Under AmigaOS using the 68060 library makes it *much* faster.


> The reason is probably that kernel-FPSP resides at a fixed physical
> address (once the kernel is booted), so needs less cache reloading to
> use.

Hard to believe that it has such an effect.


> I think I posted the benchmark results back then?

Don't remember. 10 years ago? ;)


Nevertheless, I fixed makeas.sh in lib/libm/arch/m68060 to jump through the
PLT. Now it compiles fine. Should I check this in?

Index: lib/libm/arch/m68060/makeas.sh
===================================================================
RCS file: /cvsroot/src/lib/libm/arch/m68060/makeas.sh,v
retrieving revision 1.7
diff -u -r1.7 makeas.sh
--- lib/libm/arch/m68060/makeas.sh  9 Nov 2009 15:35:28 -0000   1.7
+++ lib/libm/arch/m68060/makeas.sh  5 Jan 2010 20:57:28 -0000
@@ -71,11 +71,11 @@
 
 ENTRY($NAME)
 #ifdef __SVR4_ABI__
-   jbra _C_LABEL(__fplsp060_$OFFS)
+   bral _C_LABEL(__fplsp060_$OFFS)@PLTPC
 #else
    movel %sp@(8),%sp@-
    movel %sp@(8),%sp@-
-   jbsr _C_LABEL(__fplsp060_$OFFS)
+   bsrl _C_LABEL(__fplsp060_$OFFS)@PLTPC
    fmoved %fp0,%sp@
    movel %sp@+,%d0
    movel %sp@+,%d1
@@ -104,10 +104,10 @@
 
 ENTRY($NAME)
 #ifdef __SVR4_ABI__
-   jbra _C_LABEL(__fplsp060_$OFFS)
+   bral _C_LABEL(__fplsp060_$OFFS)@PLTPC
 #else
    movel %sp@(4),%sp@-
-   jbsr _C_LABEL(__fplsp060_$OFFS)
+   bsrl _C_LABEL(__fplsp060_$OFFS)@PLTPC
    fmoves %fp0,%sp@
    movel %sp@+,%d0
    rts

-- 
Frank Wille



Home | Main Index | Thread Index | Old Index