Well, if there are portability concerns, then those do rule out the use of inline assembly in the first placeI would assume.
So for simple tasks like adding a nop ( :smileywink: ) enabling interrupt I consider using HLI directly (or via macro) is fine. There are also cases where using inlined HLI functions generates more code or is not even possible, say when the HLI code has to access arguments, or when it includes control flow like branches or an direct error return.
Anyway, the question was how to use macros with assembly, I showed one way, using inline functions is another one.
A third one actually is to write the function with the assembler and not embedded in C with the inline assembler.
The assembler has its own macro's which work different from the C language ones as they do not just replace text but instead they are inserting instructions. Assembly macros also support conditional compilation internally, so for different arguments they can generate completely different output.
Daniel