reactos操作系统实现(25)

前端之家收集整理的这篇文章主要介绍了reactos操作系统实现(25)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在操作系统里,有时候需要从保护模式转换为实模式来调用BIOS一些功能。因此在硬件抽象层里,就需要提供这样的函数支持,这个函数代码如下:

#001 BOOLEAN

#002 NTAPI

#003 HalpBiosDisplayReset(VOID)

#004 {

#005 ULONG Flags = 0;

#006

保存cpu所有状态寄存器,然后关闭中断。

#007 /* Disable interrupts */

#008 Ke386SaveFlags(Flags);

#009 _disable();

#010

映射内存到虚拟8086的实模式。

#011 /* Map memory available to the V8086 real-mode code */

#012 HalpMapRealModeMemory();

#013

切换到实模式的中断处理。

#014 /* Use special invalid opcode and GPF trap handlers */

#015 HalpSwitchToRealModeTrapHandlers();

#016

配置实模式的IOPMTSS

#017 /* Configure the IOPM and TSS */

#018 HalpSetupRealModeIoPermissionsAndTask();

#019

现在开始在实模式里调用BIOS功能

#020 /* Now jump to real mode */

#021 HalpBiosCall();

#022

恢复中断处理函数

#023 /* Restore kernel trap handlers */

#024 HalpRestoreTrapHandlers();

#025

恢复TSSIOPM

#026 /* Restore TSS and IOPM */

#027 HalpRestoreIoPermissionsAndTask();

#028

恢复低端内存。

#029 /* Restore low memory mapping */

#030 HalpUnmapRealModeMemory();

#031

恢复保存的状态寄存器。

#032 /* Restore interrupts if they were prevIoUsly enabled */

#033 Ke386RestoreFlags(Flags);

#034 return TRUE;

#035 }

上面函数是保存了现场状态后,就切换到虚拟8086实模式,这样才可以调用BIOS功能,这是由于在保护模式下不能运行BIOS的程序决定的。

猜你在找的React相关文章