Home | History | Annotate | Download | only in arm
      1 	CODE32
      2 
      3 	EXPORT	|CrcUpdateT4@16|
      4 
      5 	AREA	|.text|, CODE, ARM
      6 
      7 	MACRO
      8 	CRC32_STEP_1
      9 
     10 	ldrb    r4, [r1], #1
     11 	subs    r2, r2, #1
     12 	eor     r4, r4, r0
     13 	and     r4, r4, #0xFF
     14 	ldr     r4, [r3, +r4, lsl #2]
     15 	eor     r0, r4, r0, lsr #8
     16 
     17 	MEND
     18 
     19 
     20 	MACRO
     21 	CRC32_STEP_4 $STREAM_WORD
     22 	
     23 	eor     r7, r7, r8
     24 	eor     r7, r7, r9
     25 	eor     r0, r0, r7
     26 	eor     r0, r0, $STREAM_WORD
     27 	ldr     $STREAM_WORD, [r1], #4
     28 	
     29 	and     r7, r0, #0xFF
     30 	and     r8, r0, #0xFF00
     31 	and     r9, r0, #0xFF0000
     32 	and     r0, r0, #0xFF000000
     33 
     34 	ldr     r7, [r6, +r7, lsl #2]
     35 	ldr     r8, [r5, +r8, lsr #6]
     36 	ldr     r9, [r4, +r9, lsr #14]
     37 	ldr     r0, [r3, +r0, lsr #22]
     38 	
     39 	MEND
     40 
     41 
     42 |CrcUpdateT4@16| PROC
     43 
     44 	stmdb   sp!, {r4-r11, lr}
     45 	cmp     r2, #0
     46 	beq     |$fin|
     47 
     48 |$v1|
     49 	tst     r1, #7
     50 	beq     |$v2|
     51 	CRC32_STEP_1
     52 	bne     |$v1|
     53 
     54 |$v2|
     55 	cmp     r2, #16
     56 	blo     |$v3|
     57 
     58 	ldr     r10, [r1], #4
     59 	ldr     r11, [r1], #4
     60 
     61 	add     r4, r3, #0x400 
     62 	add     r5, r3, #0x800
     63 	add     r6, r3, #0xC00
     64 
     65 	mov     r7, #0
     66 	mov     r8, #0
     67 	mov     r9, #0
     68 
     69 	sub     r2, r2, #16
     70 
     71 |$loop|
     72 	; pld     [r1, #0x40]
     73 
     74 	CRC32_STEP_4 r10
     75 	CRC32_STEP_4 r11
     76 
     77 	subs    r2, r2, #8
     78 	bhs     |$loop|
     79 
     80 	sub     r1, r1, #8
     81 	add     r2, r2, #16
     82 
     83 	eor     r7, r7, r8
     84 	eor     r7, r7, r9
     85 	eor     r0, r0, r7
     86 
     87 |$v3|
     88 	cmp     r2, #0
     89 	beq     |$fin|
     90 
     91 |$v4|
     92 	CRC32_STEP_1
     93 	bne     |$v4|
     94 
     95 |$fin|
     96 	ldmia   sp!, {r4-r11, pc}
     97 
     98 |CrcUpdateT4@16| ENDP
     99 
    100 	END
    101