LCOV - code coverage report
Current view: top level - zephyr/arch/arm64 - thread_stack.h Hit Total Coverage
Test: new.info Lines: 0 7 0.0 %
Date: 2024-12-22 00:14:23

          Line data    Source code
       1           0 : /*
       2             :  * Copyright (c) 2020 Carlo Caione <ccaione@baylibre.com>
       3             :  *
       4             :  * SPDX-License-Identifier: Apache-2.0
       5             :  */
       6             : 
       7             : #ifndef ZEPHYR_INCLUDE_ARCH_ARM64_THREAD_STACK_H_
       8             : #define ZEPHYR_INCLUDE_ARCH_ARM64_THREAD_STACK_H_
       9             : 
      10             : #include <zephyr/arch/arm64/mm.h>
      11             : 
      12           0 : #define ARCH_STACK_PTR_ALIGN                    16
      13             : 
      14             : #if defined(CONFIG_USERSPACE) || defined(CONFIG_ARM64_STACK_PROTECTION)
      15             : #define Z_ARM64_STACK_BASE_ALIGN                MEM_DOMAIN_ALIGN_AND_SIZE
      16             : #define Z_ARM64_STACK_SIZE_ALIGN                MEM_DOMAIN_ALIGN_AND_SIZE
      17             : #else
      18             : #define Z_ARM64_STACK_BASE_ALIGN                ARCH_STACK_PTR_ALIGN
      19             : #define Z_ARM64_STACK_SIZE_ALIGN                ARCH_STACK_PTR_ALIGN
      20             : #endif
      21             : 
      22             : #if defined(CONFIG_ARM64_STACK_PROTECTION)
      23             : #define Z_ARM64_STACK_GUARD_SIZE                MEM_DOMAIN_ALIGN_AND_SIZE
      24             : #define Z_ARM64_K_STACK_BASE_ALIGN              MEM_DOMAIN_ALIGN_AND_SIZE
      25             : #else
      26             : #define Z_ARM64_STACK_GUARD_SIZE                0
      27             : #define Z_ARM64_K_STACK_BASE_ALIGN              ARCH_STACK_PTR_ALIGN
      28             : #endif
      29             : 
      30             : /*
      31             :  * [ see also comments in arch/arm64/core/thread.c ]
      32             :  *
      33             :  * High memory addresses
      34             :  *
      35             :  * +-------------------+ <- thread.stack_info.start + thread.stack_info.size
      36             :  * |       TLS         |
      37             :  * +-------------------+ <- initial sp (computable with thread.stack_info.delta)
      38             :  * |                   |
      39             :  * |    Used stack     |
      40             :  * |                   |
      41             :  * +...................+ <- thread's current stack pointer
      42             :  * |                   |
      43             :  * |   Unused stack    |
      44             :  * |                   |
      45             :  * +-------------------+ <- thread.stack_info.start
      46             :  * | Privileged stack  | } K_(THREAD|KERNEL)_STACK_RESERVED
      47             :  * +-------------------+ <- thread stack limit (update on every context switch)
      48             :  * |    Stack guard    | } Z_ARM64_STACK_GUARD_SIZE (protected by MMU/MPU)
      49             :  * +-------------------+ <- thread.stack_obj
      50             :  *
      51             :  * Low Memory addresses
      52             :  */
      53             : 
      54             : /* thread stack */
      55           0 : #define ARCH_THREAD_STACK_OBJ_ALIGN(size)       Z_ARM64_STACK_BASE_ALIGN
      56           0 : #define ARCH_THREAD_STACK_SIZE_ADJUST(size)     \
      57             :         ROUND_UP((size), Z_ARM64_STACK_SIZE_ALIGN)
      58           0 : #define ARCH_THREAD_STACK_RESERVED              CONFIG_PRIVILEGED_STACK_SIZE + \
      59             :         Z_ARM64_STACK_GUARD_SIZE
      60             : 
      61             : /* kernel stack */
      62           0 : #define ARCH_KERNEL_STACK_RESERVED              Z_ARM64_STACK_GUARD_SIZE
      63           0 : #define ARCH_KERNEL_STACK_OBJ_ALIGN             Z_ARM64_K_STACK_BASE_ALIGN
      64             : 
      65             : #ifndef _ASMLANGUAGE
      66             : 
      67             : struct z_arm64_thread_stack_header {
      68             :         char privilege_stack[CONFIG_PRIVILEGED_STACK_SIZE];
      69             : } __packed __aligned(Z_ARM64_STACK_BASE_ALIGN);
      70             : 
      71             : #endif /* _ASMLANGUAGE */
      72             : 
      73             : #endif /* ZEPHYR_INCLUDE_ARCH_ARM64_THREAD_STACK_H_ */

Generated by: LCOV version 1.14