[S390] clear_table inline assembly contraints
authorMartin Schwidefsky <schwidefsky@de.ibm.com>
Thu, 25 Dec 2008 12:39:26 +0000 (13:39 +0100)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Thu, 25 Dec 2008 12:39:15 +0000 (13:39 +0100)
Tell the compile that the clear_table inline assembly writes to the
memory referenced by *s.

Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/include/asm/pgalloc.h

index f5b2bf3d7c1d4b7a103e3a1089360be7669cb848..b2658b9220fee47d9512c7b01346474c321f3457 100644 (file)
@@ -28,6 +28,8 @@ void disable_noexec(struct mm_struct *, struct task_struct *);
 
 static inline void clear_table(unsigned long *s, unsigned long val, size_t n)
 {
+       typedef struct { char _[n]; } addrtype;
+
        *s = val;
        n = (n / 256) - 1;
        asm volatile(
@@ -39,7 +41,8 @@ static inline void clear_table(unsigned long *s, unsigned long val, size_t n)
                "0:     mvc     256(256,%0),0(%0)\n"
                "       la      %0,256(%0)\n"
                "       brct    %1,0b\n"
-               : "+a" (s), "+d" (n));
+               : "+a" (s), "+d" (n), "=m" (*(addrtype *) s)
+               : "m" (*(addrtype *) s));
 }
 
 static inline void crst_table_init(unsigned long *crst, unsigned long entry)