hp.com!davidm | e9e4e5f | 2003-01-28 03:40:06 +0000 | [diff] [blame^] | 1 | /* libunwind - a platform-independent unwind library |
| 2 | Copyright (C) 2003 Hewlett-Packard Co |
| 3 | Contributed by David Mosberger-Tang <davidm@hpl.hp.com> |
| 4 | |
| 5 | This file is part of libunwind. |
| 6 | |
| 7 | Permission is hereby granted, free of charge, to any person obtaining |
| 8 | a copy of this software and associated documentation files (the |
| 9 | "Software"), to deal in the Software without restriction, including |
| 10 | without limitation the rights to use, copy, modify, merge, publish, |
| 11 | distribute, sublicense, and/or sell copies of the Software, and to |
| 12 | permit persons to whom the Software is furnished to do so, subject to |
| 13 | the following conditions: |
| 14 | |
| 15 | The above copyright notice and this permission notice shall be |
| 16 | included in all copies or substantial portions of the Software. |
| 17 | |
| 18 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, |
| 19 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF |
| 20 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND |
| 21 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE |
| 22 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION |
| 23 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
| 24 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ |
| 25 | |
| 26 | #include "_UPT_internal.h" |
| 27 | |
| 28 | #if UNW_TARGET_IA64 |
| 29 | # include <asm/ptrace_offsets.h> |
| 30 | #endif |
| 31 | |
| 32 | int _UPT_reg_offset[UNW_REG_LAST] = |
| 33 | { |
| 34 | #if UNW_TARGET_IA64 |
| 35 | # ifndef PT_AR_CSD |
| 36 | # define PT_AR_CSD -1 /* this was introduced with rev 2.1 of ia64 */ |
| 37 | # endif |
| 38 | |
| 39 | [UNW_IA64_GR + 0] = -1, [UNW_IA64_GR + 1] = PT_R1, |
| 40 | [UNW_IA64_GR + 2] = PT_R2, [UNW_IA64_GR + 3] = PT_R3, |
| 41 | [UNW_IA64_GR + 4] = PT_R4, [UNW_IA64_GR + 5] = PT_R5, |
| 42 | [UNW_IA64_GR + 6] = PT_R6, [UNW_IA64_GR + 7] = PT_R7, |
| 43 | [UNW_IA64_GR + 8] = PT_R8, [UNW_IA64_GR + 9] = PT_R9, |
| 44 | [UNW_IA64_GR + 10] = PT_R10, [UNW_IA64_GR + 11] = PT_R11, |
| 45 | [UNW_IA64_GR + 12] = PT_R12, [UNW_IA64_GR + 13] = PT_R13, |
| 46 | [UNW_IA64_GR + 14] = PT_R14, [UNW_IA64_GR + 15] = PT_R15, |
| 47 | [UNW_IA64_GR + 16] = PT_R16, [UNW_IA64_GR + 17] = PT_R17, |
| 48 | [UNW_IA64_GR + 18] = PT_R18, [UNW_IA64_GR + 19] = PT_R19, |
| 49 | [UNW_IA64_GR + 20] = PT_R20, [UNW_IA64_GR + 21] = PT_R21, |
| 50 | [UNW_IA64_GR + 22] = PT_R22, [UNW_IA64_GR + 23] = PT_R23, |
| 51 | [UNW_IA64_GR + 24] = PT_R24, [UNW_IA64_GR + 25] = PT_R25, |
| 52 | [UNW_IA64_GR + 26] = PT_R26, [UNW_IA64_GR + 27] = PT_R27, |
| 53 | [UNW_IA64_GR + 28] = PT_R28, [UNW_IA64_GR + 29] = PT_R29, |
| 54 | [UNW_IA64_GR + 30] = PT_R30, [UNW_IA64_GR + 31] = PT_R31, |
| 55 | |
| 56 | [UNW_IA64_NAT+ 0] = -1, [UNW_IA64_NAT+ 1] = PT_NAT_BITS, |
| 57 | [UNW_IA64_NAT+ 2] = PT_NAT_BITS, [UNW_IA64_NAT+ 3] = PT_NAT_BITS, |
| 58 | [UNW_IA64_NAT+ 4] = PT_NAT_BITS, [UNW_IA64_NAT+ 5] = PT_NAT_BITS, |
| 59 | [UNW_IA64_NAT+ 6] = PT_NAT_BITS, [UNW_IA64_NAT+ 7] = PT_NAT_BITS, |
| 60 | [UNW_IA64_NAT+ 8] = PT_NAT_BITS, [UNW_IA64_NAT+ 9] = PT_NAT_BITS, |
| 61 | [UNW_IA64_NAT+ 10] = PT_NAT_BITS, [UNW_IA64_NAT+ 11] = PT_NAT_BITS, |
| 62 | [UNW_IA64_NAT+ 12] = PT_NAT_BITS, [UNW_IA64_NAT+ 13] = PT_NAT_BITS, |
| 63 | [UNW_IA64_NAT+ 14] = PT_NAT_BITS, [UNW_IA64_NAT+ 15] = PT_NAT_BITS, |
| 64 | [UNW_IA64_NAT+ 16] = PT_NAT_BITS, [UNW_IA64_NAT+ 17] = PT_NAT_BITS, |
| 65 | [UNW_IA64_NAT+ 18] = PT_NAT_BITS, [UNW_IA64_NAT+ 19] = PT_NAT_BITS, |
| 66 | [UNW_IA64_NAT+ 20] = PT_NAT_BITS, [UNW_IA64_NAT+ 21] = PT_NAT_BITS, |
| 67 | [UNW_IA64_NAT+ 22] = PT_NAT_BITS, [UNW_IA64_NAT+ 23] = PT_NAT_BITS, |
| 68 | [UNW_IA64_NAT+ 24] = PT_NAT_BITS, [UNW_IA64_NAT+ 25] = PT_NAT_BITS, |
| 69 | [UNW_IA64_NAT+ 26] = PT_NAT_BITS, [UNW_IA64_NAT+ 27] = PT_NAT_BITS, |
| 70 | [UNW_IA64_NAT+ 28] = PT_NAT_BITS, [UNW_IA64_NAT+ 29] = PT_NAT_BITS, |
| 71 | [UNW_IA64_NAT+ 30] = PT_NAT_BITS, [UNW_IA64_NAT+ 31] = PT_NAT_BITS, |
| 72 | |
| 73 | [UNW_IA64_FR + 0] = -1, [UNW_IA64_FR + 1] = -1, |
| 74 | [UNW_IA64_FR + 2] = PT_F2, [UNW_IA64_FR + 3] = PT_F3, |
| 75 | [UNW_IA64_FR + 4] = PT_F4, [UNW_IA64_FR + 5] = PT_F5, |
| 76 | [UNW_IA64_FR + 6] = PT_F6, [UNW_IA64_FR + 7] = PT_F7, |
| 77 | [UNW_IA64_FR + 8] = PT_F8, [UNW_IA64_FR + 9] = PT_F9, |
| 78 | [UNW_IA64_FR + 10] = PT_F10, [UNW_IA64_FR + 11] = PT_F11, |
| 79 | [UNW_IA64_FR + 12] = PT_F12, [UNW_IA64_FR + 13] = PT_F13, |
| 80 | [UNW_IA64_FR + 14] = PT_F14, [UNW_IA64_FR + 15] = PT_F15, |
| 81 | [UNW_IA64_FR + 16] = PT_F16, [UNW_IA64_FR + 17] = PT_F17, |
| 82 | [UNW_IA64_FR + 18] = PT_F18, [UNW_IA64_FR + 19] = PT_F19, |
| 83 | [UNW_IA64_FR + 20] = PT_F20, [UNW_IA64_FR + 21] = PT_F21, |
| 84 | [UNW_IA64_FR + 22] = PT_F22, [UNW_IA64_FR + 23] = PT_F23, |
| 85 | [UNW_IA64_FR + 24] = PT_F24, [UNW_IA64_FR + 25] = PT_F25, |
| 86 | [UNW_IA64_FR + 26] = PT_F26, [UNW_IA64_FR + 27] = PT_F27, |
| 87 | [UNW_IA64_FR + 28] = PT_F28, [UNW_IA64_FR + 29] = PT_F29, |
| 88 | [UNW_IA64_FR + 30] = PT_F30, [UNW_IA64_FR + 31] = PT_F31, |
| 89 | [UNW_IA64_FR + 32] = PT_F32, [UNW_IA64_FR + 33] = PT_F33, |
| 90 | [UNW_IA64_FR + 34] = PT_F34, [UNW_IA64_FR + 35] = PT_F35, |
| 91 | [UNW_IA64_FR + 36] = PT_F36, [UNW_IA64_FR + 37] = PT_F37, |
| 92 | [UNW_IA64_FR + 38] = PT_F38, [UNW_IA64_FR + 39] = PT_F39, |
| 93 | [UNW_IA64_FR + 40] = PT_F40, [UNW_IA64_FR + 41] = PT_F41, |
| 94 | [UNW_IA64_FR + 42] = PT_F42, [UNW_IA64_FR + 43] = PT_F43, |
| 95 | [UNW_IA64_FR + 44] = PT_F44, [UNW_IA64_FR + 45] = PT_F45, |
| 96 | [UNW_IA64_FR + 46] = PT_F46, [UNW_IA64_FR + 47] = PT_F47, |
| 97 | [UNW_IA64_FR + 48] = PT_F48, [UNW_IA64_FR + 49] = PT_F49, |
| 98 | [UNW_IA64_FR + 50] = PT_F50, [UNW_IA64_FR + 51] = PT_F51, |
| 99 | [UNW_IA64_FR + 52] = PT_F52, [UNW_IA64_FR + 53] = PT_F53, |
| 100 | [UNW_IA64_FR + 54] = PT_F54, [UNW_IA64_FR + 55] = PT_F55, |
| 101 | [UNW_IA64_FR + 56] = PT_F56, [UNW_IA64_FR + 57] = PT_F57, |
| 102 | [UNW_IA64_FR + 58] = PT_F58, [UNW_IA64_FR + 59] = PT_F59, |
| 103 | [UNW_IA64_FR + 60] = PT_F60, [UNW_IA64_FR + 61] = PT_F61, |
| 104 | [UNW_IA64_FR + 62] = PT_F62, [UNW_IA64_FR + 63] = PT_F63, |
| 105 | [UNW_IA64_FR + 64] = PT_F64, [UNW_IA64_FR + 65] = PT_F65, |
| 106 | [UNW_IA64_FR + 66] = PT_F66, [UNW_IA64_FR + 67] = PT_F67, |
| 107 | [UNW_IA64_FR + 68] = PT_F68, [UNW_IA64_FR + 69] = PT_F69, |
| 108 | [UNW_IA64_FR + 70] = PT_F70, [UNW_IA64_FR + 71] = PT_F71, |
| 109 | [UNW_IA64_FR + 72] = PT_F72, [UNW_IA64_FR + 73] = PT_F73, |
| 110 | [UNW_IA64_FR + 74] = PT_F74, [UNW_IA64_FR + 75] = PT_F75, |
| 111 | [UNW_IA64_FR + 76] = PT_F76, [UNW_IA64_FR + 77] = PT_F77, |
| 112 | [UNW_IA64_FR + 78] = PT_F78, [UNW_IA64_FR + 79] = PT_F79, |
| 113 | [UNW_IA64_FR + 80] = PT_F80, [UNW_IA64_FR + 81] = PT_F81, |
| 114 | [UNW_IA64_FR + 82] = PT_F82, [UNW_IA64_FR + 83] = PT_F83, |
| 115 | [UNW_IA64_FR + 84] = PT_F84, [UNW_IA64_FR + 85] = PT_F85, |
| 116 | [UNW_IA64_FR + 86] = PT_F86, [UNW_IA64_FR + 87] = PT_F87, |
| 117 | [UNW_IA64_FR + 88] = PT_F88, [UNW_IA64_FR + 89] = PT_F89, |
| 118 | [UNW_IA64_FR + 90] = PT_F90, [UNW_IA64_FR + 91] = PT_F91, |
| 119 | [UNW_IA64_FR + 92] = PT_F92, [UNW_IA64_FR + 93] = PT_F93, |
| 120 | [UNW_IA64_FR + 94] = PT_F94, [UNW_IA64_FR + 95] = PT_F95, |
| 121 | [UNW_IA64_FR + 96] = PT_F96, [UNW_IA64_FR + 97] = PT_F97, |
| 122 | [UNW_IA64_FR + 98] = PT_F98, [UNW_IA64_FR + 99] = PT_F99, |
| 123 | [UNW_IA64_FR +100] = PT_F100, [UNW_IA64_FR +101] = PT_F101, |
| 124 | [UNW_IA64_FR +102] = PT_F102, [UNW_IA64_FR +103] = PT_F103, |
| 125 | [UNW_IA64_FR +104] = PT_F104, [UNW_IA64_FR +105] = PT_F105, |
| 126 | [UNW_IA64_FR +106] = PT_F106, [UNW_IA64_FR +107] = PT_F107, |
| 127 | [UNW_IA64_FR +108] = PT_F108, [UNW_IA64_FR +109] = PT_F109, |
| 128 | [UNW_IA64_FR +110] = PT_F110, [UNW_IA64_FR +111] = PT_F111, |
| 129 | [UNW_IA64_FR +112] = PT_F112, [UNW_IA64_FR +113] = PT_F113, |
| 130 | [UNW_IA64_FR +114] = PT_F114, [UNW_IA64_FR +115] = PT_F115, |
| 131 | [UNW_IA64_FR +116] = PT_F116, [UNW_IA64_FR +117] = PT_F117, |
| 132 | [UNW_IA64_FR +118] = PT_F118, [UNW_IA64_FR +119] = PT_F119, |
| 133 | [UNW_IA64_FR +120] = PT_F120, [UNW_IA64_FR +121] = PT_F121, |
| 134 | [UNW_IA64_FR +122] = PT_F122, [UNW_IA64_FR +123] = PT_F123, |
| 135 | [UNW_IA64_FR +124] = PT_F124, [UNW_IA64_FR +125] = PT_F125, |
| 136 | [UNW_IA64_FR +126] = PT_F126, [UNW_IA64_FR +127] = PT_F127, |
| 137 | |
| 138 | [UNW_IA64_AR + 0] = -1, [UNW_IA64_AR + 1] = -1, |
| 139 | [UNW_IA64_AR + 2] = -1, [UNW_IA64_AR + 3] = -1, |
| 140 | [UNW_IA64_AR + 4] = -1, [UNW_IA64_AR + 5] = -1, |
| 141 | [UNW_IA64_AR + 6] = -1, [UNW_IA64_AR + 7] = -1, |
| 142 | [UNW_IA64_AR + 8] = -1, [UNW_IA64_AR + 9] = -1, |
| 143 | [UNW_IA64_AR + 10] = -1, [UNW_IA64_AR + 11] = -1, |
| 144 | [UNW_IA64_AR + 12] = -1, [UNW_IA64_AR + 13] = -1, |
| 145 | [UNW_IA64_AR + 14] = -1, [UNW_IA64_AR + 15] = -1, |
| 146 | [UNW_IA64_AR + 16] = PT_AR_RSC, [UNW_IA64_AR + 17] = PT_AR_BSP, |
| 147 | [UNW_IA64_AR + 18] = PT_AR_BSPSTORE,[UNW_IA64_AR + 19] = PT_AR_RNAT, |
| 148 | [UNW_IA64_AR + 20] = -1, [UNW_IA64_AR + 21] = -1, |
| 149 | [UNW_IA64_AR + 22] = -1, [UNW_IA64_AR + 23] = -1, |
| 150 | [UNW_IA64_AR + 24] = -1, [UNW_IA64_AR + 25] = PT_AR_CSD, |
| 151 | [UNW_IA64_AR + 26] = -1, [UNW_IA64_AR + 27] = -1, |
| 152 | [UNW_IA64_AR + 28] = -1, [UNW_IA64_AR + 29] = -1, |
| 153 | [UNW_IA64_AR + 30] = -1, [UNW_IA64_AR + 31] = -1, |
| 154 | [UNW_IA64_AR + 32] = PT_AR_CCV, [UNW_IA64_AR + 33] = -1, |
| 155 | [UNW_IA64_AR + 34] = -1, [UNW_IA64_AR + 35] = -1, |
| 156 | [UNW_IA64_AR + 36] = PT_AR_UNAT, [UNW_IA64_AR + 37] = -1, |
| 157 | [UNW_IA64_AR + 38] = -1, [UNW_IA64_AR + 39] = -1, |
| 158 | [UNW_IA64_AR + 40] = PT_AR_FPSR, [UNW_IA64_AR + 41] = -1, |
| 159 | [UNW_IA64_AR + 42] = -1, [UNW_IA64_AR + 43] = -1, |
| 160 | [UNW_IA64_AR + 44] = -1, [UNW_IA64_AR + 45] = -1, |
| 161 | [UNW_IA64_AR + 46] = -1, [UNW_IA64_AR + 47] = -1, |
| 162 | [UNW_IA64_AR + 48] = -1, [UNW_IA64_AR + 49] = -1, |
| 163 | [UNW_IA64_AR + 50] = -1, [UNW_IA64_AR + 51] = -1, |
| 164 | [UNW_IA64_AR + 52] = -1, [UNW_IA64_AR + 53] = -1, |
| 165 | [UNW_IA64_AR + 54] = -1, [UNW_IA64_AR + 55] = -1, |
| 166 | [UNW_IA64_AR + 56] = -1, [UNW_IA64_AR + 57] = -1, |
| 167 | [UNW_IA64_AR + 58] = -1, [UNW_IA64_AR + 59] = -1, |
| 168 | [UNW_IA64_AR + 60] = -1, [UNW_IA64_AR + 61] = -1, |
| 169 | [UNW_IA64_AR + 62] = -1, [UNW_IA64_AR + 63] = -1, |
| 170 | [UNW_IA64_AR + 64] = PT_AR_PFS, [UNW_IA64_AR + 65] = PT_AR_LC, |
| 171 | [UNW_IA64_AR + 66] = PT_AR_EC, [UNW_IA64_AR + 67] = -1, |
| 172 | [UNW_IA64_AR + 68] = -1, [UNW_IA64_AR + 69] = -1, |
| 173 | [UNW_IA64_AR + 70] = -1, [UNW_IA64_AR + 71] = -1, |
| 174 | [UNW_IA64_AR + 72] = -1, [UNW_IA64_AR + 73] = -1, |
| 175 | [UNW_IA64_AR + 74] = -1, [UNW_IA64_AR + 75] = -1, |
| 176 | [UNW_IA64_AR + 76] = -1, [UNW_IA64_AR + 77] = -1, |
| 177 | [UNW_IA64_AR + 78] = -1, [UNW_IA64_AR + 79] = -1, |
| 178 | [UNW_IA64_AR + 80] = -1, [UNW_IA64_AR + 81] = -1, |
| 179 | [UNW_IA64_AR + 82] = -1, [UNW_IA64_AR + 83] = -1, |
| 180 | [UNW_IA64_AR + 84] = -1, [UNW_IA64_AR + 85] = -1, |
| 181 | [UNW_IA64_AR + 86] = -1, [UNW_IA64_AR + 87] = -1, |
| 182 | [UNW_IA64_AR + 88] = -1, [UNW_IA64_AR + 89] = -1, |
| 183 | [UNW_IA64_AR + 90] = -1, [UNW_IA64_AR + 91] = -1, |
| 184 | [UNW_IA64_AR + 92] = -1, [UNW_IA64_AR + 93] = -1, |
| 185 | [UNW_IA64_AR + 94] = -1, [UNW_IA64_AR + 95] = -1, |
| 186 | [UNW_IA64_AR + 96] = -1, [UNW_IA64_AR + 97] = -1, |
| 187 | [UNW_IA64_AR + 98] = -1, [UNW_IA64_AR + 99] = -1, |
| 188 | [UNW_IA64_AR +100] = -1, [UNW_IA64_AR +101] = -1, |
| 189 | [UNW_IA64_AR +102] = -1, [UNW_IA64_AR +103] = -1, |
| 190 | [UNW_IA64_AR +104] = -1, [UNW_IA64_AR +105] = -1, |
| 191 | [UNW_IA64_AR +106] = -1, [UNW_IA64_AR +107] = -1, |
| 192 | [UNW_IA64_AR +108] = -1, [UNW_IA64_AR +109] = -1, |
| 193 | [UNW_IA64_AR +110] = -1, [UNW_IA64_AR +111] = -1, |
| 194 | [UNW_IA64_AR +112] = -1, [UNW_IA64_AR +113] = -1, |
| 195 | [UNW_IA64_AR +114] = -1, [UNW_IA64_AR +115] = -1, |
| 196 | [UNW_IA64_AR +116] = -1, [UNW_IA64_AR +117] = -1, |
| 197 | [UNW_IA64_AR +118] = -1, [UNW_IA64_AR +119] = -1, |
| 198 | [UNW_IA64_AR +120] = -1, [UNW_IA64_AR +121] = -1, |
| 199 | [UNW_IA64_AR +122] = -1, [UNW_IA64_AR +123] = -1, |
| 200 | [UNW_IA64_AR +124] = -1, [UNW_IA64_AR +125] = -1, |
| 201 | [UNW_IA64_AR +126] = -1, [UNW_IA64_AR +127] = -1, |
| 202 | |
| 203 | [UNW_IA64_BR + 0] = PT_B0, [UNW_IA64_BR + 1] = PT_B1, |
| 204 | [UNW_IA64_BR + 2] = PT_B2, [UNW_IA64_BR + 3] = PT_B3, |
| 205 | [UNW_IA64_BR + 4] = PT_B4, [UNW_IA64_BR + 5] = PT_B5, |
| 206 | [UNW_IA64_BR + 6] = PT_B6, [UNW_IA64_BR + 7] = PT_B7, |
| 207 | |
| 208 | [UNW_IA64_PR] = PT_PR, |
| 209 | [UNW_IA64_CFM] = PT_CFM, |
| 210 | [UNW_IA64_IP] = PT_CR_IIP |
| 211 | #else |
| 212 | # error Fix me. |
| 213 | #endif |
| 214 | }; |