[Openmcl-cvs-notifications] r14267 - /trunk/source/lisp-kernel/arm-uuo.s

rme at clozure.com rme at clozure.com
Fri Sep 17 13:59:43 CDT 2010


Author: rme
Date: Fri Sep 17 13:59:43 2010
New Revision: 14267

Log:
Sprinkle some parentheses around to avoid trouble with operator
precedence when constructing a UUO instruction.

This problem was made evident when I mistakenly typed (uvref 0 #'car)
and got a crash instead of an error.  The correct UUO is 0x17f065f3,
but we were generating 0x17f060f7 instead:

.word (uuo_base_opcode|(ne<<28)|uuo_format_error_fulltag|(r5|(fulltag_misc<=
<4)<<8))

With the extra parens, we get it right:

.word (uuo_base_opcode|((ne)<<28)|(uuo_format_error_fulltag)|((r5|(fulltag_=
misc<<4))<<8))

Modified:
    trunk/source/lisp-kernel/arm-uuo.s

Modified: trunk/source/lisp-kernel/arm-uuo.s
=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=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lisp-kernel/arm-uuo.s (original)
+++ trunk/source/lisp-kernel/arm-uuo.s Fri Sep 17 13:59:43 2010
@@ -50,7 +50,7 @@
 =

 /* Encode a UUO with cond =3D $1, format =3D $2, info =3D $3 */
 define(`UUO',`
-        .word (uuo_base_opcode|($1<<28)|$2|($3<<8))
+        .word (uuo_base_opcode|(($1)<<28)|($2)|(($3)<<8))
 ')
 /* Nullary UUO with cond =3D $1, info =3D $2 */        =

 define(`nullaryUUO',`UUO($1,uuo_format_nullary,$2)')



More information about the Openmcl-cvs-notifications mailing list