mirror of
https://github.com/Stichting-MINIX-Research-Foundation/u-boot.git
synced 2025-09-08 11:36:21 -04:00
Merge branch 'master' of git://git.denx.de/u-boot-mips
This commit is contained in:
commit
3680aed04f
@ -243,9 +243,11 @@ reset:
|
|||||||
mtc0 zero, CP0_COUNT
|
mtc0 zero, CP0_COUNT
|
||||||
mtc0 zero, CP0_COMPARE
|
mtc0 zero, CP0_COMPARE
|
||||||
|
|
||||||
|
#if !defined(CONFIG_SKIP_LOWLEVEL_INIT)
|
||||||
/* CONFIG0 register */
|
/* CONFIG0 register */
|
||||||
li t0, CONF_CM_UNCACHED
|
li t0, CONF_CM_UNCACHED
|
||||||
mtc0 t0, CP0_CONFIG
|
mtc0 t0, CP0_CONFIG
|
||||||
|
#endif /* !CONFIG_SKIP_LOWLEVEL_INIT */
|
||||||
|
|
||||||
/* Initialize $gp.
|
/* Initialize $gp.
|
||||||
*/
|
*/
|
||||||
@ -255,6 +257,7 @@ reset:
|
|||||||
1:
|
1:
|
||||||
lw gp, 0(ra)
|
lw gp, 0(ra)
|
||||||
|
|
||||||
|
#if !defined(CONFIG_SKIP_LOWLEVEL_INIT)
|
||||||
/* Initialize any external memory.
|
/* Initialize any external memory.
|
||||||
*/
|
*/
|
||||||
la t9, lowlevel_init
|
la t9, lowlevel_init
|
||||||
@ -271,6 +274,7 @@ reset:
|
|||||||
*/
|
*/
|
||||||
li t0, CONF_CM_CACHABLE_NONCOHERENT
|
li t0, CONF_CM_CACHABLE_NONCOHERENT
|
||||||
mtc0 t0, CP0_CONFIG
|
mtc0 t0, CP0_CONFIG
|
||||||
|
#endif /* !CONFIG_SKIP_LOWLEVEL_INIT */
|
||||||
|
|
||||||
/* Set up temporary stack.
|
/* Set up temporary stack.
|
||||||
*/
|
*/
|
||||||
@ -307,6 +311,7 @@ relocate_code:
|
|||||||
la t3, in_ram
|
la t3, in_ram
|
||||||
lw t2, -12(t3) /* t2 <-- uboot_end_data */
|
lw t2, -12(t3) /* t2 <-- uboot_end_data */
|
||||||
move t1, a2
|
move t1, a2
|
||||||
|
move s2, a2 /* s2 <-- destination address */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Fix $gp:
|
* Fix $gp:
|
||||||
@ -316,13 +321,21 @@ relocate_code:
|
|||||||
move t6, gp
|
move t6, gp
|
||||||
sub gp, CONFIG_SYS_MONITOR_BASE
|
sub gp, CONFIG_SYS_MONITOR_BASE
|
||||||
add gp, a2 /* gp now adjusted */
|
add gp, a2 /* gp now adjusted */
|
||||||
sub t6, gp, t6 /* t6 <-- relocation offset */
|
sub s1, gp, t6 /* s1 <-- relocation offset */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* t0 = source address
|
* t0 = source address
|
||||||
* t1 = target address
|
* t1 = target address
|
||||||
* t2 = source end address
|
* t2 = source end address
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Save destination address and size for later usage in flush_cache()
|
||||||
|
*/
|
||||||
|
move s0, a1 /* save gd in s0 */
|
||||||
|
move a0, t1 /* a0 <-- destination addr */
|
||||||
|
sub a1, t2, t0 /* a1 <-- size */
|
||||||
|
|
||||||
/* On the purple board we copy the code earlier in a special way
|
/* On the purple board we copy the code earlier in a special way
|
||||||
* in order to solve flash problems
|
* in order to solve flash problems
|
||||||
*/
|
*/
|
||||||
@ -338,9 +351,14 @@ relocate_code:
|
|||||||
/* If caches were enabled, we would have to flush them here.
|
/* If caches were enabled, we would have to flush them here.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* a0 & a1 are already set up for flush_cache(start, size) */
|
||||||
|
la t9, flush_cache
|
||||||
|
jalr t9
|
||||||
|
nop
|
||||||
|
|
||||||
/* Jump to where we've relocated ourselves.
|
/* Jump to where we've relocated ourselves.
|
||||||
*/
|
*/
|
||||||
addi t0, a2, in_ram - _start
|
addi t0, s2, in_ram - _start
|
||||||
jr t0
|
jr t0
|
||||||
nop
|
nop
|
||||||
|
|
||||||
@ -367,7 +385,7 @@ in_ram:
|
|||||||
1:
|
1:
|
||||||
lw t1, 0(t4)
|
lw t1, 0(t4)
|
||||||
beqz t1, 2f
|
beqz t1, 2f
|
||||||
add t1, t6
|
add t1, s1
|
||||||
sw t1, 0(t4)
|
sw t1, 0(t4)
|
||||||
2:
|
2:
|
||||||
addi t2, 1
|
addi t2, 1
|
||||||
@ -378,8 +396,8 @@ in_ram:
|
|||||||
*/
|
*/
|
||||||
lw t1, -12(t0) /* t1 <-- uboot_end_data */
|
lw t1, -12(t0) /* t1 <-- uboot_end_data */
|
||||||
lw t2, -8(t0) /* t2 <-- uboot_end */
|
lw t2, -8(t0) /* t2 <-- uboot_end */
|
||||||
add t1, t6 /* adjust pointers */
|
add t1, s1 /* adjust pointers */
|
||||||
add t2, t6
|
add t2, s1
|
||||||
|
|
||||||
sub t1, 4
|
sub t1, 4
|
||||||
1:
|
1:
|
||||||
@ -387,10 +405,10 @@ in_ram:
|
|||||||
bltl t1, t2, 1b
|
bltl t1, t2, 1b
|
||||||
sw zero, 0(t1) /* delay slot */
|
sw zero, 0(t1) /* delay slot */
|
||||||
|
|
||||||
move a0, a1
|
move a0, s0 /* a0 <-- gd */
|
||||||
la t9, board_init_r
|
la t9, board_init_r
|
||||||
jr t9
|
jr t9
|
||||||
move a1, a2 /* delay slot */
|
move a1, s2 /* delay slot */
|
||||||
|
|
||||||
.end relocate_code
|
.end relocate_code
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#include <net.h>
|
#include <net.h>
|
||||||
#include <environment.h>
|
#include <environment.h>
|
||||||
#include <nand.h>
|
#include <nand.h>
|
||||||
|
#include <onenand_uboot.h>
|
||||||
#include <spi.h>
|
#include <spi.h>
|
||||||
|
|
||||||
DECLARE_GLOBAL_DATA_PTR;
|
DECLARE_GLOBAL_DATA_PTR;
|
||||||
@ -71,6 +72,15 @@ static ulong mem_malloc_brk;
|
|||||||
*/
|
*/
|
||||||
unsigned long mips_io_port_base = -1;
|
unsigned long mips_io_port_base = -1;
|
||||||
|
|
||||||
|
int __board_early_init_f(void)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* Nothing to do in this dummy implementation
|
||||||
|
*/
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
int board_early_init_f(void) __attribute__((weak, alias("__board_early_init_f")));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* The Malloc area is immediately below the monitor copy in DRAM
|
* The Malloc area is immediately below the monitor copy in DRAM
|
||||||
*/
|
*/
|
||||||
@ -168,6 +178,7 @@ static int init_baudrate (void)
|
|||||||
typedef int (init_fnc_t) (void);
|
typedef int (init_fnc_t) (void);
|
||||||
|
|
||||||
init_fnc_t *init_sequence[] = {
|
init_fnc_t *init_sequence[] = {
|
||||||
|
board_early_init_f,
|
||||||
timer_init,
|
timer_init,
|
||||||
env_init, /* initialize environment */
|
env_init, /* initialize environment */
|
||||||
#ifdef CONFIG_INCA_IP
|
#ifdef CONFIG_INCA_IP
|
||||||
@ -378,6 +389,15 @@ void board_init_r (gd_t *id, ulong dest_addr)
|
|||||||
mem_malloc_init();
|
mem_malloc_init();
|
||||||
malloc_bin_reloc();
|
malloc_bin_reloc();
|
||||||
|
|
||||||
|
#ifdef CONFIG_CMD_NAND
|
||||||
|
puts ("NAND: ");
|
||||||
|
nand_init (); /* go init the NAND */
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(CONFIG_CMD_ONENAND)
|
||||||
|
onenand_init();
|
||||||
|
#endif
|
||||||
|
|
||||||
/* relocate environment function pointers etc. */
|
/* relocate environment function pointers etc. */
|
||||||
env_relocate();
|
env_relocate();
|
||||||
|
|
||||||
@ -419,11 +439,6 @@ void board_init_r (gd_t *id, ulong dest_addr)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef CONFIG_CMD_NAND
|
|
||||||
puts ("NAND: ");
|
|
||||||
nand_init (); /* go init the NAND */
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef CONFIG_CMD_SPI
|
#ifdef CONFIG_CMD_SPI
|
||||||
puts ("SPI: ");
|
puts ("SPI: ");
|
||||||
spi_init (); /* go init the SPI */
|
spi_init (); /* go init the SPI */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user