diff options
Diffstat (limited to 'include/asm-s390/pgtable.h')
-rw-r--r-- | include/asm-s390/pgtable.h | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/include/asm-s390/pgtable.h b/include/asm-s390/pgtable.h index e965309fedac..83425cdefc91 100644 --- a/include/asm-s390/pgtable.h +++ b/include/asm-s390/pgtable.h | |||
@@ -554,9 +554,10 @@ static inline void __ptep_ipte(unsigned long address, pte_t *ptep) | |||
554 | /* ipte in zarch mode can do the math */ | 554 | /* ipte in zarch mode can do the math */ |
555 | pte_t *pto = ptep; | 555 | pte_t *pto = ptep; |
556 | #endif | 556 | #endif |
557 | asm volatile ("ipte %2,%3" | 557 | asm volatile( |
558 | : "=m" (*ptep) : "m" (*ptep), | 558 | " ipte %2,%3" |
559 | "a" (pto), "a" (address) ); | 559 | : "=m" (*ptep) : "m" (*ptep), |
560 | "a" (pto), "a" (address)); | ||
560 | } | 561 | } |
561 | pte_val(*ptep) = _PAGE_TYPE_EMPTY; | 562 | pte_val(*ptep) = _PAGE_TYPE_EMPTY; |
562 | } | 563 | } |
@@ -609,16 +610,17 @@ ptep_establish(struct vm_area_struct *vma, | |||
609 | /* | 610 | /* |
610 | * Test and clear referenced bit in storage key. | 611 | * Test and clear referenced bit in storage key. |
611 | */ | 612 | */ |
612 | #define page_test_and_clear_young(page) \ | 613 | #define page_test_and_clear_young(page) \ |
613 | ({ \ | 614 | ({ \ |
614 | struct page *__page = (page); \ | 615 | struct page *__page = (page); \ |
615 | unsigned long __physpage = __pa((__page-mem_map) << PAGE_SHIFT); \ | 616 | unsigned long __physpage = __pa((__page-mem_map) << PAGE_SHIFT);\ |
616 | int __ccode; \ | 617 | int __ccode; \ |
617 | asm volatile ("rrbe 0,%1\n\t" \ | 618 | asm volatile( \ |
618 | "ipm %0\n\t" \ | 619 | " rrbe 0,%1\n" \ |
619 | "srl %0,28\n\t" \ | 620 | " ipm %0\n" \ |
620 | : "=d" (__ccode) : "a" (__physpage) : "cc" ); \ | 621 | " srl %0,28\n" \ |
621 | (__ccode & 2); \ | 622 | : "=d" (__ccode) : "a" (__physpage) : "cc"); \ |
623 | (__ccode & 2); \ | ||
622 | }) | 624 | }) |
623 | 625 | ||
624 | /* | 626 | /* |