⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 restore.s

📁 国内一位牛人自己开发的操作系统
💻 S
字号:
.global restore_parameter

restore_parameter:
	lss kernel_stack_descr,%esp
	call system_call
	cmpl $(0x00),reload_cr3_flag
	je 1f
	movl $(0x00),reload_cr3_flag
	movl %cr3,%eax
	movl %eax,%cr3
1:
	movl current,%esi
	cmpl $(0x00),%esi
	je restore_parameter

	movl 0x44(%esi),%esp

	pushl 0x30(%esi)		/*restore ss */
	pushl 0x2c(%esi)		/*restore esp */
	pushl 0x28(%esi)		/*restore eflag*/
	pushl 0x24(%esi)		/*restore  cs */
	pushl 0x20(%esi)		/*restore eip */
		/*push the upper four value for return to user mode*/
	movl 0x38(%esi),%eax		/*restore es*/
	movl %eax,%es
	movl 0x3c(%esi),%eax		/*restore fs*/
	movl %eax,%fs			
	movl 0x40(%esi),%eax		/*restore gs*/
	movl %eax,%gs

	movl  0x00(%esi),%eax		/*restore eax */
	movl  0x04(%esi),%ebx		/*restore ebx */
	movl  0x08(%esi),%ecx		/*restore ecx */
	movl  0x0c(%esi),%edx		/*restore edx */
	pushl 0x10(%esi)		/*push esi for restore*/
	movl  0x14(%esi),%edi		/*restore edi */
	movl  0x18(%esi),%ebp		/*restore edi */
	
	movl 0x34(%esi),%esi
	movl %esi,%ds			/*restore ds*/
	popl %esi			/*restore esi from stack*/
	iret				/* return to user mode */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -