f0d81ffd1c
which included commits to RCS files with non-trunk default branches. git-svn-id: svn://10.65.10.50/trunk@5403 c028cbd2-c16b-5b4b-a496-9718f37d4682
92 lines
1.7 KiB
ArmAsm
Executable File
92 lines
1.7 KiB
ArmAsm
Executable File
.text
|
|
|
|
.globl _crc32 ; (ulg val, uch *buf, extent bufsize)
|
|
.globl _get_crc_table ; ulg *get_crc_table(void)
|
|
|
|
_crc32:
|
|
move.l 8(sp),d0
|
|
bne valid
|
|
moveq #0,d0
|
|
rts
|
|
valid: movem.l d2/d3,-(sp)
|
|
jsr _get_crc_table
|
|
move.l d0,a0
|
|
move.l 12(sp),d0
|
|
move.l 16(sp),a1
|
|
move.l 20(sp),d1
|
|
not.l d0
|
|
|
|
move.l d1,d2
|
|
lsr.l #3,d1
|
|
bra decr8
|
|
loop8: moveq #0,d3
|
|
move.b (a1)+,d3
|
|
eor.b d0,d3
|
|
lsl.w #2,d3
|
|
move.l 0(a0,d3.w),d3
|
|
lsr.l #8,d0
|
|
eor.l d3,d0
|
|
moveq #0,d3
|
|
move.b (a1)+,d3
|
|
eor.b d0,d3
|
|
lsl.w #2,d3
|
|
move.l 0(a0,d3.w),d3
|
|
lsr.l #8,d0
|
|
eor.l d3,d0
|
|
moveq #0,d3
|
|
move.b (a1)+,d3
|
|
eor.b d0,d3
|
|
lsl.w #2,d3
|
|
move.l 0(a0,d3.w),d3
|
|
lsr.l #8,d0
|
|
eor.l d3,d0
|
|
moveq #0,d3
|
|
move.b (a1)+,d3
|
|
eor.b d0,d3
|
|
lsl.w #2,d3
|
|
move.l 0(a0,d3.w),d3
|
|
lsr.l #8,d0
|
|
eor.l d3,d0
|
|
moveq #0,d3
|
|
move.b (a1)+,d3
|
|
eor.b d0,d3
|
|
lsl.w #2,d3
|
|
move.l 0(a0,d3.w),d3
|
|
lsr.l #8,d0
|
|
eor.l d3,d0
|
|
moveq #0,d3
|
|
move.b (a1)+,d3
|
|
eor.b d0,d3
|
|
lsl.w #2,d3
|
|
move.l 0(a0,d3.w),d3
|
|
lsr.l #8,d0
|
|
eor.l d3,d0
|
|
moveq #0,d3
|
|
move.b (a1)+,d3
|
|
eor.b d0,d3
|
|
lsl.w #2,d3
|
|
move.l 0(a0,d3.w),d3
|
|
lsr.l #8,d0
|
|
eor.l d3,d0
|
|
moveq #0,d3
|
|
move.b (a1)+,d3
|
|
eor.b d0,d3
|
|
lsl.w #2,d3
|
|
move.l 0(a0,d3.w),d3
|
|
lsr.l #8,d0
|
|
eor.l d3,d0
|
|
decr8: dbra d1,loop8
|
|
and.w #7,d2
|
|
bra decr1
|
|
loop1: moveq #0,d3
|
|
move.b (a1)+,d3
|
|
eor.b d0,d3
|
|
lsl.w #2,d3
|
|
move.l 0(a0,d3.w),d3
|
|
lsr.l #8,d0
|
|
eor.l d3,d0
|
|
decr1: dbra d2,loop1
|
|
done: movem.l (sp)+,d2/d3
|
|
not.l d0
|
|
rts
|