diff options
author | Andreas Schwab <schwab@linux-m68k.org> | 2010-05-31 15:59:13 -0400 |
---|---|---|
committer | Avi Kivity <avi@redhat.com> | 2010-08-01 03:39:24 -0400 |
commit | 49f6be8ea1bd74713c1a48e42db06a3808dfa2cd (patch) | |
tree | 5be35ebab7a049e9358a60b308df981b02f70f21 /arch/powerpc/include/asm/kvm_fpu.h | |
parent | 5120702e732ed72c7055f511f8dd01de36424569 (diff) |
KVM: PPC: elide struct thread_struct instances from stack
Instead of instantiating a whole thread_struct on the stack use only the
required parts of it.
Signed-off-by: Andreas Schwab <schwab@linux-m68k.org>
Tested-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Marcelo Tosatti <mtosatti@redhat.com>
Diffstat (limited to 'arch/powerpc/include/asm/kvm_fpu.h')
-rw-r--r-- | arch/powerpc/include/asm/kvm_fpu.h | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/arch/powerpc/include/asm/kvm_fpu.h b/arch/powerpc/include/asm/kvm_fpu.h index 94f05de9ad0..c3d4f0518a6 100644 --- a/arch/powerpc/include/asm/kvm_fpu.h +++ b/arch/powerpc/include/asm/kvm_fpu.h | |||
@@ -22,24 +22,24 @@ | |||
22 | 22 | ||
23 | #include <linux/types.h> | 23 | #include <linux/types.h> |
24 | 24 | ||
25 | extern void fps_fres(struct thread_struct *t, u32 *dst, u32 *src1); | 25 | extern void fps_fres(u64 *fpscr, u32 *dst, u32 *src1); |
26 | extern void fps_frsqrte(struct thread_struct *t, u32 *dst, u32 *src1); | 26 | extern void fps_frsqrte(u64 *fpscr, u32 *dst, u32 *src1); |
27 | extern void fps_fsqrts(struct thread_struct *t, u32 *dst, u32 *src1); | 27 | extern void fps_fsqrts(u64 *fpscr, u32 *dst, u32 *src1); |
28 | 28 | ||
29 | extern void fps_fadds(struct thread_struct *t, u32 *dst, u32 *src1, u32 *src2); | 29 | extern void fps_fadds(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2); |
30 | extern void fps_fdivs(struct thread_struct *t, u32 *dst, u32 *src1, u32 *src2); | 30 | extern void fps_fdivs(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2); |
31 | extern void fps_fmuls(struct thread_struct *t, u32 *dst, u32 *src1, u32 *src2); | 31 | extern void fps_fmuls(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2); |
32 | extern void fps_fsubs(struct thread_struct *t, u32 *dst, u32 *src1, u32 *src2); | 32 | extern void fps_fsubs(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2); |
33 | 33 | ||
34 | extern void fps_fmadds(struct thread_struct *t, u32 *dst, u32 *src1, u32 *src2, | 34 | extern void fps_fmadds(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2, |
35 | u32 *src3); | 35 | u32 *src3); |
36 | extern void fps_fmsubs(struct thread_struct *t, u32 *dst, u32 *src1, u32 *src2, | 36 | extern void fps_fmsubs(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2, |
37 | u32 *src3); | 37 | u32 *src3); |
38 | extern void fps_fnmadds(struct thread_struct *t, u32 *dst, u32 *src1, u32 *src2, | 38 | extern void fps_fnmadds(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2, |
39 | u32 *src3); | 39 | u32 *src3); |
40 | extern void fps_fnmsubs(struct thread_struct *t, u32 *dst, u32 *src1, u32 *src2, | 40 | extern void fps_fnmsubs(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2, |
41 | u32 *src3); | 41 | u32 *src3); |
42 | extern void fps_fsel(struct thread_struct *t, u32 *dst, u32 *src1, u32 *src2, | 42 | extern void fps_fsel(u64 *fpscr, u32 *dst, u32 *src1, u32 *src2, |
43 | u32 *src3); | 43 | u32 *src3); |
44 | 44 | ||
45 | #define FPD_ONE_IN(name) extern void fpd_ ## name(u64 *fpscr, u32 *cr, \ | 45 | #define FPD_ONE_IN(name) extern void fpd_ ## name(u64 *fpscr, u32 *cr, \ |
@@ -82,4 +82,7 @@ FPD_THREE_IN(fmadd) | |||
82 | FPD_THREE_IN(fnmsub) | 82 | FPD_THREE_IN(fnmsub) |
83 | FPD_THREE_IN(fnmadd) | 83 | FPD_THREE_IN(fnmadd) |
84 | 84 | ||
85 | extern void kvm_cvt_fd(u32 *from, u64 *to, u64 *fpscr); | ||
86 | extern void kvm_cvt_df(u64 *from, u32 *to, u64 *fpscr); | ||
87 | |||
85 | #endif | 88 | #endif |