X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=include%2Fasm-s390%2Fpgtable.h;h=c74a47e903eed9a91e31710cec70c2ec0ec3e9f7;hb=c7b5ebbddf7bcd3651947760f423e3783bbe6573;hp=05ac76fd38a42a2a4eb6959cf4075ed2aa6057b8;hpb=a2c21200f1c81b08cb55e417b68150bba439b646;p=linux-2.6.git diff --git a/include/asm-s390/pgtable.h b/include/asm-s390/pgtable.h index 05ac76fd3..c74a47e90 100644 --- a/include/asm-s390/pgtable.h +++ b/include/asm-s390/pgtable.h @@ -597,17 +597,13 @@ ptep_establish(struct vm_area_struct *vma, * should therefore only be called if it is not mapped in any * address space. */ -#define page_test_and_clear_dirty(page) \ +#define page_test_and_clear_dirty(_page) \ ({ \ - struct page *__page = (page); \ + struct page *__page = (_page); \ unsigned long __physpage = __pa((__page-mem_map) << PAGE_SHIFT); \ - int __skey; \ - asm volatile ("iske %0,%1" : "=d" (__skey) : "a" (__physpage)); \ - if (__skey & _PAGE_CHANGED) { \ - asm volatile ("sske %0,%1" \ - : : "d" (__skey & ~_PAGE_CHANGED), \ - "a" (__physpage)); \ - } \ + int __skey = page_get_storage_key(__physpage); \ + if (__skey & _PAGE_CHANGED) \ + page_set_storage_key(__physpage, __skey & ~_PAGE_CHANGED);\ (__skey & _PAGE_CHANGED); \ }) @@ -655,11 +651,10 @@ static inline pte_t mk_pte_phys(unsigned long physpage, pgprot_t pgprot) }) #define SetPageUptodate(_page) \ - do { \ - struct page *__page = (_page); \ - if (!test_and_set_bit(PG_uptodate, &__page->flags)) \ - asm volatile ("sske %0,%1" : : "d" (0), \ - "a" (__pa((__page-mem_map) << PAGE_SHIFT)));\ + do { \ + struct page *__page = (_page); \ + if (!test_and_set_bit(PG_uptodate, &__page->flags)) \ + page_test_and_clear_dirty(_page); \ } while (0) #ifdef __s390x__