1 // SPDX-License-Identifier: GPL-2.0 2 /* 3 * arch/sh/mm/hugetlbpage.c 4 * 5 * SuperH HugeTLB page support. 6 * 7 * Cloned from sparc64 by Paul Mundt. 8 * 9 * Copyright (C) 2002, 2003 David S. Miller (davem@redhat.com) 10 */ 11 12 #include <linux/init.h> 13 #include <linux/fs.h> 14 #include <linux/mm.h> 15 #include <linux/hugetlb.h> 16 #include <linux/pagemap.h> 17 #include <linux/sysctl.h> 18 19 #include <asm/mman.h> 20 #include <asm/pgalloc.h> 21 #include <asm/tlb.h> 22 #include <asm/tlbflush.h> 23 #include <asm/cacheflush.h> 24 25 pte_t *huge_pte_alloc(struct mm_struct *mm, 26 unsigned long addr, unsigned long sz) 27 { 28 pgd_t *pgd; 29 pud_t *pud; 30 pmd_t *pmd; 31 pte_t *pte = NULL; 32 33 pgd = pgd_offset(mm, addr); 34 if (pgd) { 35 pud = pud_alloc(mm, pgd, addr); 36 if (pud) { 37 pmd = pmd_alloc(mm, pud, addr); 38 if (pmd) 39 pte = pte_alloc_map(mm, pmd, addr); 40 } 41 } 42 43 return pte; 44 } 45 46 pte_t *huge_pte_offset(struct mm_struct *mm, 47 unsigned long addr, unsigned long sz) 48 { 49 pgd_t *pgd; 50 pud_t *pud; 51 pmd_t *pmd; 52 pte_t *pte = NULL; 53 54 pgd = pgd_offset(mm, addr); 55 if (pgd) { 56 pud = pud_offset(pgd, addr); 57 if (pud) { 58 pmd = pmd_offset(pud, addr); 59 if (pmd) 60 pte = pte_offset_map(pmd, addr); 61 } 62 } 63 64 return pte; 65 } 66 67 int pmd_huge(pmd_t pmd) 68 { 69 return 0; 70 } 71 72 int pud_huge(pud_t pud) 73 { 74 return 0; 75 } 76