May 1, 2016
6:29 p.m.
On May 1, 2016, at 6:23 AM, Mark Cave-Ayland wrote:
+/* Switch to another context. */ +struct context *switch_to(struct context *ctx) +{ + volatile struct context *save; + struct context *ret; + unsigned int lr; + + debug("switching to new context:\n"); + save = __context; + __context = ctx; + + asm __volatile__ ("mflr %0\n\t" : "=r" (lr) : : );
This line breaks compatibility with gcc 4.2.3. A simple fix is this: asm __volatile__ ("mflr %0\n\t" : "=r" (lr)); and this
+ asm __volatile__ ("mtlr %0\n\t" : : "r" (lr) : ); asm __volatile__ ("mtlr %0\n\t" : : "r" (lr));