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

Subversion Repositories ion

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

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

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

powered by: WebSVN 2.1.0

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