summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2017-06-08 19:44:27 -0400
committerRich Felker <dalias@aerifal.cx>2017-06-08 19:44:27 -0400
commitbc313e880c6cde2e512d2f43e84968d1b12bd19d (patch)
treedf0f065180fe420038cc238b0f0aef6474c02a2c /src
parent179766aa2ef06df854bc1d9616bf6f00ce49b7f9 (diff)
downloadmusl-bc313e880c6cde2e512d2f43e84968d1b12bd19d.tar.gz
use hard-coded sh4a atomic opcodes to avoid linker errors on sh
when using the sh4a opcodes, the assembler tags the resulting object file as requiring sh4a. the linker then refuses to (static) link it with object files marked as requiring j2, since there is no isa level that includes both sh4a and j2 instructions.
Diffstat (limited to 'src')
-rw-r--r--src/thread/sh/atomics.s8
1 files changed, 4 insertions, 4 deletions
diff --git a/src/thread/sh/atomics.s b/src/thread/sh/atomics.s
index 3b58cccc..9d9fcb6e 100644
--- a/src/thread/sh/atomics.s
+++ b/src/thread/sh/atomics.s
@@ -28,15 +28,15 @@ __sh_cas_gusa:
.hidden __sh_cas_llsc
__sh_cas_llsc:
mov r0,r1
- synco
-0: movli.l @r1,r0
+ .word 0x00ab /* synco */
+0: .word 0x0163 /* movli.l @r1,r0 */
cmp/eq r0,r2
bf 1f
mov r3,r0
- movco.l r0,@r1
+ .word 0x0173 /* movco.l r0,@r1 */
bf 0b
mov r2,r0
-1: synco
+1: .word 0x00ab /* synco */
mov r0,r3
rts
mov r1,r0