linux-user: Enable NPTL for OpenRISC

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.maydell@linaro.org>
Reviewed-by: Jia Liu <proljc@gmail.com>
Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
This commit is contained in:
Peter Maydell 2013-07-16 18:44:53 +01:00 committed by Riku Voipio
parent dfeab06c98
commit 442a59c8dd
2 changed files with 7 additions and 3 deletions

1
configure vendored
View File

@ -4236,7 +4236,6 @@ case "$target_name" in
or32)
TARGET_ARCH=openrisc
TARGET_BASE_ARCH=openrisc
target_nptl="no"
;;
ppc)
gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"

View File

@ -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.
*/
}
#endif