From: Xi Ruoyao <xry111@xry111.site>
To: loongarch@lists.linux.dev
Cc: linux-kernel@vger.kernel.org, WANG Xuerui <kernel@xen0n.name>,
Huacai Chen <chenhuacai@kernel.org>,
Youling Tang <tangyouling@loongson.cn>,
Jinyang He <hejinyang@loongson.cn>
Subject: [PATCH v4 3/4] LoongArch: Remove -fplt and -Wa,-mla-* from CFLAGS
Date: Fri, 29 Jul 2022 16:41:32 +0800 [thread overview]
Message-ID: <55e9722e962a3fe535f63206ac169538f902d0f2.camel@xry111.site> (raw)
In-Reply-To: <32a74a218c76611f897fd1df1ad0059068621133.camel@xry111.site>
-fplt is the default of all supported compilers (GCC, and maybe Clang in
the future), so it needs not to be explicitly specified.
-Wa,-mla-* options were used to prevent the assembler from generating
GOT accesses for "la.local" and "la.global" macros. But GCC >= 13 will
generate GOT access explicitly without use of these macros by default if
the assembler supports explicit specification for relocations. And,
it's not recommended to override the default as the use of assembler
macros may limit optimization.
Now we can handle GOT and GOT-based relocations properly, so we can
remove these options and use GOT access for both GCC 12 and 13
(or newer).
GAS <= 2.39 does not support "la.got [reg], [sym] + [offset]" with a
non-zero offset. So in the assembly code we explicitly use "la.pcrel"
instead of "la" (now defaulted to "la.got") where a PC-relative
addressing is suitable, in order to work around this limitation and keep
the compatibility with old toolchains.
Signed-off-by: Xi Ruoyao <xry111@xry111.site>
---
arch/loongarch/Makefile | 4 ----
arch/loongarch/kernel/head.S | 10 +++++-----
2 files changed, 5 insertions(+), 9 deletions(-)
diff --git a/arch/loongarch/Makefile b/arch/loongarch/Makefile
index 039dcc4fe1f3..800349ea9310 100644
--- a/arch/loongarch/Makefile
+++ b/arch/loongarch/Makefile
@@ -40,10 +40,6 @@ endif
cflags-y += -G0 -pipe -msoft-float
LDFLAGS_vmlinux += -G0 -static -n -nostdlib
-KBUILD_AFLAGS_KERNEL += -Wa,-mla-global-with-pcrel
-KBUILD_CFLAGS_KERNEL += -Wa,-mla-global-with-pcrel
-KBUILD_AFLAGS_MODULE += -Wa,-mla-global-with-abs
-KBUILD_CFLAGS_MODULE += -fplt -Wa,-mla-global-with-abs,-mla-local-with-abs
cflags-y += -ffreestanding
cflags-y += $(call cc-option, -mno-check-zero-division)
diff --git a/arch/loongarch/kernel/head.S b/arch/loongarch/kernel/head.S
index 74ea7bf6c8d6..193329ed6e8c 100644
--- a/arch/loongarch/kernel/head.S
+++ b/arch/loongarch/kernel/head.S
@@ -60,17 +60,17 @@ SYM_CODE_START(kernel_entry) # kernel entry point
la.abs t0, 0f
jirl zero, t0, 0
0:
- la t0, __bss_start # clear .bss
+ la.pcrel t0, __bss_start # clear .bss
st.d zero, t0, 0
- la t1, __bss_stop - LONGSIZE
+ la.pcrel t1, __bss_stop - LONGSIZE
1:
addi.d t0, t0, LONGSIZE
st.d zero, t0, 0
bne t0, t1, 1b
- la t0, fw_arg0
+ la.pcrel t0, fw_arg0
st.d a0, t0, 0 # firmware arguments
- la t0, fw_arg1
+ la.pcrel t0, fw_arg1
st.d a1, t0, 0
/* KSave3 used for percpu base, initialized as 0 */
@@ -78,7 +78,7 @@ SYM_CODE_START(kernel_entry) # kernel entry point
/* GPR21 used for percpu base (runtime), initialized as 0 */
or u0, zero, zero
- la tp, init_thread_union
+ la.pcrel tp, init_thread_union
/* Set the SP after an empty pt_regs. */
PTR_LI sp, (_THREAD_SIZE - 32 - PT_SIZE)
PTR_ADD sp, sp, tp
--
2.37.0
next prev parent reply other threads:[~2022-07-29 8:41 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-07-29 8:38 [PATCH v4 0/4] LoongArch: Support new relocation types Xi Ruoyao
2022-07-29 8:39 ` [PATCH v4 1/4] LoongArch: Add section of GOT for kernel module Xi Ruoyao
2022-07-29 8:40 ` [PATCH v4 2/4] LoongArch: Support R_LARCH_SOP_PUSH_GPREL relocation type in " Xi Ruoyao
2022-07-29 8:41 ` Xi Ruoyao [this message]
2022-07-29 8:42 ` [PATCH v4 4/4] LoongArch: Support modules with new relocation types Xi Ruoyao
2022-08-01 9:45 ` Youling Tang
2022-08-09 11:31 ` Youling Tang
2022-07-29 9:47 ` [PATCH v4 0/4] LoongArch: Support " WANG Xuerui
2022-07-29 9:49 ` Youling Tang
2022-07-29 10:18 ` Xi Ruoyao
2022-07-29 10:36 ` Xi Ruoyao
2022-07-29 11:45 ` Xi Ruoyao
2022-07-29 12:19 ` Youling Tang
2022-07-29 17:55 ` Xi Ruoyao
2022-07-30 2:24 ` Xi Ruoyao
2022-07-30 2:52 ` Xi Ruoyao
2022-07-30 6:14 ` Huacai Chen
[not found] ` <674cb3e9-d820-016b-a210-afd37ed6e25e@loongson.cn>
2022-07-30 9:51 ` Xi Ruoyao
2022-07-30 10:38 ` Huacai Chen
2022-07-31 3:07 ` Xi Ruoyao
2022-08-01 2:16 ` Youling Tang
2022-08-01 2:34 ` Huacai Chen
2022-08-01 4:31 ` Youling Tang
2022-08-01 9:55 ` Xi Ruoyao
2022-08-01 10:08 ` Jinyang He
2022-08-01 10:44 ` WANG Xuerui
2022-08-01 11:28 ` Youling Tang
2022-08-01 11:39 ` Xi Ruoyao
2022-08-01 12:09 ` Huacai Chen
2022-08-01 12:13 ` Youling Tang
[not found] ` <98efbf76-fbf3-f90b-82d4-bd2874088d05@loongson.cn>
2022-08-02 7:15 ` Xi Ruoyao
2022-08-27 13:20 ` Huacai Chen
2022-08-01 10:41 ` Huacai Chen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=55e9722e962a3fe535f63206ac169538f902d0f2.camel@xry111.site \
--to=xry111@xry111.site \
--cc=chenhuacai@kernel.org \
--cc=hejinyang@loongson.cn \
--cc=kernel@xen0n.name \
--cc=linux-kernel@vger.kernel.org \
--cc=loongarch@lists.linux.dev \
--cc=tangyouling@loongson.cn \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.