Home | History | Annotate | Download | only in crypto
      1 #include "arm_arch.h"
      2 
      3 .text
      4 .code	32
      5 
      6 .align	5
      7 .global	_armv7_neon_probe
      8 .type	_armv7_neon_probe,%function
      9 _armv7_neon_probe:
     10 	.word	0xf26ee1fe	@ vorr	q15,q15,q15
     11 	.word	0xe12fff1e	@ bx	lr
     12 .size	_armv7_neon_probe,.-_armv7_neon_probe
     13 
     14 .global	_armv7_tick
     15 .type	_armv7_tick,%function
     16 _armv7_tick:
     17 	mrc	p15,0,r0,c9,c13,0
     18 	.word	0xe12fff1e	@ bx	lr
     19 .size	_armv7_tick,.-_armv7_tick
     20 
     21 .global	OPENSSL_atomic_add
     22 .type	OPENSSL_atomic_add,%function
     23 OPENSSL_atomic_add:
     24 #if __ARM_ARCH__>=6
     25 .Ladd:	ldrex	r2,[r0]
     26 	add	r3,r2,r1
     27 	strex	r2,r3,[r0]
     28 	cmp	r2,#0
     29 	bne	.Ladd
     30 	mov	r0,r3
     31 	.word	0xe12fff1e	@ bx	lr
     32 #else
     33 	stmdb	sp!,{r4-r6,lr}
     34 	ldr	r2,.Lspinlock
     35 	adr	r3,.Lspinlock
     36 	mov	r4,r0
     37 	mov	r5,r1
     38 	add	r6,r3,r2	@ &spinlock
     39 	b	.+8
     40 .Lspin:	bl	sched_yield
     41 	mov	r0,#-1
     42 	swp	r0,r0,[r6]
     43 	cmp	r0,#0
     44 	bne	.Lspin
     45 
     46 	ldr	r2,[r4]
     47 	add	r2,r2,r5
     48 	str	r2,[r4]
     49 	str	r0,[r6]		@ release spinlock
     50 	ldmia	sp!,{r4-r6,lr}
     51 	tst	lr,#1
     52 	moveq	pc,lr
     53 	.word	0xe12fff1e	@ bx	lr
     54 #endif
     55 .size	OPENSSL_atomic_add,.-OPENSSL_atomic_add
     56 
     57 .global	OPENSSL_cleanse
     58 .type	OPENSSL_cleanse,%function
     59 OPENSSL_cleanse:
     60 	eor	ip,ip,ip
     61 	cmp	r1,#7
     62 	subhs	r1,r1,#4
     63 	bhs	.Lot
     64 	cmp	r1,#0
     65 	beq	.Lcleanse_done
     66 .Little:
     67 	strb	ip,[r0],#1
     68 	subs	r1,r1,#1
     69 	bhi	.Little
     70 	b	.Lcleanse_done
     71 
     72 .Lot:	tst	r0,#3
     73 	beq	.Laligned
     74 	strb	ip,[r0],#1
     75 	sub	r1,r1,#1
     76 	b	.Lot
     77 .Laligned:
     78 	str	ip,[r0],#4
     79 	subs	r1,r1,#4
     80 	bhs	.Laligned
     81 	adds	r1,r1,#4
     82 	bne	.Little
     83 .Lcleanse_done:
     84 	tst	lr,#1
     85 	moveq	pc,lr
     86 	.word	0xe12fff1e	@ bx	lr
     87 .size	OPENSSL_cleanse,.-OPENSSL_cleanse
     88 
     89 .global	OPENSSL_wipe_cpu
     90 .type	OPENSSL_wipe_cpu,%function
     91 OPENSSL_wipe_cpu:
     92 	ldr	r0,.LOPENSSL_armcap
     93 	adr	r1,.LOPENSSL_armcap
     94 	ldr	r0,[r1,r0]
     95 	eor	r2,r2,r2
     96 	eor	r3,r3,r3
     97 	eor	ip,ip,ip
     98 	tst	r0,#1
     99 	beq	.Lwipe_done
    100 	.word	0xf3000150	@ veor    q0, q0, q0
    101 	.word	0xf3022152	@ veor    q1, q1, q1
    102 	.word	0xf3044154	@ veor    q2, q2, q2
    103 	.word	0xf3066156	@ veor    q3, q3, q3
    104 	.word	0xf34001f0	@ veor    q8, q8, q8
    105 	.word	0xf34221f2	@ veor    q9, q9, q9
    106 	.word	0xf34441f4	@ veor    q10, q10, q10
    107 	.word	0xf34661f6	@ veor    q11, q11, q11
    108 	.word	0xf34881f8	@ veor    q12, q12, q12
    109 	.word	0xf34aa1fa	@ veor    q13, q13, q13
    110 	.word	0xf34cc1fc	@ veor    q14, q14, q14
    111 	.word	0xf34ee1fe	@ veor    q15, q15, q15
    112 .Lwipe_done:
    113 	mov	r0,sp
    114 	tst	lr,#1
    115 	moveq	pc,lr
    116 	.word	0xe12fff1e	@ bx	lr
    117 .size	OPENSSL_wipe_cpu,.-OPENSSL_wipe_cpu
    118 
    119 .global	OPENSSL_instrument_bus
    120 .type	OPENSSL_instrument_bus,%function
    121 OPENSSL_instrument_bus:
    122 	eor	r0,r0,r0
    123 	tst	lr,#1
    124 	moveq	pc,lr
    125 	.word	0xe12fff1e	@ bx	lr
    126 .size	OPENSSL_instrument_bus,.-OPENSSL_instrument_bus
    127 
    128 .global	OPENSSL_instrument_bus2
    129 .type	OPENSSL_instrument_bus2,%function
    130 OPENSSL_instrument_bus2:
    131 	eor	r0,r0,r0
    132 	tst	lr,#1
    133 	moveq	pc,lr
    134 	.word	0xe12fff1e	@ bx	lr
    135 .size	OPENSSL_instrument_bus2,.-OPENSSL_instrument_bus2
    136 
    137 .align	5
    138 .LOPENSSL_armcap:
    139 .word	OPENSSL_armcap_P-.LOPENSSL_armcap
    140 #if __ARM_ARCH__>=6
    141 .align	5
    142 #else
    143 .Lspinlock:
    144 .word	atomic_add_spinlock-.Lspinlock
    145 .align	5
    146 
    147 .data
    148 .align	2
    149 atomic_add_spinlock:
    150 .word	0
    151 #endif
    152 
    153 .comm	OPENSSL_armcap_P,4,4
    154 .hidden	OPENSSL_armcap_P
    155