summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sys/sparc64/sparc64/machdep.c7
-rw-r--r--sys/sparc64/sparc64/support.S23
2 files changed, 23 insertions, 7 deletions
diff --git a/sys/sparc64/sparc64/machdep.c b/sys/sparc64/sparc64/machdep.c
index b662961..fa2ba40 100644
--- a/sys/sparc64/sparc64/machdep.c
+++ b/sys/sparc64/sparc64/machdep.c
@@ -703,10 +703,3 @@ set_fpregs(struct thread *td, struct fpreg *fpregs)
tf->tf_gsr = fpregs->fr_gsr;
return (0);
}
-
-intptr_t
-casuptr(intptr_t *p, intptr_t old, intptr_t new)
-{
- return (-1);
-}
-
diff --git a/sys/sparc64/sparc64/support.S b/sys/sparc64/sparc64/support.S
index 649f0b8..b701f04 100644
--- a/sys/sparc64/sparc64/support.S
+++ b/sys/sparc64/sparc64/support.S
@@ -402,6 +402,29 @@ fs_nofault_begin:
.set susword, suword16
.set suword, suword64
+ .globl casuptr, fuptr, suptr
+ .set casuptr, casuword64
+ .set fuptr, fuword64
+ .set suptr, suword64
+
+/*
+ * int32_t casuword32(volatile int32_t *p, int32_t e, int32_t s)
+ */
+ENTRY(casuword32)
+ casa [%o0] ASI_AIUP, %o1, %o2
+ retl
+ mov %o2, %o0
+END(casuword32)
+
+/*
+ * int64_t casuword64(volatile int64_t *p, int64_t e, int64_t s)
+ */
+ENTRY(casuword64)
+ casxa [%o0] ASI_AIUP, %o1, %o2
+ retl
+ mov %o2, %o0
+END(casuword64)
+
/*
* int fuword8(const void *base)
*/
OpenPOWER on IntegriCloud