1. 26 Nov, 2019 4 commits
    • Max Filippov's avatar
      xtensa: use macros to generate *_bit and test_and_*_bit functions · b387dc04
      Max Filippov authored
      Parameterize macros with function name, opcode and inversion pattern.
      This reduces code duplication removing 2/3 of definitions.
      Signed-off-by: default avatarMax Filippov <jcmvbkbc@gmail.com>
      b387dc04
    • Max Filippov's avatar
      xtensa: use "m" constraint instead of "a" in uaccess.h assembly · cbc6e287
      Max Filippov authored
      Use "m" constraint instead of "r" for the address, as "m" allows
      compiler to access adjacent locations using base + offset, while "r"
      requires updating the base register every time.
      Use %[mem] * 0 + v to replace offset part of %[mem] expansion with v.
      It is impossible to change address alignment through the offset part on
      xtensa, so just ignore offset in alignment checks.
      Signed-off-by: default avatarMax Filippov <jcmvbkbc@gmail.com>
      cbc6e287
    • Max Filippov's avatar
      xtensa: merge .fixup with .text · f5fae679
      Max Filippov authored
      Section .fixup contains pieces of code, merge it with the rest of the
      .text section.
      Signed-off-by: default avatarMax Filippov <jcmvbkbc@gmail.com>
      f5fae679
    • Max Filippov's avatar
      xtensa: add XIP kernel support · 7af710d9
      Max Filippov authored
      XIP (eXecute In Place) kernel image is the image that can be run
      directly from ROM, using RAM only for writable data.
      
      XIP xtensa kernel differs from regular xtensa kernel in the following
      ways:
      - it has exception/IRQ vectors merged into text section. No vectors
        relocation takes place at kernel startup.
      - .data/.bss location must be specified in the kernel configuration,
        its content is copied there in the _startup function.
      - .init.text is merged with the rest of text and is executed from ROM.
      - when MMU is used the virtual address where the kernel will be mapped
        must be specified in the kernel configuration. It may be in the KSEG
        or in the KIO, __pa macro is adjusted to be able to handle both.
      Signed-off-by: default avatarMax Filippov <jcmvbkbc@gmail.com>
      7af710d9
  2. 21 Oct, 2019 7 commits
  3. 20 Oct, 2019 6 commits
  4. 19 Oct, 2019 23 commits