]> Cypherpunks repositories - gostls13.git/commitdiff
runtime/cgo: use standard ABI call setg_gcc in crosscall1 on loong64
authorGuoqi Chen <chenguoqi@loongson.cn>
Tue, 25 Feb 2025 02:50:50 +0000 (10:50 +0800)
committerabner chenc <chenguoqi@loongson.cn>
Thu, 27 Feb 2025 01:36:57 +0000 (17:36 -0800)
Change-Id: Ie38583d667d579751d643b2da2aa56390b69904c
Reviewed-on: https://go-review.googlesource.com/c/go/+/652255
Reviewed-by: Michael Knyszek <mknyszek@google.com>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: sophie zhao <zhaoxiaolin@loongson.cn>
Reviewed-by: Michael Pratt <mpratt@google.com>
Reviewed-by: Meidan Li <limeidan@loongson.cn>
src/runtime/asm_loong64.s
src/runtime/cgo/gcc_loong64.S

index d5dc61ff683d147539a3217c5ccadcfa76a7a86c..604b1243f7d270391c6cb22c5eee2ca7d102baca 100644 (file)
@@ -656,9 +656,9 @@ TEXT runtime·setg(SB), NOSPLIT, $0-8
        JAL     runtime·save_g(SB)
        RET
 
-// void setg_gcc(G*); set g called from gcc with g in R19
+// void setg_gcc(G*); set g called from gcc with g in R4
 TEXT setg_gcc<>(SB),NOSPLIT,$0-0
-       MOVV    R19, g
+       MOVV    R4, g
        JAL     runtime·save_g(SB)
        RET
 
index 6b7668f2889bec6cf135dffa80cf98460b8d410e..c84a3715b256550543be9bbf382dfd4ecfd63a95 100644 (file)
@@ -34,10 +34,11 @@ crosscall1:
        fst.d   $f30, $r3, 136
        fst.d   $f31, $r3, 144
 
-       move    $r18, $r4 // save R4
-       move    $r19, $r6
+       // r4 = *fn, r5 = *setg_gcc, r6 = *g
+       move    $r23, $r4       // save R4
+       move    $r4, $r6
        jirl    $r1, $r5, 0     // call setg_gcc (clobbers R4)
-       jirl    $r1, $r18, 0    // call fn
+       jirl    $r1, $r23, 0    // call fn
 
        ld.d    $r23, $r3, 8
        ld.d    $r24, $r3, 16