/*
 * mmap.c
 */

#include <stdint.h>
#include <errno.h>
#include <sys/syscall.h>
#include <sys/mman.h>
#include <asm/page.h>		/* For PAGE_SHIFT */

#if defined(__sparc__)
# define MMAP2_SHIFT	12	/* Fixed by syscall definition */
#else
# define MMAP2_SHIFT	PAGE_SHIFT
#endif
#define MMAP2_MASK	((1UL << MMAP2_SHIFT)-1)

/*
 * Prefer mmap2() over mmap(), except on the architectures listed
 */

#if defined(__NR_mmap2) && !defined(__sparc__) && !defined(__ia64__)

/* This architecture uses mmap2() */

static inline _syscall6(void *,mmap2,void *,start,size_t,length,int,prot,int,flags,int,fd,off_t,offset);

/* The Linux mmap2() system call takes a page offset as the offset argument.
   We need to make sure we have the proper conversion in place. */

void *mmap(void *start, size_t length, int prot, int flags, int fd, off_t offset)
{
  if ( offset & MMAP2_MASK ) {
    errno = EINVAL;
    return MAP_FAILED;
  }

  return mmap2(start, length, prot, flags, fd, offset >> MMAP2_SHIFT);
}

#else

/* This architecture uses a plain mmap() system call */
/* Only use this for architectures where mmap() is a real 6-argument system call! */

_syscall6(void *,mmap,void *,start,size_t,length,int,prot,int,flags,int,fd,off_t,offset);

#endif

    
  
