Skip to content
  • Geert Uytterhoeven's avatar
    m32r: fix endianness constraints · c95f1211
    Geert Uytterhoeven authored
    The m32r Kconfig provides both CPU_BIG_ENDIAN and CPU_LITTLE_ENDIAN
    configuration options.  As they are user-selectable and independent,
    this allows invalid configurations:
    
      - All m32r defconfigs build a big endian kernel, but CPU_BIG_ENDIAN is
        not set, causing compiler warnings like:
    
    	include/linux/byteorder/big_endian.h:7:2: warning: #warning inconsistent configuration, needs CONFIG_CPU_BIG_ENDIAN [-Wcpp]
    	 #warning inconsistent configuration, needs CONFIG_CPU_BIG_ENDIAN
    	  ^
    
      - Since commit 5bdfca64 ("m32r: define CPU_BIG_ENDIAN"),
        building an allmodconfig or allyesconfig enables both
        CONFIG_CPU_BIG_ENDIAN and CONFIG_CPU_LITTLE_ENDIAN.
        While this did get rid of the warning above, both options are
        obviously mutually exclusive.
    
    Fix this by making only CPU_LITTLE_ENDIAN configurable by the user, as
    before, and by making sure exactly one of CPU_BIG_ENDIAN and
    CPU_LITTLE_ENDIAN is always enabled.
    
    Link: http://lkml.kernel.org/r/1509361505-18150-1-git-send-email-geert@linux-m68k.org
    Fixes: 5bdfca64
    
     ("m32r: define CPU_BIG_ENDIAN")
    Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
    Cc: Sudip Mukherjee <sudipm.mukherjee@gmail.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    c95f1211