本文分析基于Linux 0.11内核,转载请标明出处,http://blog.csdn.net/yming0221/archive/2011/06/01/6459119.aspx
在main.c的程序中,当设备初始化完毕后,程序将从内核模式切换到用户模式,也就是所说的任务0,执行fork()函数(该函数使用内嵌的汇
编,防止函数调用弄乱堆栈,造成写时复制COPY_ON_WRITE)切换到用户堆栈并执行任务0使用iret指令,首先将有关的值压入堆栈,然后执
行iret指令。将刚刚压入对堆栈的数据根据标志位弹入相应的寄存器。
切换到用户模式运行。
// 该函数利用iret 指令实现从内核模式切换到用户模式(初始任务0)。
#define move_to_user_mode() /
__asm__ ( "movl %%esp,%