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