On Thu, 2008-05-15 at 22:00 -0400, Vivek Goyal wrote: [...] > IMHO, this kind of make more sense to me when keeping C function like > semantics in mind. > > Both the cases can be treated like calls to functions (calling BIOS function > and jumping to kernel B). The basic difference between two cases is the > re-entry point. In BIOS function case, we always re-enter the function at the > start but in case of kernel B, except first entry, all other entries happen > at a run time determined address, which needs to be communicated to kernel A. > > I would think that second kernel B just should execute "ret" and new entry > address of kernel B is passed to kernel A through %eax (return value of > function). The disadvantage of this solution is that kernel B must know it is original kernel (A) or kexeced kernel (B). Different code should be used by kernel A and kernel B. And after jump from A to B, jump from B to A, when jump from A to B again, kernel A must use different code from the first time. Best Regards, Huang Ying