Allow sparcv8plus to use "cas".
Theo Schlossnagle
This commit is contained in:
parent
d8f940f281
commit
8d988c7d1c
@ -16,21 +16,20 @@
|
|||||||
.global pg_atomic_cas
|
.global pg_atomic_cas
|
||||||
pg_atomic_cas:
|
pg_atomic_cas:
|
||||||
|
|
||||||
! "cas" only works on sparcv9 chips, and requies a compiler
|
! "cas" only works on sparcv9 and sparcv8plus chips, and
|
||||||
! that is targeting sparcv9. It will fail on a compiler
|
! requies a compiler targeting these CPUs. It will fail
|
||||||
! targeting sparcv8, and of course will not be understood
|
! on a compiler targeting sparcv8, and of course will not
|
||||||
! by a sparcv8 CPU. gcc continues to use "ldstub" because
|
! be understood by a sparcv8 CPU. gcc continues to use
|
||||||
! there is no indication which sparc version it is targeting.
|
! "ldstub" because it targets sparcv7.
|
||||||
!
|
!
|
||||||
! It is actually possible to use "cas" for sparcv8 binaries if
|
! There is actually a trick for embedding "cas" in a
|
||||||
! -xarch=v8plus is used for compilation. There is actually a
|
! sparcv8-targeted compiler, but it can only be run
|
||||||
! trick for embedding "cas" in a sparcv8-targeted compiler, but
|
! on a sparcv8plus/v9 cpus:
|
||||||
! it can only be run on a sparcv8plus cpus:
|
|
||||||
!
|
!
|
||||||
! http://cvs.opensolaris.org/source/xref/on/usr/src/lib/libc/sparc/threads/sparc.il
|
! http://cvs.opensolaris.org/source/xref/on/usr/src/lib/libc/sparc/threads/sparc.il
|
||||||
!
|
!
|
||||||
|
|
||||||
#ifdef __sparcv9
|
#if defined(__sparcv9) || defined(__sparcv8plus)
|
||||||
cas [%o0],%o2,%o1
|
cas [%o0],%o2,%o1
|
||||||
#else
|
#else
|
||||||
ldstub [%o0],%o1
|
ldstub [%o0],%o1
|
||||||
|
Loading…
x
Reference in New Issue
Block a user