blob: 8a6184efd04a08a214f3b5b57a63c4edd14c5877 [file] [log] [blame]
Shenghou Maf00c19a2015-03-08 04:32:55 -04001// 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
5package main
6
7import (
8 "cmd/internal/gc"
9 "cmd/internal/obj"
Aram Hăvărneanu02c1a9d2015-03-08 14:16:29 +010010 "cmd/internal/obj/arm64"
Shenghou Maf00c19a2015-03-08 04:32:55 -040011)
12
Aram Hăvărneanu02c1a9d2015-03-08 14:16:29 +010013var thechar int = '7'
Shenghou Maf00c19a2015-03-08 04:32:55 -040014
Aram Hăvărneanu02c1a9d2015-03-08 14:16:29 +010015var thestring string = "arm64"
Shenghou Maf00c19a2015-03-08 04:32:55 -040016
Aram Hăvărneanu02c1a9d2015-03-08 14:16:29 +010017var thelinkarch *obj.LinkArch = &arm64.Linkarm64
Shenghou Maf00c19a2015-03-08 04:32:55 -040018
19func linkarchinit() {
Shenghou Maf00c19a2015-03-08 04:32:55 -040020}
21
22var MAXWIDTH int64 = 1 << 50
23
24/*
25 * go declares several platform-specific type aliases:
Brad Fitzpatrick8b27d282015-04-13 18:04:02 -050026 * int, uint, and uintptr
Shenghou Maf00c19a2015-03-08 04:32:55 -040027 */
28var 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
34func betypeinit() {
35 gc.Widthptr = 8
36 gc.Widthint = 8
37 gc.Widthreg = 8
Shenghou Maf00c19a2015-03-08 04:32:55 -040038}
39
40func main() {
41 gc.Thearch.Thechar = thechar
42 gc.Thearch.Thestring = thestring
43 gc.Thearch.Thelinkarch = thelinkarch
44 gc.Thearch.Typedefs = typedefs
Aram Hăvărneanu02c1a9d2015-03-08 14:16:29 +010045 gc.Thearch.REGSP = arm64.REGSP
46 gc.Thearch.REGCTXT = arm64.REGCTXT
Russ Coxb115c352015-03-18 17:26:36 -040047 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
Dave Cheney888d44d2015-04-09 21:25:48 +100052 gc.Thearch.REGZERO = arm64.REGZERO
Russ Coxb115c352015-03-18 17:26:36 -040053 gc.Thearch.FREGMIN = arm64.REG_F0
54 gc.Thearch.FREGMAX = arm64.REG_F31
Shenghou Maf00c19a2015-03-08 04:32:55 -040055 gc.Thearch.MAXWIDTH = MAXWIDTH
Russ Coxb115c352015-03-18 17:26:36 -040056 gc.Thearch.ReservedRegs = resvd
57
Shenghou Maf00c19a2015-03-08 04:32:55 -040058 gc.Thearch.Betypeinit = betypeinit
Russ Coxb115c352015-03-18 17:26:36 -040059 gc.Thearch.Cgen_hmul = cgen_hmul
60 gc.Thearch.Cgen_shift = cgen_shift
Shenghou Maf00c19a2015-03-08 04:32:55 -040061 gc.Thearch.Clearfat = clearfat
62 gc.Thearch.Defframe = defframe
Russ Coxb115c352015-03-18 17:26:36 -040063 gc.Thearch.Dodiv = dodiv
Shenghou Maf00c19a2015-03-08 04:32:55 -040064 gc.Thearch.Excise = excise
65 gc.Thearch.Expandchecks = expandchecks
Russ Cox92c826b2015-04-03 12:23:28 -040066 gc.Thearch.Getg = getg
Shenghou Maf00c19a2015-03-08 04:32:55 -040067 gc.Thearch.Gins = gins
Russ Coxf8d14fc2015-05-06 12:28:19 -040068 gc.Thearch.Ginscmp = ginscmp
Russ Coxb115c352015-03-18 17:26:36 -040069 gc.Thearch.Ginscon = ginscon
70 gc.Thearch.Ginsnop = ginsnop
Russ Coxb9602632015-03-18 12:29:40 -040071 gc.Thearch.Gmove = gmove
Shenghou Maf00c19a2015-03-08 04:32:55 -040072 gc.Thearch.Linkarchinit = linkarchinit
73 gc.Thearch.Peep = peep
74 gc.Thearch.Proginfo = proginfo
Shenghou Maf00c19a2015-03-08 04:32:55 -040075 gc.Thearch.Regtyp = regtyp
76 gc.Thearch.Sameaddr = sameaddr
77 gc.Thearch.Smallindir = smallindir
78 gc.Thearch.Stackaddr = stackaddr
Shenghou Mae7dd2882015-04-08 13:34:42 -040079 gc.Thearch.Blockcopy = blockcopy
Russ Coxb115c352015-03-18 17:26:36 -040080 gc.Thearch.Sudoaddable = sudoaddable
81 gc.Thearch.Sudoclean = sudoclean
Shenghou Maf00c19a2015-03-08 04:32:55 -040082 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}