]> git.baikalelectronics.ru Git - kernel.git/commit
RISC-V: Fixes to module loading
authorPalmer Dabbelt <palmer@sifive.com>
Tue, 3 Apr 2018 03:43:14 +0000 (20:43 -0700)
committerPalmer Dabbelt <palmer@sifive.com>
Tue, 3 Apr 2018 03:43:14 +0000 (20:43 -0700)
commite7612f54d25ba96f984a5c139007c7ef72fda132
tree4b736dff3d2bd1b04fe7d6b1683350e6cc5f2df7
parent5c7dbeccacd9005c395ec875e8b1cdce9e9517df
parent1792273cf7f8efb057cc7252f6b789b936c03239
RISC-V: Fixes to module loading

This cleans up the module support that was commited earlier to work with
what's actually emitted from our GCC port as it lands upstream.  Most of
the work here is adding new relocations to the kernel.

There's some limitations on module loading imposed by the kernel:

* The kernel doesn't support linker relaxation, which is necessary to
  support R_RISCV_ALIGN.  In order to get reliable module building
  you're going to need to a GCC that supports the new '-mno-relax',
  which IIRC isn't going to be out until 8.1.0.  It's somewhat unlikely
  that R_RISCV_ALIGN will appear in a module even without '-mno-relax'
  support, so issues shouldn't be common.

* There is no large code model for RISC-V, which means modules must be
  loaded within a 32-bit signed offset of the kernel.  We don't
  currently have any mechanism for ensuring this memory remains free or
  moving pages around, so issues here might be common.

I fixed a singcle merge conflict in arch/riscv/kernel/Makefile.
arch/riscv/Kconfig
arch/riscv/Makefile
arch/riscv/kernel/Makefile