[coreboot] the eternal pre-post car debate in v3
kevin at koconnor.net
Fri Sep 12 14:10:35 CEST 2008
On Thu, Sep 11, 2008 at 08:42:44AM -0700, ron minnich wrote:
> Given these rules, here is how disable_car can work on core 2 and
> others that don't back CAR with RAM.
> 1. compute a new stack area. The minimum size is the size of the
> stack. Note that stack contains sysinfo (at its base).
> It is acceptable to copy only the "active" stack; it is acceptable
> to copy all of CAR. It is acceptable
> to copy more data than the "active" stack and less data than all of
> CAR. This flexibility makes
> writing disable_car easier.
> 2. copy the data to the new stack area in ram
> 3. disable CAR
> 4. adjust the return address on stack if needed (unlikely, since we're
> executing from ROM, but who knows what the future may bring)
> and then return.
Thanks Ron. This write up was very useful to me.
Your proposal involves moving the stack with additional documentation
to help prevent misuses. The idea of moving a stack makes my head
hurt though - for example, it isn't immediately clear to me if gcc
might take a pointer to a stack variable in some situations.
I'm wondering what you felt was lacking in your previous idea of
passing a new stack location/execution address into disable_car()?
Also, in an earlier email I suggested the possibility of switching the
stack before calling disable_car:
do you know why that would not work?
More information about the coreboot