From 99a50ce584cd29bcef7ed31cb9d933d0ae2e61ee Mon Sep 17 00:00:00 2001 From: Flavian Kaufmann Date: Tue, 21 May 2024 14:02:29 +0200 Subject: test prog --- README.md | 4 +-- prog/src/prog.s.tst | 78 ---------------------------------------------------- prog/src/startup.c | 4 +++ prog/src/test_prog.s | 67 ++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 73 insertions(+), 80 deletions(-) delete mode 100644 prog/src/prog.s.tst create mode 100644 prog/src/test_prog.s diff --git a/README.md b/README.md index 7f42392..e708037 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ riscv_cpu |-> build # build folder |-> debug |-> cpu.gtkw # template for gtkwave - |-> prog + |-> prog # program that gets compiled to run on cpu |-> include |-> src |-> link.ld @@ -42,7 +42,7 @@ riscv_cpu |-> src |-> Makefile |-> sim - |-> gentestvec # generate testvectors for testbenches + |-> gentestvec # programs to generate testvectors for testbenches |-> src |-> Makefile |-> testbenches # testbench sources diff --git a/prog/src/prog.s.tst b/prog/src/prog.s.tst deleted file mode 100644 index ec227a9..0000000 --- a/prog/src/prog.s.tst +++ /dev/null @@ -1,78 +0,0 @@ -.section .text -.globl test_prog - - -/* - addi t0, zero, 31 -reset_loop: - addi t6, zero, 0 -loop: - addi t6, t6, 1 - beq t6, t0, reset_loop - j loop -*/ - -test_prog: - li t0, 0xFFFFFFFF - li t1, 0x33333333 - li t2, 0x88888888 - li t3, 0x11111111 - - add t4, t1, t2 - sub t4, t1, t2 - slt t4, t3, t0 - slt t4, t0, t3 - sltu t4, t3, t0 - sltu t4, t0, t3 - and t4, zero, zero - and t4, zero, t0 - and t4, t0, t0 - or t4, zero, zero - or t4, zero, t0 - or t4, t0, t0 - xor t4, zero, zero - xor t4, zero, t0 - xor t4, t0, t0 - - beq t0, t0, branch_eq - j branch_eq_nt -end: - ret - -branch_eq_ret: - beq t0, t3, branch_ne - j branch_ne_nt - -branch_ne_ret: - addi sp, sp, -16 # Adjust stack pointer to make space for ra and s0 - sw ra, 0(sp) # Save ra to the stack - call func - lw ra, 0(sp) # Load ra from the stack - addi sp, sp, 16 # Restore stack pointer - - li t0, 0x00100000 - sw t1, 0(t0) - lw t2, 0(t0) - - j end - - -branch_eq: - addi t5, zero, 1 - j branch_eq_ret - -branch_eq_nt: - addi t5, zero, 2 - j branch_eq_ret - -branch_ne: - addi t5, zero, 3 - j branch_ne_ret - -branch_ne_nt: - addi t5, zero, 4 - j branch_ne_ret - -func: - addi t5, zero, 5 - ret diff --git a/prog/src/startup.c b/prog/src/startup.c index c09f221..2ed3253 100644 --- a/prog/src/startup.c +++ b/prog/src/startup.c @@ -7,10 +7,14 @@ extern unsigned int _estack; // end of .stack section (stack top) void main(void); // main function declaration +// extern void test_prog(void); + void _start(void) __attribute__((section(".text.startup"), naked)); // entry point, cpu starts executing from here void _start(void) { + // test_prog(); + unsigned int *src, *dst; // copy .data section from ROM to RAM diff --git a/prog/src/test_prog.s b/prog/src/test_prog.s new file mode 100644 index 0000000..caa6d8c --- /dev/null +++ b/prog/src/test_prog.s @@ -0,0 +1,67 @@ +.section .text +.globl test_prog + +test_prog: + li t0, 0xFFFFFFFF + li t1, 0x33333333 + li t2, 0x88888888 + li t3, 0x11111111 + + add t4, t1, t2 + sub t4, t1, t2 + slt t4, t3, t0 + slt t4, t0, t3 + sltu t4, t3, t0 + sltu t4, t0, t3 + and t4, zero, zero + and t4, zero, t0 + and t4, t0, t0 + or t4, zero, zero + or t4, zero, t0 + or t4, t0, t0 + xor t4, zero, zero + xor t4, zero, t0 + xor t4, t0, t0 + + beq t0, t0, branch_eq + j branch_eq_nt +end: + ret + +branch_eq_ret: + beq t0, t3, branch_ne + j branch_ne_nt + +branch_ne_ret: + addi sp, sp, -16 + sw ra, 0(sp) + call func + lw ra, 0(sp) + addi sp, sp, 16 + + li t0, 0x00100000 + sw t1, 0(t0) + lw t2, 0(t0) + + j end + + +branch_eq: + addi t5, zero, 1 + j branch_eq_ret + +branch_eq_nt: + addi t5, zero, 2 + j branch_eq_ret + +branch_ne: + addi t5, zero, 3 + j branch_ne_ret + +branch_ne_nt: + addi t5, zero, 4 + j branch_ne_ret + +func: + addi t5, zero, 5 + ret -- cgit v1.2.3