Q:

How do I force a constant C-expression evaluation for use as a constant in a .S file? 

A header file I'm including from /usr/include/**/asm (rudely?)  uses simple C expressions to express an offset from a base value, i.e.:
#define __NR_exit                       (__NR_SYSCALL_BASE+  1)

Of course, when I #include this into my .S file the resulting preprocessor-produced asm says:
start. S|17| Error: garbage following instruction -- `ldr r7,=$(0+1)'

So, crazy as it sounds, I guess I want the C-preprocessor (or the assembler) to constexpr-evaluate the macro so it can actually be used, despite the C arithmetic + operator and parens in there -- what is the right way to go about doing this? 
Please note that this isn't inline asm, but an "out of line" .S file. 

A:

Aw boo, it was just because there was an erroneous dollar sign.  If you change it to:
ldr r7,=__NR_exit

it seems to compile just fine.  I guess as supports basic arithmetic expressions in positions where it expects constants.