[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH 5/5] x86_64: add 64-bit syscall entry point
From: |
Jessica Clarke |
Subject: |
Re: [PATCH 5/5] x86_64: add 64-bit syscall entry point |
Date: |
Sun, 5 Mar 2023 21:04:32 +0000 |
On 5 Mar 2023, at 20:46, Sergey Bugaev <bugaevc@gmail.com> wrote:
>
> Speaking of wrapping the syscall and INTR_MSG_TRAP, I might need a
> little help — is there a proper way to tell GCC that my inline
> assembly needs a specific register as input _and_ clobbers it? In
> Rust, this would be, for instance,
>
> asm!("whatever", inout("rdi") msg => _)
>
> but GCC doesn't like
>
> asm volatile ("whatever" : : "D"(msg) : "rdi");
>
> and it's explicitly documented to not work. I guess I could try either
>
> void *clobber;
> asm volatile ("whatever" : "=D"(clobber) : "D"(msg));
> // Never use clobber again
>
> or
>
> void *tmp = msg;
> asm volatile ("whatever" : "+D"(tmp));
> // Never use tmp again
This one, unless I’m missing something.
(Potentially with an early clobber & if needed)
Jess
> but I'm wondering if there's a proper way to do this. Any tips? If
> not, any preference among the two above options?
>
> Sergey
>