summaryrefslogtreecommitdiff
path: root/arch/i386/cpu
AgeCommit message (Collapse)Author
2010-10-07x86: Implement fully relocatable imageGraeme Russ
u-boot.bin can be loaded at any 4-byte aligned memory location and directly 'jumped' to using the 'go' command using the load address as the start address. Doing so performs a 'warm boot' which skips memory initialisation and other low-level initialisations, relocates U-Boot to upper memory and starts U-Boot in RAM as per normal 'cold boot'
2010-10-07x86: Set cold/warm boot flagGraeme Russ
2010-10-07x86: Place global data below stack before entering CGraeme Russ
By reserving space for the Global Data immediately below the stack during assembly level initialisation, the C declaration of the static global data can be removed, along with the 'RAM Bootstrap' function. This results in cleaner code, and the ability to pass boot-up flags from assembler into C
2010-10-07x86: Dont clobber %eax after getting memory sizeGraeme Russ
By using another register, reduce code size by one instruction
2010-10-07x86: Don't clobber %ebxGraeme Russ
%ebx will hold low-level boot flags and must be preserved
2010-10-07x86: Remove usage of %ebp as a return pointerGraeme Russ
Using %ebp as a return pointer prevents creating 'load anywhere' images
2010-10-07x86: Move ECC initialisation outside RAM initialisationGraeme Russ
To allow for 'load anywhere' images, the %ebp return pointer 'hack' must be removed, so we cannot have two 'calls' to get_mem_size
2010-10-07x86: Remove progress indication in low-level initGraeme Russ
Progress indication is not relocation friendly so remove it in preperation for full relocatability support
2010-10-07x86: Fix %ss and %esp in register structure for interruptsGraeme Russ
2010-10-07x86: Change compiler optionsGraeme Russ
Change to: - reparam=3 - no-from-pointer - no-stack-protector - preferred-stack-boundary=2 - no-top-level-reorder These options make the code a little smaller and faster
2010-10-07x86: Coding Style CleanupGraeme Russ
Perform some basic code cleanups of the x86 files
2010-10-07x86: Move loading of GTD to C codeGraeme Russ
Linux has C macros and code to load the GTD after switching to Protected Mode. Using these greatly simplifies the assembler code
2010-09-13x86: Fix x86 Cold BootGraeme Russ
Commit 077e1958ca4afe12d88043b123ded058c51b89f7 broke the ability of the x86 port to boot from a cold-reset by removing the initial IDT. Re- instate the initial IDT to allow cold-booting of x86 boards
2010-07-04Make sure that argv[] argument pointers are not modified.Wolfgang Denk
The hush shell dynamically allocates (and re-allocates) memory for the argument strings in the "char *argv[]" argument vector passed to commands. Any code that modifies these pointers will cause serious corruption of the malloc data structures and crash U-Boot, so make sure the compiler can check that no such modifications are being done by changing the code into "char * const argv[]". This modification is the result of debugging a strange crash caused after adding a new command, which used the following argument processing code which has been working perfectly fine in all Unix systems since version 6 - but not so in U-Boot: int main (int argc, char **argv) { while (--argc > 0 && **++argv == '-') { /* ====> */ while (*++*argv) { switch (**argv) { case 'd': debug++; break; ... default: usage (); } } } ... } The line marked "====>" will corrupt the malloc data structures and usually cause U-Boot to crash when the next command gets executed by the shell. With the modification, the compiler will prevent this with an error: increment of read-only location '*argv' N.B.: The code above can be trivially rewritten like this: while (--argc > 0 && **++argv == '-') { char *arg = *argv; while (*++arg) { switch (*arg) { ... Signed-off-by: Wolfgang Denk <wd@denx.de> Acked-by: Mike Frysinger <vapier@gentoo.org>
2010-05-06sc520: Fix minor DRAM Controller Setup bugGraeme Russ
Signed-off-by: Graeme Russ <graeme.russ@gmail.com>
2010-05-06sc520: Update to new AMD CopyrightGraeme Russ
AMD recently changed the licensing of the RAM sizing code to the GPLv2 (or at your option any later version) Signed-off-by: Graeme Russ <graeme.russ@gmail.com>
2010-05-06sc520: Board Specific PCI InitGraeme Russ
Signed-off-by: Graeme Russ <graeme.russ@gmail.com>
2010-05-06sc520: Allow boards to override udelayGraeme Russ
If the board has a high precision mico-second timer, it maked sense to use it instead of the on-chip one Signed-off-by: Graeme Russ <graeme.russ@gmail.com>
2010-05-06x86: Use CONFIG_SERIAL_MULTIGraeme Russ
Signed-off-by: Graeme Russ <graeme.russ@gmail.com>
2010-05-06x86: Move GDT to a safe location in RAMGraeme Russ
Currently, the GDT is either located in FLASH or in the non-relocated U-Boot image in RAM. Both of these locations are unsafe as those locations can be erased during a U-Boot update. Move the GDT into the highest available memory location and relocate U-Boot to just below it Signed-off-by: Graeme Russ <graeme.russ@gmail.com>
2010-05-06x86: Add RAM bootstrap functionalityGraeme Russ
Add a parameter to the 32-bit entry to indicate if entry is from Real Mode or not. If entry is from Real Mode, execute the destructive 'sizer' routine to determine memory size as we are booting cold and running in Flash. If not entering from Real Mode, we are executing a U-Boot image from RAM and therefore the memory size is already known (and running 'sizer' will destroy the running image) There are now two 32-bit entry points. The first is the 'in RAM' entry point which exists at the start of the U-Boot binary image. As such, you can load u-boot.bin in RAM and jump directly to the load address without needing to calculate any offsets. The second entry point is used by the real-to-protected mode switch This patch also changes TEXT_BASE to 0x6000000 (in RAM). You can load the resulting image at 0x6000000 and simple go 0x6000000 from the u-boot prompt Hopefully a later patch will completely elliminate any dependency on TEXT_BASE like a relocatable linux kernel (perfect world) Signed-off-by: Graeme Russ <graeme.russ@gmail.com>
2010-05-06x86: Split sc520 memory sizing versus reportingGraeme Russ
This patch allows the low-level assembler boot-strap to obtain the RAM size without calling the destructive 'sizer' routine. This allows boot-strapping from a U-Boot image loaded in RAM Signed-off-by: Graeme Russ <graeme.russ@gmail.com>
2010-05-06x86: Fix sc520 memory size reportingGraeme Russ
There is an error in how the assembler version of the sc520 memory size reporting code works. As a result, it will only ever report at most the size of one bank of RAM Signed-off-by: Graeme Russ <graeme.russ@gmail.com>
2010-05-06x86: Add register dump to crash handlersGraeme Russ
Shamelessly steal the Linux x86 crash handling code and shove it into U-Boot (cool - it fits). Be sure to include suitable attribution to Linus Signed-off-by: Graeme Russ <graeme.russ@gmail.com>
2010-05-06x86: Fix MMCR AccessGraeme Russ
Change sc520 MMCR Access to use memory accessor functions Signed-off-by: Graeme Russ <graeme.russ@gmail.com>
2010-04-13i386: Move cpu/i386/* to arch/i386/cpu/*Peter Tyser
Signed-off-by: Peter Tyser <ptyser@xes-inc.com>