1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 |
- /* Testsuite macros for OpenRISC.
- Copyright (C) 2017-2022 Free Software Foundation, Inc.
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3 of the License, or
- (at your option) any later version.
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
- #ifndef OR1K_ASM_TEST_ENV_H
- #define OR1K_ASM_TEST_ENV_H
- #include "or1k-asm.h"
- #include "or1k-asm-test.h"
- .macro STANDARD_TEST_HEADER
- /* Without the "a" (allocatable) flag, this section gets some
- default flags and is discarded by objcopy when flattening to
- the binary file. */
- .section .exception_vectors, "ax"
- .org 0x100
- .global _start
- _start:
- /* Clear R0 on start-up. There is no guarantee that R0 is hardwired
- to zero and indeed it is not when simulating. */
- CLEAR_REG r0
- OR1K_DELAYED_NOP(l.j test_startup)
- .section .text
- test_startup:
- .endm
- .macro STANDARD_TEST_BODY
- LOAD_IMMEDIATE STACK_POINTER_R1, stack_begin
- CLEAR_BSS r3, r4
- CALL r3, start_tests
- EXIT_SIMULATION_WITH_IMMEDIATE_EXIT_CODE SEC_SUCCESS
- .section .stack
- .space 4096 /* We need more than EXCEPTION_STACK_SKIP_SIZE bytes. */
- stack_begin:
- .endm
- .macro STANDARD_TEST_ENVIRONMENT
- /* One of the test cases needs to do some tests before setting up
- the stack and so on. That's the reason this macro is split into
- 2 parts allowing the caller to inject code between the 2
- initialisation phases. */
- STANDARD_TEST_HEADER
- STANDARD_TEST_BODY
- .endm
- #endif /* OR1K_ASM_TEST_ENV_H */
|