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 ---