| | |
| | |
| | |
| |
|
| | |
| | |
| |
|
| | #include "textflag.h" |
| |
|
| | TEXT 路Loaduintptr(SB), NOSPLIT, $0-16 |
| | JMP 路Load64(SB) |
| |
|
| | TEXT 路Loaduint(SB), NOSPLIT, $0-16 |
| | JMP 路Load64(SB) |
| |
|
| | TEXT 路Loadint32(SB), NOSPLIT, $0-12 |
| | JMP 路Load(SB) |
| |
|
| | TEXT 路Loadint64(SB), NOSPLIT, $0-16 |
| | JMP 路Load64(SB) |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | TEXT 路Cas(SB),NOSPLIT,$0-17 |
| | MOVQ ptr+0(FP), BX |
| | MOVL old+8(FP), AX |
| | MOVL new+12(FP), CX |
| | LOCK |
| | CMPXCHGL CX, 0(BX) |
| | SETEQ ret+16(FP) |
| | RET |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | TEXT 路Cas64(SB), NOSPLIT, $0-25 |
| | MOVQ ptr+0(FP), BX |
| | MOVQ old+8(FP), AX |
| | MOVQ new+16(FP), CX |
| | LOCK |
| | CMPXCHGQ CX, 0(BX) |
| | SETEQ ret+24(FP) |
| | RET |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | TEXT 路Casp1(SB), NOSPLIT, $0-25 |
| | MOVQ ptr+0(FP), BX |
| | MOVQ old+8(FP), AX |
| | MOVQ new+16(FP), CX |
| | LOCK |
| | CMPXCHGQ CX, 0(BX) |
| | SETEQ ret+24(FP) |
| | RET |
| |
|
| | TEXT 路Casint32(SB), NOSPLIT, $0-17 |
| | JMP 路Cas(SB) |
| |
|
| | TEXT 路Casint64(SB), NOSPLIT, $0-25 |
| | JMP 路Cas64(SB) |
| |
|
| | TEXT 路Casuintptr(SB), NOSPLIT, $0-25 |
| | JMP 路Cas64(SB) |
| |
|
| | TEXT 路CasRel(SB), NOSPLIT, $0-17 |
| | JMP 路Cas(SB) |
| |
|
| | |
| | |
| | |
| | |
| | TEXT 路Xadd(SB), NOSPLIT, $0-20 |
| | MOVQ ptr+0(FP), BX |
| | MOVL delta+8(FP), AX |
| | MOVL AX, CX |
| | LOCK |
| | XADDL AX, 0(BX) |
| | ADDL CX, AX |
| | MOVL AX, ret+16(FP) |
| | RET |
| |
|
| | |
| | |
| | |
| | |
| | TEXT 路Xadd64(SB), NOSPLIT, $0-24 |
| | MOVQ ptr+0(FP), BX |
| | MOVQ delta+8(FP), AX |
| | MOVQ AX, CX |
| | LOCK |
| | XADDQ AX, 0(BX) |
| | ADDQ CX, AX |
| | MOVQ AX, ret+16(FP) |
| | RET |
| |
|
| | TEXT 路Xaddint32(SB), NOSPLIT, $0-20 |
| | JMP 路Xadd(SB) |
| |
|
| | TEXT 路Xaddint64(SB), NOSPLIT, $0-24 |
| | JMP 路Xadd64(SB) |
| |
|
| | TEXT 路Xadduintptr(SB), NOSPLIT, $0-24 |
| | JMP 路Xadd64(SB) |
| |
|
| | |
| | |
| | |
| | |
| | |
| | TEXT 路Xchg8(SB), NOSPLIT, $0-17 |
| | MOVQ ptr+0(FP), BX |
| | MOVB new+8(FP), AX |
| | XCHGB AX, 0(BX) |
| | MOVB AX, ret+16(FP) |
| | RET |
| |
|
| | |
| | |
| | |
| | |
| | |
| | TEXT 路Xchg(SB), NOSPLIT, $0-20 |
| | MOVQ ptr+0(FP), BX |
| | MOVL new+8(FP), AX |
| | XCHGL AX, 0(BX) |
| | MOVL AX, ret+16(FP) |
| | RET |
| |
|
| | |
| | |
| | |
| | |
| | |
| | TEXT 路Xchg64(SB), NOSPLIT, $0-24 |
| | MOVQ ptr+0(FP), BX |
| | MOVQ new+8(FP), AX |
| | XCHGQ AX, 0(BX) |
| | MOVQ AX, ret+16(FP) |
| | RET |
| |
|
| | TEXT 路Xchgint32(SB), NOSPLIT, $0-20 |
| | JMP 路Xchg(SB) |
| |
|
| | TEXT 路Xchgint64(SB), NOSPLIT, $0-24 |
| | JMP 路Xchg64(SB) |
| |
|
| | TEXT 路Xchguintptr(SB), NOSPLIT, $0-24 |
| | JMP 路Xchg64(SB) |
| |
|
| | TEXT 路StorepNoWB(SB), NOSPLIT, $0-16 |
| | MOVQ ptr+0(FP), BX |
| | MOVQ val+8(FP), AX |
| | XCHGQ AX, 0(BX) |
| | RET |
| |
|
| | TEXT 路Store(SB), NOSPLIT, $0-12 |
| | MOVQ ptr+0(FP), BX |
| | MOVL val+8(FP), AX |
| | XCHGL AX, 0(BX) |
| | RET |
| |
|
| | TEXT 路Store8(SB), NOSPLIT, $0-9 |
| | MOVQ ptr+0(FP), BX |
| | MOVB val+8(FP), AX |
| | XCHGB AX, 0(BX) |
| | RET |
| |
|
| | TEXT 路Store64(SB), NOSPLIT, $0-16 |
| | MOVQ ptr+0(FP), BX |
| | MOVQ val+8(FP), AX |
| | XCHGQ AX, 0(BX) |
| | RET |
| |
|
| | TEXT 路Storeint32(SB), NOSPLIT, $0-12 |
| | JMP 路Store(SB) |
| |
|
| | TEXT 路Storeint64(SB), NOSPLIT, $0-16 |
| | JMP 路Store64(SB) |
| |
|
| | TEXT 路Storeuintptr(SB), NOSPLIT, $0-16 |
| | JMP 路Store64(SB) |
| |
|
| | TEXT 路StoreRel(SB), NOSPLIT, $0-12 |
| | JMP 路Store(SB) |
| |
|
| | TEXT 路StoreRel64(SB), NOSPLIT, $0-16 |
| | JMP 路Store64(SB) |
| |
|
| | TEXT 路StoreReluintptr(SB), NOSPLIT, $0-16 |
| | JMP 路Store64(SB) |
| |
|
| | |
| | TEXT 路Or8(SB), NOSPLIT, $0-9 |
| | MOVQ ptr+0(FP), AX |
| | MOVB val+8(FP), BX |
| | LOCK |
| | ORB BX, (AX) |
| | RET |
| |
|
| | |
| | TEXT 路And8(SB), NOSPLIT, $0-9 |
| | MOVQ ptr+0(FP), AX |
| | MOVB val+8(FP), BX |
| | LOCK |
| | ANDB BX, (AX) |
| | RET |
| |
|
| | |
| | TEXT 路Or(SB), NOSPLIT, $0-12 |
| | MOVQ ptr+0(FP), AX |
| | MOVL val+8(FP), BX |
| | LOCK |
| | ORL BX, (AX) |
| | RET |
| |
|
| | |
| | TEXT 路And(SB), NOSPLIT, $0-12 |
| | MOVQ ptr+0(FP), AX |
| | MOVL val+8(FP), BX |
| | LOCK |
| | ANDL BX, (AX) |
| | RET |
| |
|
| | |
| | TEXT 路Or32(SB), NOSPLIT, $0-20 |
| | MOVQ ptr+0(FP), BX |
| | MOVL val+8(FP), CX |
| | casloop: |
| | MOVL CX, DX |
| | MOVL (BX), AX |
| | ORL AX, DX |
| | LOCK |
| | CMPXCHGL DX, (BX) |
| | JNZ casloop |
| | MOVL AX, ret+16(FP) |
| | RET |
| |
|
| | // func And32(addr *uint32, v uint32) old uint32 |
| | TEXT 路And32(SB), NOSPLIT, $0-20 |
| | MOVQ ptr+0(FP), BX |
| | MOVL val+8(FP), CX |
| | casloop: |
| | MOVL CX, DX |
| | MOVL (BX), AX |
| | ANDL AX, DX |
| | LOCK |
| | CMPXCHGL DX, (BX) |
| | JNZ casloop |
| | MOVL AX, ret+16(FP) |
| | RET |
| |
|
| | // func Or64(addr *uint64, v uint64) old uint64 |
| | TEXT 路Or64(SB), NOSPLIT, $0-24 |
| | MOVQ ptr+0(FP), BX |
| | MOVQ val+8(FP), CX |
| | casloop: |
| | MOVQ CX, DX |
| | MOVQ (BX), AX |
| | ORQ AX, DX |
| | LOCK |
| | CMPXCHGQ DX, (BX) |
| | JNZ casloop |
| | MOVQ AX, ret+16(FP) |
| | RET |
| |
|
| | // func And64(addr *uint64, v uint64) old uint64 |
| | TEXT 路And64(SB), NOSPLIT, $0-24 |
| | MOVQ ptr+0(FP), BX |
| | MOVQ val+8(FP), CX |
| | casloop: |
| | MOVQ CX, DX |
| | MOVQ (BX), AX |
| | ANDQ AX, DX |
| | LOCK |
| | CMPXCHGQ DX, (BX) |
| | JNZ casloop |
| | MOVQ AX, ret+16(FP) |
| | RET |
| |
|
| | // func Anduintptr(addr *uintptr, v uintptr) old uintptr |
| | TEXT 路Anduintptr(SB), NOSPLIT, $0-24 |
| | JMP 路And64(SB) |
| |
|
| | // func Oruintptr(addr *uintptr, v uintptr) old uintptr |
| | TEXT 路Oruintptr(SB), NOSPLIT, $0-24 |
| | JMP 路Or64(SB) |
| |
|