[RFC WIP PATCH] powerpc/32: system call implement entry/exit logic in C

Nicholas Piggin npiggin at gmail.com
Fri Apr 3 18:33:38 AEDT 2020


Christophe Leroy's on April 1, 2020 9:48 pm:
> 
> 
> Le 31/03/2020 à 17:22, Christophe Leroy a écrit :
>> That's first try to port PPC64 syscall entry/exit logic in C to PPC32.
>> I've do the minimum to get it work. I have not reworked calls
>> to sys_fork() and friends for instance.
>> 
>> For the time being, it seems to work more or less but:
>> - ping reports EINVAL on recvfrom
>> - strace shows NULL instead of strings in call like open() for instance.
> 
> For the two above problems, that's because system_call_exception() 
> doesn't set orig_gpr3 whereas DoSycall() does in entry_32.S . Is that 
> only done on PPC32 ?
> 
> With the following line at the begining of system_call_exception(), it 
> works perfectly:
> 
> 	regs->orig_gpr3 = r3;

Oh great, nice work. We should be able to make some simple helpers or
move some things a bit to reduce the amount of ifdefs in the C code.
It doesn't look too bad though.

> I will now focus on performance to see if we can do something about it.

What's the performance difference between current asm code just with
always saving NVGPRS vs C?

Thanks,
Nick



More information about the Linuxppc-dev mailing list