The assumption in output_constant is that you've emitted something like
".word" or ".8byte" that says how wide the value is. Then, you just
emit the value.
Do you have a way in your assembler to emit a 32-bit pointer? If not,
then you have to declare this an invalid initialization. If you do have
such a way, then you have to set up things in the code that calls
output_constant to say "the value you see next is a 32-bit pointer".
Yes, I have all that, and if I hack varasm to note the right type, it
emits exactly what I want - ".long reset". Check out the earlier
posts in this thread; rth and I have gone back and forth a lot for
this one.