Home | History | Annotate | Download | only in arm64
      1 // Copyright 2009 The Go Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style
      3 // license that can be found in the LICENSE file.
      4 
      5 package arm64
      6 
      7 import (
      8 	"cmd/compile/internal/gc"
      9 	"cmd/internal/obj"
     10 	"cmd/internal/obj/arm64"
     11 )
     12 
     13 var thechar int = '7'
     14 
     15 var thestring string = "arm64"
     16 
     17 var thelinkarch *obj.LinkArch = &arm64.Linkarm64
     18 
     19 func linkarchinit() {
     20 }
     21 
     22 var MAXWIDTH int64 = 1 << 50
     23 
     24 /*
     25  * go declares several platform-specific type aliases:
     26  * int, uint, and uintptr
     27  */
     28 var typedefs = []gc.Typedef{
     29 	gc.Typedef{"int", gc.TINT, gc.TINT64},
     30 	gc.Typedef{"uint", gc.TUINT, gc.TUINT64},
     31 	gc.Typedef{"uintptr", gc.TUINTPTR, gc.TUINT64},
     32 }
     33 
     34 func betypeinit() {
     35 	gc.Widthptr = 8
     36 	gc.Widthint = 8
     37 	gc.Widthreg = 8
     38 }
     39 
     40 func Main() {
     41 	gc.Thearch.Thechar = thechar
     42 	gc.Thearch.Thestring = thestring
     43 	gc.Thearch.Thelinkarch = thelinkarch
     44 	gc.Thearch.Typedefs = typedefs
     45 	gc.Thearch.REGSP = arm64.REGSP
     46 	gc.Thearch.REGCTXT = arm64.REGCTXT
     47 	gc.Thearch.REGCALLX = arm64.REGRT1
     48 	gc.Thearch.REGCALLX2 = arm64.REGRT2
     49 	gc.Thearch.REGRETURN = arm64.REG_R0
     50 	gc.Thearch.REGMIN = arm64.REG_R0
     51 	gc.Thearch.REGMAX = arm64.REG_R31
     52 	gc.Thearch.REGZERO = arm64.REGZERO
     53 	gc.Thearch.FREGMIN = arm64.REG_F0
     54 	gc.Thearch.FREGMAX = arm64.REG_F31
     55 	gc.Thearch.MAXWIDTH = MAXWIDTH
     56 	gc.Thearch.ReservedRegs = resvd
     57 
     58 	gc.Thearch.Betypeinit = betypeinit
     59 	gc.Thearch.Cgen_hmul = cgen_hmul
     60 	gc.Thearch.Cgen_shift = cgen_shift
     61 	gc.Thearch.Clearfat = clearfat
     62 	gc.Thearch.Defframe = defframe
     63 	gc.Thearch.Dodiv = dodiv
     64 	gc.Thearch.Excise = excise
     65 	gc.Thearch.Expandchecks = expandchecks
     66 	gc.Thearch.Getg = getg
     67 	gc.Thearch.Gins = gins
     68 	gc.Thearch.Ginscmp = ginscmp
     69 	gc.Thearch.Ginscon = ginscon
     70 	gc.Thearch.Ginsnop = ginsnop
     71 	gc.Thearch.Gmove = gmove
     72 	gc.Thearch.Linkarchinit = linkarchinit
     73 	gc.Thearch.Peep = peep
     74 	gc.Thearch.Proginfo = proginfo
     75 	gc.Thearch.Regtyp = regtyp
     76 	gc.Thearch.Sameaddr = sameaddr
     77 	gc.Thearch.Smallindir = smallindir
     78 	gc.Thearch.Stackaddr = stackaddr
     79 	gc.Thearch.Blockcopy = blockcopy
     80 	gc.Thearch.Sudoaddable = sudoaddable
     81 	gc.Thearch.Sudoclean = sudoclean
     82 	gc.Thearch.Excludedregs = excludedregs
     83 	gc.Thearch.RtoB = RtoB
     84 	gc.Thearch.FtoB = RtoB
     85 	gc.Thearch.BtoR = BtoR
     86 	gc.Thearch.BtoF = BtoF
     87 	gc.Thearch.Optoas = optoas
     88 	gc.Thearch.Doregbits = doregbits
     89 	gc.Thearch.Regnames = regnames
     90 
     91 	gc.Main()
     92 	gc.Exit(0)
     93 }
     94