如果EFI支持64-bit的话,那么就可以启动Windows 7, 还不是因为MS不好好支持32-bit,这样就不需要CSM module了
那么如果EFI支持64-bit的话,SMM driver也就变成64-bit了,这个时候SMM就必须从Real mode 转成64-bit protect mode,其实主要的问题就是CPU的mode是IA-32e mode,这是由CPU的一个寄存器来决定的,具体的就是MSR(C0000080h)的bit8,所以在SMI handler中就需要load 64-bit的GDT,然后切成保护模式之前,设置CPU的这个寄存器,使之变成64-bit,其他的和32-bit的一模一样,就可以去执行64-bit的C程序了
需要强调的是,64-bit汇编code中,eax就用rax了,等等。
贴一张图吧,说明一下CPU的不同模式:
posted on 2009-11-09 18:26
yuhen 阅读(1160)
评论(1) 编辑 收藏 引用 所属分类:
个人文档 、
技术文档