aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHelge Deller <deller@gmx.de>2016-10-05 16:28:46 -0400
committerHelge Deller <deller@gmx.de>2016-10-05 16:54:40 -0400
commitf39cce654f9a1df331d7e1ba703f5f06a79f2159 (patch)
tree4d7e518b44cc6d9ace534bbf0af5a57caf520c8f
parent2929e738002e7d43e0409fce9f968a67a7c9b0eb (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.h23
-rw-r--r--arch/parisc/include/asm/linkage.h12
-rw-r--r--arch/parisc/kernel/entry.S46
-rw-r--r--arch/parisc/kernel/hpmc.S4
-rw-r--r--arch/parisc/kernel/pacache.S68
-rw-r--r--arch/parisc/kernel/real2.S24
-rw-r--r--arch/parisc/lib/fixup.S16
-rw-r--r--arch/parisc/lib/lusercopy.S8
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
769ENTRY(ret_from_kernel_thread) 769ENTRY_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
785ENDPROC(ret_from_kernel_thread) 785ENDPROC_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 */
793ENTRY(_switch_to) 793ENTRY_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
818ENDPROC(_switch_to) 818ENDPROC_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
836ENTRY(syscall_exit_rfi) 836ENTRY_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 */
1040ENDPROC(syscall_exit_rfi) 1040ENDPROC_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
1045ENTRY(intr_save) /* for os_hpmc */ 1045ENTRY_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
1120ENDPROC(intr_save) 1120ENDPROC_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
1723ENTRY(sys_\name\()_wrapper) 1723ENTRY_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)
1731ENDPROC(sys_\name\()_wrapper) 1731ENDPROC_CFI(sys_\name\()_wrapper)
1732 .endm 1732 .endm
1733 1733
1734fork_like clone 1734fork_like clone
@@ -1736,7 +1736,7 @@ fork_like fork
1736fork_like vfork 1736fork_like vfork
1737 1737
1738 /* Set the return value for the child */ 1738 /* Set the return value for the child */
1739ENTRY(child_return) 1739ENTRY_CFI(child_return)
1740 BL schedule_tail, %r2 1740 BL schedule_tail, %r2
1741 nop 1741 nop
1742finish_child_return: 1742finish_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
1751ENDPROC(child_return) 1751ENDPROC_CFI(child_return)
1752 1752
1753ENTRY(sys_rt_sigreturn_wrapper) 1753ENTRY_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 */
1781ENDPROC(sys_rt_sigreturn_wrapper) 1781ENDPROC_CFI(sys_rt_sigreturn_wrapper)
1782 1782
1783ENTRY(syscall_exit) 1783ENTRY_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
1982ENDPROC(syscall_exit) 1982ENDPROC_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
2026ENTRY(return_to_handler) 2026ENTRY_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
2070ENDPROC(return_to_handler) 2070ENDPROC_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) */
2079ENTRY(call_on_stack) 2079ENTRY_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 */
2115ENDPROC(call_on_stack) 2115ENDPROC_CFI(call_on_stack)
2116#endif /* CONFIG_IRQSTACKS */ 2116#endif /* CONFIG_IRQSTACKS */
2117 2117
2118get_register: 2118ENTRY_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
2195ENDPROC_CFI(get_register)
2195 2196
2196 2197
2197set_register: 2198ENTRY_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
2270ENDPROC_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
86ENTRY(os_hpmc) 86ENTRY_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
302ENDPROC(os_hpmc) 302ENDPROC_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
44ENTRY(flush_tlb_all_local) 44ENTRY_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
193ENDPROC(flush_tlb_all_local) 193ENDPROC_CFI(flush_tlb_all_local)
194 194
195 .import cache_info,data 195 .import cache_info,data
196 196
197ENTRY(flush_instruction_cache_local) 197ENTRY_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
260ENDPROC(flush_instruction_cache_local) 260ENDPROC_CFI(flush_instruction_cache_local)
261 261
262 262
263 .import cache_info, data 263 .import cache_info, data
264ENTRY(flush_data_cache_local) 264ENTRY_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
328ENDPROC(flush_data_cache_local) 328ENDPROC_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
359ENTRY(clear_page_asm) 359ENTRY_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
425ENDPROC(clear_page_asm) 425ENDPROC_CFI(clear_page_asm)
426 426
427/* Copy page using kernel mapping. */ 427/* Copy page using kernel mapping. */
428 428
429ENTRY(copy_page_asm) 429ENTRY_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
543ENDPROC(copy_page_asm) 543ENDPROC_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
595ENTRY(copy_user_page_asm) 595ENTRY_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
751ENDPROC(copy_user_page_asm) 751ENDPROC_CFI(copy_user_page_asm)
752 752
753ENTRY(clear_user_page_asm) 753ENTRY_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
837ENDPROC(clear_user_page_asm) 837ENDPROC_CFI(clear_user_page_asm)
838 838
839ENTRY(flush_dcache_page_asm) 839ENTRY_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
913ENDPROC(flush_dcache_page_asm) 913ENDPROC_CFI(flush_dcache_page_asm)
914 914
915ENTRY(flush_icache_page_asm) 915ENTRY_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
991ENDPROC(flush_icache_page_asm) 991ENDPROC_CFI(flush_icache_page_asm)
992 992
993ENTRY(flush_kernel_dcache_page_asm) 993ENTRY_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
1034ENDPROC(flush_kernel_dcache_page_asm) 1034ENDPROC_CFI(flush_kernel_dcache_page_asm)
1035 1035
1036ENTRY(purge_kernel_dcache_page_asm) 1036ENTRY_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
1076ENDPROC(purge_kernel_dcache_page_asm) 1076ENDPROC_CFI(purge_kernel_dcache_page_asm)
1077 1077
1078ENTRY(flush_user_dcache_range_asm) 1078ENTRY_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
1097ENDPROC(flush_user_dcache_range_asm) 1097ENDPROC_CFI(flush_user_dcache_range_asm)
1098 1098
1099ENTRY(flush_kernel_dcache_range_asm) 1099ENTRY_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
1119ENDPROC(flush_kernel_dcache_range_asm) 1119ENDPROC_CFI(flush_kernel_dcache_range_asm)
1120 1120
1121ENTRY(flush_user_icache_range_asm) 1121ENTRY_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
1140ENDPROC(flush_user_icache_range_asm) 1140ENDPROC_CFI(flush_user_icache_range_asm)
1141 1141
1142ENTRY(flush_kernel_icache_page) 1142ENTRY_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
1183ENDPROC(flush_kernel_icache_page) 1183ENDPROC_CFI(flush_kernel_icache_page)
1184 1184
1185ENTRY(flush_kernel_icache_range_asm) 1185ENTRY_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
1203ENDPROC(flush_kernel_icache_range_asm) 1203ENDPROC_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
1209ENTRY(disable_sr_hashing_asm) 1209ENTRY_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
1298ENDPROC(disable_sr_hashing_asm) 1298ENDPROC_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
64ENTRY(real32_call_asm) 64ENTRY_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
122ENDPROC(real32_call_asm) 122ENDPROC_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
129save_control_regs: 129ENTRY_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
142ENDPROC_CFI(save_control_regs)
142 143
143restore_control_regs: 144ENTRY_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
157ENDPROC_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
162rfi_virt2real: 164ENTRY_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
196ENDPROC_CFI(rfi_virt2real)
194 197
195 .text 198 .text
196 .align 128 199 .align 128
197rfi_real2virt: 200ENTRY_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
231ENDPROC_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 */
241ENTRY(real64_call_asm) 245ENTRY_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
287ENDPROC(real64_call_asm) 291ENDPROC_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 */
296ENTRY(__canonicalize_funcptr_for_compare) 300ENTRY_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
303ENDPROC(__canonicalize_funcptr_for_compare) 307ENDPROC_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 */
68ENTRY(fixup_get_user_skip_1) 68ENTRY_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
74ENDPROC(fixup_get_user_skip_1) 74ENDPROC_CFI(fixup_get_user_skip_1)
75 75
76ENTRY(fixup_get_user_skip_2) 76ENTRY_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
82ENDPROC(fixup_get_user_skip_2) 82ENDPROC_CFI(fixup_get_user_skip_2)
83 83
84 /* put_user() fixups, store -EFAULT in r8 */ 84 /* put_user() fixups, store -EFAULT in r8 */
85ENTRY(fixup_put_user_skip_1) 85ENTRY_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
90ENDPROC(fixup_put_user_skip_1) 90ENDPROC_CFI(fixup_put_user_skip_1)
91 91
92ENTRY(fixup_put_user_skip_2) 92ENTRY_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
97ENDPROC(fixup_put_user_skip_2) 97ENDPROC_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
70ENTRY(lclear_user) 70ENTRY_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
84ENDPROC(lclear_user) 84ENDPROC_CFI(lclear_user)
85 85
86 .section .fixup,"ax" 86 .section .fixup,"ax"
872: fixup_branch $lclu_done 872: 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
103ENTRY(lstrnlen_user) 103ENTRY_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 */
123ENDPROC(lstrnlen_user) 123ENDPROC_CFI(lstrnlen_user)
124 124
125 .section .fixup,"ax" 125 .section .fixup,"ax"
1263: fixup_branch $lslen_done 1263: fixup_branch $lslen_done