Changeset 14267


Ignore:
Timestamp:
Sep 17, 2010, 6:59:43 PM (9 years ago)
Author:
rme
Message:

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))

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/lisp-kernel/arm-uuo.s

    r14169 r14267  
    5151/* Encode a UUO with cond = $1, format = $2, info = $3 */
    5252define(`UUO',`
    53         .word (uuo_base_opcode|($1<<28)|$2|($3<<8))
     53        .word (uuo_base_opcode|(($1)<<28)|($2)|(($3)<<8))
    5454')
    5555/* Nullary UUO with cond = $1, info = $2 */       
Note: See TracChangeset for help on using the changeset viewer.