[S390] Fix __ctl_load/__ctl_store inline assembly constraints

__ctl_load/__ctl_store are called with either an array of unsigned long or
a single unsigned long value. Add an address operator to the "m"/"=m"
contraints to make them work for unsigned long arguments as well.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>

+4 -4
+4 -4
include/asm-s390/system.h
··· 315 asm volatile( \ 316 " lctlg %1,%2,0(%0)\n" \ 317 : : "a" (&array), "i" (low), "i" (high), \ 318 - "m" (*(addrtype *)(array))); \ 319 }) 320 321 #define __ctl_store(array, low, high) ({ \ 322 typedef struct { char _[sizeof(array)]; } addrtype; \ 323 asm volatile( \ 324 " stctg %2,%3,0(%1)\n" \ 325 - : "=m" (*(addrtype *)(array)) \ 326 : "a" (&array), "i" (low), "i" (high)); \ 327 }) 328 ··· 333 asm volatile( \ 334 " lctl %1,%2,0(%0)\n" \ 335 : : "a" (&array), "i" (low), "i" (high), \ 336 - "m" (*(addrtype *)(array))); \ 337 }) 338 339 #define __ctl_store(array, low, high) ({ \ 340 typedef struct { char _[sizeof(array)]; } addrtype; \ 341 asm volatile( \ 342 " stctl %2,%3,0(%1)\n" \ 343 - : "=m" (*(addrtype *)(array)) \ 344 : "a" (&array), "i" (low), "i" (high)); \ 345 }) 346
··· 315 asm volatile( \ 316 " lctlg %1,%2,0(%0)\n" \ 317 : : "a" (&array), "i" (low), "i" (high), \ 318 + "m" (*(addrtype *)(&array))); \ 319 }) 320 321 #define __ctl_store(array, low, high) ({ \ 322 typedef struct { char _[sizeof(array)]; } addrtype; \ 323 asm volatile( \ 324 " stctg %2,%3,0(%1)\n" \ 325 + : "=m" (*(addrtype *)(&array)) \ 326 : "a" (&array), "i" (low), "i" (high)); \ 327 }) 328 ··· 333 asm volatile( \ 334 " lctl %1,%2,0(%0)\n" \ 335 : : "a" (&array), "i" (low), "i" (high), \ 336 + "m" (*(addrtype *)(&array))); \ 337 }) 338 339 #define __ctl_store(array, low, high) ({ \ 340 typedef struct { char _[sizeof(array)]; } addrtype; \ 341 asm volatile( \ 342 " stctl %2,%3,0(%1)\n" \ 343 + : "=m" (*(addrtype *)(&array)) \ 344 : "a" (&array), "i" (low), "i" (high)); \ 345 }) 346