contrib: replace the GPLv2-or-later license tag
[fw/openocd] / contrib / loaders / checksum / armv7m_crc.s
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2
3 /***************************************************************************
4  *   Copyright (C) 2010 by Spencer Oliver                                  *
5  *   spen@spen-soft.co.uk                                                  *
6  ***************************************************************************/
7
8 /*
9         parameters:
10         r0 - address in - crc out
11         r1 - char count
12 */
13
14         .text
15         .syntax unified
16         .cpu cortex-m0
17         .thumb
18         .thumb_func
19
20         .align  2
21
22 _start:
23 main:
24         mov             r2, r0
25         movs    r0, #0
26         mvns    r0, r0
27         ldr             r6, CRC32XOR
28         mov             r3, r1
29         movs    r4, #0
30         b               ncomp
31 nbyte:
32         ldrb    r1, [r2, r4]
33         lsls    r1, r1, #24
34         eors    r0, r0, r1
35         movs    r5, #0
36 loop:
37         cmp             r0, #0
38         bge             notset
39         lsls    r0, r0, #1
40         eors    r0, r0, r6
41         b               cont
42 notset:
43         lsls    r0, r0, #1
44 cont:
45         adds    r5, r5, #1
46         cmp             r5, #8
47         bne             loop
48         adds    r4, r4, #1
49 ncomp:
50         cmp             r4, r3
51         bne             nbyte
52         bkpt    #0
53
54         .align  2
55
56 CRC32XOR:       .word   0x04c11db7
57
58         .end