github.com/mh-cbon/go@v0.0.0-20160603070303-9e112a3fe4c0/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  )