我正在构建一个实验性OS (32 bits)
,该实验使用grub引导加载程序来引导内核。我要添加MPS suppor
t。
我的OS
专为单CPU /单核(GDT, IDT, ISR, paging
..一切工作正常,并在保护模式下配置),现在我想向内核添加MPS支持,我能够阅读MADT
并找出我有多少CPUs
,
我已经读过SIP
I序列(Intel® 64 and IA-32 Architectures Developer's Manual: Vol. 3A
)来唤醒其他AP内核,但是它们需要实模式(设置堆栈并与BSP
通信)。
我的问题是grub启动后,它使我进入了保护模式(通常,在该模式下,我会初始化BSP并设置堆栈并启用分页,然后调用内核main)。
如何以实模式启动其他AP内核?知道我处于保护模式并且BSP已经初始化。
更新2019年8月4日
在使用grub引导OS
后,我只需要说明/指示即可初始化AP
谢谢