cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

helpers.S (1477B)


      1/* SPDX-License-Identifier: GPL-2.0-only */
      2	.align	32
      3	.globl	__flushw_user
      4	.type	__flushw_user,#function
      5__flushw_user:
      6	rdpr	%otherwin, %g1
      7	brz,pn	%g1, 2f
      8	 clr	%g2
      91:	save	%sp, -128, %sp
     10	rdpr	%otherwin, %g1
     11	brnz,pt	%g1, 1b
     12	 add	%g2, 1, %g2
     131:	sub	%g2, 1, %g2
     14	brnz,pt	%g2, 1b
     15	 restore %g0, %g0, %g0
     162:	retl
     17	 nop
     18	.size	__flushw_user,.-__flushw_user
     19EXPORT_SYMBOL(__flushw_user)
     20
     21	/* Flush %fp and %i7 to the stack for all register
     22	 * windows active inside of the cpu.  This allows
     23	 * show_stack_trace() to avoid using an expensive
     24	 * 'flushw'.
     25	 */
     26	.globl		stack_trace_flush
     27	.type		stack_trace_flush,#function
     28stack_trace_flush:
     29	rdpr		%pstate, %o0
     30	wrpr		%o0, PSTATE_IE, %pstate
     31
     32	rdpr		%cwp, %g1
     33	rdpr		%canrestore, %g2
     34	sub		%g1, 1, %g3
     35
     361:	brz,pn		%g2, 2f
     37	 sub		%g2, 1, %g2
     38	wrpr		%g3, %cwp
     39	stx		%fp, [%sp + STACK_BIAS + RW_V9_I6]
     40	stx		%i7, [%sp + STACK_BIAS + RW_V9_I7]
     41	ba,pt		%xcc, 1b
     42	 sub		%g3, 1, %g3
     43
     442:	wrpr		%g1, %cwp
     45	wrpr		%o0, %pstate
     46
     47	retl
     48	 nop
     49	.size		stack_trace_flush,.-stack_trace_flush
     50
     51#ifdef CONFIG_SMP
     52	.globl		hard_smp_processor_id
     53	.type		hard_smp_processor_id,#function
     54hard_smp_processor_id:
     55#endif
     56	.globl		real_hard_smp_processor_id
     57	.type		real_hard_smp_processor_id,#function
     58real_hard_smp_processor_id:
     59	__GET_CPUID(%o0)
     60	retl
     61	 nop
     62#ifdef CONFIG_SMP
     63	.size		hard_smp_processor_id,.-hard_smp_processor_id
     64#endif
     65	.size		real_hard_smp_processor_id,.-real_hard_smp_processor_id
     66EXPORT_SYMBOL_GPL(real_hard_smp_processor_id)