internal/cpu: define kdsaQuery for s390

Patch from Andreas Krebbel.

Change-Id: I8dc0342cd03f9b2ece98e9b8b0fb4bdb0d115ec1
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/201037
Reviewed-by: Ian Lance Taylor <iant@golang.org>
diff --git a/libgo/go/internal/cpu/cpu_gccgo.c b/libgo/go/internal/cpu/cpu_gccgo.c
index ed0e7bf..6b40f01 100644
--- a/libgo/go/internal/cpu/cpu_gccgo.c
+++ b/libgo/go/internal/cpu/cpu_gccgo.c
@@ -184,4 +184,19 @@
     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__)  */