Hi Peter, On Sat, Jul 13, 2013 at 4:12 AM, Peter Maydell <peter.mayd...@linaro.org> wrote: > The OpenRISC kernel ignores CLONE_SETTLS in its copy_thread() > implementation, so a cpu_set_tls() implementation is a no-op. > cpu_clone_regs() was setting the syscall return value in the > wrong register -- it is gpr[11], not gpr[2]. With these two > things fixed, we can compile with NPTL enabled. > > Signed-off-by: Peter Maydell <peter.mayd...@linaro.org> > --- > configure | 1 - > linux-user/openrisc/target_cpu.h | 9 +++++++-- > 2 files changed, 7 insertions(+), 3 deletions(-) > > diff --git a/configure b/configure > index 4a241e0..3848c1c 100755 > --- a/configure > +++ b/configure > @@ -4229,7 +4229,6 @@ case "$target_name" in > or32) > TARGET_ARCH=openrisc > TARGET_BASE_ARCH=openrisc > - target_nptl="no" > ;;
I noticed configure have no this line. > ppc) > gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml > power-spe.xml" > diff --git a/linux-user/openrisc/target_cpu.h > b/linux-user/openrisc/target_cpu.h > index 501fb81..32a46ac 100644 > --- a/linux-user/openrisc/target_cpu.h > +++ b/linux-user/openrisc/target_cpu.h > @@ -25,9 +25,14 @@ static inline void cpu_clone_regs(CPUOpenRISCState *env, > target_ulong newsp) > if (newsp) { > env->gpr[1] = newsp; > } > - env->gpr[2] = 0; > + env->gpr[11] = 0; > } > > -/* TODO: need to implement cpu_set_tls() */ > +static inline void cpu_set_tls(CPUOpenRISCState *env, target_ulong newtls) > +{ > + /* Linux kernel 3.10 does not pay any attention to CLONE_SETTLS > + * in copy_thread(), so QEMU need not do so either. > + */ > +} Thanks for fix. It looks good to me. I need to reply here a Reviewed-by: Jia Liu <pro...@gmail.com> , yes? > > #endif > -- > 1.7.9.5 > Regards, Jia