s390: fix clang -Wpointer-sign warnigns in boot code
authorArnd Bergmann <arnd@arndb.de>
Mon, 15 Apr 2019 08:35:54 +0000 (10:35 +0200)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Fri, 3 May 2019 15:17:58 +0000 (17:17 +0200)
The arch/s390/boot directory is built with its own set of compiler
options that does not include -Wno-pointer-sign like the rest of
the kernel does, this causes a lot of harmless but correct warnings
when building with clang.

For the atomics, we can add type casts to avoid the warnings, for
everything else the easiest way is to slightly adapt the types
to be more consistent.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/boot/ipl_parm.c
arch/s390/include/asm/bitops.h
arch/s390/include/asm/ebcdic.h
arch/s390/include/asm/lowcore.h
drivers/s390/char/sclp.h

index b49bd97d33af8be82406f9a61ddfeb068131d360..3c49bde8aa5e3d6f82d3e1c2157b35421e9cd7e4 100644 (file)
@@ -56,7 +56,7 @@ void store_ipl_parmblock(void)
                ipl_block_valid = 1;
 }
 
-static size_t scpdata_length(const char *buf, size_t count)
+static size_t scpdata_length(const u8 *buf, size_t count)
 {
        while (count) {
                if (buf[count - 1] != '\0' && buf[count - 1] != ' ')
index d1f8a4d94cca02269841b6b6e0928ac699089b6b..9900d655014cc309559450316a436d67f90c3717 100644 (file)
@@ -73,7 +73,7 @@ static inline void set_bit(unsigned long nr, volatile unsigned long *ptr)
        }
 #endif
        mask = 1UL << (nr & (BITS_PER_LONG - 1));
-       __atomic64_or(mask, addr);
+       __atomic64_or(mask, (long *)addr);
 }
 
 static inline void clear_bit(unsigned long nr, volatile unsigned long *ptr)
@@ -94,7 +94,7 @@ static inline void clear_bit(unsigned long nr, volatile unsigned long *ptr)
        }
 #endif
        mask = ~(1UL << (nr & (BITS_PER_LONG - 1)));
-       __atomic64_and(mask, addr);
+       __atomic64_and(mask, (long *)addr);
 }
 
 static inline void change_bit(unsigned long nr, volatile unsigned long *ptr)
@@ -115,7 +115,7 @@ static inline void change_bit(unsigned long nr, volatile unsigned long *ptr)
        }
 #endif
        mask = 1UL << (nr & (BITS_PER_LONG - 1));
-       __atomic64_xor(mask, addr);
+       __atomic64_xor(mask, (long *)addr);
 }
 
 static inline int
@@ -125,7 +125,7 @@ test_and_set_bit(unsigned long nr, volatile unsigned long *ptr)
        unsigned long old, mask;
 
        mask = 1UL << (nr & (BITS_PER_LONG - 1));
-       old = __atomic64_or_barrier(mask, addr);
+       old = __atomic64_or_barrier(mask, (long *)addr);
        return (old & mask) != 0;
 }
 
@@ -136,7 +136,7 @@ test_and_clear_bit(unsigned long nr, volatile unsigned long *ptr)
        unsigned long old, mask;
 
        mask = ~(1UL << (nr & (BITS_PER_LONG - 1)));
-       old = __atomic64_and_barrier(mask, addr);
+       old = __atomic64_and_barrier(mask, (long *)addr);
        return (old & ~mask) != 0;
 }
 
@@ -147,7 +147,7 @@ test_and_change_bit(unsigned long nr, volatile unsigned long *ptr)
        unsigned long old, mask;
 
        mask = 1UL << (nr & (BITS_PER_LONG - 1));
-       old = __atomic64_xor_barrier(mask, addr);
+       old = __atomic64_xor_barrier(mask, (long *)addr);
        return (old & mask) != 0;
 }
 
index 29441beb92e604ce24d03a035c1063ecc0d0b0f1..efb50fc6866cd0a60362bede8e713693b861d4b9 100644 (file)
@@ -20,7 +20,7 @@ extern __u8 _ebc_tolower[256]; /* EBCDIC -> lowercase */
 extern __u8 _ebc_toupper[256]; /* EBCDIC -> uppercase */
 
 static inline void
-codepage_convert(const __u8 *codepage, volatile __u8 * addr, unsigned long nr)
+codepage_convert(const __u8 *codepage, volatile char *addr, unsigned long nr)
 {
        if (nr-- <= 0)
                return;
index 5b9f10b1e55dec03c2878a6ab510cb0d128002e5..237ee0c4169f7c8d68bd58537d9c3982cd8f3a69 100644 (file)
@@ -129,7 +129,7 @@ struct lowcore {
        /* SMP info area */
        __u32   cpu_nr;                         /* 0x03a0 */
        __u32   softirq_pending;                /* 0x03a4 */
-       __u32   preempt_count;                  /* 0x03a8 */
+       __s32   preempt_count;                  /* 0x03a8 */
        __u32   spinlock_lockval;               /* 0x03ac */
        __u32   spinlock_index;                 /* 0x03b0 */
        __u32   fpu_flags;                      /* 0x03b4 */
index 28b433960831f360278d0bd55a5d43394e55f0e0..196333013e5435fb42ad7aa03d8dc6c938bf27b2 100644 (file)
@@ -367,14 +367,14 @@ sclp_ascebc(unsigned char ch)
 
 /* translate string from EBCDIC to ASCII */
 static inline void
-sclp_ebcasc_str(unsigned char *str, int nr)
+sclp_ebcasc_str(char *str, int nr)
 {
        (MACHINE_IS_VM) ? EBCASC(str, nr) : EBCASC_500(str, nr);
 }
 
 /* translate string from ASCII to EBCDIC */
 static inline void
-sclp_ascebc_str(unsigned char *str, int nr)
+sclp_ascebc_str(char *str, int nr)
 {
        (MACHINE_IS_VM) ? ASCEBC(str, nr) : ASCEBC_500(str, nr);
 }