12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- /*
- * Copyright (C) 2022, Synopsys, Inc. (www.synopsys.com)
- *
- * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
- */
- #ifndef _ARC_ASM_H
- #define _ARC_ASM_H
- /*
- * Some 16-bit instructions were excluded from the ARCv3 ISA
- * the following macros are introduced to handle these changes in one place.
- * This will allow not to change existing ARCv2 code and use 16-bit versions
- * of instructions for ARCv2 and replace them with 32-bit vesrions for ARCv3
- */
- #if defined (__ARC64_ARCH32__)
- .macro PUSHR reg
- push \reg
- .endm
- .macro PUSHR_S reg
- push \reg
- .endm
- .macro POPR reg
- pop \reg
- .endm
- .macro POPR_S reg
- pop \reg
- .endm
- .macro SUBR_S dst,src1,src2
- sub \dst, \src1, \src2
- .endm
- .macro ADDR_S dst,src1,src2
- add \dst, \src1, \src2
- .endm
- .macro ASRR_S dst,src1,src2
- asr \dst, \src1, \src2
- .endm
- .macro ASLR_S dst,src1,src2
- asl \dst, \src1, \src2
- .endm
- #elif defined (__ARC64_ARCH64__)
- # error ARCv3 64-bit is not supported by uClibc-ng
- #else /* ARCHS || ARC700 */
- .macro PUSHR reg
- push \reg
- .endm
- .macro PUSHR_S reg
- push_s \reg
- .endm
- .macro POPR reg
- pop \reg
- .endm
- .macro POPR_S reg
- pop_s \reg
- .endm
- .macro SUBR_S dst,src1,src2
- sub_s \dst, \src1, \src2
- .endm
- .macro ADDR_S dst,src1,src2
- add_s \dst, \src1, \src2
- .endm
- .macro ASRR_S dst,src1,src2
- asr_s \dst, \src1, \src2
- .endm
- .macro ASLR_S dst,src1,src2
- asl_s \dst, \src1, \src2
- .endm
- #endif
- #endif /* _ARC_ASM_H */
|