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:
Bruce Griffith 2013-08-12 01:53:13 -06:00 committed by Bruce Griffith
parent 540d8eaac9
commit 59c3a06154
1 changed files with 3 additions and 2 deletions

View File

@ -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: