Re: [PATCH v8 5/8] powerpc/vdso: Prepare for switching VDSO to generic C implementation.
From: Michael Ellerman
Date: Thu Aug 06 2020 - 22:44:51 EST
Segher Boessenkool <segher@xxxxxxxxxxxxxxxxxxx> writes:
> On Thu, Aug 06, 2020 at 12:03:33PM +1000, Michael Ellerman wrote:
>> Segher Boessenkool <segher@xxxxxxxxxxxxxxxxxxx> writes:
>> > On Wed, Aug 05, 2020 at 04:24:16PM +1000, Michael Ellerman wrote:
>> >> Christophe Leroy <christophe.leroy@xxxxxxxxxx> writes:
>> >> > Indeed, 32-bit doesn't have a redzone, so I believe it needs a stack
>> >> > frame whenever it has anything to same.
>
> ^^^
>
>> >> > fbb60: 94 21 ff e0 stwu r1,-32(r1)
>> >
>> > This is the *only* place where you can use a negative offset from r1:
>> > in the stwu to extend the stack (set up a new stack frame, or make the
>> > current one bigger).
>>
>> (You're talking about 32-bit code here right?)
>
> The "SYSV" ELF binding, yeah, which is used for 32-bit on Linux (give or
> take, ho hum).
>
> The ABIs that have a red zone are much nicer here (but less simple) :-)
Yep, just checking I wasn't misunderstanding your comment about negative
offsets.
>> >> At the same time it's much safer for us to just save/restore r2, and
>> >> probably in the noise performance wise.
>> >
>> > If you want a function to be able to work with ABI-compliant code safely
>> > (in all cases), you'll have to make it itself ABI-compliant as well,
>> > yes :-)
>>
>> True. Except this is the VDSO which has previously been a bit wild west
>> as far as ABI goes :)
>
> It could get away with many things because it was guaranteed to be a
> leaf function. Some of those things even violate the ABIs, but you can
> get away with it easily, much reduced scope. Now if this is generated
> code, violating the rules will catch up with you sooner rather than
> later ;-)
Agreed.
cheers