Patchwork [1/2] powerpc/math-emu: remove the dead code in math.c

login
register
mail settings
Submitter Kevin Hao
Date July 10, 2013, 1:43 a.m.
Message ID <1373420623-24869-2-git-send-email-haokexin@gmail.com>
Download mbox | patch
Permalink /patch/257953/
State Accepted
Commit cf5c2e543c7b4a5ec49f547070c0f3f4c95e20ed
Headers show

Comments

Kevin Hao - July 10, 2013, 1:43 a.m.
The math.c is only built when CONFIG_MATH_EMULATION is enabled.
So we would never get into the case that CONFIG_MATH_EMULATION
is not defined in this file.

Signed-off-by: Kevin Hao <haokexin@gmail.com>
---
 arch/powerpc/math-emu/math.c | 42 ------------------------------------------
 1 file changed, 42 deletions(-)
Michael Ellerman - July 10, 2013, 2:01 a.m.
On Wed, Jul 10, 2013 at 09:43:42AM +0800, Kevin Hao wrote:
> The math.c is only built when CONFIG_MATH_EMULATION is enabled.
> So we would never get into the case that CONFIG_MATH_EMULATION
> is not defined in this file.

Any idea why we have that there? ie. have the config symbols changed
over time or was this always dead code?

cheers
Kevin Hao - July 10, 2013, 2:23 a.m.
On Wed, Jul 10, 2013 at 12:01:33PM +1000, Michael Ellerman wrote:
> On Wed, Jul 10, 2013 at 09:43:42AM +0800, Kevin Hao wrote:
> > The math.c is only built when CONFIG_MATH_EMULATION is enabled.
> > So we would never get into the case that CONFIG_MATH_EMULATION
> > is not defined in this file.
> 
> Any idea why we have that there? ie. have the config symbols changed
> over time or was this always dead code?

No idea. I tried to trace this before submitting the patch. But it has
been there since the begin of the git history. So I just assume that it is
always dead code. :-)

Thanks,
Kevin

> 
> cheers
Michael Ellerman - July 10, 2013, 3:25 a.m.
On Wed, Jul 10, 2013 at 10:23:07AM +0800, Kevin Hao wrote:
> On Wed, Jul 10, 2013 at 12:01:33PM +1000, Michael Ellerman wrote:
> > On Wed, Jul 10, 2013 at 09:43:42AM +0800, Kevin Hao wrote:
> > > The math.c is only built when CONFIG_MATH_EMULATION is enabled.
> > > So we would never get into the case that CONFIG_MATH_EMULATION
> > > is not defined in this file.
> > 
> > Any idea why we have that there? ie. have the config symbols changed
> > over time or was this always dead code?
> 
> No idea. I tried to trace this before submitting the patch. But it has
> been there since the begin of the git history. So I just assume that it is
> always dead code. :-)

Yeah looks like it. Even in the git-huge tree I see it in the initial
commit.

You should say that in the commit message though. Otherwise it's not
clear if you're fixing a recent breakage or not.

cheers
Kevin Hao - July 10, 2013, 3:46 a.m.
On Wed, Jul 10, 2013 at 01:25:33PM +1000, Michael Ellerman wrote:
> On Wed, Jul 10, 2013 at 10:23:07AM +0800, Kevin Hao wrote:
> > On Wed, Jul 10, 2013 at 12:01:33PM +1000, Michael Ellerman wrote:
> > > On Wed, Jul 10, 2013 at 09:43:42AM +0800, Kevin Hao wrote:
> > > > The math.c is only built when CONFIG_MATH_EMULATION is enabled.
> > > > So we would never get into the case that CONFIG_MATH_EMULATION
> > > > is not defined in this file.
> > > 
> > > Any idea why we have that there? ie. have the config symbols changed
> > > over time or was this always dead code?
> > 
> > No idea. I tried to trace this before submitting the patch. But it has
> > been there since the begin of the git history. So I just assume that it is
> > always dead code. :-)
> 
> Yeah looks like it. Even in the git-huge tree I see it in the initial
> commit.

Thanks for the confirmation.

> 
> You should say that in the commit message though. Otherwise it's not
> clear if you're fixing a recent breakage or not.

Indeed. I will wait a little to see if there are any other comments. Then
respin a new version to capture such info in the commit log.

Thanks,
Kevin

> 
> cheers
Benjamin Herrenschmidt - July 10, 2013, 3:48 a.m.
On Wed, 2013-07-10 at 13:25 +1000, Michael Ellerman wrote:
> > > Any idea why we have that there? ie. have the config symbols changed
> > > over time or was this always dead code?
> > 
> > No idea. I tried to trace this before submitting the patch. But it has
> > been there since the begin of the git history. So I just assume that it is
> > always dead code. :-)
> 
> Yeah looks like it. Even in the git-huge tree I see it in the initial
> commit.
> 
> You should say that in the commit message though. Otherwise it's not
> clear if you're fixing a recent breakage or not.

This is ancient code that was meant to emulate only load/stores/fmr without
the rest of the emulation. The goal was to be able to boot userspace that
was compiled without -msoft-float to *some* extent (bcs it would potentially
use fp load/stores for things like memcpy) on small CPUs where the kernel
footprint was critical.

It's been obsolete for a while now.

Cheers,
Ben.

Patch

diff --git a/arch/powerpc/math-emu/math.c b/arch/powerpc/math-emu/math.c
index 0328e66..cefb4f2 100644
--- a/arch/powerpc/math-emu/math.c
+++ b/arch/powerpc/math-emu/math.c
@@ -231,47 +231,6 @@  do_mathemu(struct pt_regs *regs)
 	if (get_user(insn, (u32 *)pc))
 		return -EFAULT;
 
-#ifndef CONFIG_MATH_EMULATION
-	switch (insn >> 26) {
-	case LFD:
-		idx = (insn >> 16) & 0x1f;
-		sdisp = (insn & 0xffff);
-		op0 = (void *)&current->thread.TS_FPR((insn >> 21) & 0x1f);
-		op1 = (void *)((idx ? regs->gpr[idx] : 0) + sdisp);
-		lfd(op0, op1, op2, op3);
-		break;
-	case LFDU:
-		idx = (insn >> 16) & 0x1f;
-		sdisp = (insn & 0xffff);
-		op0 = (void *)&current->thread.TS_FPR((insn >> 21) & 0x1f);
-		op1 = (void *)((idx ? regs->gpr[idx] : 0) + sdisp);
-		lfd(op0, op1, op2, op3);
-		regs->gpr[idx] = (unsigned long)op1;
-		break;
-	case STFD:
-		idx = (insn >> 16) & 0x1f;
-		sdisp = (insn & 0xffff);
-		op0 = (void *)&current->thread.TS_FPR((insn >> 21) & 0x1f);
-		op1 = (void *)((idx ? regs->gpr[idx] : 0) + sdisp);
-		stfd(op0, op1, op2, op3);
-		break;
-	case STFDU:
-		idx = (insn >> 16) & 0x1f;
-		sdisp = (insn & 0xffff);
-		op0 = (void *)&current->thread.TS_FPR((insn >> 21) & 0x1f);
-		op1 = (void *)((idx ? regs->gpr[idx] : 0) + sdisp);
-		stfd(op0, op1, op2, op3);
-		regs->gpr[idx] = (unsigned long)op1;
-		break;
-	case OP63:
-		op0 = (void *)&current->thread.TS_FPR((insn >> 21) & 0x1f);
-		op1 = (void *)&current->thread.TS_FPR((insn >> 11) & 0x1f);
-		fmr(op0, op1, op2, op3);
-		break;
-	default:
-		goto illegal;
-	}
-#else /* CONFIG_MATH_EMULATION */
 	switch (insn >> 26) {
 	case LFS:	func = lfs;	type = D;	break;
 	case LFSU:	func = lfs;	type = DU;	break;
@@ -485,7 +444,6 @@  do_mathemu(struct pt_regs *regs)
 	default:
 		break;
 	}
-#endif /* CONFIG_MATH_EMULATION */
 
 	regs->nip += 4;
 	return 0;