// RISC-V Compliance IO Test Header File /* * Copyright (c) 2005-2018 Imperas Software Ltd., www.imperas.com * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, * either express or implied. * * See the License for the specific language governing permissions and * limitations under the License. * */ #ifndef _COMPLIANCE_IO_H #define _COMPLIANCE_IO_H //----------------------------------------------------------------------- // RV IO Macros (Non functional) //----------------------------------------------------------------------- #ifdef _COMPLIANCE_OUTPUT #define RVTEST_IO_PUSH(_SP) \ la _SP, begin_regstate; \ sw x3, 0(_SP); \ sw x4, 4(_SP); \ sw x5, 8(_SP); #define RVTEST_IO_POP(_SP) \ la _SP, begin_regstate; \ lw x3, 0(_SP); \ lw x4, 4(_SP); \ lw x5, 8(_SP); #define RVTEST_IO_WRITE_STR(_SP, _STR) \ .section .data.string; \ 20001: \ .string _STR; \ .section .text; \ RVTEST_IO_PUSH(_SP) \ li x3, 0xF0000000; \ la x4, 20001b; \ 2: lb x5, 0(x4); \ sb x5, 0(x3); \ beq x5, zero, 1f; \ add x4, x4, 1; \ j 2b; \ 1: RVTEST_IO_POP(_SP) #else // #ifdef _COMPLIANCE_OUTPUT #define RVTEST_IO_WRITE_STR(_SP, _STR) #endif // #end #ifdef _COMPLIANCE_OUTPUT #define RVTEST_IO_INIT #define RVTEST_IO_CHECK() #define RVTEST_IO_ASSERT_GPR_EQ(_SP, _R, _I) #define RVTEST_IO_ASSERT_SFPR_EQ(_F, _R, _I) #define RVTEST_IO_ASSERT_DFPR_EQ(_D, _R, _I) #define RVTEST_IO_ASSERT_EQ(_R, _I) #endif // _COMPLIANCE_IO_H