OpenCores
URL https://opencores.org/ocsvn/darkriscv/darkriscv/trunk

Subversion Repositories darkriscv

[/] [darkriscv/] [trunk/] [src/] [main.s] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 marcelos
        .file   "main.c"
2
        .option nopic
3
        .text
4 4 marcelos
        .globl  __udivsi3
5 2 marcelos
        .globl  __mulsi3
6
        .globl  __modsi3
7
        .globl  __divsi3
8
        .section        .text.startup,"ax",@progbits
9
        .align  2
10
        .globl  main
11
        .type   main, @function
12
main:
13 4 marcelos
        .LA6: auipc     a5,%pcrel_hi(io)
14
        lbu     a0,%pcrel_lo(.LA6)(a5)
15
        addi    sp,sp,-124
16
        sw      ra,120(sp)
17
        sw      s0,116(sp)
18
        sw      s1,112(sp)
19 2 marcelos
        call    board_name
20 4 marcelos
        .LA7: auipc     a5,%pcrel_hi(io)
21
        lbu     a2,%pcrel_lo(.LA7)(a5)
22 2 marcelos
        mv      a1,a0
23 4 marcelos
        .LA8: auipc     a0,%pcrel_hi(.LC5)
24
        addi    a0,a0,%pcrel_lo(.LA8)
25 2 marcelos
        call    printf
26 4 marcelos
        .LA9: auipc     a2,%pcrel_hi(.LC6)
27
        .LA10: auipc    a1,%pcrel_hi(.LC7)
28
        .LA11: auipc    a0,%pcrel_hi(.LC8)
29
        addi    a2,a2,%pcrel_lo(.LA9)
30
        addi    a1,a1,%pcrel_lo(.LA10)
31
        addi    a0,a0,%pcrel_lo(.LA11)
32 2 marcelos
        call    printf
33 4 marcelos
        .LA12: auipc    a5,%pcrel_hi(threads)
34
        lw      a5,%pcrel_lo(.LA12)(a5)
35
        li      s0,0
36
        beqz    a5,.L7
37 2 marcelos
.L2:
38 4 marcelos
        .LA23: auipc    a4,%pcrel_hi(io)
39
        .LA24: auipc    a5,%pcrel_hi(io)
40
        addi    a4,a4,%pcrel_lo(.LA23)
41
        addi    a5,a5,%pcrel_lo(.LA24)
42
        lbu     s1,1(a4)
43
        lbu     a5,2(a5)
44
        .LA0: auipc     a4,%pcrel_hi(.LC0)
45
        sw      a4,8(sp)
46
        andi    a5,a5,0xff
47
        sw      a5,4(sp)
48
        call    check4rv32i
49
        .LA25: auipc    a5,%pcrel_hi(threads)
50
        lw      a4,8(sp)
51
        lw      a3,%pcrel_lo(.LA25)(a5)
52
        andi    s1,s1,0xff
53 2 marcelos
        li      a2,16
54
        li      a1,16
55 4 marcelos
        .LA2: auipc     a5,%pcrel_hi(.LC2)
56
        addi    a4,a4,%pcrel_lo(.LA0)
57
        bnez    a0,.L4
58
        .LA1: auipc     a4,%pcrel_hi(.LC1)
59
        addi    a4,a4,%pcrel_lo(.LA1)
60
.L4:
61
        li      t1,1
62 2 marcelos
        li      a0,1000
63 4 marcelos
        addi    a5,a5,%pcrel_lo(.LA2)
64
        bgt     a3,t1,.L5
65
        .LA3: auipc     a5,%pcrel_hi(.LC3)
66
        addi    a5,a5,%pcrel_lo(.LA3)
67
.L5:
68
        sw      a5,12(sp)
69 2 marcelos
        sw      a4,8(sp)
70
        call    mac
71 4 marcelos
        .LA4: auipc     t1,%pcrel_hi(.LC4)
72
        li      t0,1256
73
        mv      a1,s0
74
        lw      a5,12(sp)
75 2 marcelos
        lw      a4,8(sp)
76 4 marcelos
        lw      a3,4(sp)
77
        mv      a2,s1
78
        addi    s0,s0,1
79
        addi    t1,t1,%pcrel_lo(.LA4)
80
        beq     a0,t0,.L6
81
        .LA5: auipc     t1,%pcrel_hi(.LC3)
82
        addi    t1,t1,%pcrel_lo(.LA5)
83
.L6:
84
        .LA26: auipc    a0,%pcrel_hi(.LC13)
85
        sw      t1,0(sp)
86
        addi    a0,a0,%pcrel_lo(.LA26)
87 2 marcelos
        call    printf
88 4 marcelos
        .LA27: auipc    a5,%pcrel_hi(threads)
89
        lw      a5,%pcrel_lo(.LA27)(a5)
90
        bne     a5,s0,.L2
91
.L7:
92
        .LA13: auipc    a5,%pcrel_hi(threads)
93
        sw      zero,%pcrel_lo(.LA13)(a5)
94
        .LA14: auipc    a5,%pcrel_hi(io)
95
        addi    a5,a5,%pcrel_lo(.LA14)
96
        lhu     a1,6(a5)
97
        .LA15: auipc    a0,%pcrel_hi(.LC9)
98
        addi    a0,a0,%pcrel_lo(.LA15)
99 2 marcelos
        call    printf
100 4 marcelos
        .LA16: auipc    a4,%pcrel_hi(io)
101
        .LA17: auipc    a5,%pcrel_hi(io)
102
        addi    a4,a4,%pcrel_lo(.LA16)
103
        addi    a5,a5,%pcrel_lo(.LA17)
104
        lbu     t1,1(a4)
105
        lbu     a4,2(a5)
106
        .LA18: auipc    a2,%pcrel_hi(io)
107
        slli    a3,t1,5
108
        slli    a5,a4,2
109
        sub     a3,a3,t1
110
        add     a5,a5,a4
111
        slli    a0,a3,6
112
        slli    a5,a5,3
113
        sub     a5,a5,a4
114
        addi    a2,a2,%pcrel_lo(.LA18)
115
        sub     a0,a0,a3
116
        lw      a1,12(a2)
117
        slli    a0,a0,3
118
        slli    a5,a5,4
119
        add     a0,a0,t1
120
        add     a5,a5,a4
121
        .LA19: auipc    a3,%pcrel_hi(io)
122
        addi    a3,a3,%pcrel_lo(.LA19)
123
        slli    a5,a5,4
124
        slli    a0,a0,6
125
        lw      s0,12(a3)
126
        add     a0,a0,a5
127
        addi    a1,a1,1
128 2 marcelos
        call    __udivsi3
129
        mv      a1,a0
130 4 marcelos
        .LA20: auipc    a0,%pcrel_hi(.LC10)
131
        mv      a2,s0
132
        addi    a0,a0,%pcrel_lo(.LA20)
133 2 marcelos
        call    printf
134 4 marcelos
        .LA21: auipc    a0,%pcrel_hi(.LC11)
135
        addi    a0,a0,%pcrel_lo(.LA21)
136 2 marcelos
        call    printf
137 4 marcelos
        .LA22: auipc    a0,%pcrel_hi(.LC12)
138
        addi    a0,a0,%pcrel_lo(.LA22)
139
        call    printf
140
.L3:
141
        .LA28: auipc    a0,%pcrel_hi(.LC14)
142
        addi    a0,a0,%pcrel_lo(.LA28)
143
        call    printf
144 2 marcelos
        li      a2,64
145
        li      a1,0
146 4 marcelos
        addi    a0,sp,48
147 2 marcelos
        call    memset
148
        li      a1,64
149 4 marcelos
        addi    a0,sp,48
150 2 marcelos
        call    gets
151 4 marcelos
        addi    s1,sp,16
152
        li      s0,1
153
        j       .L8
154
.L63:
155 2 marcelos
        call    strtok
156 4 marcelos
        sw      a0,0(s1)
157 2 marcelos
        li      a5,8
158 4 marcelos
        beqz    a0,.L14
159
        beq     s0,a5,.L14
160
.L9:
161
        addi    s0,s0,1
162
        addi    s1,s1,4
163
.L8:
164
        .LA29: auipc    a1,%pcrel_hi(.LC15)
165
        li      a5,1
166
        addi    a1,a1,%pcrel_lo(.LA29)
167 2 marcelos
        li      a0,0
168 4 marcelos
        bne     s0,a5,.L63
169
        .LA59: auipc    a1,%pcrel_hi(.LC15)
170
        addi    a1,a1,%pcrel_lo(.LA59)
171
        addi    a0,sp,48
172
        call    strtok
173
        sw      a0,0(s1)
174 2 marcelos
        bnez    a0,.L9
175 4 marcelos
.L14:
176
        lw      s0,16(sp)
177
        beqz    s0,.L3
178
        .LA30: auipc    a1,%pcrel_hi(.LC16)
179
        addi    a1,a1,%pcrel_lo(.LA30)
180
        mv      a0,s0
181 2 marcelos
        call    strcmp
182 4 marcelos
        beqz    a0,.L64
183
        .LA32: auipc    a1,%pcrel_hi(.LC18)
184
        addi    a1,a1,%pcrel_lo(.LA32)
185
        mv      a0,s0
186 2 marcelos
        call    strcmp
187 4 marcelos
        beqz    a0,.L59
188
        .LA35: auipc    a1,%pcrel_hi(.LC21)
189
        addi    a1,a1,%pcrel_lo(.LA35)
190
        mv      a0,s0
191
        call    strcmp
192
        beqz    a0,.L65
193
        .LA38: auipc    a1,%pcrel_hi(.LC24)
194
        addi    a1,a1,%pcrel_lo(.LA38)
195
        mv      a0,s0
196
        call    strcmp
197
        bnez    a0,.L24
198
        lw      a0,20(sp)
199
        beqz    a0,.L25
200 2 marcelos
        call    xtoi
201 4 marcelos
        slli    a0,a0,16
202
        .LA39: auipc    a5,%pcrel_hi(io)
203
        srli    a0,a0,16
204
        addi    a5,a5,%pcrel_lo(.LA39)
205
        sh      a0,8(a5)
206
.L25:
207
        .LA40: auipc    a5,%pcrel_hi(io)
208
        addi    a5,a5,%pcrel_lo(.LA40)
209
        lhu     a1,8(a5)
210
        .LA41: auipc    a0,%pcrel_hi(.LC25)
211
        addi    a0,a0,%pcrel_lo(.LA41)
212 2 marcelos
        call    printf
213 4 marcelos
        j       .L3
214
.L64:
215
        .LA31: auipc    a0,%pcrel_hi(.LC17)
216
        addi    a0,a0,%pcrel_lo(.LA31)
217 2 marcelos
        call    printf
218 4 marcelos
        j       .L3
219
.L65:
220
        lw      a5,20(sp)
221
        sw      a5,8(sp)
222
        beqz    a5,.L19
223
        mv      a0,a5
224
        call    xtoi
225
        sw      a0,8(sp)
226
.L19:
227
        lw      a5,8(sp)
228
        addi    s1,a5,16
229
        addi    a5,a5,256
230
        sw      a5,12(sp)
231
.L23:
232
        lw      a5,8(sp)
233
        .LA36: auipc    a0,%pcrel_hi(.LC22)
234
        addi    a0,a0,%pcrel_lo(.LA36)
235
        mv      a1,a5
236
        mv      s0,a5
237
        call    printf
238
        lw      a5,8(sp)
239
.L20:
240
        lbu     a1,0(a5)
241
        .LA37: auipc    a0,%pcrel_hi(.LC23)
242
        addi    a5,a5,1
243
        addi    a0,a0,%pcrel_lo(.LA37)
244
        sw      a5,4(sp)
245
        call    printf
246
        lw      a5,4(sp)
247
        bne     s1,a5,.L20
248
.L22:
249
        lbu     a0,0(s0)
250
        li      a4,94
251
        addi    s0,s0,1
252
        addi    a5,a0,-32
253
        andi    a5,a5,0xff
254
        bleu    a5,a4,.L21
255 2 marcelos
        li      a0,46
256 4 marcelos
.L21:
257 2 marcelos
        call    putchar
258 4 marcelos
        bne     s1,s0,.L22
259
        lw      a5,8(sp)
260 2 marcelos
        li      a0,10
261 4 marcelos
        addi    s1,s1,16
262
        addi    a5,a5,16
263
        mv      s0,a5
264
        sw      a5,8(sp)
265 2 marcelos
        call    putchar
266 4 marcelos
        lw      a4,12(sp)
267
        bne     s0,a4,.L23
268
        j       .L3
269
.L24:
270
        .LA42: auipc    a1,%pcrel_hi(.LC26)
271
        addi    a1,a1,%pcrel_lo(.LA42)
272
        mv      a0,s0
273 2 marcelos
        call    strcmp
274 4 marcelos
        bnez    a0,.L26
275
        lw      a0,20(sp)
276
        beqz    a0,.L27
277
        call    atoi
278
        .LA43: auipc    a5,%pcrel_hi(io)
279
        addi    a5,a5,%pcrel_lo(.LA43)
280
        sw      a0,12(a5)
281
.L27:
282
        .LA44: auipc    a5,%pcrel_hi(io)
283
        addi    a5,a5,%pcrel_lo(.LA44)
284
        lw      a1,12(a5)
285
        .LA45: auipc    a0,%pcrel_hi(.LC27)
286
        addi    a0,a0,%pcrel_lo(.LA45)
287 2 marcelos
        call    printf
288 4 marcelos
        j       .L3
289
.L59:
290
        .LA33: auipc    a0,%pcrel_hi(.LC19)
291
        addi    a0,a0,%pcrel_lo(.LA33)
292
        li      s0,999424
293
        call    printf
294
        addi    a0,s0,576
295
        call    usleep
296
        li      a0,46
297
        call    putchar
298
        addi    a0,s0,576
299
        call    usleep
300
        li      a0,46
301
        call    putchar
302
        addi    a0,s0,576
303
        call    usleep
304
        li      a0,46
305
        call    putchar
306
        .LA34: auipc    a0,%pcrel_hi(.LC20)
307
        addi    a0,a0,%pcrel_lo(.LA34)
308
        call    printf
309
        lw      ra,120(sp)
310
        lw      s0,116(sp)
311
        lw      s1,112(sp)
312
        li      a0,0
313
        addi    sp,sp,124
314
        jr      ra
315
.L26:
316
        .LA46: auipc    a1,%pcrel_hi(.LC28)
317
        addi    a1,a1,%pcrel_lo(.LA46)
318
        mv      a0,s0
319 2 marcelos
        call    strcmp
320 4 marcelos
        bnez    a0,.L28
321
        lw      a0,20(sp)
322
        beqz    a0,.L29
323 2 marcelos
        call    xtoi
324
        slli    a0,a0,16
325 4 marcelos
        .LA47: auipc    a5,%pcrel_hi(io)
326 2 marcelos
        srli    a0,a0,16
327 4 marcelos
        addi    a5,a5,%pcrel_lo(.LA47)
328
        sh      a0,10(a5)
329
.L29:
330
        .LA48: auipc    a5,%pcrel_hi(io)
331
        addi    a5,a5,%pcrel_lo(.LA48)
332
        lhu     a1,10(a5)
333
        .LA49: auipc    a0,%pcrel_hi(.LC29)
334
        addi    a0,a0,%pcrel_lo(.LA49)
335
        call    printf
336
        j       .L3
337
.L28:
338
        .LA50: auipc    a1,%pcrel_hi(.LC30)
339
        addi    a1,a1,%pcrel_lo(.LA50)
340
        mv      a0,s0
341 2 marcelos
        call    strcmp
342 4 marcelos
        bnez    a0,.L30
343 2 marcelos
        lw      a0,20(sp)
344
        call    atoi
345 4 marcelos
        mv      s0,a0
346
        lw      a0,24(sp)
347
        call    atoi
348 2 marcelos
        mv      a1,a0
349 4 marcelos
        mv      a0,s0
350 2 marcelos
        call    __mulsi3
351
        mv      a1,a0
352 4 marcelos
        .LA51: auipc    a0,%pcrel_hi(.LC31)
353
        addi    a0,a0,%pcrel_lo(.LA51)
354
        call    printf
355
        j       .L3
356
.L30:
357
        .LA52: auipc    a1,%pcrel_hi(.LC32)
358
        addi    a1,a1,%pcrel_lo(.LA52)
359
        mv      a0,s0
360 2 marcelos
        call    strcmp
361 4 marcelos
        beqz    a0,.L66
362
        .LA54: auipc    a1,%pcrel_hi(.LC34)
363
        addi    a1,a1,%pcrel_lo(.LA54)
364
        mv      a0,s0
365
        call    strcmp
366
        bnez    a0,.L32
367
        lw      a0,20(sp)
368 2 marcelos
        call    atoi
369 4 marcelos
        mv      s0,a0
370
        lw      a0,24(sp)
371
        call    atoi
372 2 marcelos
        mv      s1,a0
373 4 marcelos
        lw      a0,28(sp)
374
        call    atoi
375
        slli    a2,a0,16
376
        slli    a1,s1,16
377
        srai    a2,a2,16
378
        srai    a1,a1,16
379
        mv      a0,s0
380
        call    mac
381
        mv      a1,a0
382
        .LA55: auipc    a0,%pcrel_hi(.LC35)
383
        addi    a0,a0,%pcrel_lo(.LA55)
384
        call    printf
385
        j       .L3
386
.L66:
387 2 marcelos
        lw      a0,20(sp)
388
        call    atoi
389 4 marcelos
        mv      s0,a0
390
        lw      a0,24(sp)
391
        call    atoi
392
        mv      s1,a0
393 2 marcelos
        mv      a1,a0
394 4 marcelos
        mv      a0,s0
395
        call    __modsi3
396 2 marcelos
        sw      a0,4(sp)
397 4 marcelos
        mv      a1,s1
398
        mv      a0,s0
399 2 marcelos
        call    __divsi3
400 4 marcelos
        lw      a2,4(sp)
401 2 marcelos
        mv      a1,a0
402 4 marcelos
        .LA53: auipc    a0,%pcrel_hi(.LC33)
403
        addi    a0,a0,%pcrel_lo(.LA53)
404 2 marcelos
        call    printf
405 4 marcelos
        j       .L3
406
.L32:
407
        .LA56: auipc    a1,%pcrel_hi(.LC36)
408
        addi    a1,a1,%pcrel_lo(.LA56)
409
        mv      a0,s0
410 2 marcelos
        call    strcmp
411 4 marcelos
        beqz    a0,.L67
412
        lbu     a5,0(s0)
413
        beqz    a5,.L3
414
        .LA58: auipc    a0,%pcrel_hi(.LC38)
415
        mv      a1,s0
416
        addi    a0,a0,%pcrel_lo(.LA58)
417
        call    printf
418
        j       .L3
419
.L67:
420 2 marcelos
        lw      a0,20(sp)
421
        call    xtoi
422
        mv      a1,a0
423 4 marcelos
        .LA57: auipc    a0,%pcrel_hi(.LC37)
424
        srai    a2,a1,1
425
        addi    a0,a0,%pcrel_lo(.LA57)
426 2 marcelos
        call    printf
427 4 marcelos
        j       .L3
428 2 marcelos
        .size   main, .-main
429
        .section        .rodata.str1.4,"aMS",@progbits,1
430
        .align  2
431
.LC0:
432 4 marcelos
        .string "i"
433
        .zero   2
434
.LC1:
435
        .string "e"
436
        .zero   2
437
.LC2:
438 2 marcelos
        .string "+MT"
439 4 marcelos
.LC3:
440 2 marcelos
        .string ""
441
        .zero   3
442 4 marcelos
.LC4:
443 2 marcelos
        .string "+MAC"
444
        .zero   3
445 4 marcelos
.LC5:
446 2 marcelos
        .string "board: %s (id=%d)\n"
447
        .zero   1
448
.LC6:
449
        .string "rv32e"
450
        .zero   2
451
.LC7:
452 4 marcelos
        .string "Mon, 01 Feb 2021 04:06:48 -0300"
453 2 marcelos
.LC8:
454 4 marcelos
        .string "build: %s for %s\n"
455
        .zero   2
456
.LC9:
457 2 marcelos
        .string "uart0: 115200 bps (div=%d)\n"
458
.LC10:
459 4 marcelos
        .string "timr0: frequency=%dHz (io.timer=%d)\n"
460
        .zero   3
461
.LC11:
462
        .string "\n"
463 2 marcelos
        .zero   2
464 4 marcelos
.LC12:
465
        .string "Welcome to DarkRISCV!\n"
466
        .zero   1
467
.LC13:
468
        .string "core0/thread%d: darkriscv@%d.%dMHz rv32%s%s%s\n"
469
        .zero   1
470
.LC14:
471 2 marcelos
        .string "> "
472
        .zero   1
473 4 marcelos
.LC15:
474 2 marcelos
        .string " "
475
        .zero   2
476 4 marcelos
.LC16:
477 2 marcelos
        .string "clear"
478
        .zero   2
479 4 marcelos
.LC17:
480 2 marcelos
        .string "\033[H\033[2J"
481 4 marcelos
.LC18:
482 2 marcelos
        .string "reboot"
483
        .zero   1
484 4 marcelos
.LC19:
485 2 marcelos
        .string "core0: reboot in 3 seconds"
486
        .zero   1
487 4 marcelos
.LC20:
488
        .string "done.\n"
489
        .zero   1
490
.LC21:
491 2 marcelos
        .string "dump"
492
        .zero   3
493 4 marcelos
.LC22:
494 2 marcelos
        .string "%x: "
495
        .zero   3
496 4 marcelos
.LC23:
497 2 marcelos
        .string "%x "
498 4 marcelos
.LC24:
499 2 marcelos
        .string "led"
500 4 marcelos
.LC25:
501 2 marcelos
        .string "led = %x\n"
502
        .zero   2
503 4 marcelos
.LC26:
504 2 marcelos
        .string "timer"
505
        .zero   2
506 4 marcelos
.LC27:
507 2 marcelos
        .string "timer = %d\n"
508 4 marcelos
.LC28:
509 2 marcelos
        .string "gpio"
510
        .zero   3
511 4 marcelos
.LC29:
512 2 marcelos
        .string "gpio = %x\n"
513
        .zero   1
514 4 marcelos
.LC30:
515 2 marcelos
        .string "mul"
516 4 marcelos
.LC31:
517 2 marcelos
        .string "mul = %d\n"
518
        .zero   2
519 4 marcelos
.LC32:
520 2 marcelos
        .string "div"
521 4 marcelos
.LC33:
522 2 marcelos
        .string "div = %d, mod = %d\n"
523 4 marcelos
.LC34:
524 2 marcelos
        .string "mac"
525 4 marcelos
.LC35:
526 2 marcelos
        .string "mac = %d\n"
527
        .zero   2
528 4 marcelos
.LC36:
529 2 marcelos
        .string "srai"
530
        .zero   3
531 4 marcelos
.LC37:
532 2 marcelos
        .string "srai %x >> 1 = %x\n"
533
        .zero   1
534 4 marcelos
.LC38:
535 2 marcelos
        .string "command: [%s] not found.\nvalid commands: clear, dump <hex>, led <hex>, timer <dec>, gpio <hex>\n                mul <dec> <dec>, div <dec> <dec>, mac <dec> <dec> <dec>\n                rd[m][bwl] <hex> [<hex> when m], wr[m][bwl] <hex> <hex> [<hex> when m]\n"
536
        .ident  "GCC: (GNU) 9.0.0 20180818 (experimental)"

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.