summaryrefslogtreecommitdiffstats
path: root/arch/loongarch/include
diff options
context:
space:
mode:
authorWANG Rui <wangrui@loongson.cn>2023-11-21 15:03:25 +0800
committerHuacai Chen <chenhuacai@loongson.cn>2023-11-21 15:03:25 +0800
commitaa0cbc1b506b090c3a775b547c693ada108cc0d7 (patch)
tree84034641fdf0fc52a79a75cb4fc6d0472eb7f0af /arch/loongarch/include
parentcbfd44bd5c6eec0aada0c39130f0b8d7ecba0529 (diff)
downloadlinux-stable-aa0cbc1b506b090c3a775b547c693ada108cc0d7.tar.gz
linux-stable-aa0cbc1b506b090c3a775b547c693ada108cc0d7.tar.bz2
linux-stable-aa0cbc1b506b090c3a775b547c693ada108cc0d7.zip
LoongArch: Record pc instead of offset in la_abs relocation
To clarify, the previous version functioned flawlessly. However, it's worth noting that the LLVM's LoongArch backend currently lacks support for cross-section label calculations. With this patch, we enable the use of clang to compile relocatable kernels. Tested-by: Nathan Chancellor <nathan@kernel.org> Signed-off-by: WANG Rui <wangrui@loongson.cn> Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
Diffstat (limited to 'arch/loongarch/include')
-rw-r--r--arch/loongarch/include/asm/asmmacro.h3
-rw-r--r--arch/loongarch/include/asm/setup.h2
2 files changed, 2 insertions, 3 deletions
diff --git a/arch/loongarch/include/asm/asmmacro.h b/arch/loongarch/include/asm/asmmacro.h
index c9544f358c33..655db7d7a427 100644
--- a/arch/loongarch/include/asm/asmmacro.h
+++ b/arch/loongarch/include/asm/asmmacro.h
@@ -609,8 +609,7 @@
lu32i.d \reg, 0
lu52i.d \reg, \reg, 0
.pushsection ".la_abs", "aw", %progbits
- 768:
- .dword 768b-766b
+ .dword 766b
.dword \sym
.popsection
#endif
diff --git a/arch/loongarch/include/asm/setup.h b/arch/loongarch/include/asm/setup.h
index a0bc159ce8bd..ee52fb1e9963 100644
--- a/arch/loongarch/include/asm/setup.h
+++ b/arch/loongarch/include/asm/setup.h
@@ -25,7 +25,7 @@ extern void set_merr_handler(unsigned long offset, void *addr, unsigned long len
#ifdef CONFIG_RELOCATABLE
struct rela_la_abs {
- long offset;
+ long pc;
long symvalue;
};