Hi there,
cause the scope of a local variable, in this compiler, is the function, not a block.
in other words if you implement a function, instead of your macro, you'll be good
void watch_dog() { \
   register int lz; \
   asm(" mfspr lz, TSR " ); \
   asm(" oris  lz, lz, 0x8000 " ); \
   asm(" mtspr TSR, lz " ); \
}
Hope this helps...