From: Helge Deller <[email protected]> Older hppa binaries may still use the old MADV_XXX constants for the madivise() syscall. Fix it up in the same manner as it's done in the Linux kernel in the parisc_madvise() function.
Signed-off-by: Helge Deller <[email protected]> --- linux-user/syscall.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/linux-user/syscall.c b/linux-user/syscall.c index 7cb9de97e9..80f7355ccd 100644 --- a/linux-user/syscall.c +++ b/linux-user/syscall.c @@ -12929,6 +12929,20 @@ static abi_long do_syscall1(CPUArchState *cpu_env, int num, abi_long arg1, #ifdef TARGET_NR_madvise case TARGET_NR_madvise: +#ifdef TARGET_HPPA + /* Emulate old hppa mapping of MADV_xxx constants. */ + switch (arg3) { + case 65: arg3 = MADV_MERGEABLE; break; + case 66: arg3 = MADV_UNMERGEABLE; break; + case 67: arg3 = MADV_HUGEPAGE; break; + case 68: arg3 = MADV_NOHUGEPAGE; break; + case 69: arg3 = MADV_DONTDUMP; break; + case 70: arg3 = MADV_DODUMP; break; + case 71: arg3 = MADV_WIPEONFORK; break; + case 72: arg3 = MADV_KEEPONFORK; break; + case 73: arg3 = MADV_COLLAPSE; break; + } +#endif /* TARGET_HPPA */ return target_madvise(arg1, arg2, arg3); #endif #ifdef TARGET_NR_fcntl64 -- 2.52.0
