aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/s390/mm/pgtable.c17
1 files changed, 7 insertions, 10 deletions
diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c
index c70215247071..c60bfb309ce6 100644
--- a/arch/s390/mm/pgtable.c
+++ b/arch/s390/mm/pgtable.c
@@ -314,21 +314,18 @@ int s390_enable_sie(void)
314} 314}
315EXPORT_SYMBOL_GPL(s390_enable_sie); 315EXPORT_SYMBOL_GPL(s390_enable_sie);
316 316
317#ifdef CONFIG_DEBUG_PAGEALLOC 317#if defined(CONFIG_DEBUG_PAGEALLOC) && defined(CONFIG_HIBERNATION)
318#ifdef CONFIG_HIBERNATION
319bool kernel_page_present(struct page *page) 318bool kernel_page_present(struct page *page)
320{ 319{
321 unsigned long addr; 320 unsigned long addr;
322 int cc; 321 int cc;
323 322
324 addr = page_to_phys(page); 323 addr = page_to_phys(page);
325 asm("lra %1,0(%1)\n" 324 asm volatile(
326 "ipm %0\n" 325 " lra %1,0(%1)\n"
327 "srl %0,28" 326 " ipm %0\n"
328 :"=d"(cc),"+a"(addr)::"cc"); 327 " srl %0,28"
328 : "=d" (cc), "+a" (addr) : : "cc");
329 return cc == 0; 329 return cc == 0;
330} 330}
331 331#endif /* CONFIG_HIBERNATION && CONFIG_DEBUG_PAGEALLOC */
332#endif /* CONFIG_HIBERNATION */
333#endif /* CONFIG_DEBUG_PAGEALLOC */
334