diff options
| author | David S. Miller <davem@nuts.davemloft.net> | 2005-02-23 01:46:43 -0800 |
|---|---|---|
| committer | David S. Miller <davem@nuts.davemloft.net> | 2005-02-23 01:46:43 -0800 |
| commit | 9845bf7f382e79cee9078cb67c4cb607b4264117 (patch) | |
| tree | f35f4d1581f8b58f7a80af2677c3c9ef21a25026 /include | |
| parent | ae3d0a847f4b38812241e4a5dc3371965c752a8c (diff) | |
[SPARC64]: Pass mm/addr directly to tlb_batch_add()
No longer need to store this information in the pte table
page struct.
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include')
| -rw-r--r-- | include/asm-sparc64/pgalloc.h | 20 | ||||
| -rw-r--r-- | include/asm-sparc64/pgtable.h | 11 |
2 files changed, 11 insertions, 20 deletions
diff --git a/include/asm-sparc64/pgalloc.h b/include/asm-sparc64/pgalloc.h index e1b053882ae9..7ba8df8c4921 100644 --- a/include/asm-sparc64/pgalloc.h +++ b/include/asm-sparc64/pgalloc.h @@ -191,25 +191,17 @@ extern pte_t *__pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address static inline pte_t *pte_alloc_one_kernel(struct mm_struct *mm, unsigned long address) { - pte_t *pte = __pte_alloc_one_kernel(mm, address); - if (pte) { - struct page *page = virt_to_page(pte); - page->mapping = (void *) mm; - page->index = address & PMD_MASK; - } - return pte; + return __pte_alloc_one_kernel(mm, address); } static inline struct page * pte_alloc_one(struct mm_struct *mm, unsigned long addr) { pte_t *pte = __pte_alloc_one_kernel(mm, addr); - if (pte) { - struct page *page = virt_to_page(pte); - page->mapping = (void *) mm; - page->index = addr & PMD_MASK; - return page; - } + + if (pte) + return virt_to_page(pte); + return NULL; } @@ -246,13 +238,11 @@ static __inline__ void free_pte_slow(pte_t *pte) static inline void pte_free_kernel(pte_t *pte) { - virt_to_page(pte)->mapping = NULL; free_pte_fast(pte); } static inline void pte_free(struct page *ptepage) { - ptepage->mapping = NULL; free_pte_fast(page_address(ptepage)); } diff --git a/include/asm-sparc64/pgtable.h b/include/asm-sparc64/pgtable.h index bfd5c93845a2..5373e6cf13d3 100644 --- a/include/asm-sparc64/pgtable.h +++ b/include/asm-sparc64/pgtable.h @@ -333,17 +333,18 @@ static inline pte_t pte_modify(pte_t orig_pte, pgprot_t new_prot) #define pte_unmap_nested(pte) do { } while (0) /* Actual page table PTE updates. */ -extern void tlb_batch_add(pte_t *ptep, pte_t orig); +extern void tlb_batch_add(struct mm_struct *mm, unsigned long addr, + pte_t *ptep, pte_t orig); -static inline void set_pte(pte_t *ptep, pte_t pte) +static inline void set_pte_at(struct mm_struct *mm, unsigned long addr, + pte_t *ptep, pte_t pte) { pte_t orig = *ptep; *ptep = pte; - if (pte_present(orig)) - tlb_batch_add(ptep, orig); + if (pte_val(orig) & _PAGE_VALID) + tlb_batch_add(mm, addr, ptep, orig); } -#define set_pte_at(mm,addr,ptep,pteval) set_pte(ptep,pteval) #define pte_clear(mm,addr,ptep) \ set_pte_at((mm), (addr), (ptep), __pte(0UL)) |
