[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-changelog] pgtable.c:
ChangeSet 1.1842, 2005/04/28 16:23:35+01:00, cl349@xxxxxxxxxxxxxxxxxxxx pgtable.c: Use virt_to_ptep. pgtable.h: add virt_to_ptep. arch/xen/i386/mm/pgtable.c | 20 ++++---------------- include/asm-xen/asm-i386/pgtable.h | 10 ++++++++-- 2 files changed, 12 insertions(+), 18 deletions(-) diff -Nru a/linux-2.6.11-xen-sparse/arch/xen/i386/mm/pgtable.c b/linux-2.6.11-xen-sparse/arch/xen/i386/mm/pgtable.c --- a/linux-2.6.11-xen-sparse/arch/xen/i386/mm/pgtable.c 2005-04-28 18:05:58 -04:00 +++ b/linux-2.6.11-xen-sparse/arch/xen/i386/mm/pgtable.c 2005-04-28 18:05:58 -04:00 @@ -374,28 +374,19 @@ void make_lowmem_page_readonly(void *va) { - pgd_t *pgd = pgd_offset_k((unsigned long)va); - pud_t *pud = pud_offset(pgd, (unsigned long)va); - pmd_t *pmd = pmd_offset(pud, (unsigned long)va); - pte_t *pte = pte_offset_kernel(pmd, (unsigned long)va); + pte_t *pte = virt_to_ptep(va); queue_l1_entry_update(pte, (*(unsigned long *)pte)&~_PAGE_RW); } void make_lowmem_page_writable(void *va) { - pgd_t *pgd = pgd_offset_k((unsigned long)va); - pud_t *pud = pud_offset(pgd, (unsigned long)va); - pmd_t *pmd = pmd_offset(pud, (unsigned long)va); - pte_t *pte = pte_offset_kernel(pmd, (unsigned long)va); + pte_t *pte = virt_to_ptep(va); queue_l1_entry_update(pte, (*(unsigned long *)pte)|_PAGE_RW); } void make_page_readonly(void *va) { - pgd_t *pgd = pgd_offset_k((unsigned long)va); - pud_t *pud = pud_offset(pgd, (unsigned long)va); - pmd_t *pmd = pmd_offset(pud, (unsigned long)va); - pte_t *pte = pte_offset_kernel(pmd, (unsigned long)va); + pte_t *pte = virt_to_ptep(va); queue_l1_entry_update(pte, (*(unsigned long *)pte)&~_PAGE_RW); if ( (unsigned long)va >= (unsigned long)high_memory ) { @@ -410,10 +401,7 @@ void make_page_writable(void *va) { - pgd_t *pgd = pgd_offset_k((unsigned long)va); - pud_t *pud = pud_offset(pgd, (unsigned long)va); - pmd_t *pmd = pmd_offset(pud, (unsigned long)va); - pte_t *pte = pte_offset_kernel(pmd, (unsigned long)va); + pte_t *pte = virt_to_ptep(va); queue_l1_entry_update(pte, (*(unsigned long *)pte)|_PAGE_RW); if ( (unsigned long)va >= (unsigned long)high_memory ) { diff -Nru a/linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgtable.h b/linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgtable.h --- a/linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgtable.h 2005-04-28 18:05:58 -04:00 +++ b/linux-2.6.11-xen-sparse/include/asm-xen/asm-i386/pgtable.h 2005-04-28 18:05:58 -04:00 @@ -276,6 +276,7 @@ if (pte_write(pte)) set_pte(ptep, pte_wrprotect(pte)); } + static inline void ptep_mkdirty(pte_t *ptep) { pte_t pte = *ptep; @@ -455,12 +456,17 @@ void make_pages_readonly(void *va, unsigned int nr); void make_pages_writable(void *va, unsigned int nr); -#define arbitrary_virt_to_machine(__va) \ +#define virt_to_ptep(__va) \ ({ \ pgd_t *__pgd = pgd_offset_k((unsigned long)(__va)); \ pud_t *__pud = pud_offset(__pgd, (unsigned long)(__va)); \ pmd_t *__pmd = pmd_offset(__pud, (unsigned long)(__va)); \ - pte_t *__pte = pte_offset_kernel(__pmd, (unsigned long)(__va)); \ + pte_offset_kernel(__pmd, (unsigned long)(__va)); \ +}) + +#define arbitrary_virt_to_machine(__va) \ +({ \ + pte_t *__pte = virt_to_ptep(__va); \ unsigned long __pa = (*(unsigned long *)__pte) & PAGE_MASK; \ __pa | ((unsigned long)(__va) & (PAGE_SIZE-1)); \ }) _______________________________________________ Xen-changelog mailing list Xen-changelog@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-changelog
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |