PNP Calls In Protected Mode
Zhang3(讨论 | 贡献)2022年3月28日 (一) 06:52的版本 (创建页面,内容为“{{Stub}} 是的,就像PCI bios32调用一样,你可以在保护模式(pmode)下进行PNP调用。 一旦有了BIOS32服务目录(参见PCI示例例程),就可以使用PnP自动配置魔术调用它。再次注意寄存器接口的串联组件。 <source lang="C"> void bios32_scan_pnp_entry(void) { uint32_t cseg_size, offset, base_addr; →调用PCI地址的BIOS32 BSD BSD调用以RETF而非RET终止:…”)
是的,就像PCI bios32调用一样,你可以在保护模式(pmode)下进行PNP调用。
一旦有了BIOS32服务目录(参见PCI示例例程),就可以使用PnP自动配置魔术调用它。再次注意寄存器接口的串联组件。
void bios32_scan_pnp_entry(void)
{
uint32_t cseg_size, offset, base_addr;
/* 调用PCI地址的BIOS32 BSD
BSD调用以RETF而非RET终止*/
/*eax加载了“$ACF”魔法*/
asm("movl $0x46434124, %%eax\n"
"lcall _bios32_call\n"
: "=c" (cseg_size),
"=d" (offset),
"=b" (base_addr)
:
: "eax", "ebx", "ecx", "edx", "ebp", "memory" );
/* 设置pnp_code32,pnp_data32等的两个新选择器 */
}
一旦确定pmode应用程序存在PNP BIOS调用,就可以调用PCI v2.0c+调用(参见中的INT 0x1A,功能0xB400到0xB407RalfBrown的INT列表)。
注意,似乎没有多少BIOS支持PnP Bios32调用,因此你可能不得不直接对PnP BIOS使用pmode16调用(需要286个TS)。