Commit 2762f04d authored by Alex Bennée's avatar Alex Bennée
Browse files

target/ppc: fix signal delivery for ppc64abi32



We were incorrectly using the 64-bit AIX ABI instead of the 32-bit
SYSV ABI for setting NIP for the signal handler.

Signed-off-by: default avatarAlex Bennée <alex.bennee@linaro.org>
Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
Reviewed-by: default avatarLaurent Vivier <laurent@vivier.eu>
parent 11bfdbdf
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -501,7 +501,9 @@ void setup_rt_frame(int sig, struct target_sigaction *ka,
    int i, err = 0;
#if defined(TARGET_PPC64)
    struct target_sigcontext *sc = 0;
#if !defined(TARGET_ABI32)
    struct image_info *image = ((TaskState *)thread_cpu->opaque)->info;
#endif
#endif

    rt_sf_addr = get_sigframe(ka, env, sizeof(*rt_sf));
@@ -557,7 +559,7 @@ void setup_rt_frame(int sig, struct target_sigaction *ka,
    env->gpr[5] = (target_ulong) h2g(&rt_sf->uc);
    env->gpr[6] = (target_ulong) h2g(rt_sf);

#if defined(TARGET_PPC64)
#if defined(TARGET_PPC64) && !defined(TARGET_ABI32)
    if (get_ppc64_abi(image) < 2) {
        /* ELFv1 PPC64 function pointers are pointers to OPD entries. */
        struct target_func_ptr *handler =