LoongArch: Remove the .fixup section usage
authorYouling Tang <tangyouling@loongson.cn>
Sat, 10 Dec 2022 14:39:59 +0000 (22:39 +0800)
committerHuacai Chen <chenhuacai@loongson.cn>
Wed, 14 Dec 2022 00:36:11 +0000 (08:36 +0800)
Use the `.L_xxx` label to improve fixup code and then remove the .fixup
section usage.

Signed-off-by: Youling Tang <tangyouling@loongson.cn>
Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
arch/loongarch/lib/clear_user.S
arch/loongarch/lib/copy_user.S

index 7a066d6..d5c9e44 100644 (file)
@@ -9,15 +9,11 @@
 #include <asm/export.h>
 #include <asm/regdef.h>
 
-.macro fixup_ex from, to, offset, fix
-.if \fix
-       .section .fixup, "ax"
-\to:   addi.d  a0, a1, \offset
+.irp to, 0
+.L_fixup_handle_\to\():
+       addi.d  a0, a1, (\to) * (-8)
        jr      ra
-       .previous
-.endif
-       _asm_extable \from\()b, \to\()b
-.endm
+.endr
 
 /*
  * unsigned long __clear_user(void *addr, size_t size)
@@ -36,7 +32,7 @@ SYM_FUNC_START(__clear_user)
 2:     move    a0, a1
        jr      ra
 
-       fixup_ex 1, 3, 0, 1
+       _asm_extable 1b, .L_fixup_handle_0
 SYM_FUNC_END(__clear_user)
 
 EXPORT_SYMBOL(__clear_user)
index f8ace04..61933d9 100644 (file)
@@ -9,15 +9,11 @@
 #include <asm/export.h>
 #include <asm/regdef.h>
 
-.macro fixup_ex from, to, offset, fix
-.if \fix
-       .section .fixup, "ax"
-\to:   addi.d  a0, a2, \offset
+.irp to, 0
+.L_fixup_handle_\to\():
+       addi.d  a0, a2, (\to) * (-8)
        jr      ra
-       .previous
-.endif
-       _asm_extable \from\()b, \to\()b
-.endm
+.endr
 
 /*
  * unsigned long __copy_user(void *to, const void *from, size_t n)
@@ -39,8 +35,8 @@ SYM_FUNC_START(__copy_user)
 3:     move    a0, a2
        jr      ra
 
-       fixup_ex 1, 4, 0, 1
-       fixup_ex 2, 4, 0, 0
+       _asm_extable 1b, .L_fixup_handle_0
+       _asm_extable 2b, .L_fixup_handle_0
 SYM_FUNC_END(__copy_user)
 
 EXPORT_SYMBOL(__copy_user)