• Max Filippov's avatar
    xtensa: limit offsets in __loop_cache_{all,page} · be75de25
    Max Filippov authored
    When building kernel for xtensa cores with big cache lines (e.g. 128
    bytes or more) __loop_cache_all and __loop_cache_page may generate
    assembly instructions with immediate fields that are too big. This
    results in the following build errors:
    
      arch/xtensa/mm/misc.S: Assembler messages:
      arch/xtensa/mm/misc.S:464: Error: operand 2 of 'diwbi' has invalid value '256'
      arch/xtensa/mm/misc.S:464: Error: operand 2 of 'diwbi' has invalid value '384'
      arch/xtensa/kernel/head.S: Assembler messages:
      arch/xtensa/kernel/head.S:172: Error: operand 2 of 'diu' has invalid value '256'
      arch/xtensa/kernel/head.S:172: Error: operand 2 of 'diu' has invalid value '384'
      arch/xtensa/kernel/head.S:176: Error: operand 2 of 'iiu' has invalid value '256'
      arch/xtensa/kernel/head.S:176: Error: operand 2 of 'iiu' has invalid value '384'
      arch/xtensa/kernel/head.S:255: Error: operand 2 of 'diwb' has invalid value '256'
      arch/xtensa/kernel/head.S:255: Error: operand 2 of 'diwb' has invalid value '384'
    
    Add parameter max_immed to these macros and use it to limit values of
    immediate operands. Extract common code of these macros into the new
    macro __loop_cache_unroll.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarMax Filippov <jcmvbkbc@gmail.com>
    be75de25
cacheasm.h 3.79 KB