entry.S (ed32f8d42cee118b075e4372a55c7739a11094b2) | entry.S (52a22e6c27be9089fdd9c4e1857939f0dec8f57c) |
---|---|
1/* SPDX-License-Identifier: GPL-2.0-or-later */ 2/* 3 * Linux/PA-RISC Project (http://www.parisc-linux.org/) 4 * 5 * kernel entry points (interruptions, system call wrappers) 6 * Copyright (C) 1999,2000 Philipp Rumpf 7 * Copyright (C) 1999 SuSE GmbH Nuernberg 8 * Copyright (C) 2000 Hewlett-Packard (John Marvin) --- 1982 unchanged lines hidden (view full) --- 1991_mcount: 1992 .export _mcount,data 1993 /* 1994 * The 64bit mcount() function pointer needs 4 dwords, of which the 1995 * first two are free. We optimize it here and put 2 instructions for 1996 * calling mcount(), and 2 instructions for ftrace_stub(). That way we 1997 * have all on one L1 cacheline. 1998 */ | 1/* SPDX-License-Identifier: GPL-2.0-or-later */ 2/* 3 * Linux/PA-RISC Project (http://www.parisc-linux.org/) 4 * 5 * kernel entry points (interruptions, system call wrappers) 6 * Copyright (C) 1999,2000 Philipp Rumpf 7 * Copyright (C) 1999 SuSE GmbH Nuernberg 8 * Copyright (C) 2000 Hewlett-Packard (John Marvin) --- 1982 unchanged lines hidden (view full) --- 1991_mcount: 1992 .export _mcount,data 1993 /* 1994 * The 64bit mcount() function pointer needs 4 dwords, of which the 1995 * first two are free. We optimize it here and put 2 instructions for 1996 * calling mcount(), and 2 instructions for ftrace_stub(). That way we 1997 * have all on one L1 cacheline. 1998 */ |
1999 ldi 0, %arg3 |
|
1999 b ftrace_function_trampoline 2000 copy %r3, %arg2 /* caller original %sp */ 2001ftrace_stub: 2002 .globl ftrace_stub 2003 .type ftrace_stub, @function 2004#ifdef CONFIG_64BIT 2005 bve (%rp) 2006#else --- 36 unchanged lines hidden (view full) --- 2043 STREG %r27, 12*REG_SZ(%r3) 2044 STREG %r31, 13*REG_SZ(%r3) 2045 loadgp 2046 ldo -16(%sp),%r29 2047#endif 2048 LDREG 0(%r3), %r25 2049 copy %rp, %r26 2050 ldo -8(%r25), %r25 | 2000 b ftrace_function_trampoline 2001 copy %r3, %arg2 /* caller original %sp */ 2002ftrace_stub: 2003 .globl ftrace_stub 2004 .type ftrace_stub, @function 2005#ifdef CONFIG_64BIT 2006 bve (%rp) 2007#else --- 36 unchanged lines hidden (view full) --- 2044 STREG %r27, 12*REG_SZ(%r3) 2045 STREG %r31, 13*REG_SZ(%r3) 2046 loadgp 2047 ldo -16(%sp),%r29 2048#endif 2049 LDREG 0(%r3), %r25 2050 copy %rp, %r26 2051 ldo -8(%r25), %r25 |
2052 ldi 0, %r23 /* no pt_regs */ |
|
2051 b,l ftrace_function_trampoline, %rp 2052 copy %r3, %r24 2053 2054 LDREG -RP_OFFSET(%r3), %rp 2055 LDREG 2*REG_SZ(%r3), %r23 2056 LDREG 3*REG_SZ(%r3), %r24 2057 LDREG 4*REG_SZ(%r3), %r25 2058 LDREG 5*REG_SZ(%r3), %r26 --- 11 unchanged lines hidden (view full) --- 2070 2071 LDREGM -FTRACE_FRAME_SIZE(%sp), %r1 2072 /* Adjust return point to jump back to beginning of traced function */ 2073 ldo -4(%r1), %r1 2074 bv,n (%r1) 2075 2076ENDPROC_CFI(ftrace_caller) 2077 | 2053 b,l ftrace_function_trampoline, %rp 2054 copy %r3, %r24 2055 2056 LDREG -RP_OFFSET(%r3), %rp 2057 LDREG 2*REG_SZ(%r3), %r23 2058 LDREG 3*REG_SZ(%r3), %r24 2059 LDREG 4*REG_SZ(%r3), %r25 2060 LDREG 5*REG_SZ(%r3), %r26 --- 11 unchanged lines hidden (view full) --- 2072 2073 LDREGM -FTRACE_FRAME_SIZE(%sp), %r1 2074 /* Adjust return point to jump back to beginning of traced function */ 2075 ldo -4(%r1), %r1 2076 bv,n (%r1) 2077 2078ENDPROC_CFI(ftrace_caller) 2079 |
2080#ifdef CONFIG_HAVE_DYNAMIC_FTRACE_WITH_REGS 2081ENTRY_CFI(ftrace_regs_caller,caller,frame=FTRACE_FRAME_SIZE+PT_SZ_ALGN, 2082 CALLS,SAVE_RP,SAVE_SP) 2083ftrace_regs_caller: 2084 .global ftrace_regs_caller 2085 2086 ldo -FTRACE_FRAME_SIZE(%sp), %r1 2087 STREG %rp, -RP_OFFSET(%r1) 2088 2089 copy %sp, %r1 2090 ldo PT_SZ_ALGN(%sp), %sp 2091 2092 STREG %rp, PT_GR2(%r1) 2093 STREG %r3, PT_GR3(%r1) 2094 STREG %r4, PT_GR4(%r1) 2095 STREG %r5, PT_GR5(%r1) 2096 STREG %r6, PT_GR6(%r1) 2097 STREG %r7, PT_GR7(%r1) 2098 STREG %r8, PT_GR8(%r1) 2099 STREG %r9, PT_GR9(%r1) 2100 STREG %r10, PT_GR10(%r1) 2101 STREG %r11, PT_GR11(%r1) 2102 STREG %r12, PT_GR12(%r1) 2103 STREG %r13, PT_GR13(%r1) 2104 STREG %r14, PT_GR14(%r1) 2105 STREG %r15, PT_GR15(%r1) 2106 STREG %r16, PT_GR16(%r1) 2107 STREG %r17, PT_GR17(%r1) 2108 STREG %r18, PT_GR18(%r1) 2109 STREG %r19, PT_GR19(%r1) 2110 STREG %r20, PT_GR20(%r1) 2111 STREG %r21, PT_GR21(%r1) 2112 STREG %r22, PT_GR22(%r1) 2113 STREG %r23, PT_GR23(%r1) 2114 STREG %r24, PT_GR24(%r1) 2115 STREG %r25, PT_GR25(%r1) 2116 STREG %r26, PT_GR26(%r1) 2117 STREG %r27, PT_GR27(%r1) 2118 STREG %r28, PT_GR28(%r1) 2119 STREG %r29, PT_GR29(%r1) 2120 STREG %r30, PT_GR30(%r1) 2121 STREG %r31, PT_GR31(%r1) 2122 mfctl %cr11, %r26 2123 STREG %r26, PT_SAR(%r1) 2124 2125 copy %rp, %r26 2126 LDREG -FTRACE_FRAME_SIZE-PT_SZ_ALGN(%sp), %r25 2127 ldo -8(%r25), %r25 2128 copy %r3, %arg2 2129 b,l ftrace_function_trampoline, %rp 2130 copy %r1, %arg3 /* struct pt_regs */ 2131 2132 ldo -PT_SZ_ALGN(%sp), %r1 2133 2134 LDREG PT_SAR(%r1), %rp 2135 mtctl %rp, %cr11 2136 2137 LDREG PT_GR2(%r1), %rp 2138 LDREG PT_GR3(%r1), %r3 2139 LDREG PT_GR4(%r1), %r4 2140 LDREG PT_GR5(%r1), %r5 2141 LDREG PT_GR6(%r1), %r6 2142 LDREG PT_GR7(%r1), %r7 2143 LDREG PT_GR8(%r1), %r8 2144 LDREG PT_GR9(%r1), %r9 2145 LDREG PT_GR10(%r1),%r10 2146 LDREG PT_GR11(%r1),%r11 2147 LDREG PT_GR12(%r1),%r12 2148 LDREG PT_GR13(%r1),%r13 2149 LDREG PT_GR14(%r1),%r14 2150 LDREG PT_GR15(%r1),%r15 2151 LDREG PT_GR16(%r1),%r16 2152 LDREG PT_GR17(%r1),%r17 2153 LDREG PT_GR18(%r1),%r18 2154 LDREG PT_GR19(%r1),%r19 2155 LDREG PT_GR20(%r1),%r20 2156 LDREG PT_GR21(%r1),%r21 2157 LDREG PT_GR22(%r1),%r22 2158 LDREG PT_GR23(%r1),%r23 2159 LDREG PT_GR24(%r1),%r24 2160 LDREG PT_GR25(%r1),%r25 2161 LDREG PT_GR26(%r1),%r26 2162 LDREG PT_GR27(%r1),%r27 2163 LDREG PT_GR28(%r1),%r28 2164 LDREG PT_GR29(%r1),%r29 2165 LDREG PT_GR30(%r1),%r30 2166 LDREG PT_GR31(%r1),%r31 2167 2168 ldo -PT_SZ_ALGN(%sp), %sp 2169 LDREGM -FTRACE_FRAME_SIZE(%sp), %r1 2170 /* Adjust return point to jump back to beginning of traced function */ 2171 ldo -4(%r1), %r1 2172 bv,n (%r1) 2173 2174ENDPROC_CFI(ftrace_regs_caller) 2175 |
|
2078#endif | 2176#endif |
2177#endif |
|
2079 2080#ifdef CONFIG_FUNCTION_GRAPH_TRACER 2081 .align 8 2082ENTRY_CFI(return_to_handler, caller,frame=FRAME_SIZE) 2083 .export parisc_return_to_handler,data 2084parisc_return_to_handler: 2085 copy %r3,%r1 2086 STREG %r0,-RP_OFFSET(%sp) /* store 0 as %rp */ --- 236 unchanged lines hidden --- | 2178 2179#ifdef CONFIG_FUNCTION_GRAPH_TRACER 2180 .align 8 2181ENTRY_CFI(return_to_handler, caller,frame=FRAME_SIZE) 2182 .export parisc_return_to_handler,data 2183parisc_return_to_handler: 2184 copy %r3,%r1 2185 STREG %r0,-RP_OFFSET(%sp) /* store 0 as %rp */ --- 236 unchanged lines hidden --- |