14d93617dSAlexey Brodkin/* 24d93617dSAlexey Brodkin * Copyright (C) 2013-2014 Synopsys, Inc. All rights reserved. 34d93617dSAlexey Brodkin * 44d93617dSAlexey Brodkin * SPDX-License-Identifier: GPL-2.0+ 54d93617dSAlexey Brodkin */ 64d93617dSAlexey Brodkin 74d93617dSAlexey Brodkin#include <asm-offsets.h> 84d93617dSAlexey Brodkin#include <config.h> 94d93617dSAlexey Brodkin#include <linux/linkage.h> 104d93617dSAlexey Brodkin#include <asm/arcregs.h> 114d93617dSAlexey Brodkin 124d93617dSAlexey BrodkinENTRY(_start) 134d93617dSAlexey Brodkin /* Setup interrupt vector base that matches "__text_start" */ 144d93617dSAlexey Brodkin sr __ivt_start, [ARC_AUX_INTR_VEC_BASE] 154d93617dSAlexey Brodkin 16*3fb80163SAlexey Brodkin /* Setup stack- and frame-pointers */ 174d93617dSAlexey Brodkin mov %sp, CONFIG_SYS_INIT_SP_ADDR 184d93617dSAlexey Brodkin mov %fp, %sp 194d93617dSAlexey Brodkin 20*3fb80163SAlexey Brodkin /* Unconditionally disable caches */ 21*3fb80163SAlexey Brodkin bl flush_dcache_all 22*3fb80163SAlexey Brodkin bl dcache_disable 23*3fb80163SAlexey Brodkin bl icache_disable 244d93617dSAlexey Brodkin 254d93617dSAlexey Brodkin /* Zero the one and only argument of "board_init_f" */ 264d93617dSAlexey Brodkin mov_s %r0, 0 274d93617dSAlexey Brodkin j board_init_f 284d93617dSAlexey BrodkinENDPROC(_start) 294d93617dSAlexey Brodkin 304d93617dSAlexey Brodkin/* 31*3fb80163SAlexey Brodkin * void board_init_f_r_trampoline(stack-pointer address) 324d93617dSAlexey Brodkin * 334d93617dSAlexey Brodkin * This "function" does not return, instead it continues in RAM 344d93617dSAlexey Brodkin * after relocating the monitor code. 354d93617dSAlexey Brodkin * 36*3fb80163SAlexey Brodkin * r0 = new stack-pointer 374d93617dSAlexey Brodkin */ 38*3fb80163SAlexey BrodkinENTRY(board_init_f_r_trampoline) 39*3fb80163SAlexey Brodkin /* Set up the stack- and frame-pointers */ 40*3fb80163SAlexey Brodkin mov %sp, %r0 414d93617dSAlexey Brodkin mov %fp, %sp 424d93617dSAlexey Brodkin 434d93617dSAlexey Brodkin /* Update position of intterupt vector table */ 44*3fb80163SAlexey Brodkin lr %r0, [ARC_AUX_INTR_VEC_BASE] 45*3fb80163SAlexey Brodkin ld %r1, [%r25, GD_RELOC_OFF] 46*3fb80163SAlexey Brodkin add %r0, %r0, %r1 47*3fb80163SAlexey Brodkin sr %r0, [ARC_AUX_INTR_VEC_BASE] 484d93617dSAlexey Brodkin 49*3fb80163SAlexey Brodkin /* Re-enter U-Boot by calling board_init_f_r */ 50*3fb80163SAlexey Brodkin j board_init_f_r 51*3fb80163SAlexey BrodkinENDPROC(board_init_f_r_trampoline) 52