|
From: <sv...@va...> - 2005-11-19 20:39:18
|
Author: sewardj
Date: 2005-11-19 20:39:16 +0000 (Sat, 19 Nov 2005)
New Revision: 5211
Log:
Test m{t,f}{xer,lr,ctr} in a simpler way.
Modified:
trunk/none/tests/ppc32/jm-insns.c
Modified: trunk/none/tests/ppc32/jm-insns.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- trunk/none/tests/ppc32/jm-insns.c 2005-11-19 19:42:31 UTC (rev 5210)
+++ trunk/none/tests/ppc32/jm-insns.c 2005-11-19 20:39:16 UTC (rev 5211)
@@ -4578,6 +4578,44 @@
// Call func, just to stop compiler complaining
(*func)();
=20
+ // mtxer followed by mfxer
+ for (k=3D0; k<nb_iargs; k++) {
+ j =3D iargs[k];
+ __asm__ __volatile__(
+ "mtxer %1\n"
+ "\tmfxer %0"
+ : /*out*/"=3Dr"(res) : /*in*/"r"(j) : /*trashed*/"xer"=20
+ );
+ res &=3D 0xE000007F; /* rest of the bits are undefined */
+ printf("%s: %08x -> mtxer -> mfxer =3D> %08x\n",
+ name, j, res);
+ }
+
+ // mtlr followed by mflr
+ for (k=3D0; k<nb_iargs; k++) {
+ j =3D iargs[k];
+ __asm__ __volatile__(
+ "mtlr %1\n"
+ "\tmflr %0"
+ : /*out*/"=3Dr"(res) : /*in*/"r"(j) : /*trashed*/"lr"=20
+ );
+ printf("%s: %08x -> mtlr -> mflr =3D> %08x\n",
+ name, j, res);
+ }
+
+ // mtctr followed by mfctr
+ for (k=3D0; k<nb_iargs; k++) {
+ j =3D iargs[k];
+ __asm__ __volatile__(
+ "mtctr %1\n"
+ "\tmfctr %0"
+ : /*out*/"=3Dr"(res) : /*in*/"r"(j) : /*trashed*/"ctr"=20
+ );
+ printf("%s: %08x -> mtctr -> mfctr =3D> %08x\n",
+ name, j, res);
+ }
+
+#if 0
// mfxer
j =3D 1;
for (k=3D0; k<nb_iargs; k++) {
@@ -4703,6 +4741,7 @@
printf("%s %d (%08x) =3D> %08x (%08x %08x, %08x, %08x)\n",
name, 9, iargs[k], res, flags, xer, lr, ctr);
}
+#endif
}
=20
#if 0
|