Hi all!

in <iomacros.h> i got these defs:

#define _BIS_SR(x)              __asm__ __volatile__( "bis      %0, r2" : :
"i" ((uint16_t)x) );
#define _BIC_SR(x)              __asm__ __volatile__( "bic      %0, r2" : :
"i" ((uint16_t)x) );

#define __bis_SR_register(x)    __asm__ __volatile__( "bis      %0, r2" : :
"i" ((uint16_t)x) );
#define __bic_SR_register(x)    __asm__ __volatile__( "bic      %0, r2" : :
"i" ((uint16_t)x) );

in the post "Constraints on inline asm operands" of 2005-01-20 the
author noted that the constraints "i" requires an immediate value
(i.e. a constant), otherwise an error is generated.
That's fine. So my question is: shouldn't the 3rd and 4th defs have
the constraint "r" ?

I mean, from their name I understand they were meant to operate
register to register, weren't they? Is that a copy-and-paste mistake
or is there a reason i can't get ?

For the moment I defined my own:

__my_bis_SR_register(x)    __asm__ __volatile__( "bis   %0, r2" : : "r"
((uint16_t)x) );


Roberto

Reply via email to