hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/*
 * Copyright (c) 2015 Andreas Bießmann <andreas@biessmann.org>
 *
 * Copyright (c) 2011 The Chromium OS Authors.
 * (C) Copyright 2002-2006
 * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
 *
 * (C) Copyright 2002
 * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
 * Marius Groeger <mgroeger@sysgo.de>
 *
 * SPDX-License-Identifier:    GPL-2.0+
 */
#include <common.h>
 
DECLARE_GLOBAL_DATA_PTR;
 
int arch_reserve_stacks(void)
{
#ifdef CONFIG_SPL_BUILD
   gd->start_addr_sp -= 128;    /* leave 32 words for abort-stack */
   gd->irq_sp = gd->start_addr_sp;
#else
   /* setup stack pointer for exceptions */
   gd->irq_sp = gd->start_addr_sp;
 
# if !defined(CONFIG_ARM64)
#if CONFIG_IS_ENABLED(IRQ)
#ifndef CONFIG_IRQ_STACK_SIZE
#define CONFIG_IRQ_STACK_SIZE    8192
#endif
   gd->start_addr_sp -= CONFIG_IRQ_STACK_SIZE;
 
#else
   /* leave 3 words for abort-stack, plus 1 for alignment */
   gd->start_addr_sp -= 16;
#endif
# endif
#endif
 
   return 0;
}