diff options
| author | Paul E. Murphy <murp@ibm.com> | 2022-02-14 17:15:05 -0600 |
|---|---|---|
| committer | Paul Murphy <murp@ibm.com> | 2022-03-03 17:28:58 +0000 |
| commit | 78070ec3d44fdd8e60271abf31f056aeac919cc3 (patch) | |
| tree | a46c75eac18f0f6daf7604c3f313fd8a554b2bc2 /src/runtime/internal | |
| parent | ef92828bb9ffd77d6f08e402225557256b11cfad (diff) | |
| download | go-78070ec3d44fdd8e60271abf31f056aeac919cc3.tar.xz | |
syscall, runtime/internal/syscall: always return 0 in r2 on ppc64{,le} linux syscalls
Both endians perform syscalls similarly. Only CR0S0 and R3 hold
the resultant status of a syscall. A random value may be stored into
the second return value (r2) result in some cases. Always set it to
zero.
Fixes #51192
Change-Id: Ida6a5692578d2cdadf3099af28478b3bc364f623
Reviewed-on: https://go-review.googlesource.com/c/go/+/385796
Run-TryBot: Paul Murphy <murp@ibm.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Austin Clements <austin@google.com>
Trust: Paul Murphy <murp@ibm.com>
Diffstat (limited to 'src/runtime/internal')
| -rw-r--r-- | src/runtime/internal/syscall/asm_linux_ppc64x.s | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/src/runtime/internal/syscall/asm_linux_ppc64x.s b/src/runtime/internal/syscall/asm_linux_ppc64x.s index 8e8463810d..8cf8737df8 100644 --- a/src/runtime/internal/syscall/asm_linux_ppc64x.s +++ b/src/runtime/internal/syscall/asm_linux_ppc64x.s @@ -16,14 +16,13 @@ TEXT ·Syscall6(SB),NOSPLIT,$0-80 MOVD a5+40(FP), R7 MOVD a6+48(FP), R8 SYSCALL R9 + MOVD R0, r2+64(FP) // r2 is not used. Always set to 0. BVC ok MOVD $-1, R4 MOVD R4, r1+56(FP) - MOVD R0, r2+64(FP) MOVD R3, errno+72(FP) RET ok: MOVD R3, r1+56(FP) - MOVD R4, r2+64(FP) MOVD R0, errno+72(FP) RET |
