All of lore.kernel.org
 help / color / mirror / Atom feed
From: Finn Thain <fthain@telegraphics.com.au>
To: "Mattias Engdegård" <mattiase@bredband.net>
Cc: Geert Uytterhoeven <geert@linux-m68k.org>,
	linux-m68k@vger.kernel.org, zippel@linux-m68k.org
Subject: Re: FPU emulation incorrect for 68LC040?
Date: Fri, 23 Jul 2010 14:12:25 +1000 (EST)	[thread overview]
Message-ID: <alpine.OSX.2.00.1007231358580.393@localhost> (raw)
In-Reply-To: <1CC1901B-7E56-4FAF-96A4-8F2F2F5C38A9@bredband.net>

[-- Attachment #1: Type: TEXT/PLAIN, Size: 3385 bytes --]


On Thu, 22 Jul 2010, Mattias Engdegård wrote:

> 22 jul 2010 kl. 03.05 skrev Finn Thain:
> 
> > But if you send me some inline asm, I'll patch it into busybox and test a
> > 2.6.34 initramfs for you.
> 
> Thanks! Try this:
> 
> void test_postinc(void)
> {
>        double x = 0.0;
>        double a[2] = {3.5, 0.0};
>        double *p = a;
>        __asm__ volatile  ("fneg.d (%0)+,%1" : "+a"(p), "+f"(x));
>        printf("postinc: result %f (expected %f), address %p (expected %p)\n",
>               x, -3.5, p, a + 1);
> }
> 
> void test_predec(void)
> {
>        double x = 0.0;
>        double a[2] = {-1.75, 0.0};
>        double *p = a + 1;
>        __asm__ volatile  ("fneg.d -(%0),%1" : "+a"(p), "+f"(x));
>        printf("predec: result %f (expected %f), address %p (expected %p)\n",
>               x, 1.75, p, a);
> }
> 

I ran this on a PowerBook 190cs:

postinc: result -3.500000 (expected -3.500000), address 0xef8ddcf8 (expected 0xef8ddcf8)
predec: result 1.750000 (expected 1.750000), address 0xef8ddcf0 (expected 0xef8ddcf0)

It is probably not relevant, but I believe that this CPU is free from the 
68LC040 erratum that affects page faults and FPU ops as I've tested for 
that before.

# cat /proc/cpuinfo
CPU:            68040
MMU:            68040
FPU:            none
Clocking:       32.9MHz
BogoMips:       21.96
Calibration:    109824 loops
# cat /proc/version
Linux version 2.6.34-mac (fthain@nippy) (gcc version 4.4.4 (GCC) ) #5 Fri Jul 23 13:32:53 EST 2010

Here's the disassembly:

8007da96 <test_predec>:
8007da96:	4e56 fff0      	linkw %fp,#-16
8007da9a:	2d7c bffc 0000 	movel #-1074003968,%fp@(-16)
8007daa0:	fff0 
8007daa2:	42ae fff4      	clrl %fp@(-12)
8007daa6:	42ae fff8      	clrl %fp@(-8)
8007daaa:	42ae fffc      	clrl %fp@(-4)
8007daae:	41ee fff8      	lea %fp@(-8),%a0
8007dab2:	f200 5c0f      	fmovecrx #15,%fp0
8007dab6:	f220 541a      	fnegd %a0@-,%fp0
8007daba:	486e fff0      	pea %fp@(-16)
8007dabe:	2f08           	movel %a0,%sp@-
8007dac0:	42a7           	clrl %sp@-
8007dac2:	2f3c 3ffc 0000 	movel #1073479680,%sp@-
8007dac8:	f227 7400      	fmoved %fp0,%sp@-
8007dacc:	4879 8009 b25a 	pea 8009b25a <isoformats.7051+0x29>
8007dad2:	2f39 800a 8e04 	movel 800a8e04 <_IO_stderr>,%sp@-
8007dad8:	4eb9 8000 e564 	jsr 8000e564 <__fprintf>
8007dade:	4fef 0020      	lea %sp@(32),%sp
8007dae2:	4e5e           	unlk %fp
8007dae4:	4e75           	rts

8007dae6 <test_postinc>:
8007dae6:	4e56 fff0      	linkw %fp,#-16
8007daea:	2d7c 400c 0000 	movel #1074528256,%fp@(-16)
8007daf0:	fff0 
8007daf2:	42ae fff4      	clrl %fp@(-12)
8007daf6:	42ae fff8      	clrl %fp@(-8)
8007dafa:	42ae fffc      	clrl %fp@(-4)
8007dafe:	41ee fff0      	lea %fp@(-16),%a0
8007db02:	f200 5c0f      	fmovecrx #15,%fp0
8007db06:	f218 541a      	fnegd %a0@+,%fp0
8007db0a:	486e fff8      	pea %fp@(-8)
8007db0e:	2f08           	movel %a0,%sp@-
8007db10:	42a7           	clrl %sp@-
8007db12:	2f3c c00c 0000 	movel #-1072955392,%sp@-
8007db18:	f227 7400      	fmoved %fp0,%sp@-
8007db1c:	4879 8009 b295 	pea 8009b295 <isoformats.7051+0x64>
8007db22:	2f39 800a 8e04 	movel 800a8e04 <_IO_stderr>,%sp@-
8007db28:	4eb9 8000 e564 	jsr 8000e564 <__fprintf>
8007db2e:	4fef 0020      	lea %sp@(32),%sp
8007db32:	4e5e           	unlk %fp
8007db34:	4e75           	rts

HTH

Finn

  reply	other threads:[~2010-07-23  4:16 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-07-21 20:22 FPU emulation incorrect for 68LC040? Mattias Engdegård
2010-07-21 20:32 ` Geert Uytterhoeven
2010-07-21 20:53   ` Mattias Engdegård
2010-07-22  1:05     ` Finn Thain
2010-07-22 19:55       ` Mattias Engdegård
2010-07-23  4:12         ` Finn Thain [this message]
2010-07-23  8:39           ` Mattias Engdegård
2010-07-24  0:31             ` Michael Schmitz
2010-07-24 18:33               ` Mattias Engdegård

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=alpine.OSX.2.00.1007231358580.393@localhost \
    --to=fthain@telegraphics.com.au \
    --cc=geert@linux-m68k.org \
    --cc=linux-m68k@vger.kernel.org \
    --cc=mattiase@bredband.net \
    --cc=zippel@linux-m68k.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.