projects/linux·blob master · refs

100 lines · 2.5 KiB

1/* SPDX-License-Identifier: GPL-2.0 */
2#ifndef _ALPHA_PAGE_H
3#define _ALPHA_PAGE_H
4
5#include <linux/const.h>
6#include <asm/pal.h>
7#include <vdso/page.h>
8
9#ifdef CONFIG_HUGETLB_PAGE
10/*
11 * The default huge page is the largest granularity hint block, 4MB. All
12 * three hint sizes are registered as hstates, hence HUGE_MAX_HSTATE, which
13 * linux/hugetlb.h needs before it includes asm/hugetlb.h.
14 */
15#define HPAGE_SHIFT 22
16#define HPAGE_SIZE (_AC(1, UL) << HPAGE_SHIFT)
17#define HPAGE_MASK (~(HPAGE_SIZE - 1))
18#define HUGETLB_PAGE_ORDER (HPAGE_SHIFT - PAGE_SHIFT)
19#define HUGE_MAX_HSTATE 3
20#endif
21
22#ifndef __ASSEMBLER__
23
24#define STRICT_MM_TYPECHECKS
25
26extern void clear_page(void *page);
27
28#define vma_alloc_zeroed_movable_folio(vma, vaddr) \
29 vma_alloc_folio(GFP_HIGHUSER_MOVABLE | __GFP_ZERO, 0, vma, vaddr)
30
31extern void copy_page(void * _to, void * _from);
32#define copy_user_page(to, from, vaddr, pg) copy_page(to, from)
33
34#ifdef STRICT_MM_TYPECHECKS
35/*
36 * These are used to make use of C type-checking..
37 */
38typedef struct { unsigned long pte; } pte_t;
39typedef struct { unsigned long pmd; } pmd_t;
40typedef struct { unsigned long pgd; } pgd_t;
41typedef struct { unsigned long pgprot; } pgprot_t;
42
43#define pte_val(x) ((x).pte)
44#define pmd_val(x) ((x).pmd)
45#define pgd_val(x) ((x).pgd)
46#define pgprot_val(x) ((x).pgprot)
47
48#define __pte(x) ((pte_t) { (x) } )
49#define __pmd(x) ((pmd_t) { (x) } )
50#define __pgd(x) ((pgd_t) { (x) } )
51#define __pgprot(x) ((pgprot_t) { (x) } )
52
53#else
54/*
55 * .. while these make it easier on the compiler
56 */
57typedef unsigned long pte_t;
58typedef unsigned long pmd_t;
59typedef unsigned long pgd_t;
60typedef unsigned long pgprot_t;
61
62#define pte_val(x) (x)
63#define pmd_val(x) (x)
64#define pgd_val(x) (x)
65#define pgprot_val(x) (x)
66
67#define __pte(x) (x)
68#define __pgd(x) (x)
69#define __pgprot(x) (x)
70
71#endif /* STRICT_MM_TYPECHECKS */
72
73typedef struct page *pgtable_t;
74
75#ifdef USE_48_BIT_KSEG
76#define PAGE_OFFSET 0xffff800000000000UL
77#else
78#define PAGE_OFFSET 0xfffffc0000000000UL
79#endif
80
81#else
82
83#ifdef USE_48_BIT_KSEG
84#define PAGE_OFFSET 0xffff800000000000
85#else
86#define PAGE_OFFSET 0xfffffc0000000000
87#endif
88
89#endif /* !__ASSEMBLER__ */
90
91#define __pa(x) ((unsigned long) (x) - PAGE_OFFSET)
92#define __va(x) ((void *)((unsigned long) (x) + PAGE_OFFSET))
93
94#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)
95#define virt_addr_valid(kaddr) pfn_valid((__pa(kaddr) >> PAGE_SHIFT))
96
97#include <asm-generic/memory_model.h>
98#include <asm-generic/getorder.h>
99
100#endif /* _ALPHA_PAGE_H */