/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __MMU_H #define __MMU_H #ifdef CONFIG_METAG_USER_TCM #include <linux/list.h> #endif #ifdef CONFIG_HUGETLB_PAGE #include <asm/page.h> #endif typedef struct { /* Software pgd base pointer used for Meta 1.x MMU. */ unsigned long pgd_base; #ifdef CONFIG_METAG_USER_TCM struct list_head tcm; #endif #ifdef CONFIG_HUGETLB_PAGE #if HPAGE_SHIFT < HUGEPT_SHIFT /* last partially filled huge page table address */ unsigned long part_huge; #endif #endif } mm_context_t; /* Given a virtual address, return the pte for the top level 4meg entry * that maps that address. * Returns 0 (an empty pte) if that range is not mapped. */ unsigned long mmu_read_first_level_page(unsigned long vaddr); /* Given a linear (virtual) address, return the second level 4k pte * that maps that address. Returns 0 if the address is not mapped. */ unsigned long mmu_read_second_level_page(unsigned long vaddr); /* Get the virtual base address of the MMU */ unsigned long mmu_get_base(void); /* Initialize the MMU. */ void mmu_init(unsigned long mem_end); #ifdef CONFIG_METAG_META21_MMU /* * For cpu "cpu" calculate and return the address of the * MMCU_TnLOCAL_TABLE_PHYS0 if running in local-space or * MMCU_TnGLOBAL_TABLE_PHYS0 if running in global-space. */
static inline unsigned long mmu_phys0_addr(unsigned int cpu) { unsigned long phys0; phys0 = (MMCU_T0LOCAL_TABLE_PHYS0 + (MMCU_TnX_TABLE_PHYSX_STRIDE * cpu)) + (MMCU_TXG_TABLE_PHYSX_OFFSET * is_global_space(PAGE_OFFSET)); return phys0; }Contributors
Person | Tokens | Prop | Commits | CommitProp |
James Hogan | 40 | 100.00% | 1 | 100.00% |
Total | 40 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
James Hogan | 40 | 100.00% | 1 | 100.00% |
Total | 40 | 100.00% | 1 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp |
James Hogan | 186 | 99.47% | 1 | 50.00% |
Greg Kroah-Hartman | 1 | 0.53% | 1 | 50.00% |
Total | 187 | 100.00% | 2 | 100.00% |