hugetlbpage.c (1395B)
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/tlb.h> 21#include <asm/tlbflush.h> 22#include <asm/cacheflush.h> 23 24pte_t *huge_pte_alloc(struct mm_struct *mm, struct vm_area_struct *vma, 25 unsigned long addr, unsigned long sz) 26{ 27 pgd_t *pgd; 28 p4d_t *p4d; 29 pud_t *pud; 30 pmd_t *pmd; 31 pte_t *pte = NULL; 32 33 pgd = pgd_offset(mm, addr); 34 if (pgd) { 35 p4d = p4d_alloc(mm, pgd, addr); 36 if (p4d) { 37 pud = pud_alloc(mm, p4d, addr); 38 if (pud) { 39 pmd = pmd_alloc(mm, pud, addr); 40 if (pmd) 41 pte = pte_alloc_map(mm, pmd, addr); 42 } 43 } 44 } 45 46 return pte; 47} 48 49pte_t *huge_pte_offset(struct mm_struct *mm, 50 unsigned long addr, unsigned long sz) 51{ 52 pgd_t *pgd; 53 p4d_t *p4d; 54 pud_t *pud; 55 pmd_t *pmd; 56 pte_t *pte = NULL; 57 58 pgd = pgd_offset(mm, addr); 59 if (pgd) { 60 p4d = p4d_offset(pgd, addr); 61 if (p4d) { 62 pud = pud_offset(p4d, addr); 63 if (pud) { 64 pmd = pmd_offset(pud, addr); 65 if (pmd) 66 pte = pte_offset_map(pmd, addr); 67 } 68 } 69 } 70 71 return pte; 72} 73 74int pmd_huge(pmd_t pmd) 75{ 76 return 0; 77} 78 79int pud_huge(pud_t pud) 80{ 81 return 0; 82}