[ECOS] Question of ARM and thumb mode switch in vectors.S
Gary Thomas
gary@mlbassoc.com
Mon Nov 27 23:51:00 GMT 2006
Frank Wu wrote:
> I have a question about the mode switch macro, which I listed below,
> in vectors.S.
> What is ## mean in
> ldr _r_,=_l_ ## f ?
> Is f a constant or _f_? Thanks,
>
> Frank
>
> // Call thumb function from ARM mode, return to ARM
> // mode afterwards
> #define THUMB_CALL(_r_, _l_, _f_) \
> ldr _r_,=_f_+1 ;\
> mov lr,pc ;\
> bx _r_ ;\
> .pool ;\
> .code 16 ;\
> .thumb_func ;\
> ldr _r_,=_l_ ## f ;\
> bx _r_ ;\
> .pool ;\
> .code 32 ;\
> _l_:
>
This is the standard C pre-processor concatenation operator.
Thus in a call like
THUMB_CALL(r1,10,func)
that line gets turned into
ldr r1,=10f
which corresponds to the local label 10 defined a few lines later.
--
------------------------------------------------------------
Gary Thomas | Consulting for the
MLB Associates | Embedded world
------------------------------------------------------------
--
Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos
and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss
More information about the Ecos-discuss
mailing list