. . arch/arm/lib/stack.c

1    int arch_reserve_stacks(void)
2    {
3    #ifdef CONFIG_SPL_BUILD
4            gd->start_addr_sp -= 128;       /* leave 32 words for abort-stack */
5            gd->irq_sp = gd->start_addr_sp;
6    #else
7            /* setup stack pointer for exceptions */
8            gd->irq_sp = gd->start_addr_sp;
9    
10    # if !defined(CONFIG_ARM64)
11    #  ifdef CONFIG_USE_IRQ
12            gd->start_addr_sp -= (CONFIG_STACKSIZE_IRQ + CONFIG_STACKSIZE_FIQ);
13            debug("Reserving %zu Bytes for IRQ stack at: %08lx\n",
14                  CONFIG_STACKSIZE_IRQ + CONFIG_STACKSIZE_FIQ, gd->start_addr_sp);
15    
16            /* 8-byte alignment for ARM ABI compliance */
17            gd->start_addr_sp &= ~0x07;
18    #  endif
19            /* leave 3 words for abort-stack, plus 1 for alignment */
20            gd->start_addr_sp -= 16;
21    # endif
22    #endif
23    
24            return 0;
25    }
  • 3번 줄의 CONFIG_SPL_BUILD은 정의되어 있지 않아 if문은 수행되지 않습니다.
  • 10번 줄에서 우리는 ARM 32bit용으로 build하였으므로 if문이 수행됩니다.
  • 11번 줄에서 CONFIG_USE_IRQ은 정의되어 있지 않아 if문은 수행되지 않습니다.

results matching ""

    No results matching ""