[fpc-devel] ARM-Linux, ARMv5 runtime detection fails
Bernd Mueller
mueller.b at gmx.net
Thu Mar 6 15:17:15 CET 2008
Florian Klaempfl wrote:
> Bernd Mueller schrieb:
>> Hello,
>>
>> the ARMv5 runtime detection in rtl/arm/arm.inc fails, because the used
>> pld instruction does not raise SIGILL on ARM architectures ARMv4 and
>> below. If you would use an instruction which raises a SIGILL, it would
>> still fail, because SignalToRunerror in rtl/linux/arm/sighnd.inc does
>> not recover correct from the SIGILL.
>>
>> The problem is now, that the wrong move procedure Move_pld is used
>> instead of Move_blended for ARMv4 which leads to a huge speed penalty
>> (about 25 %) for this architecture.
>
> Not using pld gives a speed penalty of 500-1000% (!) for ARMv5 :)
no question.
>> I would suggest to use conditional compilation to separate between the
>> different ARM architectures.
>
> At least this is no good solution because it would require that we build
> two completly different releases.
I attached a patch, which solves the problem. To be honest: I am not
totally sure if this is the right way. I am a newbie concerning Linux
and ARM. At least the patch should not break ARMv5 ;-)
Regards, Bernd.
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: armv4rt
URL: <http://lists.freepascal.org/pipermail/fpc-devel/attachments/20080306/38ebd803/attachment.ksh>
More information about the fpc-devel
mailing list