• C
    s390/timex: fix get_tod_clock_ext() inline assembly · e38f9781
    Chen Gang 提交于
    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: NChen Gang <gang.chen.5i5j@gmail.com>
    Signed-off-by: NHeiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: NMartin Schwidefsky <schwidefsky@de.ibm.com>
    e38f9781
timex.h 3.7 KB