__arch64__ is ugly; it doesn't say it's a sparc thing. I have added -D__sparc_v9__ to the sparc64 MCONFIG file, so I think that's fine.
Perhaps the right thing to do is to make this an archconfig.h configurable.
Please don't do this, I'll explain why.
Using __sparc_v9__ is incorrect, here is the lowdown on these defines:
1) __sparc_v9__ means "-mcpu={ultrasparc*,niagara}" or "-mcpu=v9".
Although this is implied by "-m64" it can be used for 32-bit
code too.
__sparc_v9__ means "using v9 instructions" which does not
necessarily mean 64-bit
2) "__sparc__ && __arch64__" means 64-bit sparc
People often get this wrong, and it certainly is confusing.