Fix address of IDT in real-mode entry
authorKyösti Mälkki <kyosti.malkki@gmail.com>
Mon, 5 Mar 2012 07:25:12 +0000 (09:25 +0200)
committerPatrick Georgi <patrick@georgi-clan.de>
Fri, 16 Mar 2012 18:34:14 +0000 (19:34 +0100)
commit7863015c3eabe94c360ff893723f48af23a47a33
tree90a86cfbee75d7cd3cb51c11936c79d30786d161
parent5750ed253a6ed45e574a8855a7b7b1abe16eae88
Fix address of IDT in real-mode entry

In a case of CS & 0x0fff != 0x0, lidt memory operand does not point
to nullidt, this can raise an exception and shutdown the CPU.

When an AP CPU receives 8-bit Start-Up IPI vector yzH, it starts
execute at physical address 000yz000H. Seems this translates to
either yz00:0000 or y000:z000 (CS:IP), depending of the CPU model.
With the change entry16.inc is relocatable as the commentary suggests
and can be used as ap_sipi_vector on SMP systems.

Change-Id: I885a2888179700ba6e2b11d4f2d6a64ddea4c2dc
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: http://review.coreboot.org/707
Tested-by: build bot (Jenkins)
Reviewed-by: Idwer Vollering <vidwer@gmail.com>
Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
Reviewed-by: Patrick Georgi <patrick@georgi-clan.de>
src/cpu/x86/16bit/entry16.inc