From 97bfc77f3897d6268cf4f9bb6756b97ff5e7cc03 Mon Sep 17 00:00:00 2001 From: Guoqi Chen Date: Fri, 10 Jun 2022 19:08:14 +0800 Subject: [PATCH] syscall, runtime/internal/syscall: always zero the higher bits of return value on linux/loong64 All loong64 syscalls return values only via R4/A0, and R5/A1 may contain unrelated content. Always zero the second return value. Change-Id: I62af59369bece5bd8028b937c74f4694150f7a55 Reviewed-on: https://go-review.googlesource.com/c/go/+/411615 Run-TryBot: Ian Lance Taylor TryBot-Result: Gopher Robot Auto-Submit: Ian Lance Taylor Reviewed-by: Ian Lance Taylor Reviewed-by: Austin Clements --- src/runtime/internal/syscall/asm_linux_loong64.s | 2 +- src/syscall/asm_linux_loong64.s | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/runtime/internal/syscall/asm_linux_loong64.s b/src/runtime/internal/syscall/asm_linux_loong64.s index ac500fb3b1..d6a33f90a7 100644 --- a/src/runtime/internal/syscall/asm_linux_loong64.s +++ b/src/runtime/internal/syscall/asm_linux_loong64.s @@ -24,6 +24,6 @@ TEXT ·Syscall6(SB),NOSPLIT,$0-80 RET ok: MOVV R4, r1+56(FP) - MOVV R5, r2+64(FP) + MOVV R0, r2+64(FP) // r2 is not used. Always set to 0. MOVV R0, errno+72(FP) RET diff --git a/src/syscall/asm_linux_loong64.s b/src/syscall/asm_linux_loong64.s index 2e7d0c7a3e..7dc69c6612 100644 --- a/src/syscall/asm_linux_loong64.s +++ b/src/syscall/asm_linux_loong64.s @@ -40,5 +40,5 @@ TEXT ·rawSyscallNoError(SB),NOSPLIT,$0-48 MOVV trap+0(FP), R11 // syscall entry SYSCALL MOVV R4, r1+32(FP) - MOVV R5, r2+40(FP) + MOVV R0, r2+40(FP) // r2 is not used. Always set to 0. RET