1 /* SPDX-License-Identifier: GPL-2.0-only */ 1 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 8 #include <linux/pgtable.h> 9 10 #ifdef CONFIG_XIP_KERNEL 11 .macro XIP_FIXUP_OFFSET reg 12 /* Fix-up address in Flash into addres 13 * MMU is up. Because generated code " 14 * is actually in RAM (actually data i 15 * read-only, thus we need to use the 16 * 17 * The start of data in Flash is _sdat 18 * CONFIG_PHYS_RAM_BASE. So this fix-u 19 * reg += CONFIG_PHYS_RAM_BASE - _star 20 */ 21 li t0, CONFIG_PHYS_RAM_BASE 22 add \reg, \reg, t0 23 la t0, _sdata 24 sub \reg, \reg, t0 25 .endm 26 .macro XIP_FIXUP_FLASH_OFFSET reg 27 /* In linker script, at the transition 28 * writable section, the VMA is increa 29 * (See in linker script how _sdata, _ 30 * changed) 31 * 32 * Consequently, early during boot bef 33 * reads the "writable" section at wro 34 * by compiler to generate code, but t 35 * LMA. 36 */ 37 la t0, _sdata 38 sub \reg, \reg, t0 39 la t0, __data_loc 40 add \reg, \reg, t0 41 .endm 42 #else 43 .macro XIP_FIXUP_OFFSET reg 44 .endm 45 .macro XIP_FIXUP_FLASH_OFFSET reg 46 .endm 47 #endif /* CONFIG_XIP_KERNEL */ 48 49 #endif 50
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.