Thanks, Lance, for backing me up here and for shedding further light on the issue.
I wondered why Waldemar is asking so much about use of floating point, so I double-checked the kernel. It is indeed compiled with "CONFIG_CPU_R4K_FPU=y", but during boot it will figure out that there's no H/W FPU support on the actual CPU and therefore not push/pop FPU regs during task switches.
How it resorts to doing soft-float is not crystal clear to me.
I looked at the changeset you mentioned, Waldemar (2636b17616a19d628c3dbc373ebae67ef6e2b1f6), to get an idea why you are so keen to know about floating point.
Then I modified .../libc/string/mips/memcpy.S to see which macros were defined and which were not. I got to this conclusion: ANDROID_CHANGES undefined _LIBC defined _MIPS_ISA_MIPS32 defined DISABLE_PREFETCH undefined, so USE_PREFETCH gets defined _MIPS_SIM undefined USE_DOUBLE remains undefined L defined PTR_ADDIU defined PTR_SRA defined PTR_LSA undefined, but gets defined to lsa
Hope it points in the right direction.
Thanks, René
-----Original Message----- From: Lance Fredrickson [mailto:lancethepants@gmail.com] Sent: 26. april 2016 16:18 To: Rene Nielsen rene.nielsen@microsemi.com Subject: Re: [uclibc-ng-devel] memmove() is failing on MIPS CPU
I've also experienced the same issues described by Rene. Up until now I've been applying the patches that entware-ng/optware-ng use which revert the mipsel changes between 1.0.9 and 1.0.10.
Without Rene's patch, or reverting those mipsel commits, Rene's test.c fails to run, and experiences same error's he experiences. With his patch it is working as expected.
Note: with or without patching, the static "test" binary I make works with qemu on x64_86 machine. It's only when I run it on the actual mipsel hardware that it fails. So testing with qemu for whatever reason is not an indication in this case of how it will work on the actual hardware.
kernel 2.6.22.19 binutils 2.25.1 gcc 5.3.0 mips32 soft-float
I'm working with routers like entware-ng/optware-ng, so am also stuck on the same kernel they are. I know entware-ng is using cross-tools-ng for their toolchain. I am using buildroot for mine.
thanks, Lance