- Hardcoded nastiness: the "0"s below refer to the first floating
- point registers -- we should let gcc deal with that. The 8(31)
- refers to the position on the stack, less one, of control (we
- need for control to be the high word of the double loaded by
- lfd; how do I know that r31 contains the stack? I don't, I'm
- just guessing. The 255, on the other hand, is a valid constant
- -- it says "move everything in the upper word into the floating
- point control register. -- CSR, 2002-07-16 */
- asm ("stw %0, 12(31); lfd 0, 8(31); mtfsf 255, 0" : : "r" (control) : "r31");
+ asm volatile ("mtfsf 0xff,%0" : : "f" (d));
+
+ causing segfaults at the first GC.
+ */