support HDT disassembly when cache as ram auto stage

git-svn-id: svn://svn.coreboot.org/coreboot/trunk@2143 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
Yinghai Lu 2005-12-14 20:08:23 +00:00
parent 72ee9b0ebe
commit 6f63c0297c
1 changed files with 36 additions and 35 deletions

View File

@ -1,5 +1,6 @@
/* by yhlu 6.2005 */ /* by yhlu 6.2005 */
/* We will use 4K bytes only */ /* yhlu 2005.12 make it support HDT Memory Debuggers with Disassmbly, please select the PCI Bus mem for Phys Type*/
/* We may need 4K bytes only */
#define CacheSize DCACHE_RAM_SIZE #define CacheSize DCACHE_RAM_SIZE
#define CacheBase (0xd0000 - CacheSize) #define CacheBase (0xd0000 - CacheSize)
@ -12,9 +13,9 @@
/*for normal part %ebx already contain cpu_init_detected from fallback call */ /*for normal part %ebx already contain cpu_init_detected from fallback call */
cache_as_ram_setup: cache_as_ram_setup:
/* hope we can skip the double set for normal part */ /* hope we can skip the double set for normal part */
#if USE_FALLBACK_IMAGE == 1 #if USE_FALLBACK_IMAGE == 1
/* check if cpu_init_detected */ /* check if cpu_init_detected */
movl $MTRRdefType_MSR, %ecx movl $MTRRdefType_MSR, %ecx
rdmsr rdmsr
@ -22,9 +23,6 @@ cache_as_ram_setup:
movl %eax, %ebx /* We store the status */ movl %eax, %ebx /* We store the status */
/* Set MtrrFixDramModEn for clear fixed mtrr */ /* Set MtrrFixDramModEn for clear fixed mtrr */
xorl %eax, %eax
xorl %edx, %edx
enable_fixed_mtrr_dram_modify: enable_fixed_mtrr_dram_modify:
movl $SYSCFG_MSR, %ecx movl $SYSCFG_MSR, %ecx
rdmsr rdmsr
@ -32,13 +30,6 @@ enable_fixed_mtrr_dram_modify:
orl $SYSCFG_MSR_MtrrFixDramModEn, %eax orl $SYSCFG_MSR_MtrrFixDramModEn, %eax
wrmsr wrmsr
/* Set the default memory type and enable fixed and variable MTRRs */
movl $MTRRdefType_MSR, %ecx
xorl %edx, %edx
/* Enable Variable and Fixed MTRRs */
movl $0x00000c00, %eax
wrmsr
/*Clear all MTRRs */ /*Clear all MTRRs */
xorl %edx, %edx xorl %edx, %edx
@ -55,12 +46,6 @@ clear_fixed_var_mtrr:
jmp clear_fixed_var_mtrr jmp clear_fixed_var_mtrr
clear_fixed_var_mtrr_out: clear_fixed_var_mtrr_out:
/* Enable the MTRRs and IORRs in SYSCFG */
movl $SYSCFG_MSR, %ecx
rdmsr
orl $(SYSCFG_MSR_MtrrVarDramEn | SYSCFG_MSR_MtrrFixDramEn), %eax
wrmsr
#if CacheSize == 0x10000 #if CacheSize == 0x10000
/* enable caching for 64K using fixed mtrr */ /* enable caching for 64K using fixed mtrr */
movl $0x268, %ecx /* fix4k_c0000*/ movl $0x268, %ecx /* fix4k_c0000*/
@ -69,7 +54,7 @@ clear_fixed_var_mtrr_out:
wrmsr wrmsr
movl $0x269, %ecx movl $0x269, %ecx
wrmsr wrmsr
#endif #else
#if CacheSize == 0x8000 #if CacheSize == 0x8000
/* enable caching for 32K using fixed mtrr */ /* enable caching for 32K using fixed mtrr */
@ -77,7 +62,7 @@ clear_fixed_var_mtrr_out:
movl $0x06060606, %eax /* WB IO type */ movl $0x06060606, %eax /* WB IO type */
movl %eax, %edx movl %eax, %edx
wrmsr wrmsr
#endif #else
/* enable caching for 16K/8K/4K using fixed mtrr */ /* enable caching for 16K/8K/4K using fixed mtrr */
movl $0x269, %ecx /* fix4k_cc000*/ movl $0x269, %ecx /* fix4k_cc000*/
@ -92,8 +77,11 @@ clear_fixed_var_mtrr_out:
#endif #endif
xorl %eax, %eax xorl %eax, %eax
wrmsr wrmsr
#endif
/* enable memory access for 0 - 1MB using top_mem */ #endif
/* enable memory access for first MBs using top_mem */
movl $TOP_MEM, %ecx movl $TOP_MEM, %ecx
xorl %edx, %edx xorl %edx, %edx
movl $(((CONFIG_LB_MEM_TOPK << 10) + TOP_MEM_MASK) & ~TOP_MEM_MASK) , %eax movl $(((CONFIG_LB_MEM_TOPK << 10) + TOP_MEM_MASK) & ~TOP_MEM_MASK) , %eax
@ -101,7 +89,6 @@ clear_fixed_var_mtrr_out:
#endif /* USE_FALLBACK_IMAGE == 1*/ #endif /* USE_FALLBACK_IMAGE == 1*/
#if USE_FALLBACK_IMAGE == 0 #if USE_FALLBACK_IMAGE == 0
/* disable cache */ /* disable cache */
movl %cr0, %eax movl %cr0, %eax
orl $(0x1<<30),%eax orl $(0x1<<30),%eax
@ -119,11 +106,26 @@ clear_fixed_var_mtrr_out:
wrmsr wrmsr
movl $0x203, %ecx movl $0x203, %ecx
movl $0x0000000f, %edx movl $0x0000000f, %edx /* AMD 40 bit */
movl $(~(XIP_ROM_SIZE - 1) | 0x800), %eax movl $(~(XIP_ROM_SIZE - 1) | 0x800), %eax
wrmsr wrmsr
#endif /* XIP_ROM_SIZE && XIP_ROM_BASE */ #endif /* XIP_ROM_SIZE && XIP_ROM_BASE */
#if USE_FALLBACK_IMAGE == 1
/* Set the default memory type and enable fixed and variable MTRRs */
movl $MTRRdefType_MSR, %ecx
xorl %edx, %edx
/* Enable Variable and Fixed MTRRs */
movl $0x00000c00, %eax
wrmsr
/* Enable the MTRRs and IORRs in SYSCFG */
movl $SYSCFG_MSR, %ecx
rdmsr
orl $(SYSCFG_MSR_MtrrVarDramEn | SYSCFG_MSR_MtrrFixDramEn), %eax
wrmsr
#endif
/* enable cache */ /* enable cache */
movl %cr0, %eax movl %cr0, %eax
andl $0x9fffffff,%eax andl $0x9fffffff,%eax
@ -132,23 +134,22 @@ clear_fixed_var_mtrr_out:
#if USE_FALLBACK_IMAGE == 1 #if USE_FALLBACK_IMAGE == 1
/* Read the range with lodsl*/ /* Read the range with lodsl*/
movl $(CacheBase+CacheSize-4), %esi cld
std movl $CacheBase, %esi
movl $(CacheSize>>2), %ecx movl $(CacheSize>>2), %ecx
rep lodsl rep lodsl
/* Clear the range */ /* Clear the range */
movl $(CacheBase+CacheSize-4), %edi movl $CacheBase, %edi
movl $(CacheSize>>2), %ecx movl $(CacheSize>>2), %ecx
xorl %eax, %eax xorl %eax, %eax
rep stosl rep stosl
#endif /*USE_FALLBACK_IMAGE == 1*/ #endif /*USE_FALLBACK_IMAGE == 1*/
/* set up the stack pointer */
movl $(CacheBase+CacheSize-4), %eax movl $(CacheBase+CacheSize-4), %eax
movl %eax, %esp movl %eax, %esp
/* Restore the BIST result */ /* Restore the BIST result */
movl %ebp, %eax movl %ebp, %eax
/* We need to set ebp ? No need */ /* We need to set ebp ? No need */