• P
    linux-user: Clean up handling of clone() argument order · 4ce6243d
    Peter Maydell 提交于
    Linux manages to have three separate orderings of the arguments to
    the clone() syscall on different architectures. In the kernel these
    are selected via CONFIG_CLONE_BACKWARDS and CONFIG_CLONE_BACKWARDS2.
    Clean up our implementation of this to use similar #define names
    rather than a TARGET_* ifdef ladder.
    
    This includes behaviour changes fixing bugs on cris, x86-64, m68k,
    openrisc and unicore32.  cris had explicit but wrong handling; the
    others were just incorrectly using QEMU's default, which happened
    to be the equivalent of CONFIG_CLONE_BACKWARDS. (unicore32 appears
    to be broken in the mainline kernel in that it tries to use arg3 for
    both parent_tidptr and newtls simultaneously -- we don't attempt
    to emulate this bug...)
    Signed-off-by: NPeter Maydell <peter.maydell@linaro.org>
    Signed-off-by: NRiku Voipio <riku.voipio@linaro.org>
    4ce6243d
syscall.c 279.4 KB