[OpenBIOS] [PATCH 2/4] ppc: add new context handler
Segher Boessenkool
segher at kernel.crashing.org
Sun May 1 22:10:32 CEST 2016
On Sun, May 01, 2016 at 11:23:00AM +0100, Mark Cave-Ayland wrote:
> +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) : : );
> + asm __volatile__ ("bl __switch_context\n");
> + asm __volatile__ ("mtlr %0\n\t" : : "r" (lr) : );
> +
> + ret = __context;
> + __context = (struct context *)save;
> + return ret;
> +}
This isn't correct; GCC is free to put LR-modifying code between
the asm statements. You should do it in one asm statement.
> + #ifdef __powerpc64__
> + #define ULONG_SIZE 8
> + #define STACKFRAME_MINSIZE 48
The miminum frame size for elfv1 is 112 and for elfv2 is 32. I think.
But not 48, in any case.
Segher
More information about the OpenBIOS
mailing list