1 /*
2  * Copyright (C) 2013-2017, 2019  Free Software Foundation, Inc.
3  *
4  * This file is part of GNU lightning.
5  *
6  * GNU lightning is free software; you can redistribute it and/or modify it
7  * under the terms of the GNU Lesser General Public License as published
8  * by the Free Software Foundation; either version 3, or (at your option)
9  * any later version.
10  *
11  * GNU lightning is distributed in the hope that it will be useful, but
12  * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
13  * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
14  * License for more details.
15  *
16  * Authors:
17  *	Paulo Cesar Pereira de Andrade
18  */
19 
20 #ifndef _jit_aarch64_h
21 #define _jit_aarch64_h
22 
23 
24 #define JIT_NEEDS_LITERAL_POOL 1
25 
26 #define _X0     JIT_GPR(0)
27 #define _X1     JIT_GPR(1)
28 #define _X2     JIT_GPR(2)
29 #define _X3     JIT_GPR(3)
30 #define _X4     JIT_GPR(4)
31 #define _X5     JIT_GPR(5)
32 #define _X6     JIT_GPR(6)
33 #define _X7     JIT_GPR(7)
34 #define _X8     JIT_GPR(8)
35 #define _X9     JIT_GPR(9)
36 #define _X10    JIT_GPR(10)
37 #define _X11    JIT_GPR(11)
38 #define _X12    JIT_GPR(12)
39 #define _X13    JIT_GPR(13)
40 #define _X14    JIT_GPR(14)
41 #define _X15    JIT_GPR(15)
42 #define _X16    JIT_GPR(16)
43 #define _X17    JIT_GPR(17)
44 #define _X18    JIT_GPR(18)
45 #define _X19    JIT_GPR(19)
46 #define _X20    JIT_GPR(20)
47 #define _X21    JIT_GPR(21)
48 #define _X22    JIT_GPR(22)
49 #define _X23    JIT_GPR(23)
50 #define _X24    JIT_GPR(24)
51 #define _X25    JIT_GPR(25)
52 #define _X26    JIT_GPR(26)
53 #define _X27    JIT_GPR(27)
54 #define _X28    JIT_GPR(28)
55 #define _X29    JIT_GPR(29)
56 #define _X30    JIT_GPR(30)
57 #define _X31    JIT_GPR(31)
58 
59 #define _D0     JIT_FPR(0)
60 #define _D1     JIT_FPR(1)
61 #define _D2     JIT_FPR(2)
62 #define _D3     JIT_FPR(3)
63 #define _D4     JIT_FPR(4)
64 #define _D5     JIT_FPR(5)
65 #define _D6     JIT_FPR(6)
66 #define _D7     JIT_FPR(7)
67 #define _D8     JIT_FPR(8)
68 #define _D9     JIT_FPR(9)
69 #define _D10    JIT_FPR(10)
70 #define _D11    JIT_FPR(11)
71 #define _D12    JIT_FPR(12)
72 #define _D13    JIT_FPR(13)
73 #define _D14    JIT_FPR(14)
74 #define _D15    JIT_FPR(15)
75 #define _D16    JIT_FPR(16)
76 #define _D17    JIT_FPR(17)
77 #define _D18    JIT_FPR(18)
78 #define _D19    JIT_FPR(19)
79 #define _D20    JIT_FPR(20)
80 #define _D21    JIT_FPR(21)
81 #define _D22    JIT_FPR(22)
82 #define _D23    JIT_FPR(23)
83 #define _D24    JIT_FPR(24)
84 #define _D25    JIT_FPR(25)
85 #define _D26    JIT_FPR(26)
86 #define _D27    JIT_FPR(27)
87 #define _D28    JIT_FPR(28)
88 #define _D29    JIT_FPR(29)
89 #define _D30    JIT_FPR(30)
90 #define _D31    JIT_FPR(31)
91 
92 #define JIT_R0    _X0
93 #define JIT_R1    _X1
94 #define JIT_R2    _X2
95 #define JIT_R3    _X3
96 #define JIT_R4    _X4
97 #define JIT_R5    _X5
98 #define JIT_R6    _X6
99 #define JIT_R7    _X7
100 #define JIT_R8    _X8
101 #define JIT_R9    _X9
102 #define JIT_R10   _X10
103 #define JIT_R11   _X11
104 #define JIT_R12   _X12
105 #define JIT_R13   _X13
106 #define JIT_R14   _X14
107 #define JIT_R15   _X15
108 #define JIT_TMP0  _X16
109 #define JIT_TMP1  _X17
110 // x18 is reserved by the platform.
111 #define JIT_V0    _X19
112 #define JIT_V1    _X20
113 #define JIT_V2    _X21
114 #define JIT_V3    _X22
115 #define JIT_V4    _X23
116 #define JIT_V5    _X24
117 #define JIT_V6    _X25
118 #define JIT_V7    _X26
119 #define JIT_V8    _X27
120 #define JIT_V9    _X28
121 
122 // x29 is frame pointer; x30 is link register.
123 #define JIT_PLATFORM_CALLEE_SAVE_GPRS _X29, _X30
124 
125 // x31 is stack pointer.
126 #define JIT_LR    _X30
127 #define JIT_SP    _X31
128 
129 #define JIT_F0  _D0
130 #define JIT_F1  _D1
131 #define JIT_F2  _D2
132 #define JIT_F3  _D3
133 #define JIT_F4  _D4
134 #define JIT_F5  _D5
135 #define JIT_F6  _D6
136 #define JIT_F7  _D7
137 #define JIT_F8  _D16
138 #define JIT_F9  _D17
139 #define JIT_F10 _D18
140 #define JIT_F11 _D19
141 #define JIT_F12 _D20
142 #define JIT_F13 _D21
143 #define JIT_F14 _D22
144 #define JIT_F15 _D23
145 #define JIT_F16 _D24
146 #define JIT_F17 _D25
147 #define JIT_F18 _D26
148 #define JIT_F19 _D27
149 #define JIT_F20 _D28
150 #define JIT_F21 _D29
151 #define JIT_F22 _D30
152 #define JIT_FTMP _D31
153 
154 #define JIT_VF0  _D8
155 #define JIT_VF1  _D9
156 #define JIT_VF2 _D10
157 #define JIT_VF3 _D11
158 #define JIT_VF4 _D12
159 #define JIT_VF5 _D13
160 #define JIT_VF6 _D14
161 #define JIT_VF7 _D15
162 
163 #define _FP _X29
164 #define _LR _X30
165 #define _SP _X31
166 
167 
168 #endif /* _jit_aarch64_h */
169