// 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.

// +build mips mipsle

#include "textflag.h"

TEXT ·spinLock(SB),NOSPLIT,$0-4
	MOVW	state+0(FP), R1
	MOVW	$1, R2
	SYNC
try_lock:
	MOVW	R2, R3
check_again:
	LL	(R1), R4
	BNE	R4, check_again
	SC	R3, (R1)
	BEQ	R3, try_lock
	SYNC
	RET

TEXT ·spinUnlock(SB),NOSPLIT,$0-4
	MOVW	state+0(FP), R1
	SYNC
	MOVW	R0, (R1)
	SYNC
	RET