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

Subversion Repositories ion

[/] [ion/] [trunk/] [src/] [opcodes/] [opcodes.s] - Blame information for rev 4

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 ja_rd
################################################################################
2 4 ja_rd
# opcode.s -- MIPS opcode tester for Ion project
3 2 ja_rd
#-------------------------------------------------------------------------------
4
# ORIGINAL AUTHOR: Steve Rhoads (rhoadss@yahoo.com) -- 1/10/01
5
#
6
# This file is an edited version of 'opcodes.asm', which is part of the Plasma
7
# project (http://opencores.org/project,plasma).
8
# COPYRIGHT: Software placed into the public domain by the original author.
9
# Software 'as is' without warranty.  Author liable for nothing.
10 4 ja_rd
#
11 2 ja_rd
#-------------------------------------------------------------------------------
12 4 ja_rd
#
13
# This assembly file tests all of the opcodes supported by the Ion core.
14 2 ja_rd
# This test assumes that address 0x20000000 is the UART write register.
15
# Successful tests will print out "A" or "AB" or "ABC" or ....
16
# Missing letters or letters out of order indicate a failure.
17
#-------------------------------------------------------------------------------
18 4 ja_rd
# NOTE: This test bench relies on the simulation logs to catch errors. That is,
19
# unlike the original Plasma code, this one does not test the test success
20
# conditions. instead, it performs the operations to be tested and relies on you
21
# to compare the logs from the logic simulation and the software simulation.
22
# Test that work this way have been commented with this tag: "@log"
23
#
24 2 ja_rd
#-------------------------------------------------------------------------------
25 4 ja_rd
# NOTE: NOPs have been inserted after load instructions.
26 2 ja_rd
#
27
################################################################################
28
 
29 4 ja_rd
    #-- Set flags below to >0 to enable/disable test assembly ------------------
30 2 ja_rd
 
31 4 ja_rd
    .set TEST_UNALIGNED_LOADS, 0        # unaligned loads
32
    .set TEST_UNALIGNED_STORES, 0       # unaligned stores
33
    .set TEST_BREAK, 1                  # BREAK instruction
34
    # WARNING: the assembler expands div instructions, see 'as' manual
35
    .set TEST_DIV, 0                    # DIV* instructions
36
    .set TEST_MUL, 0                    # MUL* instructions
37 2 ja_rd
 
38 4 ja_rd
    #---------------------------------------------------------------------------
39
 
40 2 ja_rd
    .text
41
    .align  2
42
    .globl  entry
43
    .ent    entry
44
entry:
45
    .set    noreorder
46
 
47
    la      $gp, _gp            #initialize stack pointer
48
    la      $4, __bss_start     #$4 = .sbss_start
49
    la      $5, _end            #$5 = .bss_end
50
    nop                         #no stack needed
51
    nop
52
 
53
    b       StartTest
54
    nop                         #nops required to place ISR at 0x3c
55
    nop
56
 
57
OS_AsmPatchValue:
58
    #Code to place at address 0x3c
59
    lui     $26, 0x1000
60
    ori     $26, $26, 0x3c
61
    jr      $26
62
    nop
63
 
64
    .org    0x3c
65
InterruptVector:                # Address=0x3c
66
    mfc0    $26,$14             # C0_EPC=14 (Exception PC)
67
    jr      $26
68
    add     $4,$4,5
69
 
70
StartTest:
71
    mtc0    $0,$12              # disable interrupts
72
    lui     $20,0x2000          # serial port write address
73
    ori     $21,$0,'\n'         # <CR> character
74
    ori     $22,$0,'X'          # 'X' letter
75
    ori     $23,$0,'\r'
76
    ori     $24,$0,0x0f80       # temp memory
77
 
78
    sb      $23,0($20)
79
    sb      $21,0($20)
80
    sb      $23,0($20)
81
    sb      $21,0($20)
82
    sb      $23,0($20)
83
    sb      $21,0($20)
84
    sb      $23,0($20)
85
    sb      $21,0($20)
86
 
87
    #Patch interrupt vector to 0x1000003c
88
    la      $5, OS_AsmPatchValue
89
    sub     $6,$5,0x1000
90
    blez    $6,NoPatch
91
    nop
92
    #lw     $6, 0($5)
93
    #sw     $6, 0x3c($0)
94
    #lw     $6, 4($5)
95
    #sw     $6, 0x40($0)
96
    #lw     $6, 8($5)
97
    #sw     $6, 0x44($0)
98
    #lw     $6, 12($5)
99
    #sw     $6, 0x48($0)
100
NoPatch:
101
 
102
    ######################################
103
    #Arithmetic Instructions
104
    ######################################
105
ArthmeticTest:
106
    ori     $2,$0,'A'
107
    sb      $2,0($20)
108
    ori     $2,$0,'r'
109
    sb      $2,0($20)
110
    ori     $2,$0,'i'
111
    sb      $2,0($20)
112
    ori     $2,$0,'t'
113
    sb      $2,0($20)
114
    ori     $2,$0,'h'
115
    sb      $2,0($20)
116
    sb      $23,0($20)
117
    sb      $21,0($20)
118
 
119
    #a: ADD
120
    ori     $2,$0,'a'
121
    sb      $2,0($20)
122
    ori     $3,$0,5
123
    ori     $4,$0,60
124
    add     $2,$3,$4
125
    sb      $2,0($20)    #A
126
    sb      $23,0($20)
127
    sb      $21,0($20)
128
 
129
    #b: ADDI
130
    ori     $2,$0,'b'
131
    sb      $2,0($20)
132
    ori     $4,$0,60
133
    addi    $2,$4,5
134
    sb      $2,0($20)    #A
135
    sb      $23,0($20)
136
    sb      $21,0($20)
137
 
138
    #c: ADDIU
139
    ori     $2,$0,'c'
140
    sb      $2,0($20)
141
    ori     $4,$0,50
142
    addiu   $5,$4,15
143
    sb      $5,0($20)    #A
144
    sb      $23,0($20)
145
    sb      $21,0($20)
146
 
147
    #d: ADDU
148
    ori     $2,$0,'d'
149
    sb      $2,0($20)
150
    ori     $3,$0,5
151
    ori     $4,$0,60
152
    add     $2,$3,$4
153
    sb      $2,0($20)    #A
154
    sb      $23,0($20)
155
    sb      $21,0($20)
156
 
157 4 ja_rd
    # DIV tests, skip conditionally
158
    .ifgt TEST_DIV
159 2 ja_rd
 
160
    #e: DIV
161
    ori     $2,$0,'e'
162
    sb      $2,0($20)
163
    ori     $2,$0,65*117+41
164
    ori     $3,$0,117
165
    div     $2,$3
166
    nop
167
    mflo    $4
168
    sb      $4,0($20)    #A
169
    mfhi    $4
170
    addi    $4,$4,66-41
171
    sb      $4,0($20)    #B
172
    li      $2,-67*19
173
    ori     $3,$0,19
174
    div     $2,$3
175
    nop
176
    mflo    $4
177
    sub     $4,$0,$4
178
    sb      $4,0($20)    #C
179
    ori     $2,$0,68*23
180
    li      $3,-23
181
    div     $2,$3
182
    nop
183
    mflo    $4
184
    sub     $4,$0,$4
185
    sb      $4,0($20)    #D
186
    li      $2,-69*13
187
    li      $3,-13
188
    div     $2,$3
189
    mflo    $4
190
    sb      $4,0($20)    #E
191
    sb      $23,0($20)
192
    sb      $21,0($20)
193
 
194
    #f: DIVU
195
    ori     $2,$0,'f'
196
    sb      $2,0($20)
197
    ori     $2,$0,65*13
198
    ori     $3,$0,13
199
    divu    $2,$3
200
    nop
201
    mflo    $4
202
    sb      $4,0($20)    #A
203
    sb      $23,0($20)
204
    sb      $21,0($20)
205 4 ja_rd
    .endif
206 2 ja_rd
 
207 4 ja_rd
    # MUL tests, skip conditionally
208
    .ifgt   TEST_MUL
209 2 ja_rd
 
210
    #g: MULT
211
    ori     $2,$0,'g'
212
    sb      $2,0($20)
213
    ori     $2,$0,5
214
    ori     $3,$0,13
215
    mult    $2,$3
216
    nop
217
    mflo    $4
218
    sb      $4,0($20)    #A
219
    li      $2,-5
220
    ori     $3,$0,13
221
    mult    $2,$3
222
    mfhi    $5
223
    mflo    $4
224
    sub     $4,$0,$4
225
    addu    $4,$4,$5
226
    addi    $4,$4,2
227
    sb      $4,0($20)    #B
228
    ori     $2,$0,5
229
    li      $3,-13
230
    mult    $2,$3
231
    mfhi    $5
232
    mflo    $4
233
    sub     $4,$0,$4
234
    addu    $4,$4,$5
235
    addi    $4,$4,3
236
    sb      $4,0($20)    #C
237
    li      $2,-5
238
    li      $3,-13
239
    mult    $2,$3
240
    mfhi    $5
241
    mflo    $4
242
    addu    $4,$4,$5
243
    addi    $4,$4,3
244
    sb      $4,0($20)    #D
245
    lui     $4,0xfe98
246
    ori     $4,$4,0x62e5
247
    lui     $5,0x6
248
    ori     $5,0x8db8
249
    mult    $4,$5
250
    mfhi    $6
251
    addiu   $7,$6,2356+1+'E' #E
252
    sb      $7,0($20)
253
    sb      $23,0($20)
254
    sb      $21,0($20)
255
 
256
    #h: MULTU
257
    ori     $2,$0,'h'
258
    sb      $2,0($20)
259
    ori     $2,$0,5
260
    ori     $3,$0,13
261
    multu   $2,$3
262
    nop
263
    mflo    $4
264
    sb      $4,0($20)    #A
265
    sb      $23,0($20)
266
    sb      $21,0($20)
267 4 ja_rd
    .endif
268 2 ja_rd
 
269
    #i: SLT
270
    ori     $2,$0,'i'
271
    sb      $2,0($20)
272
    ori     $2,$0,10
273
    ori     $3,$0,12
274
    slt     $4,$2,$3
275
    addi    $5,$4,64
276
    sb      $5,0($20)    #A
277
    slt     $4,$3,$2
278
    addi    $5,$4,66
279
    sb      $5,0($20)    #B
280
    li      $2,0xfffffff0
281
    slt     $4,$2,$3
282
    addi    $5,$4,66
283
    sb      $5,0($20)    #C
284
    slt     $4,$3,$2
285
    addi    $5,$4,68
286
    sb      $5,0($20)    #D
287
    li      $3,0xffffffff
288
    slt     $4,$2,$3
289
    addi    $5,$4,68
290
    sb      $5,0($20)    #E
291
    slt     $4,$3,$2
292
    addi    $5,$4,70
293
    sb      $5,0($20)    #F
294
    sb      $23,0($20)
295
    sb      $21,0($20)
296
 
297
    #j: SLTI
298
    ori     $2,$0,'j'
299
    sb      $2,0($20)
300
    ori     $2,$0,10
301
    slti    $4,$2,12
302
    addi    $5,$4,64
303
    sb      $5,0($20)    #A
304
    slti    $4,$2,8
305
    addi    $5,$4,66
306
    sb      $5,0($20)    #B
307
    sb      $23,0($20)
308
    sb      $21,0($20)
309
 
310
    #k: SLTIU
311
    ori     $2,$0,'k'
312
    sb      $2,0($20)
313
    ori     $2,$0,10
314
    sltiu   $4,$2,12
315
    addi    $5,$4,64
316
    sb      $5,0($20)    #A
317
    sltiu   $4,$2,8
318
    addi    $5,$4,66
319
    sb      $5,0($20)    #B
320
    sb      $23,0($20)
321
    sb      $21,0($20)
322
 
323
    #l: SLTU
324
    ori     $2,$0,'l'
325
    sb      $2,0($20)
326
    ori     $2,$0,10
327
    ori     $3,$0,12
328
    slt     $4,$2,$3
329
    addi    $5,$4,64
330
    sb      $5,0($20)    #A
331
    slt     $4,$3,$2
332
    addi    $5,$4,66
333
    sb      $5,0($20)    #B
334
    sb      $23,0($20)
335
    sb      $21,0($20)
336
 
337
    #m: SUB
338
    ori     $2,$0,'m'
339
    sb      $2,0($20)
340
    ori     $3,$0,70
341
    ori     $4,$0,5
342
    sub     $2,$3,$4
343
    sb      $2,0($20)    #A
344
    sb      $23,0($20)
345
    sb      $21,0($20)
346
 
347
    #n: SUBU
348
    ori     $2,$0,'n'
349
    sb      $2,0($20)
350
    ori     $3,$0,70
351
    ori     $4,$0,5
352
    sub     $2,$3,$4
353
    sb      $2,0($20)    #A
354
    sb      $23,0($20)
355
    sb      $21,0($20)
356
 
357
    ######################################
358
    #Branch and Jump Instructions
359
    ######################################
360
BranchTest:
361
    ori     $2,$0,'B'
362
    sb      $2,0($20)
363
    ori     $2,$0,'r'
364
    sb      $2,0($20)
365
    ori     $2,$0,'a'
366
    sb      $2,0($20)
367
    ori     $2,$0,'n'
368
    sb      $2,0($20)
369
    ori     $2,$0,'c'
370
    sb      $2,0($20)
371
    ori     $2,$0,'h'
372
    sb      $2,0($20)
373
    sb      $23,0($20)
374
    sb      $21,0($20)
375
 
376
    #a: B
377
    ori     $2,$0,'a'
378
    sb      $2,0($20)
379
    ori     $10,$0,'A'
380
    ori     $11,$0,'B'
381
    b       $B1
382
    sb      $10,0($20)
383
    sb      $22,0($20)
384
$B1:
385
    sb      $11,0($20)
386
    sb      $23,0($20)
387
    sb      $21,0($20)
388
 
389
    #b: BAL
390
    ori     $2,$0,'b'
391
    sb      $2,0($20)
392
    ori     $10,$0,'A'
393
    ori     $11,$0,'B'
394
    ori     $12,$0,'C'
395
    ori     $13,$0,'D'
396
    ori     $14,$0,'E'
397
    ori     $15,$0,'X'
398
    bal     $BAL1
399
    sb      $10,0($20)
400
    sb      $13,0($20)
401
    b       $BAL2
402
    sb      $14,0($20)
403
    sb      $15,0($20)
404
$BAL1:
405
    sb      $11,0($20)
406
    jr      $31
407
    sb      $12,0($20)
408
    sb      $22,0($20)
409
$BAL2:
410
    sb      $23,0($20)
411
    sb      $21,0($20)
412
 
413
    #c: BEQ
414
    ori     $2,$0,'c'
415
    sb      $2,0($20)
416
    ori     $10,$0,'A'
417
    ori     $11,$0,'B'
418
    ori     $12,$0,'C'
419
    ori     $13,$0,'D'
420
    ori     $2,$0,100
421
    ori     $3,$0,123
422
    ori     $4,$0,123
423
    beq     $2,$3,$BEQ1
424
    sb      $10,0($20)
425
    sb      $11,0($20)
426
    beq     $3,$4,$BEQ1
427
    sb      $12,0($20)
428
    sb      $22,0($20)
429
$BEQ1:
430
    sb      $13,0($20)
431
    sb      $23,0($20)
432
    sb      $21,0($20)
433
 
434
    #d: BGEZ
435
    ori     $2,$0,'d'
436
    sb      $2,0($20)
437
    ori     $10,$0,'A'
438
    ori     $11,$0,'B'
439
    ori     $12,$0,'C'
440
    ori     $13,$0,'D'
441
    or      $15,$0,'X'
442
    ori     $2,$0,100
443
    li      $3,0xffff1234
444
    ori     $4,$0,123
445
    bgez    $3,$BGEZ1
446
    sb      $10,0($20)
447
    sb      $11,0($20)
448
    bgez    $2,$BGEZ1
449
    sb      $12,0($20)
450
    sb      $22,0($20)
451
$BGEZ1:
452
    bgez    $0,$BGEZ2
453
    nop
454
    sb      $15,0($20)
455
$BGEZ2:
456
    sb      $13,0($20)
457
    sb      $23,0($20)
458
    sb      $21,0($20)
459
 
460
    #e: BGEZAL
461
    ori     $2,$0,'e'
462
    sb      $2,0($20)
463
    ori     $10,$0,'A'
464
    ori     $11,$0,'B'
465
    ori     $12,$0,'C'
466
    ori     $13,$0,'D'
467
    ori     $14,$0,'E'
468
    ori     $15,$0,'X'
469
    li      $3,0xffff1234
470
    bgezal  $3,$BGEZAL1
471
    nop
472
    sb      $10,0($20)
473
    bgezal  $0,$BGEZAL1
474
    nop
475
    sb      $13,0($20)
476
    b       $BGEZAL2
477
    sb      $14,0($20)
478
    sb      $15,0($20)
479
$BGEZAL1:
480
    sb      $11,0($20)
481
    jr      $31
482
    sb      $12,0($20)
483
    sb      $22,0($20)
484
$BGEZAL2:
485
    sb      $23,0($20)
486
    sb      $21,0($20)
487
 
488
    #f: BGTZ
489
    ori     $2,$0,'f'
490
    sb      $2,0($20)
491
    ori     $10,$0,'A'
492
    ori     $11,$0,'B'
493
    ori     $12,$0,'C'
494
    ori     $13,$0,'D'
495
    ori     $2,$0,100
496
    li      $3,0xffff1234
497
    bgtz    $3,$BGTZ1
498
    sb      $10,0($20)
499
    sb      $11,0($20)
500
    bgtz    $2,$BGTZ1
501
    sb      $12,0($20)
502
    sb      $22,0($20)
503
$BGTZ1:
504
    sb      $13,0($20)
505
    sb      $23,0($20)
506
    sb      $21,0($20)
507
 
508
    #g: BLEZ
509
    ori     $2,$0,'g'
510
    sb      $2,0($20)
511
    ori     $10,$0,'A'
512
    ori     $11,$0,'B'
513
    ori     $12,$0,'C'
514
    ori     $13,$0,'D'
515
    ori     $2,$0,100
516
    li      $3,0xffff1234
517
    blez    $2,$BLEZ1
518
    sb      $10,0($20)
519
    sb      $11,0($20)
520
    blez    $3,$BLEZ1
521
    sb      $12,0($20)
522
    sb      $22,0($20)
523
$BLEZ1:
524
    blez    $0,$BLEZ2
525
    nop
526
    sb      $22,0($20)
527
$BLEZ2:
528
    sb      $13,0($20)
529
    sb      $23,0($20)
530
    sb      $21,0($20)
531
 
532
    #h: BLTZ
533
    ori     $2,$0,'h'
534
    sb      $2,0($20)
535
    ori     $10,$0,'A'
536
    ori     $11,$0,'B'
537
    ori     $12,$0,'C'
538
    ori     $13,$0,'D'
539
    ori     $14,$0,'E'
540
    ori     $2,$0,100
541
    li      $3,0xffff1234
542
    ori     $4,$0,0
543
    bltz    $2,$BLTZ1
544
    sb      $10,0($20)
545
    sb      $11,0($20)
546
    bltz    $3,$BLTZ1
547
    sb      $12,0($20)
548
    sb      $22,0($20)
549
$BLTZ1:
550
    bltz    $4,$BLTZ2
551
    nop
552
    sb      $13,0($20)
553
$BLTZ2:
554
    sb      $14,0($20)
555
    sb      $23,0($20)
556
    sb      $21,0($20)
557
 
558
    #i: BLTZAL
559
    ori     $2,$0,'i'
560
    sb      $2,0($20)
561
    ori     $10,$0,'A'
562
    ori     $11,$0,'B'
563
    ori     $12,$0,'C'
564
    ori     $13,$0,'D'
565
    ori     $14,$0,'E'
566
    ori     $15,$0,'X'
567
    li      $3,0xffff1234
568
    bltzal  $0,$BLTZAL1
569
    nop
570
    sb      $10,0($20)
571
    bltzal  $3,$BLTZAL1
572
    nop
573
    sb      $13,0($20)
574
    b       $BLTZAL2
575
    sb      $14,0($20)
576
    sb      $15,0($20)
577
$BLTZAL1:
578
    sb      $11,0($20)
579
    jr      $31
580
    sb      $12,0($20)
581
    sb      $22,0($20)
582
$BLTZAL2:
583
    sb      $23,0($20)
584
    sb      $21,0($20)
585
 
586
    #j: BNE
587
    ori     $2,$0,'j'
588
    sb      $2,0($20)
589
    ori     $10,$0,'A'
590
    ori     $11,$0,'B'
591
    ori     $12,$0,'C'
592
    ori     $13,$0,'D'
593
    ori     $2,$0,100
594
    ori     $3,$0,123
595
    ori     $4,$0,123
596
    bne     $3,$4,$BNE1
597
    sb      $10,0($20)
598
    sb      $11,0($20)
599
    bne     $2,$3,$BNE1
600
    sb      $12,0($20)
601
    sb      $22,0($20)
602
$BNE1:
603
    sb      $13,0($20)
604
    sb      $23,0($20)
605
    sb      $21,0($20)
606
 
607
    #k: J
608
    ori     $2,$0,'k'
609
    sb      $2,0($20)
610
    ori     $10,$0,'A'
611
    ori     $11,$0,'B'
612
    ori     $15,$0,'X'
613
    j       $J1
614
    sb      $10,0($20)
615
    sb      $15,0($20)
616
$J1:
617
    sb      $11,0($20)
618
    sb      $23,0($20)
619
    sb      $21,0($20)
620
 
621
    #l: JAL
622
    ori     $2,$0,'l'
623
    sb      $2,0($20)
624
    ori     $10,$0,'A'
625
    ori     $11,$0,'B'
626
    ori     $12,$0,'C'
627
    ori     $13,$0,'D'
628
    ori     $14,$0,'E'
629
    ori     $15,$0,'X'
630
    jal     $JAL1
631
    sb      $10,0($20)
632
    sb      $13,0($20)
633
    b       $JAL2
634
    sb      $14,0($20)
635
    sb      $15,0($20)
636
$JAL1:
637
    sb      $11,0($20)
638
    jr      $31
639
    sb      $12,0($20)
640
    sb      $22,0($20)
641
$JAL2:
642
    sb      $23,0($20)
643
    sb      $21,0($20)
644
 
645
    #m: JALR
646
    ori     $2,$0,'m'
647
    sb      $2,0($20)
648
    ori     $10,$0,'A'
649
    ori     $11,$0,'B'
650
    ori     $12,$0,'C'
651
    ori     $13,$0,'D'
652
    ori     $14,$0,'E'
653
    ori     $15,$0,'X'
654
    la      $3,$JALR1
655
    jalr    $3
656
    sb      $10,0($20)
657
    sb      $13,0($20)
658
    b       $JALR2
659
    sb      $14,0($20)
660
    sb      $15,0($20)
661
$JALR1:
662
    sb      $11,0($20)
663
    jr      $31
664
    sb      $12,0($20)
665
    sb      $22,0($20)
666
$JALR2:
667
    sb      $23,0($20)
668
    sb      $21,0($20)
669
 
670
    #n: JR
671
    ori     $2,$0,'n'
672
    sb      $2,0($20)
673
    ori     $10,$0,'A'
674
    ori     $11,$0,'B'
675
    ori     $15,$0,'X'
676
    la      $3,$JR1
677
    jr      $3
678
    sb      $10,0($20)
679
    sb      $15,0($20)
680
$JR1:
681
    sb      $11,0($20)
682
    sb      $23,0($20)
683
    sb      $21,0($20)
684
 
685
    #o: NOP
686
    ori     $2,$0,'o'
687
    sb      $2,0($20)
688
    ori     $2,$0,65
689
    nop
690
    sb      $2,0($20)
691
    sb      $23,0($20)
692
    sb      $21,0($20)
693
 
694
 #   b     LoadTest
695
 
696 4 ja_rd
 
697 2 ja_rd
BreakTest:
698 4 ja_rd
    .ifgt TEST_BREAK
699 2 ja_rd
    #p: BREAK
700 4 ja_rd
    ori     $2,$0,'p'       # check if it jumps to break address and comes back
701 2 ja_rd
    sb      $2,0($20)
702
    ori     $2,$0,'z'
703
    ori     $4,$0,59
704
    break   0
705
    addi    $4,$4,1
706
    sb      $4,0($20)
707 4 ja_rd
 
708
    break   0               # check if load instruction is aborted (@log)
709
    lb      $2,16($2)
710
 
711
    break   0               # check if jump instruction is aborted (@log)
712
    j       break_jump_test
713
    add     $4,$4,5
714
 
715
break_jump_test:
716
    add     $4,$4,1         # make sure the jump shows in the log (@log)
717
 
718 2 ja_rd
    sb      $23,0($20)
719 4 ja_rd
    sb      $21,0($20)
720
    .endif
721 2 ja_rd
 
722
    #q: SYSCALL
723
    ori     $2,$0,'q'
724
    sb      $2,0($20)
725
    ori     $4,$0,61
726
    syscall 0
727
    addi    $4,$4,-1
728
    sb      $4,0($20)
729
    sb      $23,0($20)
730
    sb      $21,0($20)
731
 
732
 
733
    ######################################
734
    #Load, Store, and Memory Control Instructions
735
    ######################################
736
LoadTest:
737
    ori     $2,$0,'L'
738
    sb      $2,0($20)
739
    ori     $2,$0,'o'
740
    sb      $2,0($20)
741
    ori     $2,$0,'a'
742
    sb      $2,0($20)
743
    ori     $2,$0,'d'
744
    sb      $2,0($20)
745
    sb      $23,0($20)
746
    sb      $21,0($20)
747
 
748
    #a: LB
749
    ori     $2,$0,'a'
750
    sb      $2,0($20)
751
    or      $2,$0,$24
752
    li      $3,0x414243fc
753
    sw      $3,16($2)              # 16($2)    = 0x414243fc
754
    lb      $4,16($2)              # $4        = 0x41
755
    sb      $4,0($20)              # UART      = 0x41
756
    lb      $4,17($2)              # $4        = 0x42
757
    nop
758
    sb      $4,0($20)              # UART      = 0x42
759
    lb      $4,18($2)              # $4        = 0x43
760
    nop
761
    sb      $4,0($20)              # UART      = 0x43
762
    lb      $2,19($2)              # $2        = 0xffff.fffc
763
    nop
764
    sra     $3,$2,8                # $3        = 0xffff.ffff
765
    addi    $3,$3,0x45             # $3        = 0x44
766
    sb      $3,0($20)              # UART      = 0x44
767
    addi    $2,$2,0x49             # $4        = 0x45, overflow
768
    sb      $2,0($20)              # UART      = 0x45
769
    sb      $23,0($20)             # UART      = CR
770
    sb      $21,0($20)             # UART      = LF
771
 
772
    #b: LBU
773
    ori     $2,$0,'b'
774
    sb      $2,0($20)
775
    or      $2,$0,$24
776
    li      $3,0x41424344
777
    sw      $3,16($2)
778
    lb      $4,16($2)
779
    sb      $4,0($20)
780
    lb      $4,17($2)
781
    sb      $4,0($20)
782
    lb      $4,18($2)
783
    sb      $4,0($20)
784
    lb      $2,19($2)
785
    sb      $2,0($20)
786
    sb      $23,0($20)
787
    sb      $21,0($20)
788
 
789
    #c: LH
790
    ori     $2,$0,'c'
791
    sb      $2,0($20)
792
    or      $2,$0,$24
793
    li      $3,0x00410042
794
    sw      $3,16($2)
795
    lh      $4,16($2)
796
    sb      $4,0($20)
797
    lh      $2,18($2)
798
    sb      $2,0($20)
799
    sb      $23,0($20)
800
    sb      $21,0($20)
801
 
802
    #d: LHU
803
    ori     $2,$0,'d'
804
    sb      $2,0($20)
805
    or      $2,$0,$24
806
    li      $3,0x00410042
807
    sw      $3,16($2)
808
    lh      $4,16($2)
809
    sb      $4,0($20)
810
    lh      $2,18($2)
811
    sb      $2,0($20)
812
    sb      $23,0($20)
813
    sb      $21,0($20)
814
 
815
    #e: LW
816
    ori     $2,$0,'e'
817
    sb      $2,0($20)
818
    or      $2,$0,$24
819
    li      $3,'A'
820
    sw      $3,16($2)
821
    ori     $3,$0,0
822
    lw      $2,16($2)
823
    sb      $2,0($20)
824
    sb      $23,0($20)
825
    sb      $21,0($20)
826
 
827
    .ifgt TEST_UNALIGNED_LOADS
828
    #f: LWL & LWR
829
    ori     $2,$0,'f'
830
    sb      $2,0($20)
831
    or      $2,$0,$24
832
    li      $3,'A'
833
    sw      $3,16($2)
834
    ori     $3,$0,0
835
    lwl     $2,16($2)
836
    lwr     $2,16($2)
837
    sb      $2,0($20)
838
    sb      $23,0($20)
839
    sb      $21,0($20)
840
    .endif
841
 
842
    #g: SB
843
    ori     $2,$0,'g'
844
    sb      $2,0($20)
845
    ori     $2,$0,'A'
846
    sb      $2,0($20)
847
    sb      $23,0($20)
848
    sb      $21,0($20)
849
 
850
    #h: SH
851
    ori     $2,$0,'h'
852
    sb      $2,0($20)
853
    or      $4,$0,$24
854
    ori     $2,$0,0x4142
855
    sh      $2,16($4)
856
    lb      $3,16($4)
857
    sb      $3,0($20)
858
    lb      $2,17($4)
859
    sb      $2,0($20)
860
    sb      $23,0($20)
861
    sb      $21,0($20)
862
 
863
    #i: SW
864
    ori     $2,$0,'i'
865
    sb      $2,0($20)
866
    or      $2,$0,$24
867
    li      $3,0x41424344
868
    sw      $3,16($2)
869
    lb      $4,16($2)
870
    sb      $4,0($20)
871
    lb      $4,17($2)
872
    sb      $4,0($20)
873
    lb      $4,18($2)
874
    sb      $4,0($20)
875
    lb      $2,19($2)
876
    sb      $2,0($20)
877
    sb      $23,0($20)
878
    sb      $21,0($20)
879
 
880
    .ifgt  TEST_UNALIGNED_STORES
881
    #j: SWL & SWR
882
    ori     $2,$0,'j'
883
    sb      $2,0($20)
884
    or      $2,$0,$24
885
    li      $3,0x41424344
886
    swl     $3,16($2)
887
    swr     $3,16($2)
888
    lb      $4,16($2)
889
    sb      $4,0($20)
890
    lb      $4,17($2)
891
    sb      $4,0($20)
892
    lb      $4,18($2)
893
    sb      $4,0($20)
894
    lb      $2,19($2)
895
    sb      $2,0($20)
896
    sb      $23,0($20)
897
    sb      $21,0($20)
898
    .endif
899
 
900
    ######################################
901
    #Logical Instructions
902
    ######################################
903
LogicalTest:
904
    ori     $2,$0,'L'
905
    sb      $2,0($20)
906
    ori     $2,$0,'o'
907
    sb      $2,0($20)
908
    ori     $2,$0,'g'
909
    sb      $2,0($20)
910
    ori     $2,$0,'i'
911
    sb      $2,0($20)
912
    ori     $2,$0,'c'
913
    sb      $2,0($20)
914
    sb      $23,0($20)
915
    sb      $21,0($20)
916
 
917
    #a: AND
918
    ori     $2,$0,'a'
919
    sb      $2,0($20)
920
    ori     $2,$0,0x0741
921
    ori     $3,$0,0x60f3
922
    and     $4,$2,$3
923
    sb      $4,0($20)
924
    sb      $23,0($20)
925
    sb      $21,0($20)
926
 
927
    #b: ANDI
928
    ori     $2,$0,'b'
929
    sb      $2,0($20)
930
    ori     $2,$0,0x0741
931
    andi    $4,$2,0x60f3
932
    sb      $4,0($20)
933
    sb      $23,0($20)
934
    sb      $21,0($20)
935
 
936
    #c: LUI
937
    ori     $2,$0,'c'
938
    sb      $2,0($20)
939
    lui     $2,0x41
940
    srl     $3,$2,16
941
    sb      $3,0($20)
942
    sb      $23,0($20)
943
    sb      $21,0($20)
944
 
945
    #d: NOR
946
    ori     $2,$0,'d'
947
    sb      $2,0($20)
948
    li      $2,0xf0fff08e
949
    li      $3,0x0f0f0f30
950
    nor     $4,$2,$3
951
    sb      $4,0($20)
952
    sb      $23,0($20)
953
    sb      $21,0($20)
954
 
955
    #e: OR
956
    ori     $2,$0,'e'
957
    sb      $2,0($20)
958
    ori     $2,$0,0x40
959
    ori     $3,$0,0x01
960
    or      $4,$2,$3
961
    sb      $4,0($20)
962
    sb      $23,0($20)
963
    sb      $21,0($20)
964
 
965
    #f: ORI
966
    ori     $2,$0,'f'
967
    sb      $2,0($20)
968
    ori     $2,$0,0x40
969
    ori     $4,$2,0x01
970
    sb      $4,0($20)
971
    sb      $23,0($20)
972
    sb      $21,0($20)
973
 
974
    #g: XOR
975
    ori     $2,$0,'g'
976
    sb      $2,0($20)
977
    ori     $2,$0,0xf043
978
    ori     $3,$0,0xf002
979
    xor     $4,$2,$3
980
    sb      $4,0($20)
981
    sb      $23,0($20)
982
    sb      $21,0($20)
983
 
984
    #h: XORI
985
    ori     $2,$0,'h'
986
    sb      $2,0($20)
987
    ori     $2,$0,0xf043
988
    xor     $4,$2,0xf002
989
    sb      $4,0($20)
990
    sb      $23,0($20)
991
    sb      $21,0($20)
992
 
993
 
994
    ######################################
995
    #Move Instructions
996
    ######################################
997
MoveTest:
998
    ori     $2,$0,'M'
999
    sb      $2,0($20)
1000
    ori     $2,$0,'o'
1001
    sb      $2,0($20)
1002
    ori     $2,$0,'v'
1003
    sb      $2,0($20)
1004
    ori     $2,$0,'e'
1005
    sb      $2,0($20)
1006
    sb      $23,0($20)
1007
    sb      $21,0($20)
1008
 
1009
    #a: MFHI
1010
    ori     $2,$0,'a'
1011
    sb      $2,0($20)
1012
    ori     $2,$0,65
1013
    mthi    $2
1014
    mfhi    $3
1015
    sb      $3,0($20)
1016
    sb      $23,0($20)
1017
    sb      $21,0($20)
1018
 
1019
    #b: MFLO
1020
    ori     $2,$0,'b'
1021
    sb      $2,0($20)
1022
    ori     $2,$0,65
1023
    mtlo    $2
1024
    mflo    $3
1025
    sb      $3,0($20)
1026
    sb      $23,0($20)
1027
    sb      $21,0($20)
1028
 
1029
    #c: MTHI
1030
    ori     $2,$0,'c'
1031
    sb      $2,0($20)
1032
    ori     $2,$0,65
1033
    mthi    $2
1034
    mfhi    $3
1035
    sb      $3,0($20)
1036
    sb      $23,0($20)
1037
    sb      $21,0($20)
1038
 
1039
    #d: MTLO
1040
    ori     $2,$0,'d'
1041
    sb      $2,0($20)
1042
    ori     $2,$0,65
1043
    mtlo    $2
1044
    mflo    $3
1045
    sb      $3,0($20)
1046
    sb      $23,0($20)
1047
    sb      $21,0($20)
1048
 
1049
 
1050
    ######################################
1051
    #Shift Instructions
1052
    ######################################
1053
ShiftTest:
1054
    ori     $2,$0,'S'
1055
    sb      $2,0($20)
1056
    ori     $2,$0,'h'
1057
    sb      $2,0($20)
1058
    ori     $2,$0,'i'
1059
    sb      $2,0($20)
1060
    ori     $2,$0,'f'
1061
    sb      $2,0($20)
1062
    ori     $2,$0,'t'
1063
    sb      $2,0($20)
1064
    sb      $23,0($20)
1065
    sb      $21,0($20)
1066
 
1067
    #a: SLL
1068
    ori     $2,$0,'a'
1069
    sb      $2,0($20)
1070
    li      $2,0x40414243
1071
    sll     $3,$2,8
1072
    srl     $3,$3,24
1073
    sb      $3,0($20)
1074
    sb      $23,0($20)
1075
    sb      $21,0($20)
1076
 
1077
    #b: SLLV
1078
    ori     $2,$0,'b'
1079
    sb      $2,0($20)
1080
    li      $2,0x40414243
1081
    ori     $3,$0,8
1082
    sllv    $3,$2,$3
1083
    srl     $3,$3,24
1084
    sb      $3,0($20)
1085
    sb      $23,0($20)
1086
    sb      $21,0($20)
1087
 
1088
    #c: SRA
1089
    ori     $2,$0,'c'
1090
    sb      $2,0($20)
1091
    li      $2,0x40414243
1092
    sra     $3,$2,16
1093
    sb      $3,0($20)
1094
    li      $2,0x84000000
1095
    sra     $3,$2,25
1096
    sub     $3,$3,0x80
1097
    sb      $3,0($20)
1098
    sb      $23,0($20)
1099
    sb      $21,0($20)
1100
 
1101
    #d: SRAV
1102
    ori     $2,$0,'d'
1103
    sb      $2,0($20)
1104
    li      $2,0x40414243
1105
    ori     $3,$0,16
1106
    srav    $3,$2,$3
1107
    sb      $3,0($20)
1108
    ori     $3,$0,25
1109
    li      $2,0x84000000
1110
    srav    $3,$2,$3
1111
    sub     $3,$3,0x80
1112
    sb      $3,0($20)
1113
    sb      $23,0($20)
1114
    sb      $21,0($20)
1115
 
1116
    #e: SRL
1117
    ori     $2,$0,'e'
1118
    sb      $2,0($20)
1119
    li      $2,0x40414243
1120
    srl     $3,$2,16
1121
    sb      $3,0($20)
1122
    li      $2,0x84000000
1123
    srl     $3,$2,25
1124
    sb      $3,0($20)
1125
    sb      $23,0($20)
1126
    sb      $21,0($20)
1127
 
1128
    #f: SRLV
1129
    ori     $2,$0,'f'
1130
    sb      $2,0($20)
1131
    li      $2,0x40414243
1132
    ori     $3,$0,16
1133
    srlv    $4,$2,$3
1134
    sb      $4,0($20)
1135
    ori     $3,$0,25
1136
    li      $2,0x84000000
1137
    srlv    $3,$2,$3
1138
    sb      $3,0($20)
1139
    sb      $23,0($20)
1140
    sb      $21,0($20)
1141
 
1142
 
1143
    ori     $2,$0,'D'
1144
    sb      $2,0($20)
1145
    ori     $2,$0,'o'
1146
    sb      $2,0($20)
1147
    ori     $2,$0,'n'
1148
    sb      $2,0($20)
1149
    ori     $2,$0,'e'
1150
    sb      $2,0($20)
1151
    sb      $23,0($20)
1152
    sb      $21,0($20)
1153
 
1154
 
1155
$DONE:
1156
    j       $DONE
1157
    nop
1158
 
1159
    .set    reorder
1160
    .end    entry
1161
 

powered by: WebSVN 2.1.0

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