|
From: <sv...@va...> - 2005-09-09 12:03:35
|
Author: sewardj
Date: 2005-09-09 13:03:28 +0100 (Fri, 09 Sep 2005)
New Revision: 4614
Log:
Fix register constraints to this works with both -O and without (David
Woodhouse).
Modified:
trunk/none/tests/ppc32/lsw.c
Modified: trunk/none/tests/ppc32/lsw.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/lsw.c 2005-09-09 11:33:25 UTC (rev 4613)
+++ trunk/none/tests/ppc32/lsw.c 2005-09-09 12:03:28 UTC (rev 4614)
@@ -3,6 +3,11 @@
#include <stdlib.h>
#include <string.h>
=20
+/* Apparently the "b" register constraint is like "r" except that it
+ disallows the use of r0, which means it is safe to use in places
+ where the appearance of r0 would cause a problem due to it being
+ read as zero. */
+
static void announce ( char* str )
{
printf("------ %s ------\n", str);
@@ -21,7 +26,7 @@
"stw 3,0(%1)\n\t"
"stw 4,4(%1)\n\t"
"stw 5,8(%1)\n\t"
- : : "r"(a1), "r"(a2) : "r3", "r4", "r5",=20
+ : : "b"(a1), "b"(a2) : "r3", "r4", "r5",=20
"cc", "memory" );
printf("%s\n", a2);
for (i =3D 0; i < 12; i++)
@@ -34,7 +39,7 @@
"stw 3,0(%1)\n\t"
"stw 4,4(%1)\n\t"
"stw 5,8(%1)\n\t"
- : : "r"(a1), "r"(a2) : "r3", "r4", "r5",=20
+ : : "b"(a1), "b"(a2) : "r3", "r4", "r5",=20
"cc", "memory" );
printf("%s\n", a2);
for (i =3D 0; i < 12; i++)
@@ -51,7 +56,7 @@
"stw 3,0(%1)\n\t"
"stw 4,4(%1)\n\t"
"stw 5,8(%1)\n\t"
- : : "r"(a1), "r"(a2), "r"(16) : "r3", "r4", "r5", "r8",=20
+ : : "b"(a1), "b"(a2), "b"(16) : "r3", "r4", "r5", "r8",=20
"cc", "memory" );
printf("%s\n", a2);
for (i =3D 0; i < 12; i++)
@@ -64,7 +69,7 @@
a2 =3D calloc(100,1);
asm volatile("lswi 3,%0, 19\n\t"
"stswi 3,%1, 8\n"
- : : "r"(a1), "r"(a2) : "r3","r4","r5","r6","r7",
+ : : "b"(a1), "b"(a2) : "r3","r4","r5","r6","r7",
"cc", "memory" );
printf("%s\n", a2);
printf("\n");
@@ -75,7 +80,7 @@
a2 =3D calloc(100,1);
asm volatile("lswi 3,%0, 19\n\t"
"stswi 3,%1, 17\n"
- : : "r"(a1), "r"(a2) : "r3","r4","r5","r6","r7",
+ : : "b"(a1), "b"(a2) : "r3","r4","r5","r6","r7",
"cc", "memory" );
printf("%s\n", a2);
printf("\n");
@@ -88,7 +93,7 @@
"mtxer 8\n\t"
"lswx 3,%0,%2\n\t"=20
"stswx 3,%1,%2\n\t"=20
- : : "r"(a1), "r"(a2), "r"(16) : "r3", "r4", "r5", "r8",=20
+ : : "b"(a1), "b"(a2), "b"(16) : "r3", "r4", "r5", "r8",=20
"cc", "memory" );
printf("%s\n", a2+16);
printf("\n");
|