Thanks for your reply!
I read the manual, it is said that the esp0 is a static field of tss, and it will not change for a particular task. So it is initialized with kernel stack top (empty kernel stack)of a process when it is executed for the first time, right?  
在2015年06月17日 04:46,David Matlack 写道:
On Tue, Jun 16, 2015 at 4:27 AM, hitmoon <[email protected]> wrote:
> Hi:
>     I recently read the book "understanding the linux kernel 3rd", in the
> task switch process, there are two esp in thread_struct. In macro
> 'switch_to' , The esp is loaded to switch to the next's kernel stack,  but
> in '__switch_to', esp0 is copied to tss's esp0 field, what the esp0 mean?
> What the difference between them?

esp0 is the stack pointer that is loaded into esp when the privileged level
changes to 0. For example, when a process running in user mode (level 3)
jumps into the kernel via a system call.

You can read more about it in the Intel SDM, Volume 3 Chapter 7.
http://www.intel.com/content/www/us/en/processors/architectures-software-developer-manuals.html
_______________________________________________
Kernelnewbies mailing list
[email protected]
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

Reply via email to