29#pragma GCC diagnostic push
30#pragma GCC diagnostic ignored "-Wsign-conversion"
31#pragma GCC diagnostic ignored "-Wconversion"
32#pragma GCC diagnostic ignored "-Wunused-parameter"
36 #define __has_builtin(x) (0)
44 #define __INLINE inline
46#ifndef __STATIC_INLINE
47 #define __STATIC_INLINE static inline
49#ifndef __STATIC_FORCEINLINE
50 #define __STATIC_FORCEINLINE __attribute__((always_inline)) static inline
53 #define __NO_RETURN __attribute__((__noreturn__))
56 #define __USED __attribute__((used))
59 #define __WEAK __attribute__((weak))
62 #define __PACKED __attribute__((packed, aligned(1)))
64#ifndef __PACKED_STRUCT
65 #define __PACKED_STRUCT struct __attribute__((packed, aligned(1)))
68 #define __PACKED_UNION union __attribute__((packed, aligned(1)))
70#ifndef __UNALIGNED_UINT32
71 #pragma GCC diagnostic push
72 #pragma GCC diagnostic ignored "-Wpacked"
73 #pragma GCC diagnostic ignored "-Wattributes"
75 #pragma GCC diagnostic pop
76 #define __UNALIGNED_UINT32(x) (((struct T_UINT32 *)(x))->v)
78#ifndef __UNALIGNED_UINT16_WRITE
79 #pragma GCC diagnostic push
80 #pragma GCC diagnostic ignored "-Wpacked"
81 #pragma GCC diagnostic ignored "-Wattributes"
83 #pragma GCC diagnostic pop
84 #define __UNALIGNED_UINT16_WRITE(addr, val) (void)((((struct T_UINT16_WRITE *)(void *)(addr))->v) = (val))
86#ifndef __UNALIGNED_UINT16_READ
87 #pragma GCC diagnostic push
88 #pragma GCC diagnostic ignored "-Wpacked"
89 #pragma GCC diagnostic ignored "-Wattributes"
91 #pragma GCC diagnostic pop
92 #define __UNALIGNED_UINT16_READ(addr) (((const struct T_UINT16_READ *)(const void *)(addr))->v)
94#ifndef __UNALIGNED_UINT32_WRITE
95 #pragma GCC diagnostic push
96 #pragma GCC diagnostic ignored "-Wpacked"
97 #pragma GCC diagnostic ignored "-Wattributes"
99 #pragma GCC diagnostic pop
100 #define __UNALIGNED_UINT32_WRITE(addr, val) (void)((((struct T_UINT32_WRITE *)(void *)(addr))->v) = (val))
102#ifndef __UNALIGNED_UINT32_READ
103 #pragma GCC diagnostic push
104 #pragma GCC diagnostic ignored "-Wpacked"
105 #pragma GCC diagnostic ignored "-Wattributes"
107 #pragma GCC diagnostic pop
108 #define __UNALIGNED_UINT32_READ(addr) (((const struct T_UINT32_READ *)(const void *)(addr))->v)
111 #define __ALIGNED(x) __attribute__((aligned(x)))
114 #define __RESTRICT __restrict
116#ifndef __COMPILER_BARRIER
117 #define __COMPILER_BARRIER() __ASM volatile("":::"memory")
122#ifndef __PROGRAM_START
146 extern const __copy_table_t __copy_table_start__;
147 extern const __copy_table_t __copy_table_end__;
148 extern const __zero_table_t __zero_table_start__;
149 extern const __zero_table_t __zero_table_end__;
151 for (__copy_table_t
const* pTable = &__copy_table_start__; pTable < &__copy_table_end__; ++pTable) {
152 for(uint32_t i=0u; i<pTable->wlen; ++i) {
153 pTable->dest[i] = pTable->src[i];
157 for (__zero_table_t
const* pTable = &__zero_table_start__; pTable < &__zero_table_end__; ++pTable) {
158 for(uint32_t i=0u; i<pTable->wlen; ++i) {
159 pTable->dest[i] = 0u;
166#define __PROGRAM_START __cmsis_start
170#define __INITIAL_SP __StackTop
174#define __STACK_LIMIT __StackLimit
177#ifndef __VECTOR_TABLE
178#define __VECTOR_TABLE __Vectors
181#ifndef __VECTOR_TABLE_ATTRIBUTE
182#define __VECTOR_TABLE_ATTRIBUTE __attribute__((used, section(".vectors")))
185#if defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3U)
187#define __STACK_SEAL __StackSeal
190#ifndef __TZ_STACK_SEAL_SIZE
191#define __TZ_STACK_SEAL_SIZE 8U
194#ifndef __TZ_STACK_SEAL_VALUE
195#define __TZ_STACK_SEAL_VALUE 0xFEF5EDA5FEF5EDA5ULL
200 *((uint64_t *)stackTop) = __TZ_STACK_SEAL_VALUE;
214#if defined (__thumb__) && !defined (__thumb2__)
215#define __CMSIS_GCC_OUT_REG(r) "=l" (r)
216#define __CMSIS_GCC_RW_REG(r) "+l" (r)
217#define __CMSIS_GCC_USE_REG(r) "l" (r)
219#define __CMSIS_GCC_OUT_REG(r) "=r" (r)
220#define __CMSIS_GCC_RW_REG(r) "+r" (r)
221#define __CMSIS_GCC_USE_REG(r) "r" (r)
228#define __NOP() __ASM volatile ("nop")
234#define __WFI() __ASM volatile ("wfi":::"memory")
242#define __WFE() __ASM volatile ("wfe":::"memory")
249#define __SEV() __ASM volatile ("sev")
260 __ASM volatile (
"isb 0xF":::
"memory");
271 __ASM volatile (
"dsb 0xF":::
"memory");
282 __ASM volatile (
"dmb 0xF":::
"memory");
294#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)
295 return __builtin_bswap32(
value);
328#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
329 return (int16_t)__builtin_bswap16(
value);
353 return (op1 >> op2) | (op1 << (32U - op2));
364#define __BKPT(value) __ASM volatile ("bkpt "#value)
377#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \
378 (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \
379 (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) )
382 uint32_t s = (4U * 8U) - 1U;
418 return __builtin_clz(
value);
422#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \
423 (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \
424 (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
425 (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) )
436#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
437 __ASM volatile (
"ldrexb %0, %1" :
"=r" (
result) :
"Q" (*addr) );
442 __ASM volatile (
"ldrexb %0, [%1]" :
"=r" (
result) :
"r" (
addr) :
"memory" );
444 return ((uint8_t)
result);
458#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
459 __ASM volatile (
"ldrexh %0, %1" :
"=r" (
result) :
"Q" (*addr) );
464 __ASM volatile (
"ldrexh %0, [%1]" :
"=r" (
result) :
"r" (
addr) :
"memory" );
466 return ((uint16_t)
result);
480 __ASM volatile (
"ldrex %0, %1" :
"=r" (
result) :
"Q" (*addr) );
497 __ASM volatile (
"strexb %0, %2, %1" :
"=&r" (
result),
"=Q" (*addr) :
"r" ((uint32_t)
value) );
514 __ASM volatile (
"strexh %0, %2, %1" :
"=&r" (
result),
"=Q" (*addr) :
"r" ((uint32_t)
value) );
531 __ASM volatile (
"strex %0, %2, %1" :
"=&r" (
result),
"=Q" (*addr) :
"r" (
value) );
542 __ASM volatile (
"clrex" :::
"memory");
551#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \
552 (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \
553 (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) )
561#define __SSAT(ARG1, ARG2) \
564 int32_t __RES, __ARG1 = (ARG1); \
565 __ASM volatile ("ssat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) : "cc" ); \
577#define __USAT(ARG1, ARG2) \
580 uint32_t __RES, __ARG1 = (ARG1); \
581 __ASM volatile ("usat %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) : "cc" ); \
612#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
613 __ASM volatile (
"ldrbt %0, %1" :
"=r" (
result) :
"Q" (*ptr) );
618 __ASM volatile (
"ldrbt %0, [%1]" :
"=r" (
result) :
"r" (
ptr) :
"memory" );
620 return ((uint8_t)
result);
634#if (__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 8)
635 __ASM volatile (
"ldrht %0, %1" :
"=r" (
result) :
"Q" (*ptr) );
640 __ASM volatile (
"ldrht %0, [%1]" :
"=r" (
result) :
"r" (
ptr) :
"memory" );
642 return ((uint16_t)
result);
656 __ASM volatile (
"ldrt %0, %1" :
"=r" (
result) :
"Q" (*ptr) );
669 __ASM volatile (
"strbt %1, %0" :
"=Q" (*ptr) :
"r" ((uint32_t)
value) );
681 __ASM volatile (
"strht %1, %0" :
"=Q" (*ptr) :
"r" ((uint32_t)
value) );
693 __ASM volatile (
"strt %1, %0" :
"=Q" (*ptr) :
"r" (
value) );
709 if ((
sat >= 1U) && (
sat <= 32U))
711 const int32_t
max = (int32_t)((1U << (
sat - 1U)) - 1U);
712 const int32_t
min = -1 -
max ;
736 const uint32_t
max = ((1U <<
sat) - 1U);
737 if (val > (int32_t)
max)
746 return (uint32_t)val;
754#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
755 (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) )
766 __ASM volatile (
"ldab %0, %1" :
"=r" (
result) :
"Q" (*ptr) :
"memory" );
767 return ((uint8_t)
result);
781 __ASM volatile (
"ldah %0, %1" :
"=r" (
result) :
"Q" (*ptr) :
"memory" );
782 return ((uint16_t)
result);
796 __ASM volatile (
"lda %0, %1" :
"=r" (
result) :
"Q" (*ptr) :
"memory" );
809 __ASM volatile (
"stlb %1, %0" :
"=Q" (*ptr) :
"r" ((uint32_t)
value) :
"memory" );
821 __ASM volatile (
"stlh %1, %0" :
"=Q" (*ptr) :
"r" ((uint32_t)
value) :
"memory" );
833 __ASM volatile (
"stl %1, %0" :
"=Q" (*ptr) :
"r" ((uint32_t)
value) :
"memory" );
847 __ASM volatile (
"ldaexb %0, %1" :
"=r" (
result) :
"Q" (*ptr) :
"memory" );
848 return ((uint8_t)
result);
862 __ASM volatile (
"ldaexh %0, %1" :
"=r" (
result) :
"Q" (*ptr) :
"memory" );
863 return ((uint16_t)
result);
877 __ASM volatile (
"ldaex %0, %1" :
"=r" (
result) :
"Q" (*ptr) :
"memory" );
894 __ASM volatile (
"stlexb %0, %2, %1" :
"=&r" (
result),
"=Q" (*ptr) :
"r" ((uint32_t)
value) :
"memory" );
911 __ASM volatile (
"stlexh %0, %2, %1" :
"=&r" (
result),
"=Q" (*ptr) :
"r" ((uint32_t)
value) :
"memory" );
928 __ASM volatile (
"stlex %0, %2, %1" :
"=&r" (
result),
"=Q" (*ptr) :
"r" ((uint32_t)
value) :
"memory" );
951 __ASM volatile (
"cpsie i" : : :
"memory");
962 __ASM volatile (
"cpsid i" : : :
"memory");
975 __ASM volatile (
"MRS %0, control" :
"=r" (
result) );
980#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
990 __ASM volatile (
"MRS %0, control_ns" :
"=r" (
result) );
1003 __ASM volatile (
"MSR control, %0" : :
"r" (
control) :
"memory");
1008#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
1016 __ASM volatile (
"MSR control_ns, %0" : :
"r" (
control) :
"memory");
1078#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
1088 __ASM volatile (
"MRS %0, psp_ns" :
"=r" (
result) );
1101 __ASM volatile (
"MSR psp, %0" : :
"r" (topOfProcStack) : );
1105#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
1113 __ASM volatile (
"MSR psp_ns, %0" : :
"r" (topOfProcStack) : );
1132#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
1142 __ASM volatile (
"MRS %0, msp_ns" :
"=r" (
result) );
1155 __ASM volatile (
"MSR msp, %0" : :
"r" (topOfMainStack) : );
1159#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
1167 __ASM volatile (
"MSR msp_ns, %0" : :
"r" (topOfMainStack) : );
1172#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
1182 __ASM volatile (
"MRS %0, sp_ns" :
"=r" (
result) );
1194 __ASM volatile (
"MSR sp_ns, %0" : :
"r" (topOfStack) : );
1208 __ASM volatile (
"MRS %0, primask" :
"=r" (
result) );
1213#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
1223 __ASM volatile (
"MRS %0, primask_ns" :
"=r" (
result) );
1236 __ASM volatile (
"MSR primask, %0" : :
"r" (priMask) :
"memory");
1240#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
1248 __ASM volatile (
"MSR primask_ns, %0" : :
"r" (priMask) :
"memory");
1253#if ((defined (__ARM_ARCH_7M__ ) && (__ARM_ARCH_7M__ == 1)) || \
1254 (defined (__ARM_ARCH_7EM__ ) && (__ARM_ARCH_7EM__ == 1)) || \
1255 (defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) )
1263 __ASM volatile (
"cpsie f" : : :
"memory");
1274 __ASM volatile (
"cpsid f" : : :
"memory");
1287 __ASM volatile (
"MRS %0, basepri" :
"=r" (
result) );
1292#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
1302 __ASM volatile (
"MRS %0, basepri_ns" :
"=r" (
result) );
1315 __ASM volatile (
"MSR basepri, %0" : :
"r" (basePri) :
"memory");
1319#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
1327 __ASM volatile (
"MSR basepri_ns, %0" : :
"r" (basePri) :
"memory");
1340 __ASM volatile (
"MSR basepri_max, %0" : :
"r" (basePri) :
"memory");
1353 __ASM volatile (
"MRS %0, faultmask" :
"=r" (
result) );
1358#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
1368 __ASM volatile (
"MRS %0, faultmask_ns" :
"=r" (
result) );
1381 __ASM volatile (
"MSR faultmask, %0" : :
"r" (faultMask) :
"memory");
1385#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
1393 __ASM volatile (
"MSR faultmask_ns, %0" : :
"r" (faultMask) :
"memory");
1402#if ((defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) || \
1403 (defined (__ARM_ARCH_8M_BASE__ ) && (__ARM_ARCH_8M_BASE__ == 1)) )
1416#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
1417 (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
1422 __ASM volatile (
"MRS %0, psplim" :
"=r" (
result) );
1427#if (defined (__ARM_FEATURE_CMSE) && (__ARM_FEATURE_CMSE == 3))
1438#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))
1443 __ASM volatile (
"MRS %0, psplim_ns" :
"=r" (
result) );
1461#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
1462 (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
1464 (void)ProcStackPtrLimit;
1466 __ASM volatile (
"MSR psplim, %0" : :
"r" (ProcStackPtrLimit));
1471#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
1482#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))
1484 (void)ProcStackPtrLimit;
1486 __ASM volatile (
"MSR psplim_ns, %0\n" : :
"r" (ProcStackPtrLimit));
1503#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
1504 (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
1509 __ASM volatile (
"MRS %0, msplim" :
"=r" (
result) );
1515#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
1526#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))
1531 __ASM volatile (
"MRS %0, msplim_ns" :
"=r" (
result) );
1549#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)) && \
1550 (!defined (__ARM_FEATURE_CMSE) || (__ARM_FEATURE_CMSE < 3)))
1552 (void)MainStackPtrLimit;
1554 __ASM volatile (
"MSR msplim, %0" : :
"r" (MainStackPtrLimit));
1559#if (defined (__ARM_FEATURE_CMSE ) && (__ARM_FEATURE_CMSE == 3))
1570#if (!(defined (__ARM_ARCH_8M_MAIN__ ) && (__ARM_ARCH_8M_MAIN__ == 1)))
1572 (void)MainStackPtrLimit;
1574 __ASM volatile (
"MSR msplim_ns, %0" : :
"r" (MainStackPtrLimit));
1590#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \
1591 (defined (__FPU_USED ) && (__FPU_USED == 1U)) )
1592#if __has_builtin(__builtin_arm_get_fpscr)
1596 return __builtin_arm_get_fpscr();
1600 __ASM volatile (
"VMRS %0, fpscr" :
"=r" (
result) );
1616#if ((defined (__FPU_PRESENT) && (__FPU_PRESENT == 1U)) && \
1617 (defined (__FPU_USED ) && (__FPU_USED == 1U)) )
1618#if __has_builtin(__builtin_arm_set_fpscr)
1622 __builtin_arm_set_fpscr(fpscr);
1624 __ASM volatile (
"VMSR fpscr, %0" : :
"r" (fpscr) :
"vfpcc",
"memory");
1641#if (defined (__ARM_FEATURE_DSP) && (__ARM_FEATURE_DSP == 1))
1647 __ASM volatile (
"sadd8 %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1655 __ASM (
"qadd8 %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1663 __ASM (
"shadd8 %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1671 __ASM volatile (
"uadd8 %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1679 __ASM (
"uqadd8 %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1687 __ASM (
"uhadd8 %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1696 __ASM volatile (
"ssub8 %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1704 __ASM (
"qsub8 %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1712 __ASM (
"shsub8 %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1720 __ASM volatile (
"usub8 %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1728 __ASM (
"uqsub8 %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1736 __ASM (
"uhsub8 %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1745 __ASM volatile (
"sadd16 %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1753 __ASM (
"qadd16 %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1761 __ASM (
"shadd16 %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1769 __ASM volatile (
"uadd16 %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1777 __ASM (
"uqadd16 %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1785 __ASM (
"uhadd16 %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1793 __ASM volatile (
"ssub16 %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1801 __ASM (
"qsub16 %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1809 __ASM (
"shsub16 %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1817 __ASM volatile (
"usub16 %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1825 __ASM (
"uqsub16 %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1833 __ASM (
"uhsub16 %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1841 __ASM volatile (
"sasx %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1849 __ASM (
"qasx %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1857 __ASM (
"shasx %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1865 __ASM volatile (
"uasx %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1873 __ASM (
"uqasx %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1881 __ASM (
"uhasx %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1889 __ASM volatile (
"ssax %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1897 __ASM (
"qsax %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1905 __ASM (
"shsax %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1913 __ASM volatile (
"usax %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1921 __ASM (
"uqsax %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1929 __ASM (
"uhsax %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1937 __ASM (
"usad8 %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1945 __ASM (
"usada8 %0, %1, %2, %3" :
"=r" (
result) :
"r" (op1),
"r" (op2),
"r" (op3) );
1949#define __SSAT16(ARG1, ARG2) \
1952 int32_t __RES, __ARG1 = (ARG1); \
1953 __ASM volatile ("ssat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) : "cc" ); \
1957#define __USAT16(ARG1, ARG2) \
1960 uint32_t __RES, __ARG1 = (ARG1); \
1961 __ASM volatile ("usat16 %0, %1, %2" : "=r" (__RES) : "I" (ARG2), "r" (__ARG1) : "cc" ); \
1969 __ASM (
"uxtb16 %0, %1" :
"=r" (
result) :
"r" (op1));
1977 __ASM (
"uxtab16 %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
1985 __ASM (
"sxtb16 %0, %1" :
"=r" (
result) :
"r" (op1));
1992 if (__builtin_constant_p(rotate) && ((rotate == 8U) || (rotate == 16U) || (rotate == 24U))) {
1993 __ASM volatile (
"sxtb16 %0, %1, ROR %2" :
"=r" (
result) :
"r" (op1),
"i" (rotate) );
2004 __ASM (
"sxtab16 %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
2011 if (__builtin_constant_p(rotate) && ((rotate == 8U) || (rotate == 16U) || (rotate == 24U))) {
2012 __ASM volatile (
"sxtab16 %0, %1, %2, ROR %3" :
"=r" (
result) :
"r" (op1) ,
"r" (op2) ,
"i" (rotate));
2024 __ASM volatile (
"smuad %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
2032 __ASM volatile (
"smuadx %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
2040 __ASM volatile (
"smlad %0, %1, %2, %3" :
"=r" (
result) :
"r" (op1),
"r" (op2),
"r" (op3) );
2048 __ASM volatile (
"smladx %0, %1, %2, %3" :
"=r" (
result) :
"r" (op1),
"r" (op2),
"r" (op3) );
2061 __ASM volatile (
"smlald %0, %1, %2, %3" :
"=r" (llr.w32[0]),
"=r" (llr.w32[1]):
"r" (op1),
"r" (op2) ,
"0" (llr.w32[0]),
"1" (llr.w32[1]) );
2063 __ASM volatile (
"smlald %0, %1, %2, %3" :
"=r" (llr.w32[1]),
"=r" (llr.w32[0]):
"r" (op1),
"r" (op2) ,
"0" (llr.w32[1]),
"1" (llr.w32[0]) );
2078 __ASM volatile (
"smlaldx %0, %1, %2, %3" :
"=r" (llr.w32[0]),
"=r" (llr.w32[1]):
"r" (op1),
"r" (op2) ,
"0" (llr.w32[0]),
"1" (llr.w32[1]) );
2080 __ASM volatile (
"smlaldx %0, %1, %2, %3" :
"=r" (llr.w32[1]),
"=r" (llr.w32[0]):
"r" (op1),
"r" (op2) ,
"0" (llr.w32[1]),
"1" (llr.w32[0]) );
2090 __ASM volatile (
"smusd %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
2098 __ASM volatile (
"smusdx %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
2106 __ASM volatile (
"smlsd %0, %1, %2, %3" :
"=r" (
result) :
"r" (op1),
"r" (op2),
"r" (op3) );
2114 __ASM volatile (
"smlsdx %0, %1, %2, %3" :
"=r" (
result) :
"r" (op1),
"r" (op2),
"r" (op3) );
2127 __ASM volatile (
"smlsld %0, %1, %2, %3" :
"=r" (llr.w32[0]),
"=r" (llr.w32[1]):
"r" (op1),
"r" (op2) ,
"0" (llr.w32[0]),
"1" (llr.w32[1]) );
2129 __ASM volatile (
"smlsld %0, %1, %2, %3" :
"=r" (llr.w32[1]),
"=r" (llr.w32[0]):
"r" (op1),
"r" (op2) ,
"0" (llr.w32[1]),
"1" (llr.w32[0]) );
2144 __ASM volatile (
"smlsldx %0, %1, %2, %3" :
"=r" (llr.w32[0]),
"=r" (llr.w32[1]):
"r" (op1),
"r" (op2) ,
"0" (llr.w32[0]),
"1" (llr.w32[1]) );
2146 __ASM volatile (
"smlsldx %0, %1, %2, %3" :
"=r" (llr.w32[1]),
"=r" (llr.w32[0]):
"r" (op1),
"r" (op2) ,
"0" (llr.w32[1]),
"1" (llr.w32[0]) );
2156 __ASM volatile (
"sel %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
2164 __ASM volatile (
"qadd %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
2172 __ASM volatile (
"qsub %0, %1, %2" :
"=r" (
result) :
"r" (op1),
"r" (op2) );
2177#define __PKHBT(ARG1,ARG2,ARG3) \
2180 uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \
2181 __ASM ("pkhbt %0, %1, %2, lsl %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \
2185#define __PKHTB(ARG1,ARG2,ARG3) \
2188 uint32_t __RES, __ARG1 = (ARG1), __ARG2 = (ARG2); \
2190 __ASM ("pkhtb %0, %1, %2" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2) ); \
2192 __ASM ("pkhtb %0, %1, %2, asr %3" : "=r" (__RES) : "r" (__ARG1), "r" (__ARG2), "I" (ARG3) ); \
2201 __ASM (
"smmla %0, %1, %2, %3" :
"=r" (
result):
"r" (op1),
"r" (op2),
"r" (op3) );
2209#pragma GCC diagnostic pop
#define __STATIC_FORCEINLINE
__PACKED_STRUCT T_UINT16_READ
__PACKED_STRUCT T_UINT32_READ
__PACKED_STRUCT T_UINT32_WRITE
__PACKED_STRUCT T_UINT16_WRITE
__STATIC_FORCEINLINE __NO_RETURN void __cmsis_start(void)
Initializes data and bss sections.
#define __SXTB16_RORn(ARG1, ARG2)
__IAR_FT uint32_t __STREXW(uint32_t value, uint32_t volatile *ptr)
#define __SXTAB16_RORn(ARG1, ARG2, ARG3)
__IAR_FT uint32_t __LDREXW(uint32_t volatile *ptr)
#define __REV
Reverse byte order (32 bit).
__STATIC_FORCEINLINE int32_t __SSAT(int32_t val, uint32_t sat)
Signed Saturate.
#define __CLZ
Count leading zeros.
__STATIC_FORCEINLINE uint32_t __USAT(int32_t val, uint32_t sat)
Unsigned Saturate.
__STATIC_FORCEINLINE void __DSB(void)
Data Synchronization Barrier.
#define __ROR
Rotate Right in unsigned value (32 bit).
#define __CMSIS_GCC_USE_REG(r)
__STATIC_FORCEINLINE void __DMB(void)
Data Memory Barrier.
#define __RBIT
Reverse bit order of value.
#define __CMSIS_GCC_OUT_REG(r)
#define __REV16(value)
Reverse byte order (16 bit).
__STATIC_FORCEINLINE void __ISB(void)
Instruction Synchronization Barrier.
#define __REVSH(value)
Reverse byte order (16 bit).
__STATIC_INLINE void __set_CONTROL(uint32_t control)
Set Control Register.
__STATIC_INLINE void __set_MSP(uint32_t topOfMainStack)
Set Main Stack Pointer.
__STATIC_INLINE void __set_PSP(uint32_t topOfProcStack)
Set Process Stack Pointer.
#define __set_FPSCR(x)
Set FPSCR.
#define __get_FPSCR()
Get FPSCR.
__STATIC_INLINE uint32_t __get_PRIMASK(void)
Get Priority Mask.
#define __enable_irq
Enable IRQ Interrupts.
__STATIC_INLINE uint32_t __get_MSP(void)
Get Main Stack Pointer.
__STATIC_INLINE uint32_t __get_CONTROL(void)
Enable IRQ Interrupts.
__STATIC_INLINE uint32_t __get_PSP(void)
Get Process Stack Pointer.
#define __disable_irq
Disable IRQ Interrupts.
__STATIC_INLINE uint32_t __get_APSR(void)
Get APSR Register.
#define __get_xPSR
Get xPSR Register.
__STATIC_INLINE uint32_t __get_IPSR(void)
Get IPSR Register.
__STATIC_INLINE void __set_PRIMASK(uint32_t priMask)
Set Priority Mask.
*brief write string representation of the JSON pointer to stream *sa const json_pointer & ptr