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