summaryrefslogtreecommitdiff
path: root/c/rvcontroller-libraries/rvcontroller-ecalls.S
blob: 454bcb603c814175abaeadd2d3d3a2ca3a84bc2a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
#RVController ecall C Library - Assembly Portion
#A product of Advanced Mesecons Devices, a Cheapie Systems company
#This is free and unencumbered software released into the public domain.
#See http://unlicense.org/ for more information

printint:
# Number to print is already in a0
li a7,1 # Write number
ecall
ret

printstr:
# String address is already in a0
li a7,4
ecall
ret

printchar:
# Character is already in a0
li a7,11
ecall
ret

digiline_send:
# Channel pointer is already in a0, message pointer is already in a1
li a7,129
ecall
ret

digiline_bufferlevel:
li a7,133
ecall
# Result is already in a0
ret

digiline_receive:
# Arguments are already in a0-a3
li a7,135
ecall
ret

rdtime:
rdtime a0
ret

rdcycle:
rdcycle a0
ret

digiline_clearbuffer:
li a7,134
ecall
ret

lightweight_mode:
andi a0,a0,1
csrrs t0,0x800,x0
bclri t0,t0,0
or t0,t0,a0
csrrw x0,0x800,t0
ret

readint:
li a7,5
ecall
# Result is already in a0
ret

randomint:
li a7,128
# Arguments are already in a0 and a1
ecall
# Result is already in a0
ret

readstr:
li a7,8
# Arguments are already in a0 and a1
ecall
# Result is already in a0
ret

console_clearbuffer:
li a7,131
ecall
ret

console_readchar:
li a7,132
ecall
# Result is already in a0
ret

.globl printint
.globl printstr
.globl printchar
.globl digiline_send
.globl digiline_bufferlevel
.globl digiline_receive
.globl rdtime
.globl rdcycle
.globl digiline_clearbuffer
.globl lightweight_mode
.globl readint
.globl randomint
.globl readstr
.globl console_clearbuffer
.globl console_readchar