[coldfire-gnu-discuss] insn does not satisfy its constraints
Maxim Kuvyrkov
maxim at codesourcery.com
Mon Aug 22 20:33:48 UTC 2011
On Aug 23, 2011, at 8:24 AM, Boyce, Jeffrey A CAR wrote:
> Maxim,
>
> Thanks, that allowed me to get past that error and much further into the build.
>
> I'm now getting several assembler errors when trying to build libkaffe_la-locks. For example:
>
> locks.s: Assembler messages:
> locks.s:71: Error: invalid instruction for this architecture; needs 68020 or higher (68020 [68k, 68ec020], 68030 [68ec030], 68040 [68ec040], 68060 [68ec060]) -- statement `cas.l %d0,%d1,(%a2)' ignored
>
> I haven't had time to dig into these, but do you have any thoughts?
This one is trickier.
ColdFire ISA does not have compare-and-swap instruction. If you are on Linux and have a reasonably new kernel, you can try using __kernel_atomic_cmpxchg_32 vDSO helper (faster) or atomic_cmpxchg_32 system call (slower). Or implement synchronization in some other way.
--
Maxim Kuvyrkov
CodeSourcery / Mentor Graphics
>
> -----Original Message-----
> From: Maxim Kuvyrkov [mailto:maxim at codesourcery.com]
> Sent: Monday, August 22, 2011 3:06 PM
> To: Boyce, Jeffrey A CAR
> Cc: coldfire-gnu-discuss at codesourcery.com
> Subject: Re: [coldfire-gnu-discuss] insn does not satisfy its constraints
>
> Jeff,
>
> I realized that I didn't give you the pointers to fix the code. To make code compile (and work) for FPU-less ColdFire, such as MCF544xx families, you need to condition the references to FPU registers in Kaffe's md.h file. You can use builtin compiler macros for that:
>
> #if !defined (__mcoldfire__) || defined (__mcffpu__)
> <FPU stuff>
> #else
> <no-FPU stuff>
> #endif
>
> Regards,
>
> --
> Maxim Kuvyrkov
> CodeSourcery / Mentor Graphics
>
> On Aug 23, 2011, at 4:28 AM, Maxim Kuvyrkov wrote:
>
>> Jeff,
>>
>> This appears to be a bug in the source code rather than in the compiler. The sysdepCallMethod() function explicitly refers to the FP0 register via 'register double f0d asm ("fp0")' statement, and this causes the compiler to fail when compiling for FPU-less ColdFire target.
>>
>> Regards,
>>
>> --
>> Maxim Kuvyrkov
>> CodeSourcery / Mentor Graphics
>>
>> On Aug 23, 2011, at 12:21 AM, Boyce, Jeffrey A CAR wrote:
>>
>>> Maxim,
>>>
>>> Please see attached.
>>>
>>>
>>> Thanks,
>>>
>>> Jeff
>>>
>>>
>>> -----Original Message-----
>>> From: Maxim Kuvyrkov [mailto:maxim at codesourcery.com]
>>> Sent: Sunday, August 21, 2011 2:45 AM
>>> To: Boyce, Jeffrey A CAR
>>> Cc: coldfire-gnu-discuss at codesourcery.com
>>> Subject: Re: [coldfire-gnu-discuss] insn does not satisfy its constraints
>>>
>>> Jeffrey,
>>>
>>> Please attach the preprocessed source file so that we can reproduce the problem on our side. You can get the preprocessed example by adding -save-temps to the command line -- the preprocessed source will be saved in a .i file.
>>>
>>> It seems something causes the compiler to generate code that uses a floating point register for a soft-fp target.
>>>
>>> Thank you,
>>>
>>> --
>>> Maxim Kuvyrkov
>>> CodeSourcery / Mentor Graphics
>>>
>>> On Aug 18, 2011, at 8:32 AM, Boyce, Jeffrey A CAR wrote:
>>>
>>>> <<methodcalls.c>> Hello,
>>>>
>>>> I'm getting the following compiler error when attempting to compile Kaffe 1.1.8 for Coldfire (54418):
>>>>
>>>> methodcalls.c: In function 'engine_callMethod':
>>>> methodcalls.c:225:1: error: insn does not satisfy its constraints:
>>>> (insn 599 398 400 47 ../../../config/md.h:99 (set (reg:DF 0 %d0)
>>>> (reg:DF 16 %fp0)) 52 {movdf_cf_soft} (nil))
>>>> methodcalls.c:225:1: internal compiler error: in reload_cse_simplify_operands, at postreload.c:403
>>>> Please submit a full bug report,
>>>> with preprocessed source if appropriate.
>>>> See <https://support.codesourcery.com/GNUToolchain/> for instructions.
>>>>
>>>> Methodcalls.c is attached. This happens using both 4.4.1 and 4.5.2 (2011.03-98) versions of the compilers. CFLAGS are as follows:
>>>>
>>>> -mcpu=54418 -msoft-float -march=isac -Wall -W -Wextra -fno-strict-aliasing -fno-omit-frame-pointer -O1 -pthread
>>>>
>>>> Any ideas what could be causing this error?
>>>>
>>>>
>>>> Thanks,
>>>>
>>>>
>>>> Jeff
>>>>
>>>> <methodcalls.c>
>>>
>>> <methodcalls.i>
>>
>
> <locks.s><locks.c><locks.i>
More information about the coldfire-gnu-discuss
mailing list