diff options
Diffstat (limited to 'include/asm-s390/system.h')
| -rw-r--r-- | include/asm-s390/system.h | 14 | 
1 files changed, 10 insertions, 4 deletions
diff --git a/include/asm-s390/system.h b/include/asm-s390/system.h index c819ae25a84..819e7d99ca0 100644 --- a/include/asm-s390/system.h +++ b/include/asm-s390/system.h @@ -116,6 +116,12 @@ extern void pfault_fini(void);  #define pfault_fini()		do { } while (0)  #endif /* CONFIG_PFAULT */ +#ifdef CONFIG_PAGE_STATES +extern void cmma_init(void); +#else +static inline void cmma_init(void) { } +#endif +  #define finish_arch_switch(prev) do {					     \  	set_fs(current->thread.mm_segment);				     \  	account_vtime(prev);						     \ @@ -309,14 +315,14 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size)  	asm volatile(						\  		"	lctlg	%1,%2,0(%0)\n"			\  		: : "a" (&array), "i" (low), "i" (high),	\ -		    "m" (*(addrtype *)(array)));		\ +		    "m" (*(addrtype *)(&array)));		\  	})  #define __ctl_store(array, low, high) ({			\  	typedef struct { char _[sizeof(array)]; } addrtype;	\  	asm volatile(						\  		"	stctg	%2,%3,0(%1)\n"			\ -		: "=m" (*(addrtype *)(array))			\ +		: "=m" (*(addrtype *)(&array))			\  		: "a" (&array), "i" (low), "i" (high));		\  	}) @@ -327,14 +333,14 @@ __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size)  	asm volatile(						\  		"	lctl	%1,%2,0(%0)\n"			\  		: : "a" (&array), "i" (low), "i" (high),	\ -		    "m" (*(addrtype *)(array)));		\ +		    "m" (*(addrtype *)(&array)));		\  })  #define __ctl_store(array, low, high) ({			\  	typedef struct { char _[sizeof(array)]; } addrtype;	\  	asm volatile(						\  		"	stctl	%2,%3,0(%1)\n"			\ -		: "=m" (*(addrtype *)(array))			\ +		: "=m" (*(addrtype *)(&array))			\  		: "a" (&array), "i" (low), "i" (high));		\  	})  |