Create a valid stack pointer after leaving CAR, so function calls don't
reset the machine in the small window between CAR and coreboot_ram.

Signed-off-by: Patrick Georgi <>
Acked-by: Myles Watson <>

git-svn-id: svn:// 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
diff --git a/src/cpu/via/car/cache_as_ram_post.c b/src/cpu/via/car/cache_as_ram_post.c
index 99e0dd8..9058727 100644
--- a/src/cpu/via/car/cache_as_ram_post.c
+++ b/src/cpu/via/car/cache_as_ram_post.c
@@ -99,8 +99,11 @@
         "movl    %eax, %cr0\n\t"
-	/* 
-	FIXME: I hope we don't need to change esp and ebp value here, so we can restore value from mmx sse back
-		But the problem is the range is some io related, So don't go back
-	*/
+	/* FIXME: These values might have to change for suspend-to-ram.
+	   the 0x00400000 was chosen as this is a place in memory that
+	   should exist in all contemporary configurations (ie. large
+	   enough RAM), but doesn't collide with anything coreboot does.
+	   Other than that, it's arbitrary. */
+	"movl	$0x00400000,%esp\n\t"
+	"movl	%esp,%ebp\n\t"