80 lines
966 B
ArmAsm
80 lines
966 B
ArmAsm
.section .text
|
|
.global start
|
|
.global sieve
|
|
.global stats
|
|
|
|
#define TEST(n) \
|
|
.global n; .global n ## _ret; \
|
|
jal zero,n; n ## _ret:
|
|
|
|
start:
|
|
TEST(lui)
|
|
TEST(auipc)
|
|
TEST(j)
|
|
TEST(jal)
|
|
TEST(jalr)
|
|
|
|
TEST(beq)
|
|
TEST(bne)
|
|
TEST(blt)
|
|
TEST(bge)
|
|
TEST(bltu)
|
|
TEST(bgeu)
|
|
|
|
TEST(lb)
|
|
TEST(lh)
|
|
TEST(lw)
|
|
TEST(lbu)
|
|
TEST(lhu)
|
|
|
|
TEST(sb)
|
|
TEST(sh)
|
|
TEST(sw)
|
|
|
|
TEST(addi)
|
|
TEST(slti) // also tests sltiu
|
|
TEST(xori)
|
|
TEST(ori)
|
|
TEST(andi)
|
|
TEST(slli)
|
|
TEST(srli)
|
|
TEST(srai)
|
|
|
|
TEST(add)
|
|
TEST(sub)
|
|
TEST(sll)
|
|
TEST(slt) // what is with sltu ?
|
|
TEST(xor)
|
|
TEST(srl)
|
|
TEST(sra)
|
|
TEST(or)
|
|
TEST(and)
|
|
|
|
TEST(simple)
|
|
|
|
/* set stack pointer */
|
|
lui sp,(64*1024)>>12
|
|
|
|
/* jump to sieve C code */
|
|
jal ra,sieve
|
|
|
|
/* jump to stats C code */
|
|
jal ra,stats
|
|
|
|
/* print "DONE\n" */
|
|
lui a0,0x10000000>>12
|
|
addi a1,zero,'D'
|
|
addi a2,zero,'O'
|
|
addi a3,zero,'N'
|
|
addi a4,zero,'E'
|
|
addi a5,zero,'\n'
|
|
sw a1,0(a0)
|
|
sw a2,0(a0)
|
|
sw a3,0(a0)
|
|
sw a4,0(a0)
|
|
sw a5,0(a0)
|
|
|
|
/* break */
|
|
sbreak
|
|
|