cpu: use unix.Getsystemcfg to detect POWER8/POWER9 on aix/ppc64

Tested on an aix-ppc64 gomote builder.

Fixes golang/go#30732

Change-Id: I8e74dcde8bd4ded0f425c90eefe799970ebd325c
Reviewed-on: https://go-review.googlesource.com/c/sys/+/166466
Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
diff --git a/cpu/cpu_aix_ppc64.go b/cpu/cpu_aix_ppc64.go
new file mode 100644
index 0000000..d8c26a0
--- /dev/null
+++ b/cpu/cpu_aix_ppc64.go
@@ -0,0 +1,30 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build aix,ppc64
+
+package cpu
+
+import "golang.org/x/sys/unix"
+
+const cacheLineSize = 128
+
+const (
+	// getsystemcfg constants
+	_SC_IMPL     = 2
+	_IMPL_POWER8 = 0x10000
+	_IMPL_POWER9 = 0x20000
+)
+
+func init() {
+	impl := unix.Getsystemcfg(_SC_IMPL)
+	if impl&_IMPL_POWER8 != 0 {
+		PPC64.IsPOWER8 = true
+	}
+	if impl&_IMPL_POWER9 != 0 {
+		PPC64.IsPOWER9 = true
+	}
+
+	Initialized = true
+}
diff --git a/cpu/cpu_other_ppc64x.go b/cpu/cpu_other_ppc64x.go
deleted file mode 100644
index 3053b4b..0000000
--- a/cpu/cpu_other_ppc64x.go
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright 2019 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-// +build !linux
-// +build ppc64 ppc64le
-
-package cpu
-
-const cacheLineSize = 128
-
-func doinit() {}