// SPDX-License-Identifier: GPL-2.0-only/* * Based on arch/arm/mm/mmu.c * * Copyright (C) 1995-2005 Russell King * Copyright (C) 2012 ARM Ltd. */#include<linux/cache.h>#include<linux/export.h>#include<linux/kernel.h>#include<linux/errno.h>#include<linux/init.h>#include<linux/ioport.h>#include<linux/kexec.h>#include<linux/libfdt.h>#include<linux/mman.h>#include<linux/nodemask.h>#include<linux/memblock.h>#include<linux/memory.h>#include<linux/fs.h>#include<linux/io.h>#include<linux/mm.h>#include<linux/vmalloc.h>#include<asm/barrier.h>#include<asm/cputype.h>#include<asm/fixmap.h>#include<asm/kasan.h>#include<asm/kernel-pgtable.h>#include<asm/sections.h>#include<asm/setup.h>#include<linux/sizes.h>#include<asm/tlb.h>#include<asm/mmu_context.h>#include<asm/ptdump.h>#include<asm/tlbflush.h>#define NO_BLOCK_MAPPINGS BIT(0)#define NO_CONT_MAPPINGS BIT(1)u64idmap_t0sz=TCR_T0SZ(VA_BITS);u64idmap_ptrs_per_pgd=PTRS_PER_PGD;u64__section(".mmuoff.data.write")vabits_actual;EXPORT_SYMBOL(vabits_actual);u64kimage_voffset__ro_after_init;EXPORT_SYMBOL(kimage_voffset);/* * Empty_zero_page is a special page that is used for zero-initialized data * and COW. */unsignedlongempty_zero_page[PAGE_SIZE/sizeof(unsignedlong)]__page_aligned_bss;EXPORT_SYMBOL(empty_zero_page);staticpte_tbm_pte[PTRS_PER_PTE]__page_aligned_bss;staticpmd_tbm_pmd[PTRS_PER_PMD]__page_aligned_bss__maybe_unused;staticpud_tbm_pud[PTRS_PER_PUD]__page_aligned_bss__maybe_unused;staticDEFINE_SPINLOCK(swapper_pgdir_lock);