
It's been a while since I've posted a patch (missed the last release cycle entirely). I've been working on bringing x86 into line with ARM and PowerPC with the init sequence running in flash. Currently, the SDRAM gets initialised in asm before jumping into C and the first thing the C code did was copy U-Boot to RAM.
The breakthrough came when I discovered that the sc520 CPU can be configured to enable the 16kB cache to be used as Cache-As-RAM (Thanks to Juergen Beisert). The 'big' changes in this series are:
- Memory initialisation is done in C (26) - The initial global data is placed in CAR (Patches 24 & 36) - These are interesting and could be used to get rid of the fixed register for global data, but that would break the standalone API which uses it - Board initialisation moved into RAM (patches 27 - 34)
The fist 22 patches are mostly cleanups to make the remaining patches a little simpler.
Regards,
Graeme
Graeme Russ (36): x86 - Fix definition of global_data struct for asm-offsets.c x86 - Fix mangled umlauts x86 - Move config.mk options to arch/i386/config.mk x86 - move linker script into arch folder x86 - Paramatize link locations x86 - Add stack dump to register dump x86 - Parametize location of Real Mode code x86 - Move Global Descriptor Table defines to processor.h x86 - Add processor flags header from linux x86 - Call early_board_init when warm booting x86 - Make cpu init functions weak sc520 - Sort Makefile sc520 - Define MMCR address in include file sc520 - Move board specific settings to board init function sc520 - Remove printf calls from cpu_init_f eNET - Remove --no-warn when compiling dlmalloc.c eNET - Fix eNET Interrupt Setup for Linux eNET - Add RTC support to eNET eNET - Update board configurations eNET - Define MMCR values in config.h eNET - Define PAR settings in board configuration file eNET - Rearrange PAR assignments sc520 - Init SDRAM PAR early x86 - Move initial gd to fixed location x86 - Use Cache-As-RAM for initial stack sc520 - Move RAM sizing code from asm to C x86 - Defer setup of final stack x86 - Move call to dram_init_f into board_init_f x86 - Move test for cold boot into init functions x86 - Move console initialisation into board_init_f x86 - Fix incorrect usage of relocation offset x86 - Split board_init_f() into init_fnc_t compatible functions x86 - Rearrange function calls in board_init_f x86 - Convert board_init_f to use an init_sequence sc520 - Release CAR and enable caching eNET - Move initial Global Data into CAR
arch/i386/config.mk | 13 +- arch/i386/cpu/config.mk | 9 +- arch/i386/cpu/cpu.c | 35 ++- arch/i386/cpu/interrupts.c | 19 +- arch/i386/cpu/sc520/Makefile | 5 +- arch/i386/cpu/sc520/sc520.c | 146 +------- arch/i386/cpu/sc520/sc520_asm.S | 615 ------------------------------- arch/i386/cpu/sc520/sc520_car.S | 94 +++++ arch/i386/cpu/sc520/sc520_sdram.c | 522 ++++++++++++++++++++++++++ arch/i386/cpu/start.S | 107 +++--- arch/i386/cpu/start16.S | 5 +- arch/i386/cpu/u-boot.lds | 96 +++++ arch/i386/include/asm/global_data.h | 21 +- arch/i386/include/asm/ic/sc520.h | 70 ++++- arch/i386/include/asm/processor-flags.h | 100 +++++ arch/i386/include/asm/processor.h | 9 +- arch/i386/include/asm/u-boot-i386.h | 2 + arch/i386/lib/board.c | 148 +++++--- arch/i386/lib/realmode.c | 7 +- board/eNET/config.mk | 6 +- board/eNET/eNET.c | 120 ++++--- board/eNET/eNET_start.S | 3 +- board/eNET/eNET_start16.S | 16 +- board/eNET/u-boot.lds | 104 ------ boards.cfg | 3 +- drivers/rtc/mc146818.c | 6 + include/configs/eNET.h | 147 ++++++++- 27 files changed, 1351 insertions(+), 1077 deletions(-) delete mode 100644 arch/i386/cpu/sc520/sc520_asm.S create mode 100644 arch/i386/cpu/sc520/sc520_car.S create mode 100644 arch/i386/cpu/sc520/sc520_sdram.c create mode 100644 arch/i386/cpu/u-boot.lds create mode 100644 arch/i386/include/asm/processor-flags.h delete mode 100644 board/eNET/u-boot.lds