xip_fixup.h 685 B

12345678910111213141516171819202122232425262728293031
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * XIP fixup macros, only useful in assembly.
  4. */
  5. #ifndef _ASM_RISCV_XIP_FIXUP_H
  6. #define _ASM_RISCV_XIP_FIXUP_H
  7. #include <linux/pgtable.h>
  8. #ifdef CONFIG_XIP_KERNEL
  9. .macro XIP_FIXUP_OFFSET reg
  10. REG_L t0, _xip_fixup
  11. add \reg, \reg, t0
  12. .endm
  13. .macro XIP_FIXUP_FLASH_OFFSET reg
  14. la t1, __data_loc
  15. REG_L t1, _xip_phys_offset
  16. sub \reg, \reg, t1
  17. add \reg, \reg, t0
  18. .endm
  19. _xip_fixup: .dword CONFIG_PHYS_RAM_BASE - CONFIG_XIP_PHYS_ADDR - XIP_OFFSET
  20. _xip_phys_offset: .dword CONFIG_XIP_PHYS_ADDR + XIP_OFFSET
  21. #else
  22. .macro XIP_FIXUP_OFFSET reg
  23. .endm
  24. .macro XIP_FIXUP_FLASH_OFFSET reg
  25. .endm
  26. #endif /* CONFIG_XIP_KERNEL */
  27. #endif