diff options
author | Helge Deller <deller@gmx.de> | 2016-10-05 16:28:46 -0400 |
---|---|---|
committer | Helge Deller <deller@gmx.de> | 2016-10-05 16:54:40 -0400 |
commit | f39cce654f9a1df331d7e1ba703f5f06a79f2159 (patch) | |
tree | 4d7e518b44cc6d9ace534bbf0af5a57caf520c8f | |
parent | 2929e738002e7d43e0409fce9f968a67a7c9b0eb (diff) |
parisc: Add cfi_startproc and cfi_endproc to assembly code
Add ENTRY_CFI() and ENDPROC_CFI() macros for dwarf debug info and
convert assembly users to new macros.
Signed-off-by: Helge Deller <deller@gmx.de>
-rw-r--r-- | arch/parisc/include/asm/dwarf.h | 23 | ||||
-rw-r--r-- | arch/parisc/include/asm/linkage.h | 12 | ||||
-rw-r--r-- | arch/parisc/kernel/entry.S | 46 | ||||
-rw-r--r-- | arch/parisc/kernel/hpmc.S | 4 | ||||
-rw-r--r-- | arch/parisc/kernel/pacache.S | 68 | ||||
-rw-r--r-- | arch/parisc/kernel/real2.S | 24 | ||||
-rw-r--r-- | arch/parisc/lib/fixup.S | 16 | ||||
-rw-r--r-- | arch/parisc/lib/lusercopy.S | 8 |
8 files changed, 121 insertions, 80 deletions
diff --git a/arch/parisc/include/asm/dwarf.h b/arch/parisc/include/asm/dwarf.h new file mode 100644 index 000000000000..8fe7d6b2cc42 --- /dev/null +++ b/arch/parisc/include/asm/dwarf.h | |||
@@ -0,0 +1,23 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2016 Helge Deller <deller@gmx.de> | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 as | ||
6 | * published by the Free Software Foundation. | ||
7 | */ | ||
8 | |||
9 | #ifndef _ASM_PARISC_DWARF_H | ||
10 | #define _ASM_PARISC_DWARF_H | ||
11 | |||
12 | #ifdef __ASSEMBLY__ | ||
13 | |||
14 | #define CFI_STARTPROC .cfi_startproc | ||
15 | #define CFI_ENDPROC .cfi_endproc | ||
16 | #define CFI_DEF_CFA .cfi_def_cfa | ||
17 | #define CFI_REGISTER .cfi_register | ||
18 | #define CFI_REL_OFFSET .cfi_rel_offset | ||
19 | #define CFI_UNDEFINED .cfi_undefined | ||
20 | |||
21 | #endif /* __ASSEMBLY__ */ | ||
22 | |||
23 | #endif /* _ASM_PARISC_DWARF_H */ | ||
diff --git a/arch/parisc/include/asm/linkage.h b/arch/parisc/include/asm/linkage.h index 0b19a7242d0c..67e6b433d399 100644 --- a/arch/parisc/include/asm/linkage.h +++ b/arch/parisc/include/asm/linkage.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef __ASM_PARISC_LINKAGE_H | 1 | #ifndef __ASM_PARISC_LINKAGE_H |
2 | #define __ASM_PARISC_LINKAGE_H | 2 | #define __ASM_PARISC_LINKAGE_H |
3 | 3 | ||
4 | #include <asm/dwarf.h> | ||
5 | |||
4 | #ifndef __ALIGN | 6 | #ifndef __ALIGN |
5 | #define __ALIGN .align 4 | 7 | #define __ALIGN .align 4 |
6 | #define __ALIGN_STR ".align 4" | 8 | #define __ALIGN_STR ".align 4" |
@@ -10,6 +12,8 @@ | |||
10 | * In parisc assembly a semicolon marks a comment while a | 12 | * In parisc assembly a semicolon marks a comment while a |
11 | * exclamation mark is used to separate independent lines. | 13 | * exclamation mark is used to separate independent lines. |
12 | */ | 14 | */ |
15 | #define ASM_NL ! | ||
16 | |||
13 | #ifdef __ASSEMBLY__ | 17 | #ifdef __ASSEMBLY__ |
14 | 18 | ||
15 | #define ENTRY(name) \ | 19 | #define ENTRY(name) \ |
@@ -26,6 +30,14 @@ name: | |||
26 | END(name) | 30 | END(name) |
27 | #endif | 31 | #endif |
28 | 32 | ||
33 | #define ENTRY_CFI(name) \ | ||
34 | ENTRY(name) ASM_NL\ | ||
35 | CFI_STARTPROC | ||
36 | |||
37 | #define ENDPROC_CFI(name) \ | ||
38 | ENDPROC(name) ASM_NL\ | ||
39 | CFI_ENDPROC | ||
40 | |||
29 | #endif /* __ASSEMBLY__ */ | 41 | #endif /* __ASSEMBLY__ */ |
30 | 42 | ||
31 | #endif /* __ASM_PARISC_LINKAGE_H */ | 43 | #endif /* __ASM_PARISC_LINKAGE_H */ |
diff --git a/arch/parisc/kernel/entry.S b/arch/parisc/kernel/entry.S index baa3d9d6e971..4fcff2dcc9c3 100644 --- a/arch/parisc/kernel/entry.S +++ b/arch/parisc/kernel/entry.S | |||
@@ -766,7 +766,7 @@ ENTRY(end_fault_vector) | |||
766 | * copy_thread moved args into task save area. | 766 | * copy_thread moved args into task save area. |
767 | */ | 767 | */ |
768 | 768 | ||
769 | ENTRY(ret_from_kernel_thread) | 769 | ENTRY_CFI(ret_from_kernel_thread) |
770 | 770 | ||
771 | /* Call schedule_tail first though */ | 771 | /* Call schedule_tail first though */ |
772 | BL schedule_tail, %r2 | 772 | BL schedule_tail, %r2 |
@@ -782,7 +782,7 @@ ENTRY(ret_from_kernel_thread) | |||
782 | copy %r31, %r2 | 782 | copy %r31, %r2 |
783 | b finish_child_return | 783 | b finish_child_return |
784 | nop | 784 | nop |
785 | ENDPROC(ret_from_kernel_thread) | 785 | ENDPROC_CFI(ret_from_kernel_thread) |
786 | 786 | ||
787 | 787 | ||
788 | /* | 788 | /* |
@@ -790,7 +790,7 @@ ENDPROC(ret_from_kernel_thread) | |||
790 | * struct task_struct *next) | 790 | * struct task_struct *next) |
791 | * | 791 | * |
792 | * switch kernel stacks and return prev */ | 792 | * switch kernel stacks and return prev */ |
793 | ENTRY(_switch_to) | 793 | ENTRY_CFI(_switch_to) |
794 | STREG %r2, -RP_OFFSET(%r30) | 794 | STREG %r2, -RP_OFFSET(%r30) |
795 | 795 | ||
796 | callee_save_float | 796 | callee_save_float |
@@ -815,7 +815,7 @@ _switch_to_ret: | |||
815 | LDREG -RP_OFFSET(%r30), %r2 | 815 | LDREG -RP_OFFSET(%r30), %r2 |
816 | bv %r0(%r2) | 816 | bv %r0(%r2) |
817 | copy %r26, %r28 | 817 | copy %r26, %r28 |
818 | ENDPROC(_switch_to) | 818 | ENDPROC_CFI(_switch_to) |
819 | 819 | ||
820 | /* | 820 | /* |
821 | * Common rfi return path for interruptions, kernel execve, and | 821 | * Common rfi return path for interruptions, kernel execve, and |
@@ -833,7 +833,7 @@ ENDPROC(_switch_to) | |||
833 | 833 | ||
834 | .align PAGE_SIZE | 834 | .align PAGE_SIZE |
835 | 835 | ||
836 | ENTRY(syscall_exit_rfi) | 836 | ENTRY_CFI(syscall_exit_rfi) |
837 | mfctl %cr30,%r16 | 837 | mfctl %cr30,%r16 |
838 | LDREG TI_TASK(%r16), %r16 /* thread_info -> task_struct */ | 838 | LDREG TI_TASK(%r16), %r16 /* thread_info -> task_struct */ |
839 | ldo TASK_REGS(%r16),%r16 | 839 | ldo TASK_REGS(%r16),%r16 |
@@ -1037,12 +1037,12 @@ intr_extint: | |||
1037 | 1037 | ||
1038 | b do_cpu_irq_mask | 1038 | b do_cpu_irq_mask |
1039 | ldo R%intr_return(%r2), %r2 /* return to intr_return, not here */ | 1039 | ldo R%intr_return(%r2), %r2 /* return to intr_return, not here */ |
1040 | ENDPROC(syscall_exit_rfi) | 1040 | ENDPROC_CFI(syscall_exit_rfi) |
1041 | 1041 | ||
1042 | 1042 | ||
1043 | /* Generic interruptions (illegal insn, unaligned, page fault, etc) */ | 1043 | /* Generic interruptions (illegal insn, unaligned, page fault, etc) */ |
1044 | 1044 | ||
1045 | ENTRY(intr_save) /* for os_hpmc */ | 1045 | ENTRY_CFI(intr_save) /* for os_hpmc */ |
1046 | mfsp %sr7,%r16 | 1046 | mfsp %sr7,%r16 |
1047 | cmpib,COND(=),n 0,%r16,1f | 1047 | cmpib,COND(=),n 0,%r16,1f |
1048 | get_stack_use_cr30 | 1048 | get_stack_use_cr30 |
@@ -1117,7 +1117,7 @@ skip_save_ior: | |||
1117 | 1117 | ||
1118 | b handle_interruption | 1118 | b handle_interruption |
1119 | ldo R%intr_check_sig(%r2), %r2 | 1119 | ldo R%intr_check_sig(%r2), %r2 |
1120 | ENDPROC(intr_save) | 1120 | ENDPROC_CFI(intr_save) |
1121 | 1121 | ||
1122 | 1122 | ||
1123 | /* | 1123 | /* |
@@ -1720,7 +1720,7 @@ dtlb_fault: | |||
1720 | .endm | 1720 | .endm |
1721 | 1721 | ||
1722 | .macro fork_like name | 1722 | .macro fork_like name |
1723 | ENTRY(sys_\name\()_wrapper) | 1723 | ENTRY_CFI(sys_\name\()_wrapper) |
1724 | LDREG TI_TASK-THREAD_SZ_ALGN-FRAME_SIZE(%r30), %r1 | 1724 | LDREG TI_TASK-THREAD_SZ_ALGN-FRAME_SIZE(%r30), %r1 |
1725 | ldo TASK_REGS(%r1),%r1 | 1725 | ldo TASK_REGS(%r1),%r1 |
1726 | reg_save %r1 | 1726 | reg_save %r1 |
@@ -1728,7 +1728,7 @@ ENTRY(sys_\name\()_wrapper) | |||
1728 | ldil L%sys_\name, %r31 | 1728 | ldil L%sys_\name, %r31 |
1729 | be R%sys_\name(%sr4,%r31) | 1729 | be R%sys_\name(%sr4,%r31) |
1730 | STREG %r28, PT_CR27(%r1) | 1730 | STREG %r28, PT_CR27(%r1) |
1731 | ENDPROC(sys_\name\()_wrapper) | 1731 | ENDPROC_CFI(sys_\name\()_wrapper) |
1732 | .endm | 1732 | .endm |
1733 | 1733 | ||
1734 | fork_like clone | 1734 | fork_like clone |
@@ -1736,7 +1736,7 @@ fork_like fork | |||
1736 | fork_like vfork | 1736 | fork_like vfork |
1737 | 1737 | ||
1738 | /* Set the return value for the child */ | 1738 | /* Set the return value for the child */ |
1739 | ENTRY(child_return) | 1739 | ENTRY_CFI(child_return) |
1740 | BL schedule_tail, %r2 | 1740 | BL schedule_tail, %r2 |
1741 | nop | 1741 | nop |
1742 | finish_child_return: | 1742 | finish_child_return: |
@@ -1748,9 +1748,9 @@ finish_child_return: | |||
1748 | reg_restore %r1 | 1748 | reg_restore %r1 |
1749 | b syscall_exit | 1749 | b syscall_exit |
1750 | copy %r0,%r28 | 1750 | copy %r0,%r28 |
1751 | ENDPROC(child_return) | 1751 | ENDPROC_CFI(child_return) |
1752 | 1752 | ||
1753 | ENTRY(sys_rt_sigreturn_wrapper) | 1753 | ENTRY_CFI(sys_rt_sigreturn_wrapper) |
1754 | LDREG TI_TASK-THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r26 | 1754 | LDREG TI_TASK-THREAD_SZ_ALGN-FRAME_SIZE(%r30),%r26 |
1755 | ldo TASK_REGS(%r26),%r26 /* get pt regs */ | 1755 | ldo TASK_REGS(%r26),%r26 /* get pt regs */ |
1756 | /* Don't save regs, we are going to restore them from sigcontext. */ | 1756 | /* Don't save regs, we are going to restore them from sigcontext. */ |
@@ -1778,9 +1778,9 @@ ENTRY(sys_rt_sigreturn_wrapper) | |||
1778 | */ | 1778 | */ |
1779 | bv %r0(%r2) | 1779 | bv %r0(%r2) |
1780 | LDREG PT_GR28(%r1),%r28 /* reload original r28 for syscall_exit */ | 1780 | LDREG PT_GR28(%r1),%r28 /* reload original r28 for syscall_exit */ |
1781 | ENDPROC(sys_rt_sigreturn_wrapper) | 1781 | ENDPROC_CFI(sys_rt_sigreturn_wrapper) |
1782 | 1782 | ||
1783 | ENTRY(syscall_exit) | 1783 | ENTRY_CFI(syscall_exit) |
1784 | /* NOTE: Not all syscalls exit this way. rt_sigreturn will exit | 1784 | /* NOTE: Not all syscalls exit this way. rt_sigreturn will exit |
1785 | * via syscall_exit_rfi if the signal was received while the process | 1785 | * via syscall_exit_rfi if the signal was received while the process |
1786 | * was running. | 1786 | * was running. |
@@ -1979,7 +1979,7 @@ syscall_do_resched: | |||
1979 | #else | 1979 | #else |
1980 | nop | 1980 | nop |
1981 | #endif | 1981 | #endif |
1982 | ENDPROC(syscall_exit) | 1982 | ENDPROC_CFI(syscall_exit) |
1983 | 1983 | ||
1984 | 1984 | ||
1985 | #ifdef CONFIG_FUNCTION_TRACER | 1985 | #ifdef CONFIG_FUNCTION_TRACER |
@@ -2023,7 +2023,7 @@ ENDPROC(mcount) | |||
2023 | .align 8 | 2023 | .align 8 |
2024 | .globl return_to_handler | 2024 | .globl return_to_handler |
2025 | .type return_to_handler, @function | 2025 | .type return_to_handler, @function |
2026 | ENTRY(return_to_handler) | 2026 | ENTRY_CFI(return_to_handler) |
2027 | .proc | 2027 | .proc |
2028 | .callinfo caller,frame=FRAME_SIZE | 2028 | .callinfo caller,frame=FRAME_SIZE |
2029 | .entry | 2029 | .entry |
@@ -2067,7 +2067,7 @@ parisc_return_to_handler: | |||
2067 | LDREGM -FRAME_SIZE(%sp),%r3 | 2067 | LDREGM -FRAME_SIZE(%sp),%r3 |
2068 | .exit | 2068 | .exit |
2069 | .procend | 2069 | .procend |
2070 | ENDPROC(return_to_handler) | 2070 | ENDPROC_CFI(return_to_handler) |
2071 | 2071 | ||
2072 | #endif /* CONFIG_FUNCTION_GRAPH_TRACER */ | 2072 | #endif /* CONFIG_FUNCTION_GRAPH_TRACER */ |
2073 | 2073 | ||
@@ -2076,7 +2076,7 @@ ENDPROC(return_to_handler) | |||
2076 | #ifdef CONFIG_IRQSTACKS | 2076 | #ifdef CONFIG_IRQSTACKS |
2077 | /* void call_on_stack(unsigned long param1, void *func, | 2077 | /* void call_on_stack(unsigned long param1, void *func, |
2078 | unsigned long new_stack) */ | 2078 | unsigned long new_stack) */ |
2079 | ENTRY(call_on_stack) | 2079 | ENTRY_CFI(call_on_stack) |
2080 | copy %sp, %r1 | 2080 | copy %sp, %r1 |
2081 | 2081 | ||
2082 | /* Regarding the HPPA calling conventions for function pointers, | 2082 | /* Regarding the HPPA calling conventions for function pointers, |
@@ -2112,10 +2112,10 @@ ENTRY(call_on_stack) | |||
2112 | bv (%rp) | 2112 | bv (%rp) |
2113 | LDREG -68(%sp), %sp | 2113 | LDREG -68(%sp), %sp |
2114 | # endif /* CONFIG_64BIT */ | 2114 | # endif /* CONFIG_64BIT */ |
2115 | ENDPROC(call_on_stack) | 2115 | ENDPROC_CFI(call_on_stack) |
2116 | #endif /* CONFIG_IRQSTACKS */ | 2116 | #endif /* CONFIG_IRQSTACKS */ |
2117 | 2117 | ||
2118 | get_register: | 2118 | ENTRY_CFI(get_register) |
2119 | /* | 2119 | /* |
2120 | * get_register is used by the non access tlb miss handlers to | 2120 | * get_register is used by the non access tlb miss handlers to |
2121 | * copy the value of the general register specified in r8 into | 2121 | * copy the value of the general register specified in r8 into |
@@ -2192,9 +2192,10 @@ get_register: | |||
2192 | copy %r30,%r1 | 2192 | copy %r30,%r1 |
2193 | bv %r0(%r25) /* r31 */ | 2193 | bv %r0(%r25) /* r31 */ |
2194 | copy %r31,%r1 | 2194 | copy %r31,%r1 |
2195 | ENDPROC_CFI(get_register) | ||
2195 | 2196 | ||
2196 | 2197 | ||
2197 | set_register: | 2198 | ENTRY_CFI(set_register) |
2198 | /* | 2199 | /* |
2199 | * set_register is used by the non access tlb miss handlers to | 2200 | * set_register is used by the non access tlb miss handlers to |
2200 | * copy the value of r1 into the general register specified in | 2201 | * copy the value of r1 into the general register specified in |
@@ -2266,4 +2267,5 @@ set_register: | |||
2266 | copy %r1,%r30 | 2267 | copy %r1,%r30 |
2267 | bv %r0(%r25) /* r31 */ | 2268 | bv %r0(%r25) /* r31 */ |
2268 | copy %r1,%r31 | 2269 | copy %r1,%r31 |
2270 | ENDPROC_CFI(set_register) | ||
2269 | 2271 | ||
diff --git a/arch/parisc/kernel/hpmc.S b/arch/parisc/kernel/hpmc.S index 8b8702053f1e..0fbd0a0e1cda 100644 --- a/arch/parisc/kernel/hpmc.S +++ b/arch/parisc/kernel/hpmc.S | |||
@@ -83,7 +83,7 @@ END(hpmc_pim_data) | |||
83 | .text | 83 | .text |
84 | 84 | ||
85 | .import intr_save, code | 85 | .import intr_save, code |
86 | ENTRY(os_hpmc) | 86 | ENTRY_CFI(os_hpmc) |
87 | .os_hpmc: | 87 | .os_hpmc: |
88 | 88 | ||
89 | /* | 89 | /* |
@@ -299,7 +299,7 @@ os_hpmc_6: | |||
299 | 299 | ||
300 | b . | 300 | b . |
301 | nop | 301 | nop |
302 | ENDPROC(os_hpmc) | 302 | ENDPROC_CFI(os_hpmc) |
303 | .os_hpmc_end: | 303 | .os_hpmc_end: |
304 | 304 | ||
305 | 305 | ||
diff --git a/arch/parisc/kernel/pacache.S b/arch/parisc/kernel/pacache.S index 1250c02201bb..985e06da37f5 100644 --- a/arch/parisc/kernel/pacache.S +++ b/arch/parisc/kernel/pacache.S | |||
@@ -41,7 +41,7 @@ | |||
41 | .text | 41 | .text |
42 | .align 128 | 42 | .align 128 |
43 | 43 | ||
44 | ENTRY(flush_tlb_all_local) | 44 | ENTRY_CFI(flush_tlb_all_local) |
45 | .proc | 45 | .proc |
46 | .callinfo NO_CALLS | 46 | .callinfo NO_CALLS |
47 | .entry | 47 | .entry |
@@ -190,11 +190,11 @@ fdtdone: | |||
190 | 190 | ||
191 | .exit | 191 | .exit |
192 | .procend | 192 | .procend |
193 | ENDPROC(flush_tlb_all_local) | 193 | ENDPROC_CFI(flush_tlb_all_local) |
194 | 194 | ||
195 | .import cache_info,data | 195 | .import cache_info,data |
196 | 196 | ||
197 | ENTRY(flush_instruction_cache_local) | 197 | ENTRY_CFI(flush_instruction_cache_local) |
198 | .proc | 198 | .proc |
199 | .callinfo NO_CALLS | 199 | .callinfo NO_CALLS |
200 | .entry | 200 | .entry |
@@ -257,11 +257,11 @@ fisync: | |||
257 | .exit | 257 | .exit |
258 | 258 | ||
259 | .procend | 259 | .procend |
260 | ENDPROC(flush_instruction_cache_local) | 260 | ENDPROC_CFI(flush_instruction_cache_local) |
261 | 261 | ||
262 | 262 | ||
263 | .import cache_info, data | 263 | .import cache_info, data |
264 | ENTRY(flush_data_cache_local) | 264 | ENTRY_CFI(flush_data_cache_local) |
265 | .proc | 265 | .proc |
266 | .callinfo NO_CALLS | 266 | .callinfo NO_CALLS |
267 | .entry | 267 | .entry |
@@ -325,7 +325,7 @@ fdsync: | |||
325 | .exit | 325 | .exit |
326 | 326 | ||
327 | .procend | 327 | .procend |
328 | ENDPROC(flush_data_cache_local) | 328 | ENDPROC_CFI(flush_data_cache_local) |
329 | 329 | ||
330 | .align 16 | 330 | .align 16 |
331 | 331 | ||
@@ -356,7 +356,7 @@ ENDPROC(flush_data_cache_local) | |||
356 | 356 | ||
357 | /* Clear page using kernel mapping. */ | 357 | /* Clear page using kernel mapping. */ |
358 | 358 | ||
359 | ENTRY(clear_page_asm) | 359 | ENTRY_CFI(clear_page_asm) |
360 | .proc | 360 | .proc |
361 | .callinfo NO_CALLS | 361 | .callinfo NO_CALLS |
362 | .entry | 362 | .entry |
@@ -422,11 +422,11 @@ ENTRY(clear_page_asm) | |||
422 | .exit | 422 | .exit |
423 | 423 | ||
424 | .procend | 424 | .procend |
425 | ENDPROC(clear_page_asm) | 425 | ENDPROC_CFI(clear_page_asm) |
426 | 426 | ||
427 | /* Copy page using kernel mapping. */ | 427 | /* Copy page using kernel mapping. */ |
428 | 428 | ||
429 | ENTRY(copy_page_asm) | 429 | ENTRY_CFI(copy_page_asm) |
430 | .proc | 430 | .proc |
431 | .callinfo NO_CALLS | 431 | .callinfo NO_CALLS |
432 | .entry | 432 | .entry |
@@ -540,7 +540,7 @@ ENTRY(copy_page_asm) | |||
540 | .exit | 540 | .exit |
541 | 541 | ||
542 | .procend | 542 | .procend |
543 | ENDPROC(copy_page_asm) | 543 | ENDPROC_CFI(copy_page_asm) |
544 | 544 | ||
545 | /* | 545 | /* |
546 | * NOTE: Code in clear_user_page has a hard coded dependency on the | 546 | * NOTE: Code in clear_user_page has a hard coded dependency on the |
@@ -592,7 +592,7 @@ ENDPROC(copy_page_asm) | |||
592 | * | 592 | * |
593 | */ | 593 | */ |
594 | 594 | ||
595 | ENTRY(copy_user_page_asm) | 595 | ENTRY_CFI(copy_user_page_asm) |
596 | .proc | 596 | .proc |
597 | .callinfo NO_CALLS | 597 | .callinfo NO_CALLS |
598 | .entry | 598 | .entry |
@@ -748,9 +748,9 @@ ENTRY(copy_user_page_asm) | |||
748 | .exit | 748 | .exit |
749 | 749 | ||
750 | .procend | 750 | .procend |
751 | ENDPROC(copy_user_page_asm) | 751 | ENDPROC_CFI(copy_user_page_asm) |
752 | 752 | ||
753 | ENTRY(clear_user_page_asm) | 753 | ENTRY_CFI(clear_user_page_asm) |
754 | .proc | 754 | .proc |
755 | .callinfo NO_CALLS | 755 | .callinfo NO_CALLS |
756 | .entry | 756 | .entry |
@@ -834,9 +834,9 @@ ENTRY(clear_user_page_asm) | |||
834 | .exit | 834 | .exit |
835 | 835 | ||
836 | .procend | 836 | .procend |
837 | ENDPROC(clear_user_page_asm) | 837 | ENDPROC_CFI(clear_user_page_asm) |
838 | 838 | ||
839 | ENTRY(flush_dcache_page_asm) | 839 | ENTRY_CFI(flush_dcache_page_asm) |
840 | .proc | 840 | .proc |
841 | .callinfo NO_CALLS | 841 | .callinfo NO_CALLS |
842 | .entry | 842 | .entry |
@@ -910,9 +910,9 @@ ENTRY(flush_dcache_page_asm) | |||
910 | .exit | 910 | .exit |
911 | 911 | ||
912 | .procend | 912 | .procend |
913 | ENDPROC(flush_dcache_page_asm) | 913 | ENDPROC_CFI(flush_dcache_page_asm) |
914 | 914 | ||
915 | ENTRY(flush_icache_page_asm) | 915 | ENTRY_CFI(flush_icache_page_asm) |
916 | .proc | 916 | .proc |
917 | .callinfo NO_CALLS | 917 | .callinfo NO_CALLS |
918 | .entry | 918 | .entry |
@@ -988,9 +988,9 @@ ENTRY(flush_icache_page_asm) | |||
988 | .exit | 988 | .exit |
989 | 989 | ||
990 | .procend | 990 | .procend |
991 | ENDPROC(flush_icache_page_asm) | 991 | ENDPROC_CFI(flush_icache_page_asm) |
992 | 992 | ||
993 | ENTRY(flush_kernel_dcache_page_asm) | 993 | ENTRY_CFI(flush_kernel_dcache_page_asm) |
994 | .proc | 994 | .proc |
995 | .callinfo NO_CALLS | 995 | .callinfo NO_CALLS |
996 | .entry | 996 | .entry |
@@ -1031,9 +1031,9 @@ ENTRY(flush_kernel_dcache_page_asm) | |||
1031 | .exit | 1031 | .exit |
1032 | 1032 | ||
1033 | .procend | 1033 | .procend |
1034 | ENDPROC(flush_kernel_dcache_page_asm) | 1034 | ENDPROC_CFI(flush_kernel_dcache_page_asm) |
1035 | 1035 | ||
1036 | ENTRY(purge_kernel_dcache_page_asm) | 1036 | ENTRY_CFI(purge_kernel_dcache_page_asm) |
1037 | .proc | 1037 | .proc |
1038 | .callinfo NO_CALLS | 1038 | .callinfo NO_CALLS |
1039 | .entry | 1039 | .entry |
@@ -1073,9 +1073,9 @@ ENTRY(purge_kernel_dcache_page_asm) | |||
1073 | .exit | 1073 | .exit |
1074 | 1074 | ||
1075 | .procend | 1075 | .procend |
1076 | ENDPROC(purge_kernel_dcache_page_asm) | 1076 | ENDPROC_CFI(purge_kernel_dcache_page_asm) |
1077 | 1077 | ||
1078 | ENTRY(flush_user_dcache_range_asm) | 1078 | ENTRY_CFI(flush_user_dcache_range_asm) |
1079 | .proc | 1079 | .proc |
1080 | .callinfo NO_CALLS | 1080 | .callinfo NO_CALLS |
1081 | .entry | 1081 | .entry |
@@ -1094,9 +1094,9 @@ ENTRY(flush_user_dcache_range_asm) | |||
1094 | .exit | 1094 | .exit |
1095 | 1095 | ||
1096 | .procend | 1096 | .procend |
1097 | ENDPROC(flush_user_dcache_range_asm) | 1097 | ENDPROC_CFI(flush_user_dcache_range_asm) |
1098 | 1098 | ||
1099 | ENTRY(flush_kernel_dcache_range_asm) | 1099 | ENTRY_CFI(flush_kernel_dcache_range_asm) |
1100 | .proc | 1100 | .proc |
1101 | .callinfo NO_CALLS | 1101 | .callinfo NO_CALLS |
1102 | .entry | 1102 | .entry |
@@ -1116,9 +1116,9 @@ ENTRY(flush_kernel_dcache_range_asm) | |||
1116 | .exit | 1116 | .exit |
1117 | 1117 | ||
1118 | .procend | 1118 | .procend |
1119 | ENDPROC(flush_kernel_dcache_range_asm) | 1119 | ENDPROC_CFI(flush_kernel_dcache_range_asm) |
1120 | 1120 | ||
1121 | ENTRY(flush_user_icache_range_asm) | 1121 | ENTRY_CFI(flush_user_icache_range_asm) |
1122 | .proc | 1122 | .proc |
1123 | .callinfo NO_CALLS | 1123 | .callinfo NO_CALLS |
1124 | .entry | 1124 | .entry |
@@ -1137,9 +1137,9 @@ ENTRY(flush_user_icache_range_asm) | |||
1137 | .exit | 1137 | .exit |
1138 | 1138 | ||
1139 | .procend | 1139 | .procend |
1140 | ENDPROC(flush_user_icache_range_asm) | 1140 | ENDPROC_CFI(flush_user_icache_range_asm) |
1141 | 1141 | ||
1142 | ENTRY(flush_kernel_icache_page) | 1142 | ENTRY_CFI(flush_kernel_icache_page) |
1143 | .proc | 1143 | .proc |
1144 | .callinfo NO_CALLS | 1144 | .callinfo NO_CALLS |
1145 | .entry | 1145 | .entry |
@@ -1180,9 +1180,9 @@ ENTRY(flush_kernel_icache_page) | |||
1180 | .exit | 1180 | .exit |
1181 | 1181 | ||
1182 | .procend | 1182 | .procend |
1183 | ENDPROC(flush_kernel_icache_page) | 1183 | ENDPROC_CFI(flush_kernel_icache_page) |
1184 | 1184 | ||
1185 | ENTRY(flush_kernel_icache_range_asm) | 1185 | ENTRY_CFI(flush_kernel_icache_range_asm) |
1186 | .proc | 1186 | .proc |
1187 | .callinfo NO_CALLS | 1187 | .callinfo NO_CALLS |
1188 | .entry | 1188 | .entry |
@@ -1200,13 +1200,13 @@ ENTRY(flush_kernel_icache_range_asm) | |||
1200 | nop | 1200 | nop |
1201 | .exit | 1201 | .exit |
1202 | .procend | 1202 | .procend |
1203 | ENDPROC(flush_kernel_icache_range_asm) | 1203 | ENDPROC_CFI(flush_kernel_icache_range_asm) |
1204 | 1204 | ||
1205 | /* align should cover use of rfi in disable_sr_hashing_asm and | 1205 | /* align should cover use of rfi in disable_sr_hashing_asm and |
1206 | * srdis_done. | 1206 | * srdis_done. |
1207 | */ | 1207 | */ |
1208 | .align 256 | 1208 | .align 256 |
1209 | ENTRY(disable_sr_hashing_asm) | 1209 | ENTRY_CFI(disable_sr_hashing_asm) |
1210 | .proc | 1210 | .proc |
1211 | .callinfo NO_CALLS | 1211 | .callinfo NO_CALLS |
1212 | .entry | 1212 | .entry |
@@ -1295,6 +1295,6 @@ srdis_done: | |||
1295 | .exit | 1295 | .exit |
1296 | 1296 | ||
1297 | .procend | 1297 | .procend |
1298 | ENDPROC(disable_sr_hashing_asm) | 1298 | ENDPROC_CFI(disable_sr_hashing_asm) |
1299 | 1299 | ||
1300 | .end | 1300 | .end |
diff --git a/arch/parisc/kernel/real2.S b/arch/parisc/kernel/real2.S index 5f3d3a1f9037..1db58e546230 100644 --- a/arch/parisc/kernel/real2.S +++ b/arch/parisc/kernel/real2.S | |||
@@ -61,7 +61,7 @@ save_cr_end: | |||
61 | * iodc_fn is the IODC function to call | 61 | * iodc_fn is the IODC function to call |
62 | */ | 62 | */ |
63 | 63 | ||
64 | ENTRY(real32_call_asm) | 64 | ENTRY_CFI(real32_call_asm) |
65 | STREG %rp, -RP_OFFSET(%sp) /* save RP */ | 65 | STREG %rp, -RP_OFFSET(%sp) /* save RP */ |
66 | #ifdef CONFIG_64BIT | 66 | #ifdef CONFIG_64BIT |
67 | callee_save | 67 | callee_save |
@@ -119,14 +119,14 @@ ric_ret: | |||
119 | LDREG -RP_OFFSET(%sp), %rp /* restore RP */ | 119 | LDREG -RP_OFFSET(%sp), %rp /* restore RP */ |
120 | bv 0(%rp) | 120 | bv 0(%rp) |
121 | nop | 121 | nop |
122 | ENDPROC(real32_call_asm) | 122 | ENDPROC_CFI(real32_call_asm) |
123 | 123 | ||
124 | 124 | ||
125 | # define PUSH_CR(r, where) mfctl r, %r1 ! STREG,ma %r1, REG_SZ(where) | 125 | # define PUSH_CR(r, where) mfctl r, %r1 ! STREG,ma %r1, REG_SZ(where) |
126 | # define POP_CR(r, where) LDREG,mb -REG_SZ(where), %r1 ! mtctl %r1, r | 126 | # define POP_CR(r, where) LDREG,mb -REG_SZ(where), %r1 ! mtctl %r1, r |
127 | 127 | ||
128 | .text | 128 | .text |
129 | save_control_regs: | 129 | ENTRY_CFI(save_control_regs) |
130 | load32 PA(save_cr_space), %r28 | 130 | load32 PA(save_cr_space), %r28 |
131 | PUSH_CR(%cr24, %r28) | 131 | PUSH_CR(%cr24, %r28) |
132 | PUSH_CR(%cr25, %r28) | 132 | PUSH_CR(%cr25, %r28) |
@@ -139,8 +139,9 @@ save_control_regs: | |||
139 | PUSH_CR(%cr15, %r28) | 139 | PUSH_CR(%cr15, %r28) |
140 | bv 0(%r2) | 140 | bv 0(%r2) |
141 | nop | 141 | nop |
142 | ENDPROC_CFI(save_control_regs) | ||
142 | 143 | ||
143 | restore_control_regs: | 144 | ENTRY_CFI(restore_control_regs) |
144 | load32 PA(save_cr_end), %r26 | 145 | load32 PA(save_cr_end), %r26 |
145 | POP_CR(%cr15, %r26) | 146 | POP_CR(%cr15, %r26) |
146 | POP_CR(%cr31, %r26) | 147 | POP_CR(%cr31, %r26) |
@@ -153,13 +154,14 @@ restore_control_regs: | |||
153 | POP_CR(%cr24, %r26) | 154 | POP_CR(%cr24, %r26) |
154 | bv 0(%r2) | 155 | bv 0(%r2) |
155 | nop | 156 | nop |
157 | ENDPROC_CFI(restore_control_regs) | ||
156 | 158 | ||
157 | /* rfi_virt2real() and rfi_real2virt() could perhaps be adapted for | 159 | /* rfi_virt2real() and rfi_real2virt() could perhaps be adapted for |
158 | * more general-purpose use by the several places which need RFIs | 160 | * more general-purpose use by the several places which need RFIs |
159 | */ | 161 | */ |
160 | .text | 162 | .text |
161 | .align 128 | 163 | .align 128 |
162 | rfi_virt2real: | 164 | ENTRY_CFI(rfi_virt2real) |
163 | /* switch to real mode... */ | 165 | /* switch to real mode... */ |
164 | rsm PSW_SM_I,%r0 | 166 | rsm PSW_SM_I,%r0 |
165 | load32 PA(rfi_v2r_1), %r1 | 167 | load32 PA(rfi_v2r_1), %r1 |
@@ -191,10 +193,11 @@ rfi_v2r_1: | |||
191 | tophys_r1 %r2 | 193 | tophys_r1 %r2 |
192 | bv 0(%r2) | 194 | bv 0(%r2) |
193 | nop | 195 | nop |
196 | ENDPROC_CFI(rfi_virt2real) | ||
194 | 197 | ||
195 | .text | 198 | .text |
196 | .align 128 | 199 | .align 128 |
197 | rfi_real2virt: | 200 | ENTRY_CFI(rfi_real2virt) |
198 | rsm PSW_SM_I,%r0 | 201 | rsm PSW_SM_I,%r0 |
199 | load32 (rfi_r2v_1), %r1 | 202 | load32 (rfi_r2v_1), %r1 |
200 | nop | 203 | nop |
@@ -225,6 +228,7 @@ rfi_r2v_1: | |||
225 | tovirt_r1 %r2 | 228 | tovirt_r1 %r2 |
226 | bv 0(%r2) | 229 | bv 0(%r2) |
227 | nop | 230 | nop |
231 | ENDPROC_CFI(rfi_real2virt) | ||
228 | 232 | ||
229 | #ifdef CONFIG_64BIT | 233 | #ifdef CONFIG_64BIT |
230 | 234 | ||
@@ -238,7 +242,7 @@ rfi_r2v_1: | |||
238 | * arg0p points to where saved arg values may be found | 242 | * arg0p points to where saved arg values may be found |
239 | * iodc_fn is the IODC function to call | 243 | * iodc_fn is the IODC function to call |
240 | */ | 244 | */ |
241 | ENTRY(real64_call_asm) | 245 | ENTRY_CFI(real64_call_asm) |
242 | std %rp, -0x10(%sp) /* save RP */ | 246 | std %rp, -0x10(%sp) /* save RP */ |
243 | std %sp, -8(%arg0) /* save SP on real-mode stack */ | 247 | std %sp, -8(%arg0) /* save SP on real-mode stack */ |
244 | copy %arg0, %sp /* adopt the real-mode SP */ | 248 | copy %arg0, %sp /* adopt the real-mode SP */ |
@@ -284,7 +288,7 @@ r64_ret: | |||
284 | ldd -0x10(%sp), %rp /* restore RP */ | 288 | ldd -0x10(%sp), %rp /* restore RP */ |
285 | bv 0(%rp) | 289 | bv 0(%rp) |
286 | nop | 290 | nop |
287 | ENDPROC(real64_call_asm) | 291 | ENDPROC_CFI(real64_call_asm) |
288 | 292 | ||
289 | #endif | 293 | #endif |
290 | 294 | ||
@@ -293,12 +297,12 @@ ENDPROC(real64_call_asm) | |||
293 | ** GCC 3.3 and later has a new function in libgcc.a for | 297 | ** GCC 3.3 and later has a new function in libgcc.a for |
294 | ** comparing function pointers. | 298 | ** comparing function pointers. |
295 | */ | 299 | */ |
296 | ENTRY(__canonicalize_funcptr_for_compare) | 300 | ENTRY_CFI(__canonicalize_funcptr_for_compare) |
297 | #ifdef CONFIG_64BIT | 301 | #ifdef CONFIG_64BIT |
298 | bve (%r2) | 302 | bve (%r2) |
299 | #else | 303 | #else |
300 | bv %r0(%r2) | 304 | bv %r0(%r2) |
301 | #endif | 305 | #endif |
302 | copy %r26,%r28 | 306 | copy %r26,%r28 |
303 | ENDPROC(__canonicalize_funcptr_for_compare) | 307 | ENDPROC_CFI(__canonicalize_funcptr_for_compare) |
304 | 308 | ||
diff --git a/arch/parisc/lib/fixup.S b/arch/parisc/lib/fixup.S index 1052b747e011..a5b72f22c7a6 100644 --- a/arch/parisc/lib/fixup.S +++ b/arch/parisc/lib/fixup.S | |||
@@ -65,34 +65,34 @@ | |||
65 | .section .fixup, "ax" | 65 | .section .fixup, "ax" |
66 | 66 | ||
67 | /* get_user() fixups, store -EFAULT in r8, and 0 in r9 */ | 67 | /* get_user() fixups, store -EFAULT in r8, and 0 in r9 */ |
68 | ENTRY(fixup_get_user_skip_1) | 68 | ENTRY_CFI(fixup_get_user_skip_1) |
69 | get_fault_ip %r1,%r8 | 69 | get_fault_ip %r1,%r8 |
70 | ldo 4(%r1), %r1 | 70 | ldo 4(%r1), %r1 |
71 | ldi -EFAULT, %r8 | 71 | ldi -EFAULT, %r8 |
72 | bv %r0(%r1) | 72 | bv %r0(%r1) |
73 | copy %r0, %r9 | 73 | copy %r0, %r9 |
74 | ENDPROC(fixup_get_user_skip_1) | 74 | ENDPROC_CFI(fixup_get_user_skip_1) |
75 | 75 | ||
76 | ENTRY(fixup_get_user_skip_2) | 76 | ENTRY_CFI(fixup_get_user_skip_2) |
77 | get_fault_ip %r1,%r8 | 77 | get_fault_ip %r1,%r8 |
78 | ldo 8(%r1), %r1 | 78 | ldo 8(%r1), %r1 |
79 | ldi -EFAULT, %r8 | 79 | ldi -EFAULT, %r8 |
80 | bv %r0(%r1) | 80 | bv %r0(%r1) |
81 | copy %r0, %r9 | 81 | copy %r0, %r9 |
82 | ENDPROC(fixup_get_user_skip_2) | 82 | ENDPROC_CFI(fixup_get_user_skip_2) |
83 | 83 | ||
84 | /* put_user() fixups, store -EFAULT in r8 */ | 84 | /* put_user() fixups, store -EFAULT in r8 */ |
85 | ENTRY(fixup_put_user_skip_1) | 85 | ENTRY_CFI(fixup_put_user_skip_1) |
86 | get_fault_ip %r1,%r8 | 86 | get_fault_ip %r1,%r8 |
87 | ldo 4(%r1), %r1 | 87 | ldo 4(%r1), %r1 |
88 | bv %r0(%r1) | 88 | bv %r0(%r1) |
89 | ldi -EFAULT, %r8 | 89 | ldi -EFAULT, %r8 |
90 | ENDPROC(fixup_put_user_skip_1) | 90 | ENDPROC_CFI(fixup_put_user_skip_1) |
91 | 91 | ||
92 | ENTRY(fixup_put_user_skip_2) | 92 | ENTRY_CFI(fixup_put_user_skip_2) |
93 | get_fault_ip %r1,%r8 | 93 | get_fault_ip %r1,%r8 |
94 | ldo 8(%r1), %r1 | 94 | ldo 8(%r1), %r1 |
95 | bv %r0(%r1) | 95 | bv %r0(%r1) |
96 | ldi -EFAULT, %r8 | 96 | ldi -EFAULT, %r8 |
97 | ENDPROC(fixup_put_user_skip_2) | 97 | ENDPROC_CFI(fixup_put_user_skip_2) |
98 | 98 | ||
diff --git a/arch/parisc/lib/lusercopy.S b/arch/parisc/lib/lusercopy.S index a512f07d4feb..56845de6b5df 100644 --- a/arch/parisc/lib/lusercopy.S +++ b/arch/parisc/lib/lusercopy.S | |||
@@ -67,7 +67,7 @@ | |||
67 | * otherwise, returns number of bytes not transferred. | 67 | * otherwise, returns number of bytes not transferred. |
68 | */ | 68 | */ |
69 | 69 | ||
70 | ENTRY(lclear_user) | 70 | ENTRY_CFI(lclear_user) |
71 | .proc | 71 | .proc |
72 | .callinfo NO_CALLS | 72 | .callinfo NO_CALLS |
73 | .entry | 73 | .entry |
@@ -81,7 +81,7 @@ $lclu_done: | |||
81 | bv %r0(%r2) | 81 | bv %r0(%r2) |
82 | copy %r25,%r28 | 82 | copy %r25,%r28 |
83 | .exit | 83 | .exit |
84 | ENDPROC(lclear_user) | 84 | ENDPROC_CFI(lclear_user) |
85 | 85 | ||
86 | .section .fixup,"ax" | 86 | .section .fixup,"ax" |
87 | 2: fixup_branch $lclu_done | 87 | 2: fixup_branch $lclu_done |
@@ -100,7 +100,7 @@ ENDPROC(lclear_user) | |||
100 | * else strlen + 1 (i.e. includes zero byte). | 100 | * else strlen + 1 (i.e. includes zero byte). |
101 | */ | 101 | */ |
102 | 102 | ||
103 | ENTRY(lstrnlen_user) | 103 | ENTRY_CFI(lstrnlen_user) |
104 | .proc | 104 | .proc |
105 | .callinfo NO_CALLS | 105 | .callinfo NO_CALLS |
106 | .entry | 106 | .entry |
@@ -120,7 +120,7 @@ $lslen_done: | |||
120 | $lslen_nzero: | 120 | $lslen_nzero: |
121 | b $lslen_done | 121 | b $lslen_done |
122 | ldo 1(%r26),%r26 /* special case for N == 0 */ | 122 | ldo 1(%r26),%r26 /* special case for N == 0 */ |
123 | ENDPROC(lstrnlen_user) | 123 | ENDPROC_CFI(lstrnlen_user) |
124 | 124 | ||
125 | .section .fixup,"ax" | 125 | .section .fixup,"ax" |
126 | 3: fixup_branch $lslen_done | 126 | 3: fixup_branch $lslen_done |