summaryrefslogtreecommitdiff
path: root/libgo
diff options
context:
space:
mode:
authorIan Lance Taylor <iant@golang.org>2021-01-01 12:05:39 -0800
committerIan Lance Taylor <iant@golang.org>2021-01-01 15:13:50 -0800
commit5a4e0d121ab199d8a2036b219065f30f9f7411a3 (patch)
tree04b8c89eb96a957142177621d15a857a4eb4abe6 /libgo
parent0b9ef8be40b8ec530e46779a694e3b115b8e685d (diff)
internal/cpu: add aarch64 support functions
Patch from Andreas Schwab. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/281000
Diffstat (limited to 'libgo')
-rw-r--r--libgo/go/internal/cpu/cpu_gccgo.c26
1 files changed, 26 insertions, 0 deletions
diff --git a/libgo/go/internal/cpu/cpu_gccgo.c b/libgo/go/internal/cpu/cpu_gccgo.c
index da26f4d7407..6a20b394469 100644
--- a/libgo/go/internal/cpu/cpu_gccgo.c
+++ b/libgo/go/internal/cpu/cpu_gccgo.c
@@ -200,3 +200,29 @@ struct queryResult kdsaQuery() {
}
#endif /* defined(__s390x__) */
+
+#ifdef __aarch64__
+
+uint64_t getisar0(void)
+ __asm__(GOSYM_PREFIX "internal_1cpu.getisar0")
+ __attribute__((no_split_stack));
+
+uint64_t getisar0() {
+ uint64_t isar0;
+
+ __asm__("mrs %0,id_aa64isar0_el1" : "=r"(isar0));
+ return isar0;
+}
+
+uint64_t getMIDR(void)
+ __asm__(GOSYM_PREFIX "internal_1cpu.getMIDR")
+ __attribute__((no_split_stack));
+
+uint64_t getMIDR() {
+ uint64_t MIDR;
+
+ __asm__("mrs %0,midr_el1" : "=r"(MIDR));
+ return MIDR;
+}
+
+#endif /* defined(__aarch64__) */