blob: a46c3d4b9be99cee6a8158040afa73dfd71882d7 [file] [log] [blame]
// Copyright 2025 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build valgrind && linux
#include "textflag.h"
// See valgrind_amd64.s for notes about this assembly.
// func valgrindClientRequest(uintptr, uintptr, uintptr, uintptr, uintptr, uintptr) (ret uintptr)
TEXT runtime·valgrindClientRequest(SB), NOSPLIT, $0-56
// Load the address of the first of the (contiguous) arguments into x4.
MOVD $args+0(FP), R4
// Zero x3, since some requests may not populate it.
MOVD ZR, R3
// Emit the special preamble.
ROR $3, R12; ROR $13, R12
ROR $51, R12; ROR $61, R12
// "Execute" the client request.
ORR R10, R10
// Copy the result out of x3.
MOVD R3, ret+48(FP)
RET