summaryrefslogtreecommitdiff
path: root/src/pkg/runtime/atomic_arm.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg/runtime/atomic_arm.c')
-rw-r--r--src/pkg/runtime/atomic_arm.c30
1 files changed, 15 insertions, 15 deletions
diff --git a/src/pkg/runtime/atomic_arm.c b/src/pkg/runtime/atomic_arm.c
index a78b1dfe2..b1e97b27d 100644
--- a/src/pkg/runtime/atomic_arm.c
+++ b/src/pkg/runtime/atomic_arm.c
@@ -4,6 +4,7 @@
#include "runtime.h"
#include "arch_GOARCH.h"
+#include "../../cmd/ld/textflag.h"
static struct {
Lock l;
@@ -13,7 +14,7 @@ static struct {
#define LOCK(addr) (&locktab[((uintptr)(addr)>>3)%nelem(locktab)].l)
// Atomic add and return new value.
-#pragma textflag 7
+#pragma textflag NOSPLIT
uint32
runtime·xadd(uint32 volatile *val, int32 delta)
{
@@ -27,7 +28,7 @@ runtime·xadd(uint32 volatile *val, int32 delta)
}
}
-#pragma textflag 7
+#pragma textflag NOSPLIT
uint32
runtime·xchg(uint32 volatile* addr, uint32 v)
{
@@ -40,7 +41,7 @@ runtime·xchg(uint32 volatile* addr, uint32 v)
}
}
-#pragma textflag 7
+#pragma textflag NOSPLIT
void
runtime·procyield(uint32 cnt)
{
@@ -50,21 +51,21 @@ runtime·procyield(uint32 cnt)
}
}
-#pragma textflag 7
+#pragma textflag NOSPLIT
uint32
runtime·atomicload(uint32 volatile* addr)
{
return runtime·xadd(addr, 0);
}
-#pragma textflag 7
+#pragma textflag NOSPLIT
void*
runtime·atomicloadp(void* volatile* addr)
{
return (void*)runtime·xadd((uint32 volatile*)addr, 0);
}
-#pragma textflag 7
+#pragma textflag NOSPLIT
void
runtime·atomicstorep(void* volatile* addr, void* v)
{
@@ -77,7 +78,7 @@ runtime·atomicstorep(void* volatile* addr, void* v)
}
}
-#pragma textflag 7
+#pragma textflag NOSPLIT
void
runtime·atomicstore(uint32 volatile* addr, uint32 v)
{
@@ -90,25 +91,24 @@ runtime·atomicstore(uint32 volatile* addr, uint32 v)
}
}
-#pragma textflag 7
+#pragma textflag NOSPLIT
bool
-runtime·cas64(uint64 volatile *addr, uint64 *old, uint64 new)
+runtime·cas64(uint64 volatile *addr, uint64 old, uint64 new)
{
bool res;
runtime·lock(LOCK(addr));
- if(*addr == *old) {
+ if(*addr == old) {
*addr = new;
res = true;
} else {
- *old = *addr;
res = false;
}
runtime·unlock(LOCK(addr));
return res;
}
-#pragma textflag 7
+#pragma textflag NOSPLIT
uint64
runtime·xadd64(uint64 volatile *addr, int64 delta)
{
@@ -121,7 +121,7 @@ runtime·xadd64(uint64 volatile *addr, int64 delta)
return res;
}
-#pragma textflag 7
+#pragma textflag NOSPLIT
uint64
runtime·xchg64(uint64 volatile *addr, uint64 v)
{
@@ -134,7 +134,7 @@ runtime·xchg64(uint64 volatile *addr, uint64 v)
return res;
}
-#pragma textflag 7
+#pragma textflag NOSPLIT
uint64
runtime·atomicload64(uint64 volatile *addr)
{
@@ -146,7 +146,7 @@ runtime·atomicload64(uint64 volatile *addr)
return res;
}
-#pragma textflag 7
+#pragma textflag NOSPLIT
void
runtime·atomicstore64(uint64 volatile *addr, uint64 v)
{