diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/cpu/amd/car/cache_as_ram.inc | 13 | ||||
-rw-r--r-- | src/cpu/amd/car/post_cache_as_ram.c | 8 | ||||
-rw-r--r-- | src/include/cpu/amd/car.h | 6 |
3 files changed, 8 insertions, 19 deletions
diff --git a/src/cpu/amd/car/cache_as_ram.inc b/src/cpu/amd/car/cache_as_ram.inc index 4d70c9e6bc..6161048b29 100644 --- a/src/cpu/amd/car/cache_as_ram.inc +++ b/src/cpu/amd/car/cache_as_ram.inc @@ -599,21 +599,14 @@ CAR_FAM10_ap_out: call cache_as_ram_main call post_cache_as_ram + movl %eax, %esp + + call cache_as_ram_new_stack /* We will not go back. */ post_code(0xaf) /* Should never see this POST code. */ - .globl cache_as_ram_switch_stack - -cache_as_ram_switch_stack: - /* Return address. */ - popl %eax - /* New stack. */ - popl %eax - movl %eax, %esp - call cache_as_ram_new_stack - all_mtrr_msrs: /* fixed MTRR MSRs */ .long MTRR_FIX_64K_00000 diff --git a/src/cpu/amd/car/post_cache_as_ram.c b/src/cpu/amd/car/post_cache_as_ram.c index c647254c70..d51e431560 100644 --- a/src/cpu/amd/car/post_cache_as_ram.c +++ b/src/cpu/amd/car/post_cache_as_ram.c @@ -125,7 +125,7 @@ static void vErrata343(void) wrmsr(BU_CFG2_MSR, msr); } -void post_cache_as_ram(void) +asmlinkage void * post_cache_as_ram(void) { uint32_t family = amd_fam1x_cpu_family(); @@ -171,12 +171,10 @@ void post_cache_as_ram(void) /* New stack grows right below migrated_car. */ print_car_debug("Switching to use RAM as stack..."); - cache_as_ram_switch_stack(migrated_car); - - /* We do not come back. */ + return migrated_car; } -void cache_as_ram_new_stack(void) +asmlinkage void cache_as_ram_new_stack(void) { print_car_debug("Disabling cache as RAM now\n"); disable_cache_as_ram_real(0); // inline diff --git a/src/include/cpu/amd/car.h b/src/include/cpu/amd/car.h index c4d92d93d0..288edb28c2 100644 --- a/src/include/cpu/amd/car.h +++ b/src/include/cpu/amd/car.h @@ -4,10 +4,8 @@ #include <arch/cpu.h> void cache_as_ram_main(unsigned long bist, unsigned long cpu_init_detectedx); -void post_cache_as_ram(void); - -void cache_as_ram_switch_stack(void *stacktop); -void cache_as_ram_new_stack(void); +asmlinkage void * post_cache_as_ram(void); +asmlinkage void cache_as_ram_new_stack(void); void disable_cache_as_ram(void); |