[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: |
Samuel Thibault |
Subject: |
Re: [PATCH 5/5] x86_64: add 64-bit syscall entry point |
Date: |
Tue, 28 Feb 2023 08:17:55 +0100 |
User-agent: |
NeoMutt/20170609 (1.8.3) |
Sergey Bugaev, le mar. 28 févr. 2023 09:39:40 +0300, a ecrit:
> > + : \
> > + : "c" (regaddr), "a" (low), "d" (high) \
> > + : "memory" \
> > + );
> > +}
>
> Why "memory" here? Can wrmsr clobber unrelated memory?
No, but if you don't put a memory clobber here, the compiler will
optimize the asm away since it's not said to have side effect. Put
another way, the MSR register is some kind of memory.
> > +static inline uint64_t rdmsr(uint32_t regaddr)
> > +{
> > + uint32_t low, high;
> > + asm volatile("rdmsr\n" \
> > + : "=a" (low), "=d" (high) \
> > + : "c" (regaddr) \
> > + );
> > + return ((uint64_t)high << 32) | low;
>
> Ditto about spacing -- and does this need volatile? As in, does
> reading from a MSR have side effects that we're interested in,
IIRC it does?
> > diff --git a/i386/include/mach/i386/syscall_sw.h
> > b/i386/include/mach/i386/syscall_sw.h
> > index 86f6ff2f..20ef7c13 100644
> > --- a/i386/include/mach/i386/syscall_sw.h
> > +++ b/i386/include/mach/i386/syscall_sw.h
>
> OK, so the x86_64 syscall definition stays in i386/syscall_sw.h, and
> not in a separate x86_64/syscall_sw.h file? That's what I thought. In
> this case, we do want that mach-machine patch in glibc. Samuel, does
> this make sense to you?
Better separate them indeed.
> Predicating on USER32 is not really going to work here.
Partly because of that :)
> it has its own syscall impl, so I need to understand the ABI.
> trap_number is in rax, args on the stack, return value in rax, is that
> right? What's rcx/r10? Does a syscall preserve other registers? What
> about rflags? Is this the same as Linux does or?..
It's the same as Linux.
Samuel
- Re: [PATCH 2/5] fix copyin/outmsg header for ! USER32, (continued)
- [PATCH 5/5] x86_64: add 64-bit syscall entry point, Luca Dariz, 2023/02/27
- Re: [PATCH 5/5] x86_64: add 64-bit syscall entry point, Samuel Thibault, 2023/02/27
- Re: [PATCH 5/5] x86_64: add 64-bit syscall entry point, Luca Dariz, 2023/02/28
- Re: [PATCH 5/5] x86_64: add 64-bit syscall entry point, Samuel Thibault, 2023/02/28
- Re: [PATCH 5/5] x86_64: add 64-bit syscall entry point, Sergey Bugaev, 2023/02/28
- Re: [PATCH 5/5] x86_64: add 64-bit syscall entry point, Samuel Thibault, 2023/02/28
- Re: [PATCH 5/5] x86_64: add 64-bit syscall entry point, Sergey Bugaev, 2023/02/28
Re: [PATCH 5/5] x86_64: add 64-bit syscall entry point, Sergey Bugaev, 2023/02/28
Re: [PATCH 0/5] basic syscall support on x86_64, Samuel Thibault, 2023/02/27