xtensa: add XIP kernel support
authorMax Filippov <jcmvbkbc@gmail.com>
Wed, 4 Jan 2017 01:57:51 +0000 (17:57 -0800)
committerMax Filippov <jcmvbkbc@gmail.com>
Tue, 26 Nov 2019 19:33:38 +0000 (11:33 -0800)
commit7af710d988775aadf440222ecbe0c10eecf3eb54
treef499a51c705441d0aa2019ef88f13e8598627b92
parent76743c0e0915af6ae1d960c14e8c1dcb3e238f23
xtensa: add XIP kernel support

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: Max Filippov <jcmvbkbc@gmail.com>
arch/xtensa/Kconfig
arch/xtensa/Makefile
arch/xtensa/boot/Makefile
arch/xtensa/configs/xip_kc705_defconfig [new file with mode: 0644]
arch/xtensa/include/asm/cache.h
arch/xtensa/include/asm/page.h
arch/xtensa/include/asm/vectors.h
arch/xtensa/kernel/head.S
arch/xtensa/kernel/setup.c
arch/xtensa/kernel/vmlinux.lds.S