github.com/sean-/go@v0.0.0-20151219100004-97f854cd7bb6/src/cmd/compile/internal/ppc64/galign.go (about) 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 ppc64 6 7 import ( 8 "cmd/compile/internal/gc" 9 "cmd/internal/obj" 10 "cmd/internal/obj/ppc64" 11 ) 12 13 var thechar int = '9' 14 15 var thestring string = "ppc64" 16 17 var thelinkarch *obj.LinkArch 18 19 func linkarchinit() { 20 thestring = obj.Getgoarch() 21 gc.Thearch.Thestring = thestring 22 if thestring == "ppc64le" { 23 thelinkarch = &ppc64.Linkppc64le 24 } else { 25 thelinkarch = &ppc64.Linkppc64 26 } 27 gc.Thearch.Thelinkarch = thelinkarch 28 } 29 30 var MAXWIDTH int64 = 1 << 50 31 32 /* 33 * go declares several platform-specific type aliases: 34 * int, uint, and uintptr 35 */ 36 var typedefs = []gc.Typedef{ 37 {"int", gc.TINT, gc.TINT64}, 38 {"uint", gc.TUINT, gc.TUINT64}, 39 {"uintptr", gc.TUINTPTR, gc.TUINT64}, 40 } 41 42 func betypeinit() { 43 gc.Widthptr = 8 44 gc.Widthint = 8 45 gc.Widthreg = 8 46 47 if gc.Ctxt.Flag_shared != 0 { 48 gc.Thearch.ReservedRegs = append(gc.Thearch.ReservedRegs, ppc64.REG_R2) 49 gc.Thearch.ReservedRegs = append(gc.Thearch.ReservedRegs, ppc64.REG_R12) 50 } 51 } 52 53 func Main() { 54 gc.Thearch.Thechar = thechar 55 gc.Thearch.Thestring = thestring 56 gc.Thearch.Thelinkarch = thelinkarch 57 gc.Thearch.Typedefs = typedefs 58 gc.Thearch.REGSP = ppc64.REGSP 59 gc.Thearch.REGCTXT = ppc64.REGCTXT 60 gc.Thearch.REGCALLX = ppc64.REG_R3 61 gc.Thearch.REGCALLX2 = ppc64.REG_R4 62 gc.Thearch.REGRETURN = ppc64.REG_R3 63 gc.Thearch.REGMIN = ppc64.REG_R0 64 gc.Thearch.REGMAX = ppc64.REG_R31 65 gc.Thearch.FREGMIN = ppc64.REG_F0 66 gc.Thearch.FREGMAX = ppc64.REG_F31 67 gc.Thearch.MAXWIDTH = MAXWIDTH 68 gc.Thearch.ReservedRegs = resvd 69 70 gc.Thearch.Betypeinit = betypeinit 71 gc.Thearch.Cgen_hmul = cgen_hmul 72 gc.Thearch.Cgen_shift = cgen_shift 73 gc.Thearch.Clearfat = clearfat 74 gc.Thearch.Defframe = defframe 75 gc.Thearch.Dodiv = dodiv 76 gc.Thearch.Excise = excise 77 gc.Thearch.Expandchecks = expandchecks 78 gc.Thearch.Getg = getg 79 gc.Thearch.Gins = gins 80 gc.Thearch.Ginscmp = ginscmp 81 gc.Thearch.Ginscon = ginscon 82 gc.Thearch.Ginsnop = ginsnop 83 gc.Thearch.Gmove = gmove 84 gc.Thearch.Linkarchinit = linkarchinit 85 gc.Thearch.Peep = peep 86 gc.Thearch.Proginfo = proginfo 87 gc.Thearch.Regtyp = regtyp 88 gc.Thearch.Sameaddr = sameaddr 89 gc.Thearch.Smallindir = smallindir 90 gc.Thearch.Stackaddr = stackaddr 91 gc.Thearch.Blockcopy = blockcopy 92 gc.Thearch.Sudoaddable = sudoaddable 93 gc.Thearch.Sudoclean = sudoclean 94 gc.Thearch.Excludedregs = excludedregs 95 gc.Thearch.RtoB = RtoB 96 gc.Thearch.FtoB = RtoB 97 gc.Thearch.BtoR = BtoR 98 gc.Thearch.BtoF = BtoF 99 gc.Thearch.Optoas = optoas 100 gc.Thearch.Doregbits = doregbits 101 gc.Thearch.Regnames = regnames 102 103 gc.Main() 104 gc.Exit(0) 105 }