Cause illegal instruction
[cascardo/blix.git] / blix.S
1 .global _start
2 _start:
3         li a1, 2
4         csrs sstatus, a1
5         la a1, _vec
6         csrw stvec, a1
7         li a7, 1
8         la a1, _hello
9         jal puts
10         csrr a2, stvec
11         jal putl
12         csrw 0xfff, a0
13 halt:
14         j halt
15
16 putl:
17         andi a0, a2, 0xf
18         addi a0, a0, 0x30
19         slti a1, a0, 0x3A
20         bne a1, zero, _next
21         addi a0, a0, 7
22 _next:
23         ecall
24         srli a2, a2, 4
25         beq a2, zero, exit2
26         j putl
27 exit2:
28         li a0, 0xa
29         ecall
30         ret
31
32 puts:
33         lb a0, (a1)
34         beq a0, zero, exit
35         ecall
36         addi a1, a1, 1
37         j puts
38 exit:
39         ret
40
41 _hello:
42 .ascii "Hello, world!\n"
43 .byte 0
44
45 .align 8
46 _vec:
47         li a7, 1
48         la a1, _exception
49         jal puts
50         csrr a2, scause
51         call putl
52 loop2:
53         j loop2
54
55 _exception:
56 .ascii "exception\n"
57 .byte 0