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:
parent
72ee9b0ebe
commit
6f63c0297c
|
@ -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 */
|
||||||
|
|
Loading…
Reference in New Issue