Carl-Daniel Hailfinger wrote:
> Everything is set up correctly until now. > >>>> /* enable caching for 16K/8K/4K using fixed mtrr */ >>>> movl $0x269, %ecx /* fix4k_cc000*/ >>>> #if CacheSize == 0x4000 >>>> movl $0x06060606, %edx /* WB IO type */ >>>> #endif >>>> #if CacheSize == 0x2000 >>>> movl $0x06060000, %edx /* WB IO type */ >>>> #endif >>>> #if CacheSize == 0x1000 >>>> movl $0x06000000, %edx /* WB IO type */ >>>> #endif >>>> xorl %eax, %eax >>>> wrmsr >>> > > This is where the bug is. I'm speaking of the two commands above, > executed unconditionally. %ecx is 0x269, %eax is zeroed, %edx keeps its > value ($0x06060606 in case of CacheSize>=32k). wrmsr is issued. Is there > any reason to assume that this will not disable CAR again between 16k > and 32k? And no, that code is not protected by an #ifdef. Ah! You are right. This is a bad bug. Marc -- Marc Jones Senior Firmware Engineer (970) 226-9684 Office mailto:[EMAIL PROTECTED] http://www.amd.com/embeddedprocessors -- linuxbios mailing list linuxbios@linuxbios.org http://www.linuxbios.org/mailman/listinfo/linuxbios