Re: [PATCH v3 3/6] parisc: add system call table generation support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Oct 9, 2018 at 11:36 AM Firoz Khan <firoz.khan@xxxxxxxxxx> wrote:
> On Tue, 9 Oct 2018 at 13:18, Arnd Bergmann <arnd@xxxxxxxx> wrote:
> > On Tue, Oct 9, 2018 at 7:35 AM Firoz Khan <firoz.khan@xxxxxxxxxx> wrote:
> > > On Mon, 8 Oct 2018 at 19:27, Arnd Bergmann <arnd@xxxxxxxx> wrote:
> Let me bring another example from powerpc:
>
> syscall_32.tbl,
> 136     common  personality                     sys_personality
>          ppc64_personality   ---> 32-bit, compat (this is the current
> model which I implemented)
> syscall_64.tbl
> 136     common  personality                     ppc64_personality
>                                        ---> 64-bit
>
> I was wondering if the above table is right, how to arrange like parisc model?

I think this should simply be

136    32 personality sys_personality      ppc64_personality
136    64 personality ppc64_personality

Keeping the contents exactly the same as you have them
in the separate .tbl files, just merging the two files, and
splitting out the differences as 32/64 ABI.

> FYI, there are some implement missing for SPU in powerpc
>
> For your reference:
> SYSX_SPU(sys_newfstatat,sys_fstatat64,sys_fstatat64)
> SYSX_SPU(ppc64_personality,ppc64_personality,sys_personality)

This is a good question. The only difference between SPU and
native 64-bit is that some syscalls are not part of the SPU table
because those syscalls are impossible to implement on SPU.

Maybe we can solve this by allowing multiple comma-separated
ABIs in the table. On powerpc, 'common' would then mean
'32-bit, 64-bit and spu', while you could have various other
combinations:

/* always:32, 64 and SPU */
1 common exit sys_exit

/* 32-bit only call */
76  32    getrlimit      sys_old_getrlimit     compat_sys_old_getrlimit

/* 64-bit only, no SPU */
363 64 switch_endian  sys_switch_endian

/* 32-bit and 64-bit, no SPU */
198 32,64 pciconfig_read  sys_pciconfig_read

/* different pointers */
136    32 personality sys_personality      ppc64_personality
136    64,spu personality ppc64_personality

Would that work for you?

       Arnd



[Index of Archives]     [Linux SoC]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux