MIPS: IP22: Fix build error due to binutils 2.25 uselessnes.
[firefly-linux-kernel-4.4.55.git] / arch / mips / mm / sc-ip22.c
index 203e4661bc81959a533b54061cd58a6b548d643d..efaf364fe5814a8f2fe0567fd21c9e8205d6f5c4 100644 (file)
@@ -39,7 +39,18 @@ static inline void indy_sc_wipe(unsigned long first, unsigned long last)
        "       li      $1, 0x80                # Go 64 bit             \n"
        "       mtc0    $1, $12                                         \n"
        "                                                               \n"
-       "       dli     $1, 0x9000000080000000                          \n"
+       "       #                                                       \n"
+       "       # Open code a dli $1, 0x9000000080000000                \n"
+       "       #                                                       \n"
+       "       # Required because binutils 2.25 will happily accept    \n"
+       "       # 64 bit instructions in .set mips3 mode but puke on    \n"
+       "       # 64 bit constants when generating 32 bit ELF           \n"
+       "       #                                                       \n"
+       "       lui     $1,0x9000                                       \n"
+       "       dsll    $1,$1,0x10                                      \n"
+       "       ori     $1,$1,0x8000                                    \n"
+       "       dsll    $1,$1,0x10                                      \n"
+       "                                                               \n"
        "       or      %0, $1                  # first line to flush   \n"
        "       or      %1, $1                  # last line to flush    \n"
        "       .set    at                                              \n"