github.com/gocuntian/go@v0.0.0-20160610041250-fee02d270bf8/src/cmd/internal/obj/ppc64/a.out.go (about) 1 // cmd/9c/9.out.h from Vita Nuova. 2 // 3 // Copyright © 1994-1999 Lucent Technologies Inc. All rights reserved. 4 // Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) 5 // Portions Copyright © 1997-1999 Vita Nuova Limited 6 // Portions Copyright © 2000-2008 Vita Nuova Holdings Limited (www.vitanuova.com) 7 // Portions Copyright © 2004,2006 Bruce Ellis 8 // Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) 9 // Revisions Copyright © 2000-2008 Lucent Technologies Inc. and others 10 // Portions Copyright © 2009 The Go Authors. All rights reserved. 11 // 12 // Permission is hereby granted, free of charge, to any person obtaining a copy 13 // of this software and associated documentation files (the "Software"), to deal 14 // in the Software without restriction, including without limitation the rights 15 // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 16 // copies of the Software, and to permit persons to whom the Software is 17 // furnished to do so, subject to the following conditions: 18 // 19 // The above copyright notice and this permission notice shall be included in 20 // all copies or substantial portions of the Software. 21 // 22 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 23 // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 24 // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 25 // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 26 // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 27 // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 28 // THE SOFTWARE. 29 30 package ppc64 31 32 import "cmd/internal/obj" 33 34 //go:generate go run ../stringer.go -i $GOFILE -o anames.go -p ppc64 35 36 /* 37 * powerpc 64 38 */ 39 const ( 40 NSNAME = 8 41 NSYM = 50 42 NREG = 32 /* number of general registers */ 43 NFREG = 32 /* number of floating point registers */ 44 ) 45 46 const ( 47 REG_R0 = obj.RBasePPC64 + iota 48 REG_R1 49 REG_R2 50 REG_R3 51 REG_R4 52 REG_R5 53 REG_R6 54 REG_R7 55 REG_R8 56 REG_R9 57 REG_R10 58 REG_R11 59 REG_R12 60 REG_R13 61 REG_R14 62 REG_R15 63 REG_R16 64 REG_R17 65 REG_R18 66 REG_R19 67 REG_R20 68 REG_R21 69 REG_R22 70 REG_R23 71 REG_R24 72 REG_R25 73 REG_R26 74 REG_R27 75 REG_R28 76 REG_R29 77 REG_R30 78 REG_R31 79 80 REG_F0 81 REG_F1 82 REG_F2 83 REG_F3 84 REG_F4 85 REG_F5 86 REG_F6 87 REG_F7 88 REG_F8 89 REG_F9 90 REG_F10 91 REG_F11 92 REG_F12 93 REG_F13 94 REG_F14 95 REG_F15 96 REG_F16 97 REG_F17 98 REG_F18 99 REG_F19 100 REG_F20 101 REG_F21 102 REG_F22 103 REG_F23 104 REG_F24 105 REG_F25 106 REG_F26 107 REG_F27 108 REG_F28 109 REG_F29 110 REG_F30 111 REG_F31 112 113 REG_CR0 114 REG_CR1 115 REG_CR2 116 REG_CR3 117 REG_CR4 118 REG_CR5 119 REG_CR6 120 REG_CR7 121 122 REG_MSR 123 REG_FPSCR 124 REG_CR 125 126 REG_SPECIAL = REG_CR0 127 128 REG_SPR0 = obj.RBasePPC64 + 1024 // first of 1024 registers 129 REG_DCR0 = obj.RBasePPC64 + 2048 // first of 1024 registers 130 131 REG_XER = REG_SPR0 + 1 132 REG_LR = REG_SPR0 + 8 133 REG_CTR = REG_SPR0 + 9 134 135 REGZERO = REG_R0 /* set to zero */ 136 REGSP = REG_R1 137 REGSB = REG_R2 138 REGRET = REG_R3 139 REGARG = -1 /* -1 disables passing the first argument in register */ 140 REGRT1 = REG_R3 /* reserved for runtime, duffzero and duffcopy */ 141 REGRT2 = REG_R4 /* reserved for runtime, duffcopy */ 142 REGMIN = REG_R7 /* register variables allocated from here to REGMAX */ 143 REGCTXT = REG_R11 /* context for closures */ 144 REGTLS = REG_R13 /* C ABI TLS base pointer */ 145 REGMAX = REG_R27 146 REGEXT = REG_R30 /* external registers allocated from here down */ 147 REGG = REG_R30 /* G */ 148 REGTMP = REG_R31 /* used by the linker */ 149 FREGRET = REG_F0 150 FREGMIN = REG_F17 /* first register variable */ 151 FREGMAX = REG_F26 /* last register variable for 9g only */ 152 FREGEXT = REG_F26 /* first external register */ 153 FREGCVI = REG_F27 /* floating conversion constant */ 154 FREGZERO = REG_F28 /* both float and double */ 155 FREGHALF = REG_F29 /* double */ 156 FREGONE = REG_F30 /* double */ 157 FREGTWO = REG_F31 /* double */ 158 ) 159 160 /* 161 * GENERAL: 162 * 163 * compiler allocates R3 up as temps 164 * compiler allocates register variables R7-R27 165 * compiler allocates external registers R30 down 166 * 167 * compiler allocates register variables F17-F26 168 * compiler allocates external registers F26 down 169 */ 170 const ( 171 BIG = 32768 - 8 172 ) 173 174 const ( 175 /* mark flags */ 176 LABEL = 1 << 0 177 LEAF = 1 << 1 178 FLOAT = 1 << 2 179 BRANCH = 1 << 3 180 LOAD = 1 << 4 181 FCMP = 1 << 5 182 SYNC = 1 << 6 183 LIST = 1 << 7 184 FOLL = 1 << 8 185 NOSCHED = 1 << 9 186 ) 187 188 const ( 189 C_NONE = iota 190 C_REG 191 C_FREG 192 C_CREG 193 C_SPR /* special processor register */ 194 C_ZCON 195 C_SCON /* 16 bit signed */ 196 C_UCON /* 32 bit signed, low 16 bits 0 */ 197 C_ADDCON /* -0x8000 <= v < 0 */ 198 C_ANDCON /* 0 < v <= 0xFFFF */ 199 C_LCON /* other 32 */ 200 C_DCON /* other 64 (could subdivide further) */ 201 C_SACON /* $n(REG) where n <= int16 */ 202 C_SECON 203 C_LACON /* $n(REG) where int16 < n <= int32 */ 204 C_LECON 205 C_DACON /* $n(REG) where int32 < n */ 206 C_SBRA 207 C_LBRA 208 C_LBRAPIC 209 C_SAUTO 210 C_LAUTO 211 C_SEXT 212 C_LEXT 213 C_ZOREG 214 C_SOREG 215 C_LOREG 216 C_FPSCR 217 C_MSR 218 C_XER 219 C_LR 220 C_CTR 221 C_ANY 222 C_GOK 223 C_ADDR 224 C_GOTADDR 225 C_TLS_LE 226 C_TLS_IE 227 C_TEXTSIZE 228 229 C_NCLASS /* must be the last */ 230 ) 231 232 const ( 233 AADD = obj.ABasePPC64 + obj.A_ARCHSPECIFIC + iota 234 AADDCC 235 AADDV 236 AADDVCC 237 AADDC 238 AADDCCC 239 AADDCV 240 AADDCVCC 241 AADDME 242 AADDMECC 243 AADDMEVCC 244 AADDMEV 245 AADDE 246 AADDECC 247 AADDEVCC 248 AADDEV 249 AADDZE 250 AADDZECC 251 AADDZEVCC 252 AADDZEV 253 AAND 254 AANDCC 255 AANDN 256 AANDNCC 257 ABC 258 ABCL 259 ABEQ 260 ABGE 261 ABGT 262 ABLE 263 ABLT 264 ABNE 265 ABVC 266 ABVS 267 ACMP 268 ACMPU 269 ACNTLZW 270 ACNTLZWCC 271 ACRAND 272 ACRANDN 273 ACREQV 274 ACRNAND 275 ACRNOR 276 ACROR 277 ACRORN 278 ACRXOR 279 ADIVW 280 ADIVWCC 281 ADIVWVCC 282 ADIVWV 283 ADIVWU 284 ADIVWUCC 285 ADIVWUVCC 286 ADIVWUV 287 AEQV 288 AEQVCC 289 AEXTSB 290 AEXTSBCC 291 AEXTSH 292 AEXTSHCC 293 AFABS 294 AFABSCC 295 AFADD 296 AFADDCC 297 AFADDS 298 AFADDSCC 299 AFCMPO 300 AFCMPU 301 AFCTIW 302 AFCTIWCC 303 AFCTIWZ 304 AFCTIWZCC 305 AFDIV 306 AFDIVCC 307 AFDIVS 308 AFDIVSCC 309 AFMADD 310 AFMADDCC 311 AFMADDS 312 AFMADDSCC 313 AFMOVD 314 AFMOVDCC 315 AFMOVDU 316 AFMOVS 317 AFMOVSU 318 AFMSUB 319 AFMSUBCC 320 AFMSUBS 321 AFMSUBSCC 322 AFMUL 323 AFMULCC 324 AFMULS 325 AFMULSCC 326 AFNABS 327 AFNABSCC 328 AFNEG 329 AFNEGCC 330 AFNMADD 331 AFNMADDCC 332 AFNMADDS 333 AFNMADDSCC 334 AFNMSUB 335 AFNMSUBCC 336 AFNMSUBS 337 AFNMSUBSCC 338 AFRSP 339 AFRSPCC 340 AFSUB 341 AFSUBCC 342 AFSUBS 343 AFSUBSCC 344 AMOVMW 345 ALBAR 346 ALSW 347 ALWAR 348 ALWSYNC 349 AMOVWBR 350 AMOVB 351 AMOVBU 352 AMOVBZ 353 AMOVBZU 354 AMOVH 355 AMOVHBR 356 AMOVHU 357 AMOVHZ 358 AMOVHZU 359 AMOVW 360 AMOVWU 361 AMOVFL 362 AMOVCRFS 363 AMTFSB0 364 AMTFSB0CC 365 AMTFSB1 366 AMTFSB1CC 367 AMULHW 368 AMULHWCC 369 AMULHWU 370 AMULHWUCC 371 AMULLW 372 AMULLWCC 373 AMULLWVCC 374 AMULLWV 375 ANAND 376 ANANDCC 377 ANEG 378 ANEGCC 379 ANEGVCC 380 ANEGV 381 ANOR 382 ANORCC 383 AOR 384 AORCC 385 AORN 386 AORNCC 387 AREM 388 AREMCC 389 AREMV 390 AREMVCC 391 AREMU 392 AREMUCC 393 AREMUV 394 AREMUVCC 395 ARFI 396 ARLWMI 397 ARLWMICC 398 ARLWNM 399 ARLWNMCC 400 ASLW 401 ASLWCC 402 ASRW 403 ASRAW 404 ASRAWCC 405 ASRWCC 406 ASTBCCC 407 ASTSW 408 ASTWCCC 409 ASUB 410 ASUBCC 411 ASUBVCC 412 ASUBC 413 ASUBCCC 414 ASUBCV 415 ASUBCVCC 416 ASUBME 417 ASUBMECC 418 ASUBMEVCC 419 ASUBMEV 420 ASUBV 421 ASUBE 422 ASUBECC 423 ASUBEV 424 ASUBEVCC 425 ASUBZE 426 ASUBZECC 427 ASUBZEVCC 428 ASUBZEV 429 ASYNC 430 AXOR 431 AXORCC 432 433 ADCBF 434 ADCBI 435 ADCBST 436 ADCBT 437 ADCBTST 438 ADCBZ 439 AECIWX 440 AECOWX 441 AEIEIO 442 AICBI 443 AISYNC 444 APTESYNC 445 ATLBIE 446 ATLBIEL 447 ATLBSYNC 448 ATW 449 450 ASYSCALL 451 AWORD 452 453 ARFCI 454 455 /* optional on 32-bit */ 456 AFRES 457 AFRESCC 458 AFRSQRTE 459 AFRSQRTECC 460 AFSEL 461 AFSELCC 462 AFSQRT 463 AFSQRTCC 464 AFSQRTS 465 AFSQRTSCC 466 467 /* 64-bit */ 468 469 ACNTLZD 470 ACNTLZDCC 471 ACMPW /* CMP with L=0 */ 472 ACMPWU 473 ADIVD 474 ADIVDCC 475 ADIVDVCC 476 ADIVDV 477 ADIVDU 478 ADIVDUCC 479 ADIVDUVCC 480 ADIVDUV 481 AEXTSW 482 AEXTSWCC 483 /* AFCFIW; AFCFIWCC */ 484 AFCFID 485 AFCFIDCC 486 AFCFIDU 487 AFCFIDUCC 488 AFCTID 489 AFCTIDCC 490 AFCTIDZ 491 AFCTIDZCC 492 ALDAR 493 AMOVD 494 AMOVDU 495 AMOVWZ 496 AMOVWZU 497 AMULHD 498 AMULHDCC 499 AMULHDU 500 AMULHDUCC 501 AMULLD 502 AMULLDCC 503 AMULLDVCC 504 AMULLDV 505 ARFID 506 ARLDMI 507 ARLDMICC 508 ARLDC 509 ARLDCCC 510 ARLDCR 511 ARLDCRCC 512 ARLDCL 513 ARLDCLCC 514 ASLBIA 515 ASLBIE 516 ASLBMFEE 517 ASLBMFEV 518 ASLBMTE 519 ASLD 520 ASLDCC 521 ASRD 522 ASRAD 523 ASRADCC 524 ASRDCC 525 ASTDCCC 526 ATD 527 528 /* 64-bit pseudo operation */ 529 ADWORD 530 AREMD 531 AREMDCC 532 AREMDV 533 AREMDVCC 534 AREMDU 535 AREMDUCC 536 AREMDUV 537 AREMDUVCC 538 539 /* more 64-bit operations */ 540 AHRFID 541 542 ALAST 543 544 // aliases 545 ABR = obj.AJMP 546 ABL = obj.ACALL 547 )