Note, I think the error is bogus, you should be able to create hard-coded addresses of data at compile time -- I'm not sure how you would do hardware registers otherwise.
I'd do them as extern variables, it wouldn't be nice to have them as pointers.
extern int reg1; And use linker option to define address: --defsym reg1=0x1111