在intel i5上解锁PAM

时间:2011-07-21 17:27:48

标签: assembly x86

我正在尝试在intel i5(HM55芯片组)上解锁PAM(可编程属性映射),因此我可以稍微改变视频BIOS,但我无法这样做。程序员手册说:

该寄存器控制BIOS范围从C_0000h到C_7FFFh的读,写和阴影属性。 Uncore允许在768 KB到1 MB地址范围内的13种不同大小的传统内存段上实现可编程内存属性。七个可编程属性映射(PAM)寄存器用于支持这些功能。使用内核中的MTRR寄存器来控制这些区域的可缓存性。

两位用于指定每个内存段的内存属性。这些位适用于PAM区域的主机访问。这些属性是: •RE - 读取启用。当RE = 1时,Uncore声明主机对相应存储器段的读访问并指向主存储器。相反,当RE = 0时,主机读访问被定向到DMI。 •WE - 写入启用。当WE = 1时,Uncore声明主机对相应存储器段的写访问并指向主存储器。相反,当WE = 0时,主机读访问被定向到DMI。

                outl(0xcf8, 0x80000080);                                                                                                                                                          
                printf("Old pam1: %x pam2: %x\n",inb(0xcfd),inb(0xcfe));
                outl(0xcf8, 0x80000080);                                                                                                                                                          
                outb(0xcfd, 0x33);                                                                                                                                                                
                outb(0xcfe, 0x33);                                                                                                                                                                
                printf("New pam1: %x pam2: %x\n",inb(0xcfd),inb(0xcfe));   

我正在从真实模式(DOS)测试这个,所以应该允许这样做。像这样的例子在915resolutions中显示:

int unlock_bios_845g_865g() {
    // set permissions to read and write so I can write into shadowed VideoBIOS
    OUTL(0x80000090, 0xcf8);
    oldpam1 = inb(0xcfd);
    oldpam2 = inb(0xcfe);
    OUTL(0x80000090, 0xcf8);
    OUTB(0x33, 0xcfd);
    OUTB(0x33, 0xcfe);
    return 1;
}

但是对于我的处理器/芯片组(第二代Intel®Core™处理器系列移动和Intel®Celeron®处理器系列移动):

B / D / F /类型:地址偏移:重置值:访问: 大小:BIOS最佳默认值 0/0/0 / PCI 81h 00h RW 8位0h

所以我使用81h作为偏移量。

请指教, I.

0 个答案:

没有答案