ron minnich wrote: > restoring it post-jump would not help Ron, please do read the commit messages. Or please do read the code.
For convenience I'm attaching both log and code as a text file. //Peter
$ git log -p --reverse src/cpu/x86/16bit/reset16.inc commit fcd5ace00b333ce31b11b02a2243dfbf39307f10 Author: Eric Biederman <[email protected]> Date: Thu Oct 14 19:29:29 2004 +0000 - Add new cvs code to cvs git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1657 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1 diff --git a/src/cpu/x86/16bit/reset16.inc b/src/cpu/x86/16bit/reset16.inc new file mode 100644 index 0000000..d36c940 --- /dev/null +++ b/src/cpu/x86/16bit/reset16.inc @@ -0,0 +1,21 @@ + .section ".reset" + .code16 +.globl reset_vector +reset_vector: +#if _ROMBASE >= 0xffff0000 + /* jmp _start */ + .byte 0xe9 + .int _start - ( . + 2 ) + /* Note: The above jump is hand coded to work around bugs in binutils. + * 5 byte are used for a 3 byte instruction. This works because x86 + * is little endian and allows us to use supported 32bit relocations + * instead of the weird 16 bit relocations that binutils does not + * handle consistenly between versions because they are used so rarely. + */ +#else +# error _ROMBASE is an unsupported value +#endif + . = 0x8; + .code32 + jmp protected_start + .previous commit f8a2dddb573faef41ad43ee111d91d4c5259ad59 Author: Eric Biederman <[email protected]> Date: Sat Oct 30 08:05:41 2004 +0000 - To reduce confuse rename the parts of linuxbios bios that run from ram linuxbios_ram instead of linuxbios_c and linuxbios_payload... - Reordered the linker sections so the LinuxBIOS fallback image can take more the 64KiB on x86 - ROM_IMAGE_SIZE now will work when it is specified as larger than 64KiB. - Tweaked the reset16.inc and reset16.lds to move the sanity check to see if everything will work. - Start using romcc's built in preprocessor (This will simplify header compiler checks) - Add helper functions for examining all of the resources - Remove debug strings from chip.h - Add llshell to src/arch/i386/llshell (Sometime later I can try it...) - Add the ability to catch exceptions on x86 - Add gdb_stub support to x86 - Removed old cpu options - Added an option so we can detect movnti support - Remove some duplicate definitions from pci_ids.h - Remove the 64bit resource code in amdk8/northbridge.c in preparation for making it generic - Minor romcc bug fixes git-svn-id: svn://svn.coreboot.org/coreboot/trunk@1727 2b7e53f0-3cfb-0310-b3e9-8179ed1497e1 diff --git a/src/cpu/x86/16bit/reset16.inc b/src/cpu/x86/16bit/reset16.inc index d36c940..1be0e3a 100644 --- a/src/cpu/x86/16bit/reset16.inc +++ b/src/cpu/x86/16bit/reset16.inc @@ -2,8 +2,6 @@ .code16 .globl reset_vector reset_vector: -#if _ROMBASE >= 0xffff0000 - /* jmp _start */ .byte 0xe9 .int _start - ( . + 2 ) /* Note: The above jump is hand coded to work around bugs in binutils. @@ -12,9 +10,6 @@ reset_vector: * instead of the weird 16 bit relocations that binutils does not * handle consistenly between versions because they are used so rarely. */ -#else -# error _ROMBASE is an unsupported value -#endif . = 0x8; .code32 jmp protected_start commit deda99783312ee0567465e87d4974bc434b27dcc Author: Stefan Reinauer <[email protected]> Date: Tue Apr 3 16:09:46 2012 -0700 Invalidate cache before first jump Some CPUs (Sandybridge) seem to require this, and it does not hurt on other CPUs. Change-Id: I4fdb281b2b684ab5fea999aae28ca08dce24da4d Signed-off-by: Stefan Reinauer <[email protected]> Reviewed-on: http://review.coreboot.org/869 Reviewed-by: Ronald G. Minnich <[email protected]> Tested-by: build bot (Jenkins) diff --git a/src/cpu/x86/16bit/reset16.inc b/src/cpu/x86/16bit/reset16.inc index 1be0e3a..8dba3c8 100644 --- a/src/cpu/x86/16bit/reset16.inc +++ b/src/cpu/x86/16bit/reset16.inc @@ -2,6 +2,7 @@ .code16 .globl reset_vector reset_vector: + wbinvd .byte 0xe9 .int _start - ( . + 2 ) /* Note: The above jump is hand coded to work around bugs in binutils. commit d6e4d518b1dbfdcfbea7b56113530900ba3e03b1 Author: Marc Jones <[email protected]> Date: Thu Apr 19 23:44:54 2012 -0600 Revert wbind added to the reset_vector This change reverts : Change Id I4fdb281b2b684ab5fea999aae28ca08dce24da4d The wbinvd (or invd) should not be needed at the reset vector. It causes problems with some CPUs AP init. If there is a problem with a specific CPU and it must be done at this location, it should be added conditionally. Change-Id: I85b71b0a07f039359a4fb889aaa05c75fff619be Signed-off-by: Marc Jones <[email protected]> Reviewed-on: http://review.coreboot.org/908 Tested-by: build bot (Jenkins) Reviewed-by: Peter Stuge <[email protected]> diff --git a/src/cpu/x86/16bit/reset16.inc b/src/cpu/x86/16bit/reset16.inc index 8dba3c8..1be0e3a 100644 --- a/src/cpu/x86/16bit/reset16.inc +++ b/src/cpu/x86/16bit/reset16.inc @@ -2,7 +2,6 @@ .code16 .globl reset_vector reset_vector: - wbinvd .byte 0xe9 .int _start - ( . + 2 ) /* Note: The above jump is hand coded to work around bugs in binutils. $
-- coreboot mailing list: [email protected] http://www.coreboot.org/mailman/listinfo/coreboot

