]> git.kernelconcepts.de Git - karo-tx-linux.git/commit
s390/timex: fix get_tod_clock_ext() inline assembly
authorChen Gang <gang.chen@sunrus.com.cn>
Thu, 1 Jan 2015 14:27:32 +0000 (22:27 +0800)
committerMartin Schwidefsky <schwidefsky@de.ibm.com>
Wed, 7 Jan 2015 08:52:47 +0000 (09:52 +0100)
commite38f97813302065fbc9c9eab5c1a94dc021d71e2
tree75a8e247b64343c2d00c9a2573b7cda5433bfdf3
parent98590460d44f4dc2020e594c5ac3357c8278f45b
s390/timex: fix get_tod_clock_ext() inline assembly

For C language, it treats array parameter as a pointer, so sizeof for an
array parameter is equal to sizeof for a pointer, which causes compiler
warning (with allmodconfig by gcc 5):

  ./arch/s390/include/asm/timex.h: In function 'get_tod_clock_ext':
  ./arch/s390/include/asm/timex.h:76:32: warning: 'sizeof' on array function parameter 'clk' will return size of 'char *' [-Wsizeof-array-argument]
    typedef struct { char _[sizeof(clk)]; } addrtype;
                                  ^
Can use macro CLOCK_STORE_SIZE instead of all related hard code numbers,
which also can avoid this warning. And also add a tab to CLOCK_TICK_RATE
definition to match coding styles.

[heiko.carstens@de.ibm.com]:
Chen's patch actually fixes a bug within the get_tod_clock_ext() inline assembly
where we incorrectly tell the compiler that only 8 bytes of memory get changed
instead of 16 bytes.
This would allow gcc to generate incorrect code. Right now this doesn't seem to
be the case.
Also slightly changed the patch a bit.
- renamed CLOCK_STORE_SIZE to STORE_CLOCK_EXT_SIZE
- changed get_tod_clock_ext() to receive a char pointer parameter

Signed-off-by: Chen Gang <gang.chen.5i5j@gmail.com>
Signed-off-by: Heiko Carstens <heiko.carstens@de.ibm.com>
Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com>
arch/s390/hypfs/hypfs_vm.c
arch/s390/include/asm/timex.h