HAVE_MOVNTI really means SSE2. Also add sfence in the MOVNTI case.
Signed-off-by: Stefan Reinauer <stepan@coresystems.de> Acked-by: Patrick Georgi <patrick.georgi@coresystems.de> git-svn-id: svn://svn.coreboot.org/coreboot/trunk@5159 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1
This commit is contained in:
parent
3a54ac9c36
commit
a7acc515bd
|
@ -184,10 +184,6 @@ config HAVE_MAINBOARD_RESOURCES
|
||||||
bool
|
bool
|
||||||
default n
|
default n
|
||||||
|
|
||||||
config HAVE_MOVNTI
|
|
||||||
bool
|
|
||||||
default n
|
|
||||||
|
|
||||||
config HAVE_OPTION_TABLE
|
config HAVE_OPTION_TABLE
|
||||||
bool
|
bool
|
||||||
default y
|
default y
|
||||||
|
|
|
@ -32,14 +32,26 @@ config SMP
|
||||||
This option is used to enable certain functions to make coreboot
|
This option is used to enable certain functions to make coreboot
|
||||||
work correctly on symmetric multi processor (SMP) systems.
|
work correctly on symmetric multi processor (SMP) systems.
|
||||||
|
|
||||||
# Set MMX and SSE in socket or model if the CPU has them.
|
|
||||||
# If all CPUs for the socket have MMX or SSE, set them there.
|
|
||||||
# These options are only needed for boards compiled with romcc.
|
|
||||||
config MMX
|
config MMX
|
||||||
bool
|
bool
|
||||||
|
help
|
||||||
|
Select MMX in your socket or model Kconfig if your CPU has MMX
|
||||||
|
streaming SIMD instructions. ROMCC can build more efficient
|
||||||
|
code if it can spill to MMX registers.
|
||||||
|
|
||||||
config SSE
|
config SSE
|
||||||
bool
|
bool
|
||||||
|
help
|
||||||
|
Select SSE in your socket or model Kconfig if your CPU has SSE
|
||||||
|
streaming SIMD instructions. ROMCC can build more efficient
|
||||||
|
code if it can spill to SSE (aka XMM) registers.
|
||||||
|
|
||||||
|
config SSE2
|
||||||
|
bool
|
||||||
|
help
|
||||||
|
Select SSE2 in your socket or model Kconfig if your CPU has SSE2
|
||||||
|
streaming SIMD instructions. Some parts of coreboot can be built
|
||||||
|
with more efficient code if SSE2 instructions are available.
|
||||||
|
|
||||||
config VAR_MTRR_HOLE
|
config VAR_MTRR_HOLE
|
||||||
bool
|
bool
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
config CPU_AMD_MODEL_10XXX
|
config CPU_AMD_MODEL_10XXX
|
||||||
bool
|
bool
|
||||||
select HAVE_MOVNTI
|
|
||||||
select USE_PRINTK_IN_CAR
|
select USE_PRINTK_IN_CAR
|
||||||
select USE_DCACHE_RAM
|
select USE_DCACHE_RAM
|
||||||
select SSE
|
select SSE
|
||||||
|
select SSE2
|
||||||
select HAVE_INIT_TIMER
|
select HAVE_INIT_TIMER
|
||||||
|
|
||||||
config CPU_ADDR_BITS
|
config CPU_ADDR_BITS
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
config CPU_AMD_MODEL_FXX
|
config CPU_AMD_MODEL_FXX
|
||||||
bool
|
bool
|
||||||
select HAVE_MOVNTI
|
|
||||||
select USE_PRINTK_IN_CAR
|
select USE_PRINTK_IN_CAR
|
||||||
select USE_DCACHE_RAM
|
select USE_DCACHE_RAM
|
||||||
|
select MMX
|
||||||
select SSE
|
select SSE
|
||||||
|
select SSE2
|
||||||
select HAVE_INIT_TIMER
|
select HAVE_INIT_TIMER
|
||||||
|
|
||||||
config CPU_ADDR_BITS
|
config CPU_ADDR_BITS
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
config CPU_INTEL_CORE2
|
config CPU_INTEL_CORE2
|
||||||
bool
|
bool
|
||||||
select SMP
|
select SMP
|
||||||
select HAVE_MOVNTI
|
select SSE2
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
config CPU_INTEL_ATOM_230
|
config CPU_INTEL_ATOM_230
|
||||||
bool
|
bool
|
||||||
select SMP
|
select SMP
|
||||||
select HAVE_MOVNTI
|
select SSE2
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
config CPU_INTEL_CORE
|
config CPU_INTEL_CORE
|
||||||
bool
|
bool
|
||||||
select SMP
|
select SMP
|
||||||
select HAVE_MOVNTI
|
select SSE2
|
||||||
|
|
|
@ -1 +1,4 @@
|
||||||
# select HAVE_MOVNTI
|
config CPU_INTEL_CORE2
|
||||||
|
bool
|
||||||
|
select SMP
|
||||||
|
select SSE2
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
config CPU_INTEL_MODEL_F0X
|
config CPU_INTEL_MODEL_F0X
|
||||||
bool
|
bool
|
||||||
select SMP
|
select SMP
|
||||||
select HAVE_MOVNTI
|
select SSE2
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
config CPU_INTEL_MODEL_F1X
|
config CPU_INTEL_MODEL_F1X
|
||||||
bool
|
bool
|
||||||
select SMP
|
select SMP
|
||||||
select HAVE_MOVNTI
|
select SSE2
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
config CPU_INTEL_MODEL_F2X
|
config CPU_INTEL_MODEL_F2X
|
||||||
bool
|
bool
|
||||||
select SMP
|
select SMP
|
||||||
select HAVE_MOVNTI
|
select SSE2
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
config CPU_INTEL_MODEL_F3X
|
config CPU_INTEL_MODEL_F3X
|
||||||
bool
|
bool
|
||||||
select SMP
|
select SMP
|
||||||
select HAVE_MOVNTI
|
select SSE2
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
config CPU_INTEL_MODEL_F4X
|
config CPU_INTEL_MODEL_F4X
|
||||||
bool
|
bool
|
||||||
select SMP
|
select SMP
|
||||||
select HAVE_MOVNTI
|
select SSE2
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
config CPU_VIA_C7
|
config CPU_VIA_C7
|
||||||
bool
|
bool
|
||||||
select UDELAY_TSC
|
select UDELAY_TSC
|
||||||
|
select SSE2
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
static void write_phys(unsigned long addr, unsigned long value)
|
static void write_phys(unsigned long addr, unsigned long value)
|
||||||
{
|
{
|
||||||
#if CONFIG_HAVE_MOVNTI
|
// Assembler in lib/ is very ugly. But we properly guarded
|
||||||
|
// it so let's obey this one for now
|
||||||
|
#if CONFIG_SSE2
|
||||||
asm volatile(
|
asm volatile(
|
||||||
"movnti %1, (%0)"
|
"movnti %1, (%0)"
|
||||||
: /* outputs */
|
: /* outputs */
|
||||||
|
@ -50,6 +52,10 @@ static void ram_fill(unsigned long start, unsigned long stop)
|
||||||
}
|
}
|
||||||
write_phys(addr, addr);
|
write_phys(addr, addr);
|
||||||
};
|
};
|
||||||
|
#if CONFIG_SSE2
|
||||||
|
// Needed for movnti
|
||||||
|
asm volatile ("sfence" ::: "memory");
|
||||||
|
#endif
|
||||||
/* Display final address */
|
/* Display final address */
|
||||||
#if CONFIG_USE_PRINTK_IN_CAR
|
#if CONFIG_USE_PRINTK_IN_CAR
|
||||||
printk_debug("%08lx\r\nDRAM filled\r\n", addr);
|
printk_debug("%08lx\r\nDRAM filled\r\n", addr);
|
||||||
|
|
Loading…
Reference in New Issue