Revision 89aaf1a6
b/linux-user/strace.list | ||
---|---|---|
1521 | 1521 |
#ifdef TARGET_NR_pipe2 |
1522 | 1522 |
{ TARGET_NR_pipe2, "pipe2", NULL, NULL, NULL }, |
1523 | 1523 |
#endif |
1524 |
#ifdef TARGET_NR_atomic_cmpxchg_32 |
|
1525 |
{ TARGET_NR_atomic_cmpxchg_32, "atomic_cmpxchg_32", NULL, NULL, NULL }, |
|
1526 |
#endif |
|
1527 |
#ifdef TARGET_NR_atomic_barrier |
|
1528 |
{ TARGET_NR_atomic_barrier, "atomic_barrier", NULL, NULL, NULL }, |
|
1529 |
#endif |
b/linux-user/syscall.c | ||
---|---|---|
9133 | 9133 |
break; |
9134 | 9134 |
} |
9135 | 9135 |
#endif |
9136 |
#ifdef TARGET_NR_atomic_cmpxchg_32 |
|
9137 |
case TARGET_NR_atomic_cmpxchg_32: |
|
9138 |
{ |
|
9139 |
/* should use start_exclusive from main.c */ |
|
9140 |
abi_ulong mem_value; |
|
9141 |
if (get_user_u32(mem_value, arg6)) { |
|
9142 |
target_siginfo_t info; |
|
9143 |
info.si_signo = SIGSEGV; |
|
9144 |
info.si_errno = 0; |
|
9145 |
info.si_code = TARGET_SEGV_MAPERR; |
|
9146 |
info._sifields._sigfault._addr = arg6; |
|
9147 |
queue_signal((CPUArchState *)cpu_env, info.si_signo, &info); |
|
9148 |
ret = 0xdeadbeef; |
|
9149 |
|
|
9150 |
} |
|
9151 |
if (mem_value == arg2) |
|
9152 |
put_user_u32(arg1, arg6); |
|
9153 |
ret = mem_value; |
|
9154 |
break; |
|
9155 |
} |
|
9156 |
#endif |
|
9157 |
#ifdef TARGET_NR_atomic_barrier |
|
9158 |
case TARGET_NR_atomic_barrier: |
|
9159 |
{ |
|
9160 |
/* Like the kernel implementation and the qemu arm barrier, no-op this? */ |
|
9161 |
break; |
|
9162 |
} |
|
9163 |
#endif |
|
9136 | 9164 |
default: |
9137 | 9165 |
unimplemented: |
9138 | 9166 |
gemu_log("qemu: Unsupported syscall: %d\n", num); |
Also available in: Unified diff