Excerpts from Christophe Leroy's message of October 17, 2021 10:38 pm: > There are three architectures with function descriptors, try to > have common names for the address they contain in order to > refactor some functions into generic functions later. > > powerpc has 'entry' > ia64 has 'ip' > parisc has 'addr' > > Vote for 'addr' and update 'func_descr_t' accordingly. > > Move it in asm/elf.h to have it at the same place on all > three architectures, remove the typedef which hides its real > type, and change it to a smoother name 'struct func_desc'. > Reviewed-by: Nicholas Piggin <npiggin@xxxxxxxxx> > Signed-off-by: Christophe Leroy <christophe.leroy@xxxxxxxxxx> > --- > arch/powerpc/include/asm/code-patching.h | 2 +- > arch/powerpc/include/asm/elf.h | 6 ++++++ > arch/powerpc/include/asm/types.h | 6 ------ > arch/powerpc/kernel/signal_64.c | 8 ++++---- > 4 files changed, 11 insertions(+), 11 deletions(-) > > diff --git a/arch/powerpc/include/asm/code-patching.h b/arch/powerpc/include/asm/code-patching.h > index 4ba834599c4d..c6e805976e6f 100644 > --- a/arch/powerpc/include/asm/code-patching.h > +++ b/arch/powerpc/include/asm/code-patching.h > @@ -110,7 +110,7 @@ static inline unsigned long ppc_function_entry(void *func) > * function's descriptor. The first entry in the descriptor is the > * address of the function text. > */ > - return ((func_descr_t *)func)->entry; > + return ((struct func_desc *)func)->addr; > #else > return (unsigned long)func; > #endif > diff --git a/arch/powerpc/include/asm/elf.h b/arch/powerpc/include/asm/elf.h > index b8425e3cfd81..971589a21bc0 100644 > --- a/arch/powerpc/include/asm/elf.h > +++ b/arch/powerpc/include/asm/elf.h > @@ -176,4 +176,10 @@ do { \ > /* Relocate the kernel image to @final_address */ > void relocate(unsigned long final_address); > > +struct func_desc { > + unsigned long addr; > + unsigned long toc; > + unsigned long env; > +}; > + > #endif /* _ASM_POWERPC_ELF_H */ > diff --git a/arch/powerpc/include/asm/types.h b/arch/powerpc/include/asm/types.h > index f1630c553efe..97da77bc48c9 100644 > --- a/arch/powerpc/include/asm/types.h > +++ b/arch/powerpc/include/asm/types.h > @@ -23,12 +23,6 @@ > > typedef __vector128 vector128; > > -typedef struct { > - unsigned long entry; > - unsigned long toc; > - unsigned long env; > -} func_descr_t; > - > #endif /* __ASSEMBLY__ */ > > #endif /* _ASM_POWERPC_TYPES_H */ > diff --git a/arch/powerpc/kernel/signal_64.c b/arch/powerpc/kernel/signal_64.c > index 1831bba0582e..36537d7d5191 100644 > --- a/arch/powerpc/kernel/signal_64.c > +++ b/arch/powerpc/kernel/signal_64.c > @@ -933,11 +933,11 @@ int handle_rt_signal64(struct ksignal *ksig, sigset_t *set, > * descriptor is the entry address of signal and the second > * entry is the TOC value we need to use. > */ > - func_descr_t __user *funct_desc_ptr = > - (func_descr_t __user *) ksig->ka.sa.sa_handler; > + struct func_desc __user *ptr = > + (struct func_desc __user *)ksig->ka.sa.sa_handler; > > - err |= get_user(regs->ctr, &funct_desc_ptr->entry); > - err |= get_user(regs->gpr[2], &funct_desc_ptr->toc); > + err |= get_user(regs->ctr, &ptr->addr); > + err |= get_user(regs->gpr[2], &ptr->toc); > } > > /* enter the signal handler in native-endian mode */ > -- > 2.31.1 > > >