URL
https://opencores.org/ocsvn/plasma/plasma/trunk
Subversion Repositories plasma
[/] [plasma/] [trunk/] [tools/] [opcodes.asm] - Rev 427
Compare with Previous | Blame | View Log
################################################################### TITLE: Opcode Tester# AUTHOR: Steve Rhoads (rhoadss@yahoo.com)# DATE CREATED: 1/10/02# FILENAME: opcodes.asm# PROJECT: Plasma CPU core# COPYRIGHT: Software placed into the public domain by the author.# Software 'as is' without warranty. Author liable for nothing.# DESCRIPTION:# This assembly file tests all of the opcodes supported by the# Plasma core.# This test assumes that address 0x20000000 is the UART write register# Successful tests will print out "A" or "AB" or "ABC" or ....# Missing letters or letters out of order indicate a failure.##################################################################.text.align 2.globl entry.ent entryentry:.set noreorderla $gp, _gp #initialize stack pointerla $4, __bss_start #$4 = .sbss_startla $5, _end #$5 = .bss_endnop #no stack needednopb StartTestnop #nops required to place ISR at 0x3cnopOS_AsmPatchValue:#Code to place at address 0x3clui $26, 0x1000ori $26, $26, 0x3cjr $26nopInterruptVector: #Address=0x3cmfc0 $26,$14 #C0_EPC=14 (Exception PC)jr $26add $4,$4,5StartTest:mtc0 $0,$12 #disable interruptslui $20,0x2000 #serial port write addressori $21,$0,'\n' #<CR> letterori $22,$0,'X' #'X' letterori $23,$0,'\r'ori $24,$0,0x0f80 #temp memorysb $23,0($20)sb $21,0($20)sb $23,0($20)sb $21,0($20)sb $23,0($20)sb $21,0($20)sb $23,0($20)sb $21,0($20)#Patch interrupt vector to 0x1000003cla $5, OS_AsmPatchValuesub $6,$5,0x1000blez $6,NoPatchlw $6, 0($5)sw $6, 0x3c($0)lw $6, 4($5)sw $6, 0x40($0)lw $6, 8($5)sw $6, 0x44($0)lw $6, 12($5)sw $6, 0x48($0)NoPatch:#######################################Arithmetic Instructions######################################ArthmeticTest:ori $2,$0,'A'sb $2,0($20)ori $2,$0,'r'sb $2,0($20)ori $2,$0,'i'sb $2,0($20)ori $2,$0,'t'sb $2,0($20)ori $2,$0,'h'sb $2,0($20)sb $23,0($20)sb $21,0($20)#a: ADDori $2,$0,'a'sb $2,0($20)ori $3,$0,5ori $4,$0,60add $2,$3,$4sb $2,0($20) #Asb $23,0($20)sb $21,0($20)#b: ADDIori $2,$0,'b'sb $2,0($20)ori $4,$0,60addi $2,$4,5sb $2,0($20) #Asb $23,0($20)sb $21,0($20)#c: ADDIUori $2,$0,'c'sb $2,0($20)ori $4,$0,50addiu $5,$4,15sb $5,0($20) #Asb $23,0($20)sb $21,0($20)#d: ADDUori $2,$0,'d'sb $2,0($20)ori $3,$0,5ori $4,$0,60add $2,$3,$4sb $2,0($20) #Asb $23,0($20)sb $21,0($20)#e: DIVori $2,$0,'e'sb $2,0($20)ori $2,$0,65*117+41ori $3,$0,117div $2,$3nopmflo $4sb $4,0($20) #Amfhi $4addi $4,$4,66-41sb $4,0($20) #Bli $2,-67*19ori $3,$0,19div $2,$3nopmflo $4sub $4,$0,$4sb $4,0($20) #Cori $2,$0,68*23li $3,-23div $2,$3nopmflo $4sub $4,$0,$4sb $4,0($20) #Dli $2,-69*13li $3,-13div $2,$3mflo $4sb $4,0($20) #Eli $2,-5 #-5%12=-5li $3,12div $2,$3mfhi $4addiu $4,$4,'F'+5sb $4,0($20) #Fsb $23,0($20)sb $21,0($20)#f: DIVUori $2,$0,'f'sb $2,0($20)ori $2,$0,65*13ori $3,$0,13divu $2,$3nopmflo $4sb $4,0($20) #Asb $23,0($20)sb $21,0($20)#g: MULTori $2,$0,'g'sb $2,0($20)ori $2,$0,5ori $3,$0,13mult $2,$3nopmflo $4sb $4,0($20) #Ali $2,-5ori $3,$0,13mult $2,$3mfhi $5mflo $4sub $4,$0,$4addu $4,$4,$5addi $4,$4,2sb $4,0($20) #Bori $2,$0,5li $3,-13mult $2,$3mfhi $5mflo $4sub $4,$0,$4addu $4,$4,$5addi $4,$4,3sb $4,0($20) #Cli $2,-5li $3,-13mult $2,$3mfhi $5mflo $4addu $4,$4,$5addi $4,$4,3sb $4,0($20) #Dlui $4,0xfe98ori $4,$4,0x62e5lui $5,0x6ori $5,0x8db8mult $4,$5mfhi $6addiu $7,$6,2356+1+'E' #Esb $7,0($20)li $2,-1li $3,0mult $2,$3mfhi $4addiu $4,$4,'F'sb $4,0($20) #Fmult $3,$2mfhi $4addiu $4,$4,'G'sb $4,0($20) #Gsb $23,0($20)sb $21,0($20)#h: MULTUori $2,$0,'h'sb $2,0($20)ori $2,$0,5ori $3,$0,13multu $2,$3nopmflo $4sb $4,0($20) #Asb $23,0($20)sb $21,0($20)#i: SLTori $2,$0,'i'sb $2,0($20)ori $2,$0,10ori $3,$0,12slt $4,$2,$3addi $5,$4,64sb $5,0($20) #Aslt $4,$3,$2addi $5,$4,66sb $5,0($20) #Bli $2,0xfffffff0slt $4,$2,$3addi $5,$4,66sb $5,0($20) #Cslt $4,$3,$2addi $5,$4,68sb $5,0($20) #Dli $3,0xffffffffslt $4,$2,$3addi $5,$4,68sb $5,0($20) #Eslt $4,$3,$2addi $5,$4,70sb $5,0($20) #Fsb $23,0($20)sb $21,0($20)#j: SLTIori $2,$0,'j'sb $2,0($20)ori $2,$0,10slti $4,$2,12addi $5,$4,64sb $5,0($20) #Aslti $4,$2,8addi $5,$4,66sb $5,0($20) #Bsb $23,0($20)sb $21,0($20)#k: SLTIUori $2,$0,'k'sb $2,0($20)ori $2,$0,10sltiu $4,$2,12addi $5,$4,64sb $5,0($20) #Asltiu $4,$2,8addi $5,$4,66sb $5,0($20) #Bsb $23,0($20)sb $21,0($20)#l: SLTUori $2,$0,'l'sb $2,0($20)ori $2,$0,10ori $3,$0,12slt $4,$2,$3addi $5,$4,64sb $5,0($20) #Aslt $4,$3,$2addi $5,$4,66sb $5,0($20) #Bsb $23,0($20)sb $21,0($20)#m: SUBori $2,$0,'m'sb $2,0($20)ori $3,$0,70ori $4,$0,5sub $2,$3,$4sb $2,0($20) #Asb $23,0($20)sb $21,0($20)#n: SUBUori $2,$0,'n'sb $2,0($20)ori $3,$0,70ori $4,$0,5sub $2,$3,$4sb $2,0($20) #Asb $23,0($20)sb $21,0($20)#######################################Branch and Jump Instructions######################################BranchTest:ori $2,$0,'B'sb $2,0($20)ori $2,$0,'r'sb $2,0($20)ori $2,$0,'a'sb $2,0($20)ori $2,$0,'n'sb $2,0($20)ori $2,$0,'c'sb $2,0($20)ori $2,$0,'h'sb $2,0($20)sb $23,0($20)sb $21,0($20)#a: Bori $2,$0,'a'sb $2,0($20)ori $10,$0,'A'ori $11,$0,'B'b $B1sb $10,0($20)sb $22,0($20)$B1:sb $11,0($20)sb $23,0($20)sb $21,0($20)#b: BALori $2,$0,'b'sb $2,0($20)ori $10,$0,'A'ori $11,$0,'B'ori $12,$0,'C'ori $13,$0,'D'ori $14,$0,'E'ori $15,$0,'X'bal $BAL1sb $10,0($20)sb $13,0($20)b $BAL2sb $14,0($20)sb $15,0($20)$BAL1:sb $11,0($20)jr $31sb $12,0($20)sb $22,0($20)$BAL2:sb $23,0($20)sb $21,0($20)#c: BEQori $2,$0,'c'sb $2,0($20)ori $10,$0,'A'ori $11,$0,'B'ori $12,$0,'C'ori $13,$0,'D'ori $2,$0,100ori $3,$0,123ori $4,$0,123beq $2,$3,$BEQ1sb $10,0($20)sb $11,0($20)beq $3,$4,$BEQ1sb $12,0($20)sb $22,0($20)$BEQ1:sb $13,0($20)sb $23,0($20)sb $21,0($20)#d: BGEZori $2,$0,'d'sb $2,0($20)ori $10,$0,'A'ori $11,$0,'B'ori $12,$0,'C'ori $13,$0,'D'or $15,$0,'X'ori $2,$0,100li $3,0xffff1234ori $4,$0,123bgez $3,$BGEZ1sb $10,0($20)sb $11,0($20)bgez $2,$BGEZ1sb $12,0($20)sb $22,0($20)$BGEZ1:bgez $0,$BGEZ2nopsb $15,0($20)$BGEZ2:sb $13,0($20)sb $23,0($20)sb $21,0($20)#e: BGEZALori $2,$0,'e'sb $2,0($20)ori $10,$0,'A'ori $11,$0,'B'ori $12,$0,'C'ori $13,$0,'D'ori $14,$0,'E'ori $15,$0,'X'li $3,0xffff1234bgezal $3,$BGEZAL1nopsb $10,0($20)bgezal $0,$BGEZAL1nopsb $13,0($20)b $BGEZAL2sb $14,0($20)sb $15,0($20)$BGEZAL1:sb $11,0($20)jr $31sb $12,0($20)sb $22,0($20)$BGEZAL2:sb $23,0($20)sb $21,0($20)#f: BGTZori $2,$0,'f'sb $2,0($20)ori $10,$0,'A'ori $11,$0,'B'ori $12,$0,'C'ori $13,$0,'D'ori $2,$0,100li $3,0xffff1234bgtz $3,$BGTZ1sb $10,0($20)sb $11,0($20)bgtz $2,$BGTZ1sb $12,0($20)sb $22,0($20)$BGTZ1:sb $13,0($20)sb $23,0($20)sb $21,0($20)#g: BLEZori $2,$0,'g'sb $2,0($20)ori $10,$0,'A'ori $11,$0,'B'ori $12,$0,'C'ori $13,$0,'D'ori $2,$0,100li $3,0xffff1234blez $2,$BLEZ1sb $10,0($20)sb $11,0($20)blez $3,$BLEZ1sb $12,0($20)sb $22,0($20)$BLEZ1:blez $0,$BLEZ2nopsb $22,0($20)$BLEZ2:sb $13,0($20)sb $23,0($20)sb $21,0($20)#h: BLTZori $2,$0,'h'sb $2,0($20)ori $10,$0,'A'ori $11,$0,'B'ori $12,$0,'C'ori $13,$0,'D'ori $14,$0,'E'ori $2,$0,100li $3,0xffff1234ori $4,$0,0bltz $2,$BLTZ1sb $10,0($20)sb $11,0($20)bltz $3,$BLTZ1sb $12,0($20)sb $22,0($20)$BLTZ1:bltz $4,$BLTZ2nopsb $13,0($20)$BLTZ2:sb $14,0($20)sb $23,0($20)sb $21,0($20)#i: BLTZALori $2,$0,'i'sb $2,0($20)ori $10,$0,'A'ori $11,$0,'B'ori $12,$0,'C'ori $13,$0,'D'ori $14,$0,'E'ori $15,$0,'X'li $3,0xffff1234bltzal $0,$BLTZAL1nopsb $10,0($20)bltzal $3,$BLTZAL1nopsb $13,0($20)b $BLTZAL2sb $14,0($20)sb $15,0($20)$BLTZAL1:sb $11,0($20)jr $31sb $12,0($20)sb $22,0($20)$BLTZAL2:sb $23,0($20)sb $21,0($20)#j: BNEori $2,$0,'j'sb $2,0($20)ori $10,$0,'A'ori $11,$0,'B'ori $12,$0,'C'ori $13,$0,'D'ori $2,$0,100ori $3,$0,123ori $4,$0,123bne $3,$4,$BNE1sb $10,0($20)sb $11,0($20)bne $2,$3,$BNE1sb $12,0($20)sb $22,0($20)$BNE1:sb $13,0($20)sb $23,0($20)sb $21,0($20)#k: Jori $2,$0,'k'sb $2,0($20)ori $10,$0,'A'ori $11,$0,'B'ori $15,$0,'X'j $J1sb $10,0($20)sb $15,0($20)$J1:sb $11,0($20)sb $23,0($20)sb $21,0($20)#l: JALori $2,$0,'l'sb $2,0($20)ori $10,$0,'A'ori $11,$0,'B'ori $12,$0,'C'ori $13,$0,'D'ori $14,$0,'E'ori $15,$0,'X'jal $JAL1sb $10,0($20)sb $13,0($20)b $JAL2sb $14,0($20)sb $15,0($20)$JAL1:sb $11,0($20)jr $31sb $12,0($20)sb $22,0($20)$JAL2:sb $23,0($20)sb $21,0($20)#m: JALRori $2,$0,'m'sb $2,0($20)ori $10,$0,'A'ori $11,$0,'B'ori $12,$0,'C'ori $13,$0,'D'ori $14,$0,'E'ori $15,$0,'X'la $3,$JALR1jalr $3sb $10,0($20)sb $13,0($20)b $JALR2sb $14,0($20)sb $15,0($20)$JALR1:sb $11,0($20)jr $31sb $12,0($20)sb $22,0($20)$JALR2:sb $23,0($20)sb $21,0($20)#n: JRori $2,$0,'n'sb $2,0($20)ori $10,$0,'A'ori $11,$0,'B'ori $15,$0,'X'la $3,$JR1jr $3sb $10,0($20)sb $15,0($20)$JR1:sb $11,0($20)sb $23,0($20)sb $21,0($20)#o: NOPori $2,$0,'o'sb $2,0($20)ori $2,$0,65nopsb $2,0($20)sb $23,0($20)sb $21,0($20)# b LoadTestBreakTest:#p: BREAKori $2,$0,'p'sb $2,0($20)ori $2,$0,'z'ori $4,$0,59break 0addi $4,$4,1sb $4,0($20)sb $23,0($20)sb $21,0($20)#q: SYSCALLori $2,$0,'q'sb $2,0($20)ori $4,$0,61syscall 0addi $4,$4,-1sb $4,0($20)sb $23,0($20)sb $21,0($20)#######################################Load, Store, and Memory Control Instructions######################################LoadTest:ori $2,$0,'L'sb $2,0($20)ori $2,$0,'o'sb $2,0($20)ori $2,$0,'a'sb $2,0($20)ori $2,$0,'d'sb $2,0($20)sb $23,0($20)sb $21,0($20)#a: LBori $2,$0,'a'sb $2,0($20)or $2,$0,$24li $3,0x414243fcsw $3,16($2)lb $4,16($2)sb $4,0($20)lb $4,17($2)sb $4,0($20)lb $4,18($2)sb $4,0($20)lb $2,19($2)sra $3,$2,8addi $3,$3,0x45sb $3,0($20)addi $2,$2,0x49sb $2,0($20)sb $23,0($20)sb $21,0($20)#b: LBUori $2,$0,'b'sb $2,0($20)or $2,$0,$24li $3,0x41424344sw $3,16($2)lb $4,16($2)sb $4,0($20)lb $4,17($2)sb $4,0($20)lb $4,18($2)sb $4,0($20)lb $2,19($2)sb $2,0($20)sb $23,0($20)sb $21,0($20)#c: LHori $2,$0,'c'sb $2,0($20)or $2,$0,$24li $3,0x00410042sw $3,16($2)lh $4,16($2)sb $4,0($20)lh $2,18($2)sb $2,0($20)sb $23,0($20)sb $21,0($20)#d: LHUori $2,$0,'d'sb $2,0($20)or $2,$0,$24li $3,0x00410042sw $3,16($2)lh $4,16($2)sb $4,0($20)lh $2,18($2)sb $2,0($20)sb $23,0($20)sb $21,0($20)#e: LWori $2,$0,'e'sb $2,0($20)or $2,$0,$24li $3,'A'sw $3,16($2)ori $3,$0,0lw $2,16($2)sb $2,0($20)sb $23,0($20)sb $21,0($20)#f: LWL & LWRori $2,$0,'f'sb $2,0($20)or $2,$0,$24li $3,'A'sw $3,16($2)ori $3,$0,0lwl $2,16($2)lwr $2,16($2)sb $2,0($20)sb $23,0($20)sb $21,0($20)#g: SBori $2,$0,'g'sb $2,0($20)ori $2,$0,'A'sb $2,0($20)sb $23,0($20)sb $21,0($20)#h: SHori $2,$0,'h'sb $2,0($20)or $4,$0,$24ori $2,$0,0x4142sh $2,16($4)lb $3,16($4)sb $3,0($20)lb $2,17($4)sb $2,0($20)sb $23,0($20)sb $21,0($20)#i: SWori $2,$0,'i'sb $2,0($20)or $2,$0,$24li $3,0x41424344sw $3,16($2)lb $4,16($2)sb $4,0($20)lb $4,17($2)sb $4,0($20)lb $4,18($2)sb $4,0($20)lb $2,19($2)sb $2,0($20)sb $23,0($20)sb $21,0($20)#j: SWL & SWRori $2,$0,'j'sb $2,0($20)or $2,$0,$24li $3,0x41424344swl $3,16($2)swr $3,16($2)lb $4,16($2)sb $4,0($20)lb $4,17($2)sb $4,0($20)lb $4,18($2)sb $4,0($20)lb $2,19($2)sb $2,0($20)sb $23,0($20)sb $21,0($20)#######################################Logical Instructions######################################LogicalTest:ori $2,$0,'L'sb $2,0($20)ori $2,$0,'o'sb $2,0($20)ori $2,$0,'g'sb $2,0($20)ori $2,$0,'i'sb $2,0($20)ori $2,$0,'c'sb $2,0($20)sb $23,0($20)sb $21,0($20)#a: ANDori $2,$0,'a'sb $2,0($20)ori $2,$0,0x0741ori $3,$0,0x60f3and $4,$2,$3sb $4,0($20)sb $23,0($20)sb $21,0($20)#b: ANDIori $2,$0,'b'sb $2,0($20)ori $2,$0,0x0741andi $4,$2,0x60f3sb $4,0($20)sb $23,0($20)sb $21,0($20)#c: LUIori $2,$0,'c'sb $2,0($20)lui $2,0x41srl $3,$2,16sb $3,0($20)sb $23,0($20)sb $21,0($20)#d: NORori $2,$0,'d'sb $2,0($20)li $2,0xf0fff08eli $3,0x0f0f0f30nor $4,$2,$3sb $4,0($20)sb $23,0($20)sb $21,0($20)#e: ORori $2,$0,'e'sb $2,0($20)ori $2,$0,0x40ori $3,$0,0x01or $4,$2,$3sb $4,0($20)sb $23,0($20)sb $21,0($20)#f: ORIori $2,$0,'f'sb $2,0($20)ori $2,$0,0x40ori $4,$2,0x01sb $4,0($20)sb $23,0($20)sb $21,0($20)#g: XORori $2,$0,'g'sb $2,0($20)ori $2,$0,0xf043ori $3,$0,0xf002xor $4,$2,$3sb $4,0($20)sb $23,0($20)sb $21,0($20)#h: XORIori $2,$0,'h'sb $2,0($20)ori $2,$0,0xf043xor $4,$2,0xf002sb $4,0($20)sb $23,0($20)sb $21,0($20)#######################################Move Instructions######################################MoveTest:ori $2,$0,'M'sb $2,0($20)ori $2,$0,'o'sb $2,0($20)ori $2,$0,'v'sb $2,0($20)ori $2,$0,'e'sb $2,0($20)sb $23,0($20)sb $21,0($20)#a: MFHIori $2,$0,'a'sb $2,0($20)ori $2,$0,65mthi $2mfhi $3sb $3,0($20)sb $23,0($20)sb $21,0($20)#b: MFLOori $2,$0,'b'sb $2,0($20)ori $2,$0,65mtlo $2mflo $3sb $3,0($20)sb $23,0($20)sb $21,0($20)#c: MTHIori $2,$0,'c'sb $2,0($20)ori $2,$0,65mthi $2mfhi $3sb $3,0($20)sb $23,0($20)sb $21,0($20)#d: MTLOori $2,$0,'d'sb $2,0($20)ori $2,$0,65mtlo $2mflo $3sb $3,0($20)sb $23,0($20)sb $21,0($20)#######################################Shift Instructions######################################ShiftTest:ori $2,$0,'S'sb $2,0($20)ori $2,$0,'h'sb $2,0($20)ori $2,$0,'i'sb $2,0($20)ori $2,$0,'f'sb $2,0($20)ori $2,$0,'t'sb $2,0($20)sb $23,0($20)sb $21,0($20)#a: SLLori $2,$0,'a'sb $2,0($20)li $2,0x40414243sll $3,$2,8srl $3,$3,24sb $3,0($20)sb $23,0($20)sb $21,0($20)#b: SLLVori $2,$0,'b'sb $2,0($20)li $2,0x40414243ori $3,$0,8sllv $3,$2,$3srl $3,$3,24sb $3,0($20)sb $23,0($20)sb $21,0($20)#c: SRAori $2,$0,'c'sb $2,0($20)li $2,0x40414243sra $3,$2,16sb $3,0($20)li $2,0x84000000sra $3,$2,25sub $3,$3,0x80sb $3,0($20)sb $23,0($20)sb $21,0($20)#d: SRAVori $2,$0,'d'sb $2,0($20)li $2,0x40414243ori $3,$0,16srav $3,$2,$3sb $3,0($20)ori $3,$0,25li $2,0x84000000srav $3,$2,$3sub $3,$3,0x80sb $3,0($20)sb $23,0($20)sb $21,0($20)#e: SRLori $2,$0,'e'sb $2,0($20)li $2,0x40414243srl $3,$2,16sb $3,0($20)li $2,0x84000000srl $3,$2,25sb $3,0($20)sb $23,0($20)sb $21,0($20)#f: SRLVori $2,$0,'f'sb $2,0($20)li $2,0x40414243ori $3,$0,16srlv $4,$2,$3sb $4,0($20)ori $3,$0,25li $2,0x84000000srlv $3,$2,$3sb $3,0($20)sb $23,0($20)sb $21,0($20)ori $2,$0,'D'sb $2,0($20)ori $2,$0,'o'sb $2,0($20)ori $2,$0,'n'sb $2,0($20)ori $2,$0,'e'sb $2,0($20)sb $23,0($20)sb $21,0($20)$DONE:j $DONEnop.set reorder.end entry
