1*83d290c5STom Rini // SPDX-License-Identifier: GPL-2.0+ 268145d4cSAndreas Bießmann /* 309c2b8f3SAndreas Bießmann * Copyright (c) 2015 Andreas Bießmann <andreas@biessmann.org> 468145d4cSAndreas Bießmann * 568145d4cSAndreas Bießmann * Copyright (c) 2011 The Chromium OS Authors. 668145d4cSAndreas Bießmann * (C) Copyright 2002-2006 768145d4cSAndreas Bießmann * Wolfgang Denk, DENX Software Engineering, wd@denx.de. 868145d4cSAndreas Bießmann * 968145d4cSAndreas Bießmann * (C) Copyright 2002 1068145d4cSAndreas Bießmann * Sysgo Real-Time Solutions, GmbH <www.elinos.com> 1168145d4cSAndreas Bießmann * Marius Groeger <mgroeger@sysgo.de> 1268145d4cSAndreas Bießmann */ 1368145d4cSAndreas Bießmann #include <common.h> 1468145d4cSAndreas Bießmann 1568145d4cSAndreas Bießmann DECLARE_GLOBAL_DATA_PTR; 1668145d4cSAndreas Bießmann arch_reserve_stacks(void)1768145d4cSAndreas Bießmannint arch_reserve_stacks(void) 1868145d4cSAndreas Bießmann { 1968145d4cSAndreas Bießmann #ifdef CONFIG_SPL_BUILD 2068145d4cSAndreas Bießmann gd->start_addr_sp -= 128; /* leave 32 words for abort-stack */ 2168145d4cSAndreas Bießmann gd->irq_sp = gd->start_addr_sp; 2268145d4cSAndreas Bießmann #else 2368145d4cSAndreas Bießmann /* setup stack pointer for exceptions */ 2468145d4cSAndreas Bießmann gd->irq_sp = gd->start_addr_sp; 2568145d4cSAndreas Bießmann 2668145d4cSAndreas Bießmann # if !defined(CONFIG_ARM64) 2768145d4cSAndreas Bießmann /* leave 3 words for abort-stack, plus 1 for alignment */ 2868145d4cSAndreas Bießmann gd->start_addr_sp -= 16; 2968145d4cSAndreas Bießmann # endif 3068145d4cSAndreas Bießmann #endif 3168145d4cSAndreas Bießmann 3268145d4cSAndreas Bießmann return 0; 3368145d4cSAndreas Bießmann } 34