Enable caching for Via C7 CPUs, and also improve readability. Tested on hardware

and seems to be working.

Signed-off-by: Corey Osgood <corey.osgood@gmail.com>
Acked-by: Myles Watson <mylesgw@gmail.com>



git-svn-id: svn://coreboot.org/repository/coreboot-v3@1164 f3766cd6-281f-0410-b1cd-43a5c92072e9
This commit is contained in:
Corey Osgood 2009-04-14 15:41:33 +00:00
parent 298384710b
commit fcf66e3605
3 changed files with 23 additions and 20 deletions

View file

@ -26,7 +26,7 @@
#include <console.h> #include <console.h>
#include <device/device.h> #include <device/device.h>
#include <tables.h> #include <tables.h>
#include <pirq_routing.h> #include <arch/x86/pirq_routing.h>
static void check_pirq_routing_table(struct irq_routing_table *rt) static void check_pirq_routing_table(struct irq_routing_table *rt)
{ {

View file

@ -35,6 +35,11 @@
#define CACHE_RAM_CODE_SEG 0x18 #define CACHE_RAM_CODE_SEG 0x18
#define CACHE_RAM_DATA_SEG 0x20 #define CACHE_RAM_DATA_SEG 0x20
/* Note: disable this only if you want the system to boot REEEEALLY slow for debugging */
#ifndef CACHE_CBROM
#define CACHE_CBROM
#endif
.align 4 .align 4
.globl protected_stage0 .globl protected_stage0
protected_stage0: protected_stage0:
@ -101,39 +106,37 @@ clear_fixed_var_mtrr:
jmp clear_fixed_var_mtrr jmp clear_fixed_var_mtrr
clear_fixed_var_mtrr_out: clear_fixed_var_mtrr_out:
/* MTRRPhysBase */ /* MTRRPhysBase */
movl $0x200, %ecx movl $(MTRRphysBase_MSR(0)), %ecx
xorl %edx, %edx xorl %edx, %edx
movl $(CacheBase|MTRR_TYPE_WRBACK),%eax movl $(CacheBase|MTRR_TYPE_WRBACK),%eax
wrmsr wrmsr
/* MTRRPhysMask */ /* MTRRPhysMask */
movl $0x201, %ecx movl $(MTRRphysMask_MSR(0)), %ecx
/* This assumes we never access addresses above 2^36 in CAR. */ /* This assumes we never access addresses above 2^36 in CAR. */
movl $0x0000000f,%edx movl $0x0000000f,%edx
movl $(~(CacheSize-1)|0x800),%eax movl $(~(CacheSize-1)|(1<<11)), %eax
wrmsr wrmsr
#if defined(CONFIG_XIP_ROM_SIZE) && defined(CONFIG_XIP_ROM_BASE) #ifdef CACHE_CBROM
/* enable write base caching so we can do execute in place /* enable write base caching. */
* on the flash rom.
*/
/* MTRRPhysBase */ /* MTRRPhysBase */
movl $0x202, %ecx movl $(MTRRphysBase_MSR(1)), %ecx
xorl %edx, %edx xorl %edx, %edx
movl $(XIP_ROM_BASE|MTRR_TYPE_WRBACK),%eax movl $((0x100000000 - (CONFIG_COREBOOT_ROMSIZE_KB * 1024))|MTRR_TYPE_WRBACK),%eax
wrmsr wrmsr
/* MTRRPhysMask */ /* MTRRPhysMask */
movl $0x203, %ecx movl $(MTRRphysMask_MSR(1)), %ecx
movl $0x0000000f,%edx movl $0x0000000f,%edx
movl $(~(XIP_ROM_SIZE - 1) | 0x800), %eax movl $(~((CONFIG_COREBOOT_ROMSIZE_KB * 1024) - 1) | (1<<11)), %eax
wrmsr wrmsr
#endif /* XIP_ROM_SIZE && XIP_ROM_BASE */ #endif /* CACHE_CBROM */
movl $MTRRdefType_MSR, %ecx movl $MTRRdefType_MSR, %ecx
xorl %edx, %edx xorl %edx, %edx
/* Enable Variable and Fixed MTRRs */ /* Enable Variable and Fixed MTRRs */
movl $0x00000800, %eax movl $(1<<11), %eax
wrmsr wrmsr
/* enable cache */ /* enable cache */
@ -153,12 +156,12 @@ clear_fixed_var_mtrr_out:
xorl %eax, %eax xorl %eax, %eax
rep stosl rep stosl
#if defined(CONFIG_XIP_ROM_SIZE) && defined(CONFIG_XIP_ROM_BASE) #ifdef CACHE_CBROM
/* Read the XIP area */ /* Read the ROM area */
movl XIP_ROM_BASE, %esi movl (0x100000000 - (CONFIG_COREBOOT_ROMSIZE_KB * 1024)), %esi
movl $(XIP_ROM_SIZE>>2), %ecx movl $((CONFIG_COREBOOT_ROMSIZE_KB * 1024) >> 2), %ecx
rep lodsl rep lodsl
#endif /* XIP_ROM_SIZE && XIP_ROM_BASE */ #endif /* CACHE_CBROM */
/* The key point of this CAR code is C7 cache does not turn into /* The key point of this CAR code is C7 cache does not turn into
* "no fill" mode, which is not compatible with general CAR code. * "no fill" mode, which is not compatible with general CAR code.

View file

@ -28,7 +28,7 @@ config BOARD_JETWAY_J7F2
select NORTHBRIDGE_VIA_CN700 select NORTHBRIDGE_VIA_CN700
select SOUTHBRIDGE_VIA_VT8237 select SOUTHBRIDGE_VIA_VT8237
select SUPERIO_FINTEK_F71805F select SUPERIO_FINTEK_F71805F
select PIRQ_TABLE ## select PIRQ_TABLE
help help
Jetway J7F2-Series board. Jetway J7F2-Series board.
endchoice endchoice