Revision 3af72a4d linux-user/mmap.c

b/linux-user/mmap.c
24 24
#include <unistd.h>
25 25
#include <errno.h>
26 26
#include <sys/mman.h>
27
#include <linux/mman.h>
28
#include <linux/unistd.h>
27 29

  
28 30
#include "qemu.h"
29 31
#include "qemu-common.h"
......
546 548

  
547 549
    mmap_lock();
548 550

  
549
#if defined(MREMAP_FIXED)
550 551
    if (flags & MREMAP_FIXED)
551
        host_addr = mremap(g2h(old_addr), old_size, new_size,
552
                           flags, new_addr);
552
        host_addr = (void *) syscall(__NR_mremap, g2h(old_addr),
553
                                     old_size, new_size,
554
                                     flags,
555
                                     new_addr);
553 556
    else if (flags & MREMAP_MAYMOVE) {
554 557
        abi_ulong mmap_start;
555 558

  
......
559 562
            errno = ENOMEM;
560 563
            host_addr = MAP_FAILED;
561 564
        } else
562
            host_addr = mremap(g2h(old_addr), old_size, new_size,
563
                               flags | MREMAP_FIXED, g2h(mmap_start));
564
    } else
565
#endif
566
    {
565
            host_addr = (void *) syscall(__NR_mremap, g2h(old_addr),
566
                                         old_size, new_size,
567
                                         flags | MREMAP_FIXED,
568
                                         g2h(mmap_start));
569
    } else {
567 570
        host_addr = mremap(g2h(old_addr), old_size, new_size, flags);
568 571
        /* Check if address fits target address space */
569 572
        if ((unsigned long)host_addr + new_size > (abi_ulong)-1) {

Also available in: Unified diff