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