[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