riscv-non-isa / riscv-arch-test

https://jira.riscv.org/browse/RVG-141?src=confmacro
Apache License 2.0
503 stars 191 forks source link

RVTEST_CODE_END use of RVTEST_SAVE_GPRS in env/arch_test.h doesn't work #450

Open ssecatch-w opened 6 months ago

ssecatch-w commented 6 months ago

Assembler messages: Error: unrecognized opcode `rvtest_save_gprs x1 gpr_save'

The line with the error is RVTEST_CODE_END

looking at the definition: .macro RVTEST_CODE_END // test is ended, but in no particular mode .option push .option norvc .global rvtest_code_end // define the label and make it available .global cleanup_epilogs // ALERT: tests must populate x1 with a point to the end of regular sig area / MPRV must be clear here !!! ****/ rvtest_code_end: // RVMODEL_HALT should get here

ifdef rvtest_gpr_save // gpr_save area is instantiated at end of signature

RVTEST_SAVE_GPRS  x1        gpr_save

endif

RVTEST_GOTO_MMODE           // if only Mmode used by tests, this has no effect

cleanup_epilogs: // jump here to quit, will restore state for each mode

RVTEST_SAVE_GPRS used to be a macro: .macro RVTEST_SAVE_GPRS BASEREG REG_SV_ADDR // optionally save GPRs

But now it's been replaced with a define which doesn't match the call

define RVTEST_SAVE_GPRSM(_BR, _LBL, ...) ;\

allenjbaum commented 6 months ago

Looks like an extra character got introduced in the macro name. Try deleting the "M" in "#define RVTEST_SAVE_GPRSM" (line 633 I think) and see if that fixes it.

On Wed, Apr 3, 2024 at 12:30 PM ssecatch-w @.***> wrote:

Assembler messages: Error: unrecognized opcode `rvtest_save_gprs x1 gpr_save'

The line with the error is RVTEST_CODE_END

looking at the definition: .macro RVTEST_CODE_END // test is ended, but in no particular mode .option push .option norvc .global rvtest_code_end // define the label and make it available .global cleanup_epilogs // ALERT: tests must populate x1 with a point to the end of regular sig area / MPRV must be clear here !!! ****/ rvtest_code_end: // RVMODEL_HALT should get here

ifdef rvtest_gpr_save // gpr_save area is instantiated at end of signature

RVTEST_SAVE_GPRS x1 gpr_save

endif

RVTEST_GOTO_MMODE // if only Mmode used by tests, this has no effect cleanup_epilogs: // jump here to quit, will restore state for each mode

RVTEST_SAVE_GPRS used to be a macro: .macro RVTEST_SAVE_GPRS BASEREG REG_SV_ADDR // optionally save GPRs

But now it's been replaced with a define which doesn't match the call

define RVTEST_SAVE_GPRSM(_BR, _LBL, ...) ;\

— Reply to this email directly, view it on GitHub https://github.com/riscv-non-isa/riscv-arch-test/issues/450, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHPXVJREYNWUNFDUZYEOARTY3RKGJAVCNFSM6AAAAABFV55DO2VHI2DSMVQWIX3LMV43ASLTON2WKOZSGIZDGNZUGY3TCMY . You are receiving this because you are subscribed to this thread.Message ID: @.***>

ssecatch-w commented 6 months ago

Same error. I suspect the problem is that that macro definition expects at least two parameters (if not more).

Out of curiosity, I also fixed the "call" along with removing the "M": RVTEST_SAVE_GPRS(x1, gpr_save)

And that does compile, though I haven't tested to see if it works yet functionally

allenjbaum commented 6 months ago

That's what I thought, but ... where is arch_test.c?? There are no .c files in the arch_test repo that come to mind

On Wed, Apr 3, 2024 at 3:45 PM ssecatch-w @.***> wrote:

Same error. I suspect the problem is that that macro definition expects at least two parameters (if not more).

Out of curiosity, I fixed the "call": RVTEST_SAVE_GPRS(x1, gpr_save)

And that does compile, though I haven't tested to see if it works yet functionally

— Reply to this email directly, view it on GitHub https://github.com/riscv-non-isa/riscv-arch-test/issues/450#issuecomment-2035733221, or unsubscribe https://github.com/notifications/unsubscribe-auth/AHPXVJQCTTH3VCXG4GMVL73Y3SBB3AVCNFSM6AAAAABFV55DO2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDAMZVG4ZTGMRSGE . You are receiving this because you commented.Message ID: @.***>

ssecatch-w commented 6 months ago

My apologies! arch_test.h https://github.com/riscv-non-isa/riscv-arch-test/blob/main/riscv-test-suite/env/arch_test.h