AVR32: Split start_u_boot into board_init_f and board_init_r

Split the avr32 initialization code into a function to run before
relocation, board_init_f and a function to run after relocation,
board_init_r. For now, board_init_f simply calls board_init_r
at the end.

Signed-off-by: Haavard Skinnemoen <hskinnemoen@atmel.com>
master
Haavard Skinnemoen 19 years ago
parent 6c9ba91937
commit c841beedde
  1. 2
      cpu/at32ap/start.S
  2. 16
      lib_avr32/board.c

@ -95,7 +95,7 @@ _start:
/* Initialize the GOT pointer */ /* Initialize the GOT pointer */
lddpc r6, got_init lddpc r6, got_init
3: rsub r6, pc 3: rsub r6, pc
ld.w pc, r6[start_u_boot@got] ld.w pc, r6[board_init_f@got]
.align 2 .align 2
.type sp_init,@object .type sp_init,@object

@ -122,7 +122,7 @@ static void display_flash_config (void)
printf("at address 0x%08lx\n", gd->bd->bi_flashstart); printf("at address 0x%08lx\n", gd->bd->bi_flashstart);
} }
void start_u_boot (void) void board_init_f(ulong unused)
{ {
gd_t gd_data; gd_t gd_data;
@ -130,8 +130,6 @@ void start_u_boot (void)
memset(&gd_data, 0, sizeof(gd_data)); memset(&gd_data, 0, sizeof(gd_data));
gd = &gd_data; gd = &gd_data;
monitor_flash_len = _edata - _text;
/* Perform initialization sequence */ /* Perform initialization sequence */
cpu_init(); cpu_init();
timer_init(); timer_init();
@ -140,10 +138,18 @@ void start_u_boot (void)
serial_init(); serial_init();
console_init_f(); console_init_f();
display_banner(); display_banner();
board_init_memories(); board_init_memories();
mem_malloc_init();
board_init_r(gd, CFG_MONITOR_BASE);
}
void board_init_r(gd_t *new_gd, ulong dest_addr)
{
gd = new_gd;
monitor_flash_len = _edata - _text;
mem_malloc_init();
gd->bd = malloc(sizeof(bd_t)); gd->bd = malloc(sizeof(bd_t));
memset(gd->bd, 0, sizeof(bd_t)); memset(gd->bd, 0, sizeof(bd_t));
gd->bd->bi_baudrate = gd->baudrate; gd->bd->bi_baudrate = gd->baudrate;

Loading…
Cancel
Save