RISC-V: Stop using LOCAL for the uaccess fixups
[linux-block.git] / arch / riscv / mm / hugetlbpage.c
CommitLineData
9e953cda
AG
1// SPDX-License-Identifier: GPL-2.0
2#include <linux/hugetlb.h>
3#include <linux/err.h>
4
5int pud_huge(pud_t pud)
6{
7 return pud_present(pud) &&
8 (pud_val(pud) & (_PAGE_READ | _PAGE_WRITE | _PAGE_EXEC));
9}
10
11int pmd_huge(pmd_t pmd)
12{
13 return pmd_present(pmd) &&
14 (pmd_val(pmd) & (_PAGE_READ | _PAGE_WRITE | _PAGE_EXEC));
15}
16
17static __init int setup_hugepagesz(char *opt)
18{
19 unsigned long ps = memparse(opt, &opt);
20
21 if (ps == HPAGE_SIZE) {
22 hugetlb_add_hstate(HPAGE_SHIFT - PAGE_SHIFT);
23 } else if (IS_ENABLED(CONFIG_64BIT) && ps == PUD_SIZE) {
24 hugetlb_add_hstate(PUD_SHIFT - PAGE_SHIFT);
25 } else {
26 hugetlb_bad_size();
27 pr_err("hugepagesz: Unsupported page size %lu M\n", ps >> 20);
28 return 0;
29 }
30
31 return 1;
32}
33__setup("hugepagesz=", setup_hugepagesz);
34
35#ifdef CONFIG_CONTIG_ALLOC
36static __init int gigantic_pages_init(void)
37{
38 /* With CONTIG_ALLOC, we can allocate gigantic pages at runtime */
39 if (IS_ENABLED(CONFIG_64BIT) && !size_to_hstate(1UL << PUD_SHIFT))
40 hugetlb_add_hstate(PUD_SHIFT - PAGE_SHIFT);
41 return 0;
42}
43arch_initcall(gigantic_pages_init);
44#endif