[LLVMdev] Linux/ppc backend
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Mon Feb 12 03:09:58 PST 2007
Hi Jim,
I didn't use any documents, but intensively looked at gcc's output. I
think this document:
http://refspecs.freestandards.org/elf/elfspec_ppc.pdf
is the last specification of the ABI.
Cheers,
Nicolas
Jim Laskey wrote:
> Nicolas,
>
> Would you point me to the Linux/PPC ABI documents you are using so I
> can better judge what your restrictions are? These changes also have
> an effect on debugging and exception handling.
>
> Cheers,
>
> -- Jim
>
>
> On 2-Feb-07, at 08:58 AM, Nicolas Geoffray wrote:
>
>> Hi everyone,
>>
>>
>> I have almost completed the implementation of a linux/ppc backend in
>> llvm. There were a few things to modify in
>>
>> lib/Target/PowerPC with a lot of "if (!isDarwin)".
>>
>>
>> There are some places where I need help before saying the port is
>> complete. I attached the diff file as a reference
>>
>>
>> 1) In order to generate a creqv instruction before a vararg call, I
>> created a new instruction in PPCInstrInfo.td: SETCR which
>>
>> uses the new XForm_1_ext format. It does not use the XForm_1 format
>> because I wanted to give only one register as operand.
>>
>> I'm not sure if this is the correct way to do this, but it works.
>>
>>
>> 2) Line 369 of PPCInstrInfo.td, we declare the non-callee saved
>> registers. However, Linux and Darwin do not have the same set
>>
>> of non-callee saved registers. I don't know how to make the
>> if(isDarwin) test in here
>>
>>
>> 3) R31, which replaces R1 as stack pointer when there is a dynamic
>> allocation in a method, must be seen as a callee-saved register and
>> must not be saved and restored like it is actually for Darwin. I
>> don't know how to specify that, when there is a dynamic allocation,
>> R31 must be added to the set of registers that are saved before
>> entering the method and restored at the end.
>>
>>
>>
>> If anyone's kind enough to help me out :)
>>
>>
>> Cheers,
>>
>> Nicolas
>>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
More information about the llvm-dev
mailing list