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

          Line data    Source code
       1           0 : /* SPDX-License-Identifier: Apache-2.0 */
       2             : /*
       3             :  * Copyright (C) 2021 Synopsys, Inc. (www.synopsys.com)
       4             :  *
       5             :  * Author: Vineet Gupta <vgupta@synopsys.com>
       6             :  *
       7             :  * Top level include file providing ISA pseudo-mnemonics for use in assembler
       8             :  * and inline assembly.
       9             :  *
      10             :  *  - Helps code reuse across ARC64/ARC32/ARCv2
      11             :  *    e.g. "LDR" maps to 'LD' on 32-bit ISA, 'LDL' on 64-bit ARCv2/ARC64
      12             :  *
      13             :  *  - Provides emulation with multiple instructions if the case be
      14             :  *    e.g. "DBNZ" implemented using 'SUB' and 'BRNE'
      15             :  *
      16             :  *  - Looks more complex than it really is: mainly because Kconfig defines
      17             :  *    are not "honored" in inline assembly. So each variant is unconditional
      18             :  *    code in a standalone file with Kconfig based #ifdef'ry here. During the
      19             :  *    build process, the "C" preprocessor runs through this file, leaving
      20             :  *    just the final variant include in code fed to compiler/assembler.
      21             :  */
      22             : 
      23             : #ifndef __ASM_ARC_ASM_H
      24             : #define __ASM_ARC_ASM_H 1
      25             : 
      26             : #ifdef _ASMLANGUAGE
      27             : 
      28             : #if defined(CONFIG_ISA_ARCV3) && defined(CONFIG_64BIT)
      29             : #define ARC_PTR         .xword
      30             : #define ARC_REGSZ       8
      31             : #define ARC_REGSHIFT    3
      32             : 
      33             : #if defined(__CCAC__)
      34             : #include "asm-macro-64-bit-mwdt.h"
      35             : #else
      36             : #include "asm-macro-64-bit-gnu.h"
      37             : #endif /* defined(__CCAC__) */
      38             : 
      39             : #elif defined(CONFIG_ISA_ARCV3) && !defined(CONFIG_64BIT)
      40             : #define ARC_PTR         .word
      41             : #define ARC_REGSZ       4
      42             : #define ARC_REGSHIFT    2
      43             : 
      44             : #if defined(__CCAC__)
      45             : #include "asm-macro-32-bit-mwdt.h"
      46             : #else
      47             : #include "asm-macro-32-bit-gnu.h"
      48             : #endif /* defined(__CCAC__) */
      49             : 
      50             : #else
      51             : #define ARC_PTR         .word
      52             : #define ARC_REGSZ       4
      53             : #define ARC_REGSHIFT    2
      54             : 
      55             : #if defined(__CCAC__)
      56             : #include "asm-macro-32-bit-mwdt.h"
      57             : #else
      58             : #include "asm-macro-32-bit-gnu.h"
      59             : #endif /* defined(__CCAC__) */
      60             : 
      61             : #endif
      62             : 
      63             : #else   /* !_ASMLANGUAGE */
      64             : 
      65             : #error "asm-compat macroses used not in assembler code!"
      66             : 
      67             : #endif  /* _ASMLANGUAGE */
      68             : 
      69             : #endif

Generated by: LCOV version 1.14