From c841beeddebece0039e724fb27f4d1a39ee1c6b6 Mon Sep 17 00:00:00 2001 From: Haavard Skinnemoen Date: Sat, 18 Nov 2006 17:15:30 +0100 Subject: [PATCH] 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 --- cpu/at32ap/start.S | 2 +- lib_avr32/board.c | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/cpu/at32ap/start.S b/cpu/at32ap/start.S index 79ee33b1fa..4ae0b5480e 100644 --- a/cpu/at32ap/start.S +++ b/cpu/at32ap/start.S @@ -95,7 +95,7 @@ _start: /* Initialize the GOT pointer */ lddpc r6, got_init 3: rsub r6, pc - ld.w pc, r6[start_u_boot@got] + ld.w pc, r6[board_init_f@got] .align 2 .type sp_init,@object diff --git a/lib_avr32/board.c b/lib_avr32/board.c index 02c106b80e..c531eef713 100644 --- a/lib_avr32/board.c +++ b/lib_avr32/board.c @@ -122,7 +122,7 @@ static void display_flash_config (void) 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; @@ -130,8 +130,6 @@ void start_u_boot (void) memset(&gd_data, 0, sizeof(gd_data)); gd = &gd_data; - monitor_flash_len = _edata - _text; - /* Perform initialization sequence */ cpu_init(); timer_init(); @@ -140,10 +138,18 @@ void start_u_boot (void) serial_init(); console_init_f(); display_banner(); - 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)); memset(gd->bd, 0, sizeof(bd_t)); gd->bd->bi_baudrate = gd->baudrate; -- 2.30.2