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
|