On Mon, Sep 8, 2008 at 8:23 AM, Stefan Reinauer stepan@coresystems.de wrote:
Carl-Daniel Hailfinger wrote:
Stefan, you're the core duo expert. Do you see any way to have the same stack location during and after CAR?
No. There is no RAM at that position.
OK, can we get a confirmation here one way or another on core 2 duo. There is no ram at "that" position. I assume "that" is 0xc0000? Is it possible to ever have CARBASE where there is RAM or is this a hardware limit. If there is no RAM at CARBASE, then it is not possible to return from disable_car and we need a simple redesign.
The CAR decision in v3 that was taken some time ago was to assume that we could return from disable_car.
If we can not return from disable_car, then disable_car needs to work as follows: disable_car(void (*f)(struct sysinfo *s), struct sysinfo *sysinfo) { /* copy sysinfo to RAM */ /* set ESP to top of sysinfo */ /* disable CAR*/ /* continue */ f(sysinfo); }
This is pretty much what we have in v2.
I'm not expressing an opinion here, just stating what I think is needed if disable_car can not be returned from.
thanks
ron