On Sun, Mar 13, 2022 at 10:36 PM Richard Henderson <
[email protected]> wrote:
> On 3/13/22 21:09, Warner Losh wrote:
> > Oh? Out of paranoia, how can I verify that this is the case when
> compiled on FreeBSD?
> > Perhaps the atomic sequence FreeBSD uses differs a little from Linux and
> we don't trigger
> > that code?
>
> $ objdump -dr libqemu-arm-*-user.fa.p/accel_tcg_user-exec.c.o
>
> 0000000000001490 <helper_atomic_cmpxchgl_le>:
> ...
> 14b7: e8 04 ec ff ff callq c0
> <atomic_mmu_lookup.constprop.0>
> 14bc: 48 89 c2 mov %rax,%rdx
> 14bf: 44 89 e0 mov %r12d,%eax
> 14c2: f0 44 0f b1 32 lock cmpxchg %r14d,(%rdx)
>
Looks like this compiles correctly on FreeBSD... We have something similar:
1f69: 41 89 f1 mov %esi,%r9d
1f6c: 48 8b 3d 00 00 00 00 mov 0x0(%rip),%rdi # 1f73
<helper_atomic_cmpxchgl_le+0x53>
1f73: 64 48 8b 34 25 00 00 mov %fs:0x0,%rsi
1f7a: 00 00
1f7c: 48 89 8e 00 00 00 00 mov %rcx,0x0(%rsi)
1f83: 89 d0 mov %edx,%eax
1f85: f0 46 0f b1 04 0f lock cmpxchg %r8d,(%rdi,%r9,1)
Warner
> r~
>