mirror of https://github.com/xqemu/xqemu.git
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:
parent
dfeab06c98
commit
442a59c8dd
|
@ -4236,7 +4236,6 @@ case "$target_name" in
|
||||||
or32)
|
or32)
|
||||||
TARGET_ARCH=openrisc
|
TARGET_ARCH=openrisc
|
||||||
TARGET_BASE_ARCH=openrisc
|
TARGET_BASE_ARCH=openrisc
|
||||||
target_nptl="no"
|
|
||||||
;;
|
;;
|
||||||
ppc)
|
ppc)
|
||||||
gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
|
gdb_xml_files="power-core.xml power-fpu.xml power-altivec.xml power-spe.xml"
|
||||||
|
|
|
@ -25,9 +25,14 @@ static inline void cpu_clone_regs(CPUOpenRISCState *env, target_ulong newsp)
|
||||||
if (newsp) {
|
if (newsp) {
|
||||||
env->gpr[1] = 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
|
#endif
|
||||||
|
|
Loading…
Reference in New Issue