18cf108c5SZhang Yi #ifndef _ASM_GENERIC_HUGETLB_ENCODE_H_ 28cf108c5SZhang Yi #define _ASM_GENERIC_HUGETLB_ENCODE_H_ 38cf108c5SZhang Yi 48cf108c5SZhang Yi /* 58cf108c5SZhang Yi * Several system calls take a flag to request "hugetlb" huge pages. 68cf108c5SZhang Yi * Without further specification, these system calls will use the 78cf108c5SZhang Yi * system's default huge page size. If a system supports multiple 88cf108c5SZhang Yi * huge page sizes, the desired huge page size can be specified in 98cf108c5SZhang Yi * bits [26:31] of the flag arguments. The value in these 6 bits 108cf108c5SZhang Yi * will encode the log2 of the huge page size. 118cf108c5SZhang Yi * 128cf108c5SZhang Yi * The following definitions are associated with this huge page size 138cf108c5SZhang Yi * encoding in flag arguments. System call specific header files 148cf108c5SZhang Yi * that use this encoding should include this file. They can then 158cf108c5SZhang Yi * provide definitions based on these with their own specific prefix. 168cf108c5SZhang Yi * for example: 178cf108c5SZhang Yi * #define MAP_HUGE_SHIFT HUGETLB_FLAG_ENCODE_SHIFT 188cf108c5SZhang Yi */ 198cf108c5SZhang Yi 208cf108c5SZhang Yi #define HUGETLB_FLAG_ENCODE_SHIFT 26 218cf108c5SZhang Yi #define HUGETLB_FLAG_ENCODE_MASK 0x3f 228cf108c5SZhang Yi 23*93e0932bSPeter Xu #define HUGETLB_FLAG_ENCODE_16KB (14U << HUGETLB_FLAG_ENCODE_SHIFT) 24*93e0932bSPeter Xu #define HUGETLB_FLAG_ENCODE_64KB (16U << HUGETLB_FLAG_ENCODE_SHIFT) 25*93e0932bSPeter Xu #define HUGETLB_FLAG_ENCODE_512KB (19U << HUGETLB_FLAG_ENCODE_SHIFT) 26*93e0932bSPeter Xu #define HUGETLB_FLAG_ENCODE_1MB (20U << HUGETLB_FLAG_ENCODE_SHIFT) 27*93e0932bSPeter Xu #define HUGETLB_FLAG_ENCODE_2MB (21U << HUGETLB_FLAG_ENCODE_SHIFT) 28*93e0932bSPeter Xu #define HUGETLB_FLAG_ENCODE_8MB (23U << HUGETLB_FLAG_ENCODE_SHIFT) 29*93e0932bSPeter Xu #define HUGETLB_FLAG_ENCODE_16MB (24U << HUGETLB_FLAG_ENCODE_SHIFT) 30*93e0932bSPeter Xu #define HUGETLB_FLAG_ENCODE_32MB (25U << HUGETLB_FLAG_ENCODE_SHIFT) 31*93e0932bSPeter Xu #define HUGETLB_FLAG_ENCODE_256MB (28U << HUGETLB_FLAG_ENCODE_SHIFT) 32*93e0932bSPeter Xu #define HUGETLB_FLAG_ENCODE_512MB (29U << HUGETLB_FLAG_ENCODE_SHIFT) 33*93e0932bSPeter Xu #define HUGETLB_FLAG_ENCODE_1GB (30U << HUGETLB_FLAG_ENCODE_SHIFT) 34*93e0932bSPeter Xu #define HUGETLB_FLAG_ENCODE_2GB (31U << HUGETLB_FLAG_ENCODE_SHIFT) 35*93e0932bSPeter Xu #define HUGETLB_FLAG_ENCODE_16GB (34U << HUGETLB_FLAG_ENCODE_SHIFT) 368cf108c5SZhang Yi 378cf108c5SZhang Yi #endif /* _ASM_GENERIC_HUGETLB_ENCODE_H_ */ 38