Add support for RAM-less multi-processor init
authorKyösti Mälkki <kyosti.malkki@gmail.com>
Tue, 14 Feb 2012 08:39:17 +0000 (10:39 +0200)
committerPatrick Georgi <patrick@georgi-clan.de>
Sat, 31 Mar 2012 09:57:47 +0000 (11:57 +0200)
commit7dfe32c5408916b6cb23f1ec48e473e1c728d300
tree0bc84bfc3dc17928607826398614d942051d3e7f
parentf9d1a42d98b121088b0c242b4d9f5d0eb78d38de
Add support for RAM-less multi-processor init

For a hyper-threading processor, enabling cache requires that both the
BSP and AP CPU clear CR0.CD (Cache Disable) bit. For a Cache-As-Ram
implementation, partial multi-processor initialisation precedes
raminit and AP CPUs' 16bit entry must be run from ROM.

The AP CPU can only start execute real-mode code at a 4kB aligned
address below 1MB. The protected mode entry code for AP is identical
with the BSP code, which is already located at the top of bootblock.
This patch takes the simplest approach and aligns the bootblock
16 bit entry at highest possible 4kB boundary below 1MB.

The symbol ap_sipi_vector is tested to match CONFIG_AP_SIPI_VECTOR
used by the CAR code in romstage. Adress is not expected to ever
change, but if it does, link will fail.

Change-Id: I82e4edbf208c9ba863f51a64e50cd92871c528ef
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: http://review.coreboot.org/454
Tested-by: build bot (Jenkins)
Reviewed-by: Idwer Vollering <vidwer@gmail.com>
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
src/arch/x86/init/ldscript_failover.lb
src/cpu/Kconfig