LCOV - code coverage report
Current view: top level - zephyr/linker - linker-devnull.h Coverage Total Hit
Test: new.info Lines: 0.0 % 1 0
Test Date: 2025-09-05 16:43:28

            Line data    Source code
       1            0 : /*
       2              :  * Copyright (c) 2023 Nordic Semiconductor ASA
       3              :  *
       4              :  * SPDX-License-Identifier: Apache-2.0
       5              :  */
       6              : 
       7              : /*
       8              :  * DESCRIPTION
       9              :  * Platform independent set of macros for creating a memory segment for
      10              :  * aggregating data that shall be kept in the elf file but not in the binary.
      11              :  */
      12              : 
      13              : #ifndef ZEPHYR_INCLUDE_LINKER_LINKER_DEVNULL_H_
      14              : #define ZEPHYR_INCLUDE_LINKER_LINKER_DEVNULL_H_
      15              : 
      16              : #if defined(CONFIG_LINKER_DEVNULL_MEMORY)
      17              : 
      18              : #if defined(CONFIG_XIP)
      19              : #if (!defined(ROM_ADDR) && !defined(ROM_BASE)) || !defined(ROM_SIZE)
      20              : #error "ROM_SIZE, ROM_ADDR or ROM_BASE not defined"
      21              : #endif
      22              : #endif /* CONFIG_XIP */
      23              : 
      24              : #if (!defined(RAM_ADDR) && !defined(RAM_BASE)) || !defined(RAM_SIZE)
      25              : #error "RAM_SIZE, RAM_ADDR or RAM_BASE not defined"
      26              : #endif
      27              : 
      28              : #if defined(CONFIG_XIP) && !defined(ROM_ADDR)
      29              : #define ROM_ADDR ROM_BASE
      30              : #endif
      31              : 
      32              : #if !defined(RAM_ADDR)
      33              : #define RAM_ADDR RAM_BASE
      34              : #endif
      35              : 
      36              : #define ROM_END_ADDR (ROM_ADDR + ROM_SIZE)
      37              : #define DEVNULL_SIZE CONFIG_LINKER_DEVNULL_MEMORY_SIZE
      38              : #define ROM_DEVNULL_END_ADDR (ROM_END_ADDR + DEVNULL_SIZE)
      39              : #define MAX_ADDR UINT32_MAX
      40              : 
      41              : /* Determine where to put the devnull region. It should be adjacent to the ROM
      42              :  * region. If ROM starts after RAM or the distance between ROM and RAM is big
      43              :  * enough to fit the devnull region then devnull region is placed just after
      44              :  * the ROM region. If it cannot be done then the devnull region is placed before
      45              :  * the ROM region. It is possible that the devnull region cannot be placed
      46              :  * adjacent to the ROM (e.g. ROM starts at 0 and RAM follows ROM). In that
      47              :  * case compilation fails and the devnull region is not supported in that
      48              :  * configuration.
      49              :  */
      50              : #if !defined(CONFIG_XIP)
      51              : 
      52              : #if RAM_ADDR >= DEVNULL_SIZE
      53              : #define DEVNULL_ADDR (RAM_ADDR - DEVNULL_SIZE)
      54              : #else
      55              : #define DEVNULL_ADDR (RAM_ADDR + RAM_SIZE)
      56              : #endif
      57              : 
      58              : #else /* CONFIG_XIP */
      59              : 
      60              : #if ((ROM_ADDR > RAM_ADDR) && ((MAX_ADDR - ROM_END_ADDR) >= DEVNULL_SIZE)) || \
      61              :         ((ROM_END_ADDR + DEVNULL_SIZE) <= RAM_ADDR)
      62              : #define DEVNULL_ADDR ROM_END_ADDR
      63              : #elif ROM_ADDR > DEVNULL_SIZE
      64              : #define DEVNULL_ADDR (ROM_ADDR - DEVNULL_SIZE)
      65              : #else
      66              : #error "Cannot place devnull segment adjacent to ROM region."
      67              : #endif
      68              : 
      69              : #endif /* CONFIG_XIP */
      70              : 
      71              : #define DEVNULL_REGION DEVNULL_ROM
      72              : 
      73              : #endif /* CONFIG_LINKER_DEVNULL_MEMORY */
      74              : 
      75              : #endif /* ZEPHYR_INCLUDE_LINKER_LINKER_DEVNULL_H_ */
        

Generated by: LCOV version 2.0-1