https://bugs.kde.org/show_bug.cgi?id=481874

--- Comment #10 from Paul Floyd <pjfl...@wanadoo.fr> ---
(In reply to Mark Wielaard from comment #9)

> You need LibVEX_GuestARM64_put_nzcv_c to signal syscall success/failure.
> I am not fully clear what the guest_SETC is for.

If there is an asynchronous interrupt during a guest syscall we need to figure
out where to restart the syscall. On Linux that is fairly straightforward. The
assembler for ML_(do_syscall_for_client_WRK) has markers for the various stages
and we just compare the PC to those markers.

On FreeBSD and macOS things are different because of the carry flag for the
syscall status. That gets set by a function call. So if the interrupt happens
in the function call (LibVEX_GuestARM64_put_nzcv_c) the PC is no good. We can
reliably know the address of the start of the function, but that's all. In this
case there are also several helper functions. A while back I was using a hack
by putting a dummy function after the 'set carry' function. That doesn't work
on ARM64 so I switched to using a flag.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to