if ((j < 0) || (state < 0))
{
// Last attempt: let's see if this is an equated register
+ char temp = *ln;
+ *ln = 0;
sy = lookup(nullspot, LABEL, 0);
+ *ln = temp;
if (sy)
{
if (sy->sattre & EQUATEDREG)
{
- *tk.u32++ = sy->svalue;
+ uint32_t register_token = sy->svalue;
+ if (rgpu || rdsp)
+ {
+ // If we are in GPU or DSP mode then mark the register bank.
+ // We will use it during EvaluateRegisterFromTokenStream()
+ // when we check if we can use the equated register with the currently
+ // selected bank.
+ // Note (ggn): I find all this superfluous. Do we really want to be so
+ // protective? Plus, the current implementation happily skips
+ // these checks on .equr that are set during fixups - oops!
+ register_token |= 0x80000000; // Mark that this is an .equr
+ if (sy->sattre & BANK_1)
+ {
+ register_token |= 0x40000000; // Mark bank 1
+ }
+ }
+ *tk.u32++ = register_token;
stuffnull = 0;
continue;
}