]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/blame - arch/sparc/include/asm/pgalloc_32.h
mm: reorder includes after introduction of linux/pgtable.h
[mirror_ubuntu-jammy-kernel.git] / arch / sparc / include / asm / pgalloc_32.h
CommitLineData
b2441318 1/* SPDX-License-Identifier: GPL-2.0 */
f5e706ad
SR
2#ifndef _SPARC_PGALLOC_H
3#define _SPARC_PGALLOC_H
4
5#include <linux/kernel.h>
6#include <linux/sched.h>
65fddcfc 7#include <linux/pgtable.h>
f5e706ad 8
642ea3ed 9#include <asm/pgtsrmmu.h>
642ea3ed
SR
10#include <asm/vaddrs.h>
11#include <asm/page.h>
f5e706ad
SR
12
13struct page;
14
f71a2aac
SR
15void *srmmu_get_nocache(int size, int align);
16void srmmu_free_nocache(void *addr, int size);
642ea3ed 17
c31f7651
SR
18extern struct resource sparc_iomap;
19
642ea3ed
SR
20pgd_t *get_pgd_fast(void);
21static inline void free_pgd_fast(pgd_t *pgd)
22{
f71a2aac 23 srmmu_free_nocache(pgd, SRMMU_PGD_TABLE_SIZE);
642ea3ed 24}
f5e706ad
SR
25
26#define pgd_free(mm, pgd) free_pgd_fast(pgd)
27#define pgd_alloc(mm) get_pgd_fast()
28
7235db26 29static inline void pud_set(pud_t * pudp, pmd_t * pmdp)
642ea3ed 30{
6b1cabe8 31 unsigned long pa = __nocache_pa(pmdp);
642ea3ed 32
7235db26 33 set_pte((pte_t *)pudp, __pte((SRMMU_ET_PTD | (pa >> 4))));
642ea3ed
SR
34}
35
7235db26 36#define pud_populate(MM, PGD, PMD) pud_set(PGD, PMD)
f5e706ad 37
642ea3ed
SR
38static inline pmd_t *pmd_alloc_one(struct mm_struct *mm,
39 unsigned long address)
40{
f71a2aac
SR
41 return srmmu_get_nocache(SRMMU_PMD_TABLE_SIZE,
42 SRMMU_PMD_TABLE_SIZE);
642ea3ed 43}
f5e706ad 44
642ea3ed
SR
45static inline void free_pmd_fast(pmd_t * pmd)
46{
f71a2aac 47 srmmu_free_nocache(pmd, SRMMU_PMD_TABLE_SIZE);
642ea3ed 48}
f5e706ad 49
9e1b32ca
BH
50#define pmd_free(mm, pmd) free_pmd_fast(pmd)
51#define __pmd_free_tlb(tlb, pmd, addr) pmd_free((tlb)->mm, pmd)
f5e706ad 52
3f407976
WD
53#define pmd_populate(mm, pmd, pte) pmd_set(pmd, pte)
54#define pmd_pgtable(pmd) (pgtable_t)__pmd_page(pmd)
f5e706ad 55
642ea3ed 56void pmd_set(pmd_t *pmdp, pte_t *ptep);
3f407976 57#define pmd_populate_kernel pmd_populate
642ea3ed 58
4cf58924 59pgtable_t pte_alloc_one(struct mm_struct *mm);
642ea3ed 60
4cf58924 61static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm)
642ea3ed 62{
8e958839
WD
63 return srmmu_get_nocache(SRMMU_PTE_TABLE_SIZE,
64 SRMMU_PTE_TABLE_SIZE);
642ea3ed
SR
65}
66
67
68static inline void free_pte_fast(pte_t *pte)
69{
8e958839 70 srmmu_free_nocache(pte, SRMMU_PTE_TABLE_SIZE);
642ea3ed 71}
f5e706ad 72
642ea3ed 73#define pte_free_kernel(mm, pte) free_pte_fast(pte)
f5e706ad 74
642ea3ed 75void pte_free(struct mm_struct * mm, pgtable_t pte);
9e1b32ca 76#define __pte_free_tlb(tlb, pte, addr) pte_free((tlb)->mm, pte)
f5e706ad
SR
77
78#endif /* _SPARC_PGALLOC_H */