diff options
Diffstat (limited to 'arch/mips/math-emu')
-rw-r--r-- | arch/mips/math-emu/cp1emu.c | 15 | ||||
-rw-r--r-- | arch/mips/math-emu/ieee754.h | 2 | ||||
-rw-r--r-- | arch/mips/math-emu/kernel_linkage.c | 24 |
3 files changed, 18 insertions, 23 deletions
diff --git a/arch/mips/math-emu/cp1emu.c b/arch/mips/math-emu/cp1emu.c index aa5818a0d884..3f0d5d26d506 100644 --- a/arch/mips/math-emu/cp1emu.c +++ b/arch/mips/math-emu/cp1emu.c | |||
@@ -60,15 +60,15 @@ | |||
60 | 60 | ||
61 | /* Function which emulates a floating point instruction. */ | 61 | /* Function which emulates a floating point instruction. */ |
62 | 62 | ||
63 | static int fpu_emu(struct pt_regs *, struct mips_fpu_soft_struct *, | 63 | static int fpu_emu(struct pt_regs *, struct mips_fpu_struct *, |
64 | mips_instruction); | 64 | mips_instruction); |
65 | 65 | ||
66 | #if __mips >= 4 && __mips != 32 | 66 | #if __mips >= 4 && __mips != 32 |
67 | static int fpux_emu(struct pt_regs *, | 67 | static int fpux_emu(struct pt_regs *, |
68 | struct mips_fpu_soft_struct *, mips_instruction); | 68 | struct mips_fpu_struct *, mips_instruction); |
69 | #endif | 69 | #endif |
70 | 70 | ||
71 | /* Further private data for which no space exists in mips_fpu_soft_struct */ | 71 | /* Further private data for which no space exists in mips_fpu_struct */ |
72 | 72 | ||
73 | struct mips_fpu_emulator_stats fpuemustats; | 73 | struct mips_fpu_emulator_stats fpuemustats; |
74 | 74 | ||
@@ -203,7 +203,7 @@ static int isBranchInstr(mips_instruction * i) | |||
203 | * Two instructions if the instruction is in a branch delay slot. | 203 | * Two instructions if the instruction is in a branch delay slot. |
204 | */ | 204 | */ |
205 | 205 | ||
206 | static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx) | 206 | static int cop1Emulate(struct pt_regs *xcp, struct mips_fpu_struct *ctx) |
207 | { | 207 | { |
208 | mips_instruction ir; | 208 | mips_instruction ir; |
209 | void * emulpc, *contpc; | 209 | void * emulpc, *contpc; |
@@ -595,7 +595,7 @@ DEF3OP(msub, dp, ieee754dp_mul, ieee754dp_sub,); | |||
595 | DEF3OP(nmadd, dp, ieee754dp_mul, ieee754dp_add, ieee754dp_neg); | 595 | DEF3OP(nmadd, dp, ieee754dp_mul, ieee754dp_add, ieee754dp_neg); |
596 | DEF3OP(nmsub, dp, ieee754dp_mul, ieee754dp_sub, ieee754dp_neg); | 596 | DEF3OP(nmsub, dp, ieee754dp_mul, ieee754dp_sub, ieee754dp_neg); |
597 | 597 | ||
598 | static int fpux_emu(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx, | 598 | static int fpux_emu(struct pt_regs *xcp, struct mips_fpu_struct *ctx, |
599 | mips_instruction ir) | 599 | mips_instruction ir) |
600 | { | 600 | { |
601 | unsigned rcsr = 0; /* resulting csr */ | 601 | unsigned rcsr = 0; /* resulting csr */ |
@@ -759,7 +759,7 @@ static int fpux_emu(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx, | |||
759 | /* | 759 | /* |
760 | * Emulate a single COP1 arithmetic instruction. | 760 | * Emulate a single COP1 arithmetic instruction. |
761 | */ | 761 | */ |
762 | static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx, | 762 | static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_struct *ctx, |
763 | mips_instruction ir) | 763 | mips_instruction ir) |
764 | { | 764 | { |
765 | int rfmt; /* resulting format */ | 765 | int rfmt; /* resulting format */ |
@@ -1233,8 +1233,7 @@ static int fpu_emu(struct pt_regs *xcp, struct mips_fpu_soft_struct *ctx, | |||
1233 | return 0; | 1233 | return 0; |
1234 | } | 1234 | } |
1235 | 1235 | ||
1236 | int fpu_emulator_cop1Handler(struct pt_regs *xcp, | 1236 | int fpu_emulator_cop1Handler(struct pt_regs *xcp, struct mips_fpu_struct *ctx) |
1237 | struct mips_fpu_soft_struct *ctx) | ||
1238 | { | 1237 | { |
1239 | unsigned long oldepc, prevepc; | 1238 | unsigned long oldepc, prevepc; |
1240 | mips_instruction insn; | 1239 | mips_instruction insn; |
diff --git a/arch/mips/math-emu/ieee754.h b/arch/mips/math-emu/ieee754.h index 171f177c0f88..dd917332792c 100644 --- a/arch/mips/math-emu/ieee754.h +++ b/arch/mips/math-emu/ieee754.h | |||
@@ -329,7 +329,7 @@ struct _ieee754_csr { | |||
329 | unsigned pad0:7; | 329 | unsigned pad0:7; |
330 | #endif | 330 | #endif |
331 | }; | 331 | }; |
332 | #define ieee754_csr (*(struct _ieee754_csr *)(¤t->thread.fpu.soft.fcr31)) | 332 | #define ieee754_csr (*(struct _ieee754_csr *)(¤t->thread.fpu.fcr31)) |
333 | 333 | ||
334 | static inline unsigned ieee754_getrm(void) | 334 | static inline unsigned ieee754_getrm(void) |
335 | { | 335 | { |
diff --git a/arch/mips/math-emu/kernel_linkage.c b/arch/mips/math-emu/kernel_linkage.c index d187ab71c2ff..56ca0c6a7178 100644 --- a/arch/mips/math-emu/kernel_linkage.c +++ b/arch/mips/math-emu/kernel_linkage.c | |||
@@ -39,9 +39,9 @@ void fpu_emulator_init_fpu(void) | |||
39 | printk("Algorithmics/MIPS FPU Emulator v1.5\n"); | 39 | printk("Algorithmics/MIPS FPU Emulator v1.5\n"); |
40 | } | 40 | } |
41 | 41 | ||
42 | current->thread.fpu.soft.fcr31 = 0; | 42 | current->thread.fpu.fcr31 = 0; |
43 | for (i = 0; i < 32; i++) { | 43 | for (i = 0; i < 32; i++) { |
44 | current->thread.fpu.soft.fpr[i] = SIGNALLING_NAN; | 44 | current->thread.fpu.fpr[i] = SIGNALLING_NAN; |
45 | } | 45 | } |
46 | } | 46 | } |
47 | 47 | ||
@@ -59,10 +59,9 @@ int fpu_emulator_save_context(struct sigcontext *sc) | |||
59 | 59 | ||
60 | for (i = 0; i < 32; i++) { | 60 | for (i = 0; i < 32; i++) { |
61 | err |= | 61 | err |= |
62 | __put_user(current->thread.fpu.soft.fpr[i], | 62 | __put_user(current->thread.fpu.fpr[i], &sc->sc_fpregs[i]); |
63 | &sc->sc_fpregs[i]); | ||
64 | } | 63 | } |
65 | err |= __put_user(current->thread.fpu.soft.fcr31, &sc->sc_fpc_csr); | 64 | err |= __put_user(current->thread.fpu.fcr31, &sc->sc_fpc_csr); |
66 | 65 | ||
67 | return err; | 66 | return err; |
68 | } | 67 | } |
@@ -74,10 +73,9 @@ int fpu_emulator_restore_context(struct sigcontext *sc) | |||
74 | 73 | ||
75 | for (i = 0; i < 32; i++) { | 74 | for (i = 0; i < 32; i++) { |
76 | err |= | 75 | err |= |
77 | __get_user(current->thread.fpu.soft.fpr[i], | 76 | __get_user(current->thread.fpu.fpr[i], &sc->sc_fpregs[i]); |
78 | &sc->sc_fpregs[i]); | ||
79 | } | 77 | } |
80 | err |= __get_user(current->thread.fpu.soft.fcr31, &sc->sc_fpc_csr); | 78 | err |= __get_user(current->thread.fpu.fcr31, &sc->sc_fpc_csr); |
81 | 79 | ||
82 | return err; | 80 | return err; |
83 | } | 81 | } |
@@ -94,10 +92,9 @@ int fpu_emulator_save_context32(struct sigcontext32 *sc) | |||
94 | 92 | ||
95 | for (i = 0; i < 32; i+=2) { | 93 | for (i = 0; i < 32; i+=2) { |
96 | err |= | 94 | err |= |
97 | __put_user(current->thread.fpu.soft.fpr[i], | 95 | __put_user(current->thread.fpu.fpr[i], &sc->sc_fpregs[i]); |
98 | &sc->sc_fpregs[i]); | ||
99 | } | 96 | } |
100 | err |= __put_user(current->thread.fpu.soft.fcr31, &sc->sc_fpc_csr); | 97 | err |= __put_user(current->thread.fpu.fcr31, &sc->sc_fpc_csr); |
101 | 98 | ||
102 | return err; | 99 | return err; |
103 | } | 100 | } |
@@ -109,10 +106,9 @@ int fpu_emulator_restore_context32(struct sigcontext32 *sc) | |||
109 | 106 | ||
110 | for (i = 0; i < 32; i+=2) { | 107 | for (i = 0; i < 32; i+=2) { |
111 | err |= | 108 | err |= |
112 | __get_user(current->thread.fpu.soft.fpr[i], | 109 | __get_user(current->thread.fpu.fpr[i], &sc->sc_fpregs[i]); |
113 | &sc->sc_fpregs[i]); | ||
114 | } | 110 | } |
115 | err |= __get_user(current->thread.fpu.soft.fcr31, &sc->sc_fpc_csr); | 111 | err |= __get_user(current->thread.fpu.fcr31, &sc->sc_fpc_csr); |
116 | 112 | ||
117 | return err; | 113 | return err; |
118 | } | 114 | } |