"Das U-Boot" Source Tree
at master 48 lines 1.2 kB view raw
1// SPDX-License-Identifier: GPL-2.0+ 2/* 3 * Copyright (c) 2015 Andreas Bießmann <andreas@biessmann.org> 4 * 5 * Copyright (c) 2011 The Chromium OS Authors. 6 * (C) Copyright 2002-2006 7 * Wolfgang Denk, DENX Software Engineering, wd@denx.de. 8 * 9 * (C) Copyright 2002 10 * Sysgo Real-Time Solutions, GmbH <www.elinos.com> 11 * Marius Groeger <mgroeger@sysgo.de> 12 */ 13#include <init.h> 14#include <asm/global_data.h> 15#include <asm/mp.h> 16 17DECLARE_GLOBAL_DATA_PTR; 18 19int arch_reserve_stacks(void) 20{ 21 ulong *s; 22 23 /* setup stack pointer for exceptions */ 24 gd->irq_sp = gd->start_addr_sp; 25 26 /* Clear initial stack frame */ 27 s = (ulong *)gd->start_addr_sp; 28 *s = 0; /* Terminate back chain */ 29 *++s = 0; /* NULL return address */ 30 31 return 0; 32} 33 34int arch_setup_dest_addr(void) 35{ 36#if defined(CONFIG_MP) && (defined(CONFIG_MPC86xx) || defined(CONFIG_E500)) 37 /* 38 * We need to make sure the location we intend to put secondary core 39 * boot code is reserved and not used by any part of u-boot 40 */ 41 if (gd->relocaddr > determine_mp_bootpg(NULL)) { 42 gd->relocaddr = determine_mp_bootpg(NULL); 43 debug("Reserving MP boot page to %08lx\n", gd->relocaddr); 44 } 45#endif 46 47 return 0; 48}