我们如何通过键盘端口重启

How can we reboot through keyboard port

下面的代码是如何重启系统的,能否提供这方面的文档

#define KEYBOARD_PORT 0x64
ioperm(KEYBOARD_PORT, 0x01, 0x01);
outb(0xfe, KEYBOARD_PORT);

Keyboard Port写'0xfe'有什么意义

最初的 8042 "PS/2 keyboard controller" 设计在控制器上有一些额外的引脚,而吝啬的 IBM 工程师确实将很多东西连接到这些额外的引脚上。一个引脚连接到 CPU 复位引脚,另一个未使用的引脚用于修复 80286 地址环绕不兼容性,修复称为 the A20 gate.

命令字节0xFx表示"pulse the chosen line down for 6 milliseconds",E选择复位线(位0被清零)。效果是重置 CPU 以便它根据其启动顺序开始执行代码。

当然,当前的 PC 没有 Intel 8042 微控制器,只是一个仿真...


Osdev wiki 文章中的更多信息Reboot and PS/2 Controller