| /* Testsuite macros for OpenRISC. |
| |
| Copyright (C) 2017-2021 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 */ |