Update copyright year range in all GDB files
[external/binutils.git] / sim / testsuite / sim / or1k / or1k-asm-test-env.h
1 /* Testsuite macros for OpenRISC.
2
3    Copyright (C) 2017-2018 Free Software Foundation, Inc.
4
5    This program is free software; you can redistribute it and/or modify
6    it under the terms of the GNU General Public License as published by
7    the Free Software Foundation; either version 3 of the License, or
8    (at your option) any later version.
9
10    This program is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13    GNU General Public License for more details.
14
15    You should have received a copy of the GNU General Public License
16    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
17
18 #ifndef OR1K_ASM_TEST_ENV_H
19 #define OR1K_ASM_TEST_ENV_H
20
21 #include "or1k-asm.h"
22 #include "or1k-asm-test.h"
23
24         .macro STANDARD_TEST_HEADER
25         /* Without the "a" (allocatable) flag, this section gets some
26            default flags and is discarded by objcopy when flattening to
27            the binary file.  */
28         .section .exception_vectors, "ax"
29         .org    0x100
30         .global _start
31 _start:
32         /* Clear R0 on start-up. There is no guarantee that R0 is hardwired
33            to zero and indeed it is not when simulating.  */
34         CLEAR_REG r0
35         OR1K_DELAYED_NOP(l.j test_startup)
36         .section .text
37 test_startup:
38         .endm
39
40         .macro STANDARD_TEST_BODY
41         LOAD_IMMEDIATE STACK_POINTER_R1, stack_begin
42         CLEAR_BSS r3, r4
43         CALL r3, start_tests
44         EXIT_SIMULATION_WITH_IMMEDIATE_EXIT_CODE SEC_SUCCESS
45         .section .stack
46         .space 4096 /* We need more than EXCEPTION_STACK_SKIP_SIZE bytes.  */
47 stack_begin:
48         .endm
49
50         .macro STANDARD_TEST_ENVIRONMENT
51         /* One of the test cases needs to do some tests before setting up
52            the stack and so on.  That's the reason this macro is split into
53            2 parts allowing the caller to inject code between the 2
54            initialisation phases.  */
55         STANDARD_TEST_HEADER
56         STANDARD_TEST_BODY
57         .endm
58
59 #endif /* OR1K_ASM_TEST_ENV_H */