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

div64.S (586B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2/*	
      3 * unsigned long __xdiv64_32(unsigned long long n, unsigned long d); 
      4 */
      5
      6#include <linux/linkage.h>
      7
      8.text
      9ENTRY(__xdiv64_32)
     10#ifdef CONFIG_CPU_LITTLE_ENDIAN
     11	mov	r4, r0
     12	mov	r5, r1
     13#else
     14	mov	r4, r1
     15	mov	r5, r0
     16#endif
     17	cmp/hs	r6, r1
     18	bf.s	1f
     19	 mov	#0, r2
     20
     21	mov	r1, r2
     22	mov	#0, r3
     23	div0u
     24	.rept	32
     25	rotcl	r2
     26	div1	r6, r3
     27	.endr
     28	rotcl	r2
     29	mul.l	r6, r2
     30	sts	macl, r3
     31	sub	r3, r1
     321:
     33	div0u
     34	.rept	32
     35	rotcl	r0
     36	div1	r6, r1
     37	.endr
     38#ifdef CONFIG_CPU_LITTLE_ENDIAN
     39	mov	r2, r1
     40	rts
     41	 rotcl	r0
     42#else
     43	rotcl	r0
     44	mov	r0, r1
     45	rts
     46	 mov	r2, r0
     47#endif