Home | History | Annotate | Download | only in atomic
      1 // Copyright 2014 The Go Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style
      3 // license that can be found in the LICENSE file.
      4 
      5 // +build ppc64 ppc64le
      6 
      7 #include "textflag.h"
      8 
      9 // uint32 runtimeinternalatomicLoad(uint32 volatile* ptr)
     10 TEXT Load(SB),NOSPLIT|NOFRAME,$-8-12
     11 	MOVD	ptr+0(FP), R3
     12 	SYNC
     13 	MOVWZ	0(R3), R3
     14 	CMPW	R3, R3, CR7
     15 	BC	4, 30, 1(PC) // bne- cr7,0x4
     16 	ISYNC
     17 	MOVW	R3, ret+8(FP)
     18 	RET
     19 
     20 // uint64 runtimeinternalatomicLoad64(uint64 volatile* ptr)
     21 TEXT Load64(SB),NOSPLIT|NOFRAME,$-8-16
     22 	MOVD	ptr+0(FP), R3
     23 	SYNC
     24 	MOVD	0(R3), R3
     25 	CMP	R3, R3, CR7
     26 	BC	4, 30, 1(PC) // bne- cr7,0x4
     27 	ISYNC
     28 	MOVD	R3, ret+8(FP)
     29 	RET
     30 
     31 // void *runtimeinternalatomicLoadp(void *volatile *ptr)
     32 TEXT Loadp(SB),NOSPLIT|NOFRAME,$-8-16
     33 	MOVD	ptr+0(FP), R3
     34 	SYNC
     35 	MOVD	0(R3), R3
     36 	CMP	R3, R3, CR7
     37 	BC	4, 30, 1(PC) // bne- cr7,0x4
     38 	ISYNC
     39 	MOVD	R3, ret+8(FP)
     40 	RET
     41