From: Ian Lance Taylor Date: Fri, 1 Jan 2021 20:05:39 +0000 (-0800) Subject: internal/cpu: add aarch64 support functions X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=5a4e0d121ab199d8a2036b219065f30f9f7411a3;p=gcc.git internal/cpu: add aarch64 support functions Patch from Andreas Schwab. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/281000 --- diff --git a/gcc/go/gofrontend/MERGE b/gcc/go/gofrontend/MERGE index e51285c7214..f4c99756d25 100644 --- a/gcc/go/gofrontend/MERGE +++ b/gcc/go/gofrontend/MERGE @@ -1,4 +1,4 @@ -fa161cb71880cf80ef53fb4bf35dba8ee01af648 +2b5bdd22b7ec2fc13ae0f644c781f64c1a209500 The first line of this file holds the git revision number of the last merge done from the gofrontend repository. 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__) */