Lines Matching +full:machine +full:- +full:level
1 /* SPDX-License-Identifier: GPL-2.0-only */
5 * Copyright (c) 2010-2011, The Linux Foundation. All rights reserved.
15 #include <asm-generic/pgtable-nopmd.h>
21 * The PTE model described here is that of the Hexagon Virtual Machine,
22 * which autonomously walks 2-level page tables. At a lower level, we
23 * also describe the RISCish software-loaded TLB entry structure of
25 * virtual machine has no need to know about the underlying hardware.
30 * To maximize the comfort level for the PTE manipulation macros,
31 * define the "well known" architecture-specific bits.
58 * of global pages or ASIDs exposed to the Hexagon Virtual Machine,
60 * the native kernel as we do in the virtual machine kernel.
68 * Top "FOURTH" level (pgd), which for the Hexagon VM is really
77 #define PGDIR_MASK (~(PGDIR_SIZE-1))
140 * For now, assume that higher-level code will do TLB/MMU invalidations
141 * and don't insert that overhead into this low-level function.
159 * For the Hexagon Virtual Machine MMU (or its emulation), a null/invalid
183 * pmd_none - check if pmd_entry is mapped
194 * pmd_present - is there a page table behind this?
205 * pmd_bad - check if a PMD entry is "bad". That might mean swapped out.
215 * pmd_pfn - converts a PMD entry to a page frame number
220 * pmd_page - converts a PMD entry to a page pointer
225 * pte_none - check if pte is mapped
234 * pte_present - check if page is present
241 /* mk_pte - make a PTE out of a page pointer and protection bits */
244 /* pte_page - returns a page (frame pointer/descriptor?) based on a PTE */
247 /* pte_mkold - mark PTE as not recently accessed */
254 /* pte_mkyoung - mark PTE as recently accessed */
261 /* pte_mkclean - mark page as in sync with backing store */
268 /* pte_mkdirty - mark page as modified */
275 /* pte_young - "is PTE marked as accessed"? */
281 /* pte_dirty - "is PTE dirty?" */
287 /* pte_modify - set protection bits on PTE */
295 /* pte_wrprotect - mark page as not writable */
302 /* pte_mkwrite - mark page as writable */
309 /* pte_mkexec - mark PTE as executable */
316 /* pte_read - "is PTE marked as readable?" */
322 /* pte_write - "is PTE marked as writable?" */
329 /* pte_exec - "is PTE marked as executable?" */
335 /* __pte_to_swp_entry - extract swap entry from PTE */
338 /* __swp_entry_to_pte - extract PTE from swap entry */
342 /* pfn_pte - convert page number and protection value to page table entry */
345 /* pte_pfn - convert pte to page frame number */
354 /* ZERO_PAGE - returns the globally shared zero page */
366 * 3 bits of offset. That trade-off can be revisited if necessary, but Hexagon
372 * bits 1-5: swap type (arch independent layer uses 5 bits max)
374 * bits 7-9: bits 2:0 of offset
375 * bits 10-12: effectively _PAGE_PROTNONE (all zero)
376 * bits 13-31: bits 21:3 of swap offset