1 /* 2 * Copyright (C) 2022, Synopsys, Inc. (www.synopsys.com) 3 * 4 * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball. 5 */ 6 7 #ifndef _ARC_ASM_H 8 #define _ARC_ASM_H 9 10 /* 11 * Some 16-bit instructions were excluded from the ARCv3 ISA 12 * the following macros are introduced to handle these changes in one place. 13 * This will allow not to change existing ARCv2 code and use 16-bit versions 14 * of instructions for ARCv2 and replace them with 32-bit vesrions for ARCv3 15 */ 16 17 #if defined (__ARC64_ARCH32__) 18 19 .macro PUSHR reg 20 push \reg 21 .endm 22 23 .macro PUSHR_S reg 24 push \reg 25 .endm 26 27 .macro POPR reg 28 pop \reg 29 .endm 30 31 .macro POPR_S reg 32 pop \reg 33 .endm 34 35 .macro SUBR_S dst,src1,src2 36 sub \dst, \src1, \src2 37 .endm 38 39 .macro ADDR_S dst,src1,src2 40 add \dst, \src1, \src2 41 .endm 42 43 .macro ASRR_S dst,src1,src2 44 asr \dst, \src1, \src2 45 .endm 46 47 .macro ASLR_S dst,src1,src2 48 asl \dst, \src1, \src2 49 .endm 50 51 #elif defined (__ARC64_ARCH64__) 52 53 # error ARCv3 64-bit is not supported by uClibc-ng 54 55 #else /* ARCHS || ARC700 */ 56 57 .macro PUSHR reg 58 push \reg 59 .endm 60 61 .macro PUSHR_S reg 62 push_s \reg 63 .endm 64 65 .macro POPR reg 66 pop \reg 67 .endm 68 69 .macro POPR_S reg 70 pop_s \reg 71 .endm 72 73 .macro SUBR_S dst,src1,src2 74 sub_s \dst, \src1, \src2 75 .endm 76 77 .macro ADDR_S dst,src1,src2 78 add_s \dst, \src1, \src2 79 .endm 80 81 .macro ASRR_S dst,src1,src2 82 asr_s \dst, \src1, \src2 83 .endm 84 85 .macro ASLR_S dst,src1,src2 86 asl_s \dst, \src1, \src2 87 .endm 88 89 #endif 90 91 #endif /* _ARC_ASM_H */ 92