Init
This commit is contained in:
70
sim/tests/riscv_compliance/compliance_io.h
Normal file
70
sim/tests/riscv_compliance/compliance_io.h
Normal file
@@ -0,0 +1,70 @@
|
||||
// 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
|
||||
Reference in New Issue
Block a user