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