%ifndef __ASM_GENERIC_MMAN_COMMON_INC__
%define __ASM_GENERIC_MMAN_COMMON_INC__   1

; Author: Michael S. Tsirkin <This email address is being protected from spambots. You need JavaScript enabled to view it.>, Mellanox Technologies Ltd.
; Based on: asm-xxx/mman.h
; converted for nasm by Roberto Aguas Guerreiro <This email address is being protected from spambots. You need JavaScript enabled to view it.>

%define PROT_READ         0x1           ; page can be read 
%define PROT_WRITE        0x2           ; page can be written 
%define PROT_EXEC         0x4           ; page can be executed 
%define PROT_SEM          0x8           ; page may be used for atomic ops 
%define PROT_NONE         0x0           ; page can not be accessed 
%define PROT_GROWSDOWN    0x01000000    ; mprotect flag: extend change to start of growsdown vma 
%define PROT_GROWSUP      0x02000000    ; mprotect flag: extend change to end of growsup vma 

%define MAP_SHARED        0x01          ; Share changes 
%define MAP_PRIVATE       0x02          ; Changes are private 
%define MAP_TYPE          0x0f          ; Mask for type of mapping 
%define MAP_FIXED         0x10          ; Interpret addr exactly 
%define MAP_ANONYMOUS     0x20          ; don't use a file 

%ifdef CONFIG_MMAP_ALLOW_UNINITIALIZED
    %define MAP_UNINITIALIZED 0x4000000     ; For anonymous mmap, memory could be uninitialized 
%else
    %define MAP_UNINITIALIZED 0x0           ; Don't support this flag 
%endif

%define MS_ASYNC            1           ; sync memory asynchronously 
%define MS_INVALIDATE       2           ; invalidate the caches 
%define MS_SYNC             4           ; synchronous memory sync 

%define MADV_NORMAL         0           ; no further special treatment 
%define MADV_RANDOM         1           ; expect random page references 
%define MADV_SEQUENTIAL     2           ; expect sequential page references 
%define MADV_WILLNEED       3           ; will need these pages 
%define MADV_DONTNEED       4           ; don't need these pages 

; common parameters: try to keep these consistent across architectures 
%define MADV_REMOVE         9           ; remove these pages & resources 
%define MADV_DONTFORK      10           ; don't inherit across fork 
%define MADV_DOFORK        11           ; do inherit across fork 
%define MADV_HWPOISON     100           ; poison a page for testing 
%define MADV_SOFT_OFFLINE 101           ; soft offline page for testing 

%define MADV_MERGEABLE     12           ; KSM may merge identical pages 
%define MADV_UNMERGEABLE   13           ; KSM may not merge identical pages 

%define MADV_HUGEPAGE      14           ; Worth backing with hugepages 
%define MADV_NOHUGEPAGE    15           ; Not worth backing with hugepages 

%define MADV_DONTDUMP      16           ; Explicity exclude from the core dump, overrides the coredump filter bits 
%define MADV_DODUMP        17           ; Clear the MADV_NODUMP flag 

; compatibility flags 
%define MAP_FILE            0


; When MAP_HUGETLB is set bits [26:31] encode the log2 of the huge page size.
; This gives us 6 bits, which is enough until someone invents 128 bit address
; spaces.
;
; Assume these are all power of twos.
; When 0 use the default page size.
 
%define MAP_HUGE_SHIFT     26
%define MAP_HUGE_MASK    0x3f

%endif ; __ASM_GENERIC_MMAN_COMMON_INC__