summaryrefslogtreecommitdiff
path: root/libguile/lightening/lightening/aarch64.h
blob: 5c99f6303af11994c7679b3ee5e9b6db67080537 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
/*
 * Copyright (C) 2013-2017, 2019  Free Software Foundation, Inc.
 *
 * This file is part of GNU lightning.
 *
 * GNU lightning is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as published
 * by the Free Software Foundation; either version 3, or (at your option)
 * any later version.
 *
 * GNU lightning 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 Lesser General Public
 * License for more details.
 *
 * Authors:
 *	Paulo Cesar Pereira de Andrade
 */

#ifndef _jit_aarch64_h
#define _jit_aarch64_h


#define JIT_NEEDS_LITERAL_POOL 1

#define _X0     JIT_GPR(0)
#define _X1     JIT_GPR(1)
#define _X2     JIT_GPR(2)
#define _X3     JIT_GPR(3)
#define _X4     JIT_GPR(4)
#define _X5     JIT_GPR(5)
#define _X6     JIT_GPR(6)
#define _X7     JIT_GPR(7)
#define _X8     JIT_GPR(8)
#define _X9     JIT_GPR(9)
#define _X10    JIT_GPR(10)
#define _X11    JIT_GPR(11)
#define _X12    JIT_GPR(12)
#define _X13    JIT_GPR(13)
#define _X14    JIT_GPR(14)
#define _X15    JIT_GPR(15)
#define _X16    JIT_GPR(16)
#define _X17    JIT_GPR(17)
#define _X18    JIT_GPR(18)
#define _X19    JIT_GPR(19)
#define _X20    JIT_GPR(20)
#define _X21    JIT_GPR(21)
#define _X22    JIT_GPR(22)
#define _X23    JIT_GPR(23)
#define _X24    JIT_GPR(24)
#define _X25    JIT_GPR(25)
#define _X26    JIT_GPR(26)
#define _X27    JIT_GPR(27)
#define _X28    JIT_GPR(28)
#define _X29    JIT_GPR(29)
#define _X30    JIT_GPR(30)
#define _X31    JIT_GPR(31)

#define _D0     JIT_FPR(0)
#define _D1     JIT_FPR(1)
#define _D2     JIT_FPR(2)
#define _D3     JIT_FPR(3)
#define _D4     JIT_FPR(4)
#define _D5     JIT_FPR(5)
#define _D6     JIT_FPR(6)
#define _D7     JIT_FPR(7)
#define _D8     JIT_FPR(8)
#define _D9     JIT_FPR(9)
#define _D10    JIT_FPR(10)
#define _D11    JIT_FPR(11)
#define _D12    JIT_FPR(12)
#define _D13    JIT_FPR(13)
#define _D14    JIT_FPR(14)
#define _D15    JIT_FPR(15)
#define _D16    JIT_FPR(16)
#define _D17    JIT_FPR(17)
#define _D18    JIT_FPR(18)
#define _D19    JIT_FPR(19)
#define _D20    JIT_FPR(20)
#define _D21    JIT_FPR(21)
#define _D22    JIT_FPR(22)
#define _D23    JIT_FPR(23)
#define _D24    JIT_FPR(24)
#define _D25    JIT_FPR(25)
#define _D26    JIT_FPR(26)
#define _D27    JIT_FPR(27)
#define _D28    JIT_FPR(28)
#define _D29    JIT_FPR(29)
#define _D30    JIT_FPR(30)
#define _D31    JIT_FPR(31)

#define JIT_R0    _X0
#define JIT_R1    _X1
#define JIT_R2    _X2
#define JIT_R3    _X3
#define JIT_R4    _X4
#define JIT_R5    _X5
#define JIT_R6    _X6
#define JIT_R7    _X7
#define JIT_R8    _X8
#define JIT_R9    _X9
#define JIT_R10   _X10
#define JIT_R11   _X11
#define JIT_R12   _X12
#define JIT_R13   _X13
#define JIT_R14   _X14
#define JIT_R15   _X15
#define JIT_TMP0  _X16
#define JIT_TMP1  _X17
// x18 is reserved by the platform.
#define JIT_V0    _X19
#define JIT_V1    _X20
#define JIT_V2    _X21
#define JIT_V3    _X22
#define JIT_V4    _X23
#define JIT_V5    _X24
#define JIT_V6    _X25
#define JIT_V7    _X26
#define JIT_V8    _X27
#define JIT_V9    _X28

// x29 is frame pointer; x30 is link register.
#define JIT_PLATFORM_CALLEE_SAVE_GPRS _X29, _X30

// x31 is stack pointer.
#define JIT_LR    _X30
#define JIT_SP    _X31

#define JIT_F0  _D0
#define JIT_F1  _D1
#define JIT_F2  _D2
#define JIT_F3  _D3
#define JIT_F4  _D4
#define JIT_F5  _D5
#define JIT_F6  _D6
#define JIT_F7  _D7
#define JIT_F8  _D16
#define JIT_F9  _D17
#define JIT_F10 _D18
#define JIT_F11 _D19
#define JIT_F12 _D20
#define JIT_F13 _D21
#define JIT_F14 _D22
#define JIT_F15 _D23
#define JIT_F16 _D24
#define JIT_F17 _D25
#define JIT_F18 _D26
#define JIT_F19 _D27
#define JIT_F20 _D28
#define JIT_F21 _D29
#define JIT_F22 _D30
#define JIT_FTMP _D31

#define JIT_VF0  _D8
#define JIT_VF1  _D9
#define JIT_VF2 _D10
#define JIT_VF3 _D11
#define JIT_VF4 _D12
#define JIT_VF5 _D13
#define JIT_VF6 _D14
#define JIT_VF7 _D15

#define _FP _X29
#define _LR _X30
#define _SP _X31


#endif /* _jit_aarch64_h */