[PATCH v7.1 01/13] ARC: ABI Implementation
Adhemerval Zanella
adhemerval.zanella at linaro.org
Wed Jul 1 15:45:54 EDT 2020
On 01/07/2020 16:36, Vineet Gupta wrote:
> On 7/1/20 9:50 AM, Adhemerval Zanella via Libc-alpha wrote:
>>
>>
>> On 30/06/2020 21:06, Vineet Gupta via Libc-alpha wrote:
>>> This code deals with the ARC ABI.
>>> ---
>>> Changes since v7:
>>> - Used void * (iso int *) in tls-macros.h
>>
>> LGTM, with just a couple of syntax nits below.
>>
>> Reviewed-by: Adhemerval Zanella <adhemerval.zanella at linaro.org>
>
> Thx. I suppose the process for new ports is to have a Reviewed-by on all patches,
> squash them and push in 1 go (although in past I was asked to push the ARC elf
> header patch).
I think there is no need to squash them up in one commit, but I think
it would be better to commit them at the same time.
> Also do we need more than 1 Reviewed-by for this to be "push worthy" ?
I don't think so, unless someone raise some questioning on the review
itself.
I plan to finish them up by the end of the week.
>
>>> +ENTRY (__longjmp)
>>> +
>>> + LDR (blink, r0, 0)
>>> + LDR (sp, r0, 1)
>>> + LDR (fp, r0, 2)
>>> + LDR (gp, r0, 3)
>>> +
>>> + LDR (r13, r0, 4)
>>> + LDR (r14, r0, 5)
>>> + LDR (r15, r0, 6)
>>> + LDR (r16, r0, 7)
>>> + LDR (r17, r0, 8)
>>> + LDR (r18, r0, 9)
>>> + LDR (r19, r0, 10)
>>> + LDR (r20, r0, 11)
>>> + LDR (r21, r0, 12)
>>> + LDR (r22, r0, 13)
>>> + LDR (r23, r0, 14)
>>> + LDR (r24, r0, 15)
>>> +
>>> + mov.f r0, r1
>>> + j.d [blink]
>>> + mov.z r0, 1 /* don't return 0 to setjmp callsite from longjmp. */
>>> +
>>> +END (__longjmp)
>>
>> Ok, you have removed r25 save as pre previous discussion.
>
> Right, and GP is being saved now.
>
>>> diff --git a/sysdeps/arc/bits/setjmp.h b/sysdeps/arc/bits/setjmp.h
>>> new file mode 100644
>>> index 000000000000..6bba95fafe0f
>>> --- /dev/null
>>> +++ b/sysdeps/arc/bits/setjmp.h
>>> @@ -0,0 +1,26 @@
>>> +/* Define the machine-dependent type `jmp_buf'. ARC version.
>>
>> I think current trend is to just use apostrophe instead of the grave
>> accent in such cases.
>
> Ok changed.
>
>>> +reloc_index (uintptr_t plt0, uintptr_t pltn, size_t size)
>>> +{
>>> + unsigned long int idx = pltn - plt0;
>>> +
>>> + /* PLT trampoline is 16 bytes. */
>>
>> Double space after period.
>
> Fixed.
>
>>> +#define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \
>>> + ((uintptr_t) (_address) - (_adj) < (uintptr_t) (_jmpbuf_sp (_jmpbuf) - (_adj)))
>>> +
>>> +/* We use the normal longjmp for unwinding. */
>>> +#define __libc_unwind_longjmp(buf, val) __libc_longjmp (buf, val)
>>
>> Ok. As a side note teh jmpbuf-unwind.h is candidate for some consolidation
>> (the same macros are replicated in each architecture).
>
> OK.
>
More information about the linux-snps-arc
mailing list