I feel compelled to point out that, since most (all?) of the .s and .S files in the kernel use constants defined in .h files, they *need* to use cpp, unless you propose to add a whole lot of shit to assym.h or do some gross m4 hackery. So, at least for the kernel, this discussion is moot.