Thanks Benoit. I'll beef up, myself, your commit message and commit this patch.
-- Nadav Har'El [email protected] On Thu, Oct 27, 2016 at 3:07 PM, Benoît Canet < [email protected]> wrote: > Use the fpu_lock to do the work of saving and restoring > > Signed-off-by: Benoît Canet <[email protected]> > --- > arch/x64/entry.S | 2 +- > linux.cc | 4 ++++ > 2 files changed, 5 insertions(+), 1 deletion(-) > > diff --git a/arch/x64/entry.S b/arch/x64/entry.S > index dda7358..cd23cec 100644 > --- a/arch/x64/entry.S > +++ b/arch/x64/entry.S > @@ -217,7 +217,6 @@ syscall_entry: > # From http://stackoverflow.com/questions/2535989/what-are- > the-calling-conventions-for-unix-linux-system-calls-on-x86-64: > # "User-level applications use as integer registers for passing the > sequence %rdi, %rsi, %rdx, %rcx, %r8 and %r9. The kernel interface uses > %rdi, %rsi, %rdx, %r10, %r8 and %r9" > > - # FIXME: fpu > pushq_cfi %rbx > pushq_cfi %rdx > pushq_cfi %rsi > @@ -250,6 +249,7 @@ syscall_entry: > # Because we pushed an even number of 8 bytes after aligning the > stack, > # it is still 16-byte aligned and we don't need to adjust it here. > > + # FPU save/restore is done inside the wrapper > callq syscall_wrapper > > popq_cfi %r9 > diff --git a/linux.cc b/linux.cc > index 4ab88f3..63377c1 100644 > --- a/linux.cc > +++ b/linux.cc > @@ -311,6 +311,10 @@ static int sys_exit(int ret) > > long syscall(long number, ...) > { > + // Save FPU state and restore it at the end of this function > + sched::fpu_lock fpu; > + SCOPE_LOCK(fpu); > + > switch (number) { > SYSCALL2(open, const char *, int); > SYSCALL3(read, int, char *, size_t); > -- > 2.7.4 > > -- > You received this message because you are subscribed to the Google Groups > "OSv Development" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "OSv Development" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
