case "arm64":
return archArm64()
case "mips":
- a := archMips()
- a.LinkArch = &mips.Linkmips
- return a
+ return archMips(&mips.Linkmips)
case "mipsle":
- a := archMips()
- a.LinkArch = &mips.Linkmipsle
- return a
+ return archMips(&mips.Linkmipsle)
case "mips64":
- a := archMips64()
- a.LinkArch = &mips.Linkmips64
- return a
+ return archMips64(&mips.Linkmips64)
case "mips64le":
- a := archMips64()
- a.LinkArch = &mips.Linkmips64le
- return a
+ return archMips64(&mips.Linkmips64le)
case "ppc64":
- a := archPPC64()
- a.LinkArch = &ppc64.Linkppc64
- return a
+ return archPPC64(&ppc64.Linkppc64)
case "ppc64le":
- a := archPPC64()
- a.LinkArch = &ppc64.Linkppc64le
- return a
+ return archPPC64(&ppc64.Linkppc64le)
case "s390x":
- a := archS390x()
- a.LinkArch = &s390x.Links390x
- return a
+ return archS390x()
case "wasm":
return archWasm()
}
}
-func archPPC64() *Arch {
+func archPPC64(linkArch *obj.LinkArch) *Arch {
register := make(map[string]int16)
// Create maps for easy lookup of instruction names etc.
// Note that there is no list of names as there is for x86.
instructions["BL"] = ppc64.ABL
return &Arch{
- LinkArch: &ppc64.Linkppc64,
+ LinkArch: linkArch,
Instructions: instructions,
Register: register,
RegisterPrefix: registerPrefix,
}
}
-func archMips() *Arch {
+func archMips(linkArch *obj.LinkArch) *Arch {
register := make(map[string]int16)
// Create maps for easy lookup of instruction names etc.
// Note that there is no list of names as there is for x86.
instructions["JAL"] = mips.AJAL
return &Arch{
- LinkArch: &mips.Linkmipsle,
+ LinkArch: linkArch,
Instructions: instructions,
Register: register,
RegisterPrefix: registerPrefix,
}
}
-func archMips64() *Arch {
+func archMips64(linkArch *obj.LinkArch) *Arch {
register := make(map[string]int16)
// Create maps for easy lookup of instruction names etc.
// Note that there is no list of names as there is for x86.
instructions["JAL"] = mips.AJAL
return &Arch{
- LinkArch: &mips.Linkmips64,
+ LinkArch: linkArch,
Instructions: instructions,
Register: register,
RegisterPrefix: registerPrefix,