1 #ifndef __ARM_ASM_DEFNS_H__
2 #define __ARM_ASM_DEFNS_H__
3 
4 #ifndef COMPILE_OFFSETS
5 /* NB. Auto-generated from arch/.../asm-offsets.c */
6 #include <asm/asm-offsets.h>
7 #endif
8 #include <asm/processor.h>
9 
10 /* Macros for generic assembly code */
11 #if defined(CONFIG_ARM_32)
12 # define __OP32
13 # define ASM_REG(index) asm("r" # index)
14 #elif defined(CONFIG_ARM_64)
15 # define __OP32 "w"
16 /*
17  * Clang < 8.0 doesn't support register alllocation using the syntax rN.
18  * See https://reviews.llvm.org/rL328829.
19  */
20 # define ASM_REG(index) asm("x" # index)
21 #else
22 # error "unknown ARM variant"
23 #endif
24 
25 #define RODATA_STR(label, msg)                  \
26 .pushsection .rodata.str, "aMS", %progbits, 1 ; \
27 label:  .asciz msg;                             \
28 .popsection
29 
30 #define ASM_INT(label, val)                 \
31     .p2align 2;                             \
32 label: .long (val);                         \
33     .size label, . - label;                 \
34     .type label, %object
35 
36 #endif /* __ARM_ASM_DEFNS_H__ */
37 /*
38  * Local variables:
39  * mode: C
40  * c-file-style: "BSD"
41  * c-basic-offset: 4
42  * indent-tabs-mode: nil
43  * End:
44  */
45