From d2317d50ae2402e5335f2ed807a166359565566b Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Mon, 14 Oct 2019 14:01:15 +0000 Subject: internal/cpu: define kdsaQuery for s390 Patch from Andreas Krebbel. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/201037 From-SVN: r276962 --- libgo/go/internal/cpu/cpu_gccgo.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'libgo') diff --git a/libgo/go/internal/cpu/cpu_gccgo.c b/libgo/go/internal/cpu/cpu_gccgo.c index ed0e7bff..6b40f01 100644 --- a/libgo/go/internal/cpu/cpu_gccgo.c +++ b/libgo/go/internal/cpu/cpu_gccgo.c @@ -184,4 +184,19 @@ struct queryResult klmdQuery() { return ret; } +struct queryResult kdsaQuery(void) + __asm__(GOSYM_PREFIX "internal..z2fcpu.kdsaQuery") + __attribute__((no_split_stack)); + +struct queryResult kdsaQuery() { + struct queryResult ret; + + __asm__ ("lghi %%r0, 0\t\n" // set function code to 0 (KDSA-Query) + "la %%r1, %[ret]\t\n" + ".long 0xb93a0024\t\n" // kdsa + :[ret] "=QRST" (ret) : : "r0", "r1", "cc"); + + return ret; +} + #endif /* defined(__s390x__) */ -- cgit v1.1 From 2dccdbcff61201656cf1b37cd690ad6c3f7db8ad Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Mon, 14 Oct 2019 14:10:16 +0000 Subject: runtime: correct facilities names in s390 CPU support Patch from Andreas Krebbel. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/201038 From-SVN: r276964 --- libgo/go/runtime/os_linux_s390x.go | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'libgo') diff --git a/libgo/go/runtime/os_linux_s390x.go b/libgo/go/runtime/os_linux_s390x.go index 7640273..46fe817 100644 --- a/libgo/go/runtime/os_linux_s390x.go +++ b/libgo/go/runtime/os_linux_s390x.go @@ -16,18 +16,20 @@ const ( _HWCAP_S390_DFP = 64 _HWCAP_S390_ETF3EH = 256 _HWCAP_S390_VX = 2048 // vector facility + _HWCAP_S390_VXE = 8192 ) func archauxv(tag, val uintptr) { switch tag { case _AT_HWCAP: // CPU capability bit flags - cpu.S390X.HasZArch = val&_HWCAP_S390_ZARCH != 0 + cpu.S390X.HasZARCH = val&_HWCAP_S390_ZARCH != 0 cpu.S390X.HasSTFLE = val&_HWCAP_S390_STFLE != 0 - cpu.S390X.HasMSA = val&_HWCAP_S390_MSA != 0 - cpu.S390X.HasLDisp = val&_HWCAP_S390_LDISP != 0 - cpu.S390X.HasEImm = val&_HWCAP_S390_EIMM != 0 + cpu.S390X.HasLDISP = val&_HWCAP_S390_LDISP != 0 + cpu.S390X.HasEIMM = val&_HWCAP_S390_EIMM != 0 cpu.S390X.HasDFP = val&_HWCAP_S390_DFP != 0 - cpu.S390X.HasETF3Enhanced = val&_HWCAP_S390_ETF3EH != 0 + cpu.S390X.HasETF3EH = val&_HWCAP_S390_ETF3EH != 0 + cpu.S390X.HasMSA = val&_HWCAP_S390_MSA != 0 cpu.S390X.HasVX = val&_HWCAP_S390_VX != 0 + cpu.S390X.HasVXE = val&_HWCAP_S390_VXE != 0 } } -- cgit v1.1