| Server IP : 217.160.0.212 / Your IP : 216.73.216.141 Web Server : Apache System : Linux www 6.18.51-i1-ampere #1196 SMP Fri Sep 11 20:43:55 CEST 2026 aarch64 User : sws1073854427 ( 1073854427) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : OFF | Pkexec : OFF Directory : /lib/go-1.23/src/runtime/ |
Upload File : |
// Copyright 2016 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 mips || mipsle #include "textflag.h" #ifdef GOARCH_mips #define MOVWHI MOVWL #define MOVWLO MOVWR #else #define MOVWHI MOVWR #define MOVWLO MOVWL #endif // See memclrNoHeapPointers Go doc for important implementation constraints. // func memclrNoHeapPointers(ptr unsafe.Pointer, n uintptr) TEXT runtime·memclrNoHeapPointers(SB),NOSPLIT,$0-8 MOVW n+4(FP), R2 MOVW ptr+0(FP), R1 SGTU $4, R2, R3 ADDU R2, R1, R4 BNE R3, small_zero ptr_align: AND $3, R1, R3 BEQ R3, setup SUBU R1, R0, R3 AND $3, R3 // R3 contains number of bytes needed to align ptr MOVWHI R0, 0(R1) // MOVWHI will write zeros up to next word boundary SUBU R3, R2 ADDU R3, R1 setup: AND $31, R2, R6 AND $3, R2, R5 SUBU R6, R4, R6 // end pointer for 32-byte chunks SUBU R5, R4, R5 // end pointer for 4-byte chunks large: BEQ R1, R6, words MOVW R0, 0(R1) MOVW R0, 4(R1) MOVW R0, 8(R1) MOVW R0, 12(R1) MOVW R0, 16(R1) MOVW R0, 20(R1) MOVW R0, 24(R1) MOVW R0, 28(R1) ADDU $32, R1 JMP large words: BEQ R1, R5, tail MOVW R0, 0(R1) ADDU $4, R1 JMP words tail: BEQ R1, R4, ret MOVWLO R0, -1(R4) ret: RET small_zero: BEQ R1, R4, ret MOVB R0, 0(R1) ADDU $1, R1 JMP small_zero