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