Loading arch/arm/mm/mm-armv.c +15 −8 Original line number Diff line number Diff line Loading @@ -142,6 +142,16 @@ __setup("noalign", noalign_setup); #define FIRST_KERNEL_PGD_NR (FIRST_USER_PGD_NR + USER_PTRS_PER_PGD) static inline pmd_t *pmd_off(pgd_t *pgd, unsigned long virt) { return pmd_offset(pgd, virt); } static inline pmd_t *pmd_off_k(unsigned long virt) { return pmd_off(pgd_offset_k(virt), virt); } /* * need to get a 16k page for level 1 */ Loading Loading @@ -220,7 +230,7 @@ void free_pgd_slow(pgd_t *pgd) return; /* pgd is always present and good */ pmd = (pmd_t *)pgd; pmd = pmd_off(pgd, 0); if (pmd_none(*pmd)) goto free; if (pmd_bad(*pmd)) { Loading @@ -246,9 +256,8 @@ void free_pgd_slow(pgd_t *pgd) static inline void alloc_init_section(unsigned long virt, unsigned long phys, int prot) { pmd_t *pmdp; pmd_t *pmdp = pmd_off_k(virt); pmdp = pmd_offset(pgd_offset_k(virt), virt); if (virt & (1 << 20)) pmdp++; Loading Loading @@ -283,11 +292,9 @@ alloc_init_supersection(unsigned long virt, unsigned long phys, int prot) static inline void alloc_init_page(unsigned long virt, unsigned long phys, unsigned int prot_l1, pgprot_t prot) { pmd_t *pmdp; pmd_t *pmdp = pmd_off_k(virt); pte_t *ptep; pmdp = pmd_offset(pgd_offset_k(virt), virt); if (pmd_none(*pmdp)) { unsigned long pmdval; ptep = alloc_bootmem_low_pages(2 * PTRS_PER_PTE * Loading @@ -310,7 +317,7 @@ alloc_init_page(unsigned long virt, unsigned long phys, unsigned int prot_l1, pg */ static inline void clear_mapping(unsigned long virt) { pmd_clear(pmd_offset(pgd_offset_k(virt), virt)); pmd_clear(pmd_off_k(virt)); } struct mem_types { Loading Loading @@ -578,7 +585,7 @@ void setup_mm_for_reboot(char mode) PMD_TYPE_SECT; if (cpu_arch <= CPU_ARCH_ARMv5) pmdval |= PMD_BIT4; pmd = pmd_offset(pgd + i, i << PGDIR_SHIFT); pmd = pmd_off(pgd, i << PGDIR_SHIFT); pmd[0] = __pmd(pmdval); pmd[1] = __pmd(pmdval + (1 << (PGDIR_SHIFT - 1))); flush_pmd_entry(pmd); Loading Loading
arch/arm/mm/mm-armv.c +15 −8 Original line number Diff line number Diff line Loading @@ -142,6 +142,16 @@ __setup("noalign", noalign_setup); #define FIRST_KERNEL_PGD_NR (FIRST_USER_PGD_NR + USER_PTRS_PER_PGD) static inline pmd_t *pmd_off(pgd_t *pgd, unsigned long virt) { return pmd_offset(pgd, virt); } static inline pmd_t *pmd_off_k(unsigned long virt) { return pmd_off(pgd_offset_k(virt), virt); } /* * need to get a 16k page for level 1 */ Loading Loading @@ -220,7 +230,7 @@ void free_pgd_slow(pgd_t *pgd) return; /* pgd is always present and good */ pmd = (pmd_t *)pgd; pmd = pmd_off(pgd, 0); if (pmd_none(*pmd)) goto free; if (pmd_bad(*pmd)) { Loading @@ -246,9 +256,8 @@ void free_pgd_slow(pgd_t *pgd) static inline void alloc_init_section(unsigned long virt, unsigned long phys, int prot) { pmd_t *pmdp; pmd_t *pmdp = pmd_off_k(virt); pmdp = pmd_offset(pgd_offset_k(virt), virt); if (virt & (1 << 20)) pmdp++; Loading Loading @@ -283,11 +292,9 @@ alloc_init_supersection(unsigned long virt, unsigned long phys, int prot) static inline void alloc_init_page(unsigned long virt, unsigned long phys, unsigned int prot_l1, pgprot_t prot) { pmd_t *pmdp; pmd_t *pmdp = pmd_off_k(virt); pte_t *ptep; pmdp = pmd_offset(pgd_offset_k(virt), virt); if (pmd_none(*pmdp)) { unsigned long pmdval; ptep = alloc_bootmem_low_pages(2 * PTRS_PER_PTE * Loading @@ -310,7 +317,7 @@ alloc_init_page(unsigned long virt, unsigned long phys, unsigned int prot_l1, pg */ static inline void clear_mapping(unsigned long virt) { pmd_clear(pmd_offset(pgd_offset_k(virt), virt)); pmd_clear(pmd_off_k(virt)); } struct mem_types { Loading Loading @@ -578,7 +585,7 @@ void setup_mm_for_reboot(char mode) PMD_TYPE_SECT; if (cpu_arch <= CPU_ARCH_ARMv5) pmdval |= PMD_BIT4; pmd = pmd_offset(pgd + i, i << PGDIR_SHIFT); pmd = pmd_off(pgd, i << PGDIR_SHIFT); pmd[0] = __pmd(pmdval); pmd[1] = __pmd(pmdval + (1 << (PGDIR_SHIFT - 1))); flush_pmd_entry(pmd); Loading