Here's the code:
373: lwz r4,_usm_constants(RTOC) // <== Error here
374: li r3,0 // r3 = 0
375: lfd fp0,0(r4) // fp0 = 0.0
376: lfd fp3,8(r4) // fp3 = 2**32
377: lfd fp4,16(r4) // fp4 = 2**31
_usm_constants is declared as:
static const unsigned long _usm_constants[] = {
0x00000000, 0x00000000, // 0.0
0x41F00000, 0x00000000, // 2**32
0x41E00000, 0x00000000, // 2**31
0x43300000, 0x00000000, //
};
So basically all the code is doing is loading some double-precision floating point constants. GCC doesn't seem to like the _usm_constants(RTOC) part of line 373. Does anyone know of a better way to load constants into floating point registers? Or does anyone know how to get this to work as it is? If there's a better way then I'd rather use that, but I'd just like to get it working.