#ifndef _ENV_PICORV32_TEST_H #define _ENV_PICORV32_TEST_H #ifndef TEST_FUNC_NAME # define TEST_FUNC_NAME mytest # define TEST_FUNC_TXT "mytest" # define TEST_FUNC_RET mytest_ret #endif #define RVTEST_RV32U #define TESTNUM x28 #define RVTEST_CODE_BEGIN \ .text; \ .global TEST_FUNC_NAME; \ .global TEST_FUNC_RET; \ TEST_FUNC_NAME: \ lui a0,%hi(.test_name); \ addi a0,a0,%lo(.test_name); \ lui a2,0x10000000>>12; \ .prname_next: \ lb a1,0(a0); \ beq a1,zero,.prname_done; \ sw a1,0(a2); \ addi a0,a0,1; \ jal zero,.prname_next; \ .test_name: \ .ascii TEST_FUNC_TXT; \ .byte 0x00; \ .balign 4, 0; \ .prname_done: \ addi a1,zero,'.'; \ sw a1,0(a2); \ sw a1,0(a2); #define RVTEST_PASS \ lui a0,0x10000000>>12; \ addi a1,zero,'O'; \ addi a2,zero,'K'; \ addi a3,zero,'\n'; \ sw a1,0(a0); \ sw a2,0(a0); \ sw a3,0(a0); \ jal zero,TEST_FUNC_RET; #define RVTEST_FAIL \ lui a0,0x10000000>>12; \ addi a1,zero,'E'; \ addi a2,zero,'R'; \ addi a3,zero,'O'; \ addi a4,zero,'\n'; \ sw a1,0(a0); \ sw a2,0(a0); \ sw a2,0(a0); \ sw a3,0(a0); \ sw a2,0(a0); \ sw a4,0(a0); \ ebreak; #define RVTEST_CODE_END #define RVTEST_DATA_BEGIN .balign 4; #define RVTEST_DATA_END #endif