AMD AGESA: Remove INVD instruction when transitioning from CAR
The AMD AGESA function to move the stack from cache-as-ram to actual RAM doesn't need any help. The current implementation has an INVD instruction just before cache-as-RAM is torn down. It isn't needed for Trinity processors and makes Kabini boot unreliable. Change-Id: Ibe9e4105eee032471ccbb2d537471d5fa5847d22 Signed-off-by: Bruce Griffith <bruce.griffith@se-eng.com> Reviewed-on: http://review.coreboot.org/3852 Tested-by: build bot (Jenkins) Reviewed-by: Siyuan Wang <wangsiyuanbuaa@gmail.com> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: Marc Jones <marc.jones@se-eng.com>
This commit is contained in:
parent
540d8eaac9
commit
59c3a06154
|
@ -85,6 +85,7 @@ stop:
|
||||||
|
|
||||||
disable_cache_as_ram:
|
disable_cache_as_ram:
|
||||||
/* Save return stack */
|
/* Save return stack */
|
||||||
|
movd 0(%esp), %xmm1
|
||||||
movd %esp, %xmm0
|
movd %esp, %xmm0
|
||||||
|
|
||||||
/* Disable cache */
|
/* Disable cache */
|
||||||
|
@ -92,8 +93,6 @@ disable_cache_as_ram:
|
||||||
orl $CR0_CacheDisable, %eax
|
orl $CR0_CacheDisable, %eax
|
||||||
movl %eax, %cr0
|
movl %eax, %cr0
|
||||||
|
|
||||||
invd
|
|
||||||
|
|
||||||
AMD_DISABLE_STACK
|
AMD_DISABLE_STACK
|
||||||
|
|
||||||
/* enable cache */
|
/* enable cache */
|
||||||
|
@ -103,7 +102,9 @@ disable_cache_as_ram:
|
||||||
xorl %eax, %eax
|
xorl %eax, %eax
|
||||||
|
|
||||||
/* Restore the return stack */
|
/* Restore the return stack */
|
||||||
|
wbinvd
|
||||||
movd %xmm0, %esp
|
movd %xmm0, %esp
|
||||||
|
movd %xmm1, (%esp)
|
||||||
ret
|
ret
|
||||||
|
|
||||||
cache_as_ram_setup_out:
|
cache_as_ram_setup_out:
|
||||||
|
|
Loading…
Reference in New Issue