OpenWrt Forum Archive

Topic: How to complile for ARM 1136J-S and EABI

The content of this topic has been archived on 9 Apr 2018. There are no obvious gaps in this topic, but there may still be some posts missing at the end.

Hi, guys.

Does anybody can help me?

I'm trying to port openwrt for a platform on ARM1136J-S. I need for floating point functions but the processor haven't  FPU. And also I want to use ARM EABI as more effective.

As I has read openwrt can be compiled with ARM EABI but I didn't found any related settings except of patch for gcc. Can anyone tell me what exactly should I do for use together C99 floating point functions in uClibc and arm EABI instructions?

Hi,

the FPU emulation can be enabled in the kernel config, C99 can be enabled in the uClibc config. For EABI you have to use SVN uClibc, as the release versions don't have support for it - we are working on making this available in OpenWrt.

What platform are you trying to add support for?

Yes, but the kernel FPU emulation is not very effective. With ARM EABI it is possible to emulate floating point operations with a regular registers. I hope it's more effective.

My question is: What exactly and where should I modify to configure gcc for EABI and EABI-based emulation of FP?

I know, uClibs 0.9.29 (the last release) supports EABI. I already integrate it (without special patches and additional platforms ).

My platform is in developement stage at the moment so it haven't  any known names. It's based on arm1136j-s and developed for video-based solutions.

gcc options: "-mabi=aapcs-linux -mfloat-abi=soft -meabi=4", and add it as target specific optimization

Are you sure? This option (CONFIG_TARGET_OPTIMIZATION) will take effect on uClibc compilation but not in gcc. As a result we will have uClibc compiled with EABI and soft point and libgcc with OABI and hard point which is not compatible.
I tried add "--with-arch=armv6 --with-cpu=arm1136j-s --with-float=soft" to gcc configure parameters and wait for result now.

The discussion might have continued from here.