master
s 64 lines 1.13 KB
Raw
1 /*
2 * Copyright (c) 2026 lowRISC CIC
3 * SPDX-License-Identifier: GPL-2.0-or-later
4 */
5
6 #define crc32(op, rd, rs1) .insn r 19, 1, 48, rd, rs1, x##op
7
8 #define crc32_b(rd, rs1) crc32(16, rd, rs1)
9 #define crc32_h(rd, rs1) crc32(17, rd, rs1)
10 #define crc32_w(rd, rs1) crc32(18, rd, rs1)
11 #define crc32_d(rd, rs1) crc32(19, rd, rs1)
12 #define crc32c_b(rd, rs1) crc32(24, rd, rs1)
13 #define crc32c_h(rd, rs1) crc32(25, rd, rs1)
14 #define crc32c_w(rd, rs1) crc32(26, rd, rs1)
15 #define crc32c_d(rd, rs1) crc32(27, rd, rs1)
16
17 .option norvc
18
19 .text
20 .globl _start
21 _start:
22 lla t0, trap
23 csrw mtvec, t0
24
25 li t0, 0x34e24a2cd65650d4
26
27 crc32_b (t0, t0)
28 crc32_h (t0, t0)
29 crc32_w (t0, t0)
30 crc32_d (t0, t0)
31 crc32c_b (t0, t0)
32 crc32c_h (t0, t0)
33 crc32c_w (t0, t0)
34 crc32c_d (t0, t0)
35
36 li t1, 0x68167e78
37
38 li a0, 0
39 beq t0, t1, _exit
40 fail:
41 li a0, 1
42 _exit:
43 lla a1, semiargs
44 li t0, 0x20026 # ADP_Stopped_ApplicationExit
45 sd t0, 0(a1)
46 sd a0, 8(a1)
47 li a0, 0x20 # TARGET_SYS_EXIT_EXTENDED
48
49 # Semihosting call sequence
50 .balign 16
51 slli zero, zero, 0x1f
52 ebreak
53 srai zero, zero, 0x7
54 j .
55
56 .data
57 .balign 16
58 semiargs:
59 .space 16
60
61 trap:
62 csrr t0, mepc
63 addi t0, t0, 4
64 mret