powerpc/8xx: Remove 8xx specific "minimal FPU emulation"
This is duplicated code from math-emu and implements such a small subset of the FPU (load/stores/fmr) that it's essentially pointless nowdays. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
parent
4e63f8edfe
commit
968219fa33
@ -319,17 +319,6 @@ config PPC_TRANSACTIONAL_MEM
|
|||||||
---help---
|
---help---
|
||||||
Support user-mode Transactional Memory on POWERPC.
|
Support user-mode Transactional Memory on POWERPC.
|
||||||
|
|
||||||
config 8XX_MINIMAL_FPEMU
|
|
||||||
bool "Minimal math emulation for 8xx"
|
|
||||||
depends on 8xx && !MATH_EMULATION
|
|
||||||
help
|
|
||||||
Older arch/ppc kernels still emulated a few floating point
|
|
||||||
instructions such as load and store, even when full math
|
|
||||||
emulation is disabled. Say "Y" here if you want to preserve
|
|
||||||
this behavior.
|
|
||||||
|
|
||||||
It is recommended that you build a soft-float userspace instead.
|
|
||||||
|
|
||||||
config IOMMU_HELPER
|
config IOMMU_HELPER
|
||||||
def_bool PPC64
|
def_bool PPC64
|
||||||
|
|
||||||
|
@ -1396,8 +1396,7 @@ void performance_monitor_exception(struct pt_regs *regs)
|
|||||||
void SoftwareEmulation(struct pt_regs *regs)
|
void SoftwareEmulation(struct pt_regs *regs)
|
||||||
{
|
{
|
||||||
extern int do_mathemu(struct pt_regs *);
|
extern int do_mathemu(struct pt_regs *);
|
||||||
extern int Soft_emulate_8xx(struct pt_regs *);
|
#if defined(CONFIG_MATH_EMULATION)
|
||||||
#if defined(CONFIG_MATH_EMULATION) || defined(CONFIG_8XX_MINIMAL_FPEMU)
|
|
||||||
int errcode;
|
int errcode;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -1430,23 +1429,6 @@ void SoftwareEmulation(struct pt_regs *regs)
|
|||||||
_exception(SIGILL, regs, ILL_ILLOPC, regs->nip);
|
_exception(SIGILL, regs, ILL_ILLOPC, regs->nip);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#elif defined(CONFIG_8XX_MINIMAL_FPEMU)
|
|
||||||
errcode = Soft_emulate_8xx(regs);
|
|
||||||
if (errcode >= 0)
|
|
||||||
PPC_WARN_EMULATED(8xx, regs);
|
|
||||||
|
|
||||||
switch (errcode) {
|
|
||||||
case 0:
|
|
||||||
emulate_single_step(regs);
|
|
||||||
return;
|
|
||||||
case 1:
|
|
||||||
_exception(SIGILL, regs, ILL_ILLOPC, regs->nip);
|
|
||||||
return;
|
|
||||||
case -EFAULT:
|
|
||||||
_exception(SIGSEGV, regs, SEGV_MAPERR, regs->nip);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
#else
|
#else
|
||||||
_exception(SIGILL, regs, ILL_ILLOPC, regs->nip);
|
_exception(SIGILL, regs, ILL_ILLOPC, regs->nip);
|
||||||
#endif
|
#endif
|
||||||
@ -1796,8 +1778,6 @@ struct ppc_emulated ppc_emulated = {
|
|||||||
WARN_EMULATED_SETUP(unaligned),
|
WARN_EMULATED_SETUP(unaligned),
|
||||||
#ifdef CONFIG_MATH_EMULATION
|
#ifdef CONFIG_MATH_EMULATION
|
||||||
WARN_EMULATED_SETUP(math),
|
WARN_EMULATED_SETUP(math),
|
||||||
#elif defined(CONFIG_8XX_MINIMAL_FPEMU)
|
|
||||||
WARN_EMULATED_SETUP(8xx),
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_VSX
|
#ifdef CONFIG_VSX
|
||||||
WARN_EMULATED_SETUP(vsx),
|
WARN_EMULATED_SETUP(vsx),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user