Author: stepan Date: 2007-04-06 21:49:05 +0200 (Fri, 06 Apr 2007) New Revision: 2588
Modified: trunk/LinuxBIOSv2/src/arch/i386/include/stdint.h trunk/LinuxBIOSv2/src/cpu/amd/model_fxx/init_cpus.c trunk/LinuxBIOSv2/src/cpu/amd/model_fxx/processor_name.c trunk/LinuxBIOSv2/src/cpu/x86/32bit/entry32.inc trunk/LinuxBIOSv2/src/cpu/x86/mtrr/earlymtrr.c trunk/LinuxBIOSv2/src/cpu/x86/mtrr/mtrr.c Log: This is part of the outstanding mcp55 commit from January 18th. It will likely break the build, since it is only a small part, but it needs to go in at some point and doing it directory by directory makes things easier.
Signed-off-by: Yinghai Lu <yinghai.lu at amd.com> Signed-off-by: Ed Swierk <eswierk at arastra.com> Signed-off-by: Stefan Reinauer stepan@coresystems.de Acked-by: Ward Vandewege <ward at gnu.org> Acked-by: Stefan Reinauer stepan@coresystems.de
Modified: trunk/LinuxBIOSv2/src/arch/i386/include/stdint.h =================================================================== --- trunk/LinuxBIOSv2/src/arch/i386/include/stdint.h 2007-04-06 18:34:39 UTC (rev 2587) +++ trunk/LinuxBIOSv2/src/arch/i386/include/stdint.h 2007-04-06 19:49:05 UTC (rev 2588) @@ -67,5 +67,9 @@
#undef __HAVE_LONG_LONG__
+typedef uint8_t u8; +typedef uint16_t u16; +typedef uint32_t u32;
+ #endif /* I386_STDINT_H */
Modified: trunk/LinuxBIOSv2/src/cpu/amd/model_fxx/init_cpus.c =================================================================== --- trunk/LinuxBIOSv2/src/cpu/amd/model_fxx/init_cpus.c 2007-04-06 18:34:39 UTC (rev 2587) +++ trunk/LinuxBIOSv2/src/cpu/amd/model_fxx/init_cpus.c 2007-04-06 19:49:05 UTC (rev 2588) @@ -356,7 +356,6 @@ return bsp_apicid; }
-#if CONFIG_LOGICAL_CPUS == 1
static unsigned is_core0_started(unsigned nodeid) { @@ -383,4 +382,3 @@
}
-#endif
Modified: trunk/LinuxBIOSv2/src/cpu/amd/model_fxx/processor_name.c =================================================================== --- trunk/LinuxBIOSv2/src/cpu/amd/model_fxx/processor_name.c 2007-04-06 18:34:39 UTC (rev 2587) +++ trunk/LinuxBIOSv2/src/cpu/amd/model_fxx/processor_name.c 2007-04-06 19:49:05 UTC (rev 2588) @@ -20,8 +20,6 @@ #include <string.h> #include <cpu/x86/msr.h>
-typedef unsigned int u32; - /* The maximum length of CPU names is 48 bytes, including the final NULL byte. * If you change these names your BIOS will _NOT_ pass the AMD validation and * your mainboard will not be posted on the AMD Recommended Motherboard Website
Modified: trunk/LinuxBIOSv2/src/cpu/x86/32bit/entry32.inc =================================================================== --- trunk/LinuxBIOSv2/src/cpu/x86/32bit/entry32.inc 2007-04-06 18:34:39 UTC (rev 2587) +++ trunk/LinuxBIOSv2/src/cpu/x86/32bit/entry32.inc 2007-04-06 19:49:05 UTC (rev 2588) @@ -19,11 +19,11 @@
/* selgdt 0x08, flat code segment */ .word 0xffff, 0x0000 - .byte 0x00, 0x9b, 0xcf, 0x00 + .byte 0x00, 0x9b, 0xcf, 0x00 /* G=1 and 0x0f, So we get 4Gbytes for limit */
/* selgdt 0x10,flat data segment */ .word 0xffff, 0x0000 - .byte 0x00, 0x93, 0xcf, 0x00 + .byte 0x00, 0x93, 0xcf, 0x00
gdt_end:
Modified: trunk/LinuxBIOSv2/src/cpu/x86/mtrr/earlymtrr.c =================================================================== --- trunk/LinuxBIOSv2/src/cpu/x86/mtrr/earlymtrr.c 2007-04-06 18:34:39 UTC (rev 2587) +++ trunk/LinuxBIOSv2/src/cpu/x86/mtrr/earlymtrr.c 2007-04-06 19:49:05 UTC (rev 2588) @@ -42,6 +42,7 @@
{ /* Bit Bit 32-35 of MTRRphysMask should be set to 1 */ + /* FIXME: It only support 4G less range */ msr_t basem, maskm; basem.lo = base | type; basem.hi = 0;
Modified: trunk/LinuxBIOSv2/src/cpu/x86/mtrr/mtrr.c =================================================================== --- trunk/LinuxBIOSv2/src/cpu/x86/mtrr/mtrr.c 2007-04-06 18:34:39 UTC (rev 2587) +++ trunk/LinuxBIOSv2/src/cpu/x86/mtrr/mtrr.c 2007-04-06 19:49:05 UTC (rev 2588) @@ -282,10 +282,16 @@ }
+#ifndef CONFIG_VAR_MTRR_HOLE +#define CONFIG_VAR_MTRR_HOLE 1 +#endif + struct var_mtrr_state { unsigned long range_startk, range_sizek; unsigned int reg; +#if CONFIG_VAR_MTRR_HOLE unsigned long hole_startk, hole_sizek; +#endif unsigned address_bits; };
@@ -308,6 +314,7 @@ } /* Write the range mtrrs */ if (state->range_sizek != 0) { +#if CONFIG_VAR_MTRR_HOLE if (state->hole_sizek == 0) { /* We need to put that on to hole */ unsigned long endk = basek + sizek; @@ -316,17 +323,22 @@ state->range_sizek = endk - state->range_startk; return; } +#endif state->reg = range_to_mtrr(state->reg, state->range_startk, state->range_sizek, basek, MTRR_TYPE_WRBACK, state->address_bits); +#if CONFIG_VAR_MTRR_HOLE state->reg = range_to_mtrr(state->reg, state->hole_startk, state->hole_sizek, basek, MTRR_TYPE_UNCACHEABLE, state->address_bits); +#endif state->range_startk = 0; state->range_sizek = 0; +#if CONFIG_VAR_MTRR_HOLE state->hole_startk = 0; state->hole_sizek = 0; +#endif } /* Allocate an msr */ - printk_spew(" Allocate an msr - basek = %d, sizek = %d,\n", basek, sizek); + printk_spew(" Allocate an msr - basek = %08x, sizek = %08x,\n", basek, sizek); state->range_startk = basek; state->range_sizek = sizek; } @@ -377,8 +389,10 @@ */ var_state.range_startk = 0; var_state.range_sizek = 0; +#if CONFIG_VAR_MTRR_HOLE var_state.hole_startk = 0; var_state.hole_sizek = 0; +#endif var_state.reg = 0; var_state.address_bits = address_bits; search_global_resources( @@ -388,8 +402,10 @@ /* Write the last range */ var_state.reg = range_to_mtrr(var_state.reg, var_state.range_startk, var_state.range_sizek, 0, MTRR_TYPE_WRBACK, var_state.address_bits); +#if CONFIG_VAR_MTRR_HOLE var_state.reg = range_to_mtrr(var_state.reg, var_state.hole_startk, var_state.hole_sizek, 0, MTRR_TYPE_UNCACHEABLE, var_state.address_bits); +#endif printk_debug("DONE variable MTRRs\n"); printk_debug("Clear out the extra MTRR's\n"); /* Clear out the extra MTRR's */